chore: rename to agent-call and finalize mock-first delivery plan

This commit is contained in:
2026-09-11 22:27:16 +08:00
parent 23d1b1274f
commit 6cd28c033e
16 changed files with 680 additions and 353 deletions
+14 -6
View File
@@ -1,12 +1,20 @@
# ai-call:部署与开发约束
# agent-call:部署与开发约束
## 目录与实施范围
- 项目根目录用于部署,`docs/` 保存需求、计划与验收资料,不挪回根目录。
- 当前先实现 ASR Web 验证服务、Asterisk 配置和阿里云主机准备工具;不把这些当成完整外呼平台已上线。
- 现有实现为 ASR Web 验证、Asterisk 配置和阿里云主机准备工具,不是完整外呼平台。用户已接受最终方案,后续按 `docs/最终开发部署监控与验收计划_v1.0.md` 开展契约驱动 Mock 开发,再替换真实依赖。
- 用户已决定**仅复用 voice_test 的 ASR**。禁止复制或启用该仓库的 LLM/TTS;新规范确认前,界面必须明确显示未启用。
- SaaS 指令与所有业务结果均走 RabbitMQ;录音先上传 OSS,再通过 MQ 回传 OSS ID。接口/消息规范由用户制定,不能擅自改成 HTTP 业务回调。
## 最终实施与 Mock 边界(用户已确认)
- 以最终开发部署监控与验收计划为实施入口,`docs/SaaS交互_OpenAPI与MQ契约规划_v0.1.md` 正文 v1.0 是字段/路径/状态的唯一维护来源;从 D01 生成 OpenAPI/共用 MQ Schema 开始,不重复等待已接受方案拍板。
- 外部 SaaS、数据库、RabbitMQ、SIP/AI、OSS/云条件并行协调。HTTP Mock 遵守 OpenAPI;MQ 用真实测试 broker,SIP/ARI/RTP及AI流式通道按协议模拟,不改成HTTP业务回调;持久状态使用真实隔离数据库,不用内存字典代替。
- `mock/mixed/real` 必须可识别,Mock 默认隔离真实外网,正式模式拒绝 Mock/测试凭证,不静默回退。LLM/TTS 可开发新 Mock 适配,但不得复用旧实现或假称真实供应商已启用。
- 已接受原值key一对一绑定、超出224个UTF-8字节路由预算则停发保留原任务而非截断;控制CAS、整体补传、无应用收讫、整任务撤销屏障等规则以主契约为准。
- 最终计划的 DEV/SCALE-MOCK 数值是工程初始测试基线,不是生产SLA/业务额度/消费授权。真实预算、供应商能力、保留与RPO/RTO需在实际部署前登记核验;Mock通过不得替代真实1000路完整AI、N+1及供应商验收。
## 固定资源与云部署规则
1. 区域为阿里云北京 `cn-beijing`。
@@ -57,13 +65,13 @@
## 多租户队列与公平调度(用户已确认,运行代码待实现)
- SaaS 按可信 `tenant_id` 映射向**租户独立 RabbitMQ 命令队列** PUSH,呼出应用调度器负责租户间公平调度;不再用所有租户共享的执行 FIFO,不增加 HTTP 拨号入口。业务任务/重试决策仍属于 SaaS。
- SaaS 按可信 `tenant_key` 向**租户独立 RabbitMQ 命令队列** PUSH,呼出应用调度器负责租户间公平调度;不再用所有租户共享的执行 FIFO,不增加 HTTP 拨号入口。业务任务/重试决策仍属于 SaaS。
- 默认建议活跃且可调度租户等权轮询,差异化权重需按业务规则确认;每轮有界取数,租户额度耗尽或线路不可用时跳过。按租户及全局限制预取、未 ACK 和已持久化待发起窗口,不能先消费到无界内存 FIFO;重启恢复也必须公平。
- 租户并发/CPS 配额跨所有 Cell、调度实例汇总;并发覆盖预留、拨号、振铃、接通及待对账占用,CPS 包括 FALLBACK。实际发起同时满足租户额度、供应商、Cell/出口和 AI 完整资源租约。多实例须协调调度所有权和原子额度,不能各自发放一份;未知活动通话不能仅因租约到期直接释放占用。
- 平台负责队列创建、精确绑定、权限和安全停用/清理;路由标识由 tenant_id 受控唯一映射,必须校验正文租户与队列一致。最终用户不直接连接 broker,不允许任意指定其他租户路由。命令重试/死信恢复回原租户调度域,不绕过配额。
- 平台负责队列创建、精确绑定、权限和安全停用/清理;`tenant_key` 是 SaaS 产生的业务数据,命令、队列路由及后续 MQ 回调均原样使用,不做清洗、编码或业务格式限制;必须校验正文值与队列/路由绑定精确一致。最终用户不直接连接 broker,不允许任意指定其他租户路由。命令重试/死信恢复回原租户调度域,不绕过配额。
- 每租户设置发布速率、队列消息数/字节和待执行窗口上限,并有全局 broker 水位保护。队列满明确拒绝发布,不丢弃队头旧命令;SaaS 持久保留未确认发布记录,使用原执行标识有限重试。独立队列不代表独享 broker 资源或无限积压。
- 公平调度分配新执行机会,不为公平挂断已接通电话;资源满需等待释放。固定开始时限必须另确认覆盖线路/AI/Cell 的保底容量或受限借用策略,不能仅用轮询宣称保证。
- 本轮不改变事件结果队列为一租户一队列。队列命名、轮转/预取、配额、保留与等待指标待 G0 冻结;须验收大租户积压下小租户公平、多实例配额不超额、背压不丢消息及租户路由安全。
- 本轮不改变事件结果队列为一租户一队列。资源统一使用 `agent-call` 命名空间;命令 exchange 使用 direct,命令 routing key 为 `agent-call.tenant.{tenant_key}.call.execute`,事件 routing key 为 `agent-call.{event_type}`。轮转/预取、配额、保留与等待指标待 G0 冻结;须验收大租户积压下小租户公平、多实例配额不超额、背压不丢消息及租户路由安全。
## 其它环境前置
@@ -78,7 +86,7 @@
- <https://git.ipao.vip/rogee/sip-research> :Asterisk 调研和 Mock 底座;不能把历史测试结果当成本环境验收。
- <https://git.ipao.vip/rogee/voice_test> :仅借用 ASR 协议代码;本项目访问控制、Web页面和生命周期独立实现。
- `docs/一期呼出应用开发计划_v1.0.md` 为阶段计划;SaaS 对接草案见 `docs/SaaS交互_OpenAPI与MQ契约规划_v0.1.md`(文件路径保留,版本见正文)。本轮运行步骤见 `docs/部署接入_运行说明.md`,旧文档只读保留。
- 最终实施入口为 `docs/最终开发部署监控与验收计划_v1.0.md`;主契约 `docs/SaaS交互_OpenAPI与MQ契约规划_v0.1.md`(路径保留,正文v1.0)。旧一期计划保留WBS/AT和历史估算,旧交付文档作实现细则;当前已存在服务的运行步骤仍见 `docs/部署接入_运行说明.md`,不能把未来产物当成已实现。
## 验证与交付