Files
go-sip/docs/plan-saas-dispatcher.md
T

4.2 KiB
Raw Blame History

SaaS↔Dispatcher:当前实施与验收入口

本项目的唯一现行业务通信说明为 thirds/saas-dispatcher.md,唯一项目内机器契约为 ../contracts/local/ 的 Schema、拓扑、正反例与 manifest.json。Agent 内部 RPC 见 ../proto/agent/agent.proto。本文只记录实施和验收进度,不另立一套字段或队列。

范围和来源

  • 用户已确认 K01–K16,并明确批准实施 P01–P08;已取代原计划 §1.2“仅修订计划”的旧范围,不重复审批。固定 MQ v1 通信名、HTTP /internal/v1/dispatcher/... 路径和有业务含义的 revision 不属于自有实现代次,保持不变。
  • plan-saas-dispatcher-v05-v0.1.md 是本轮合同的不可变历史来源,其原路径及 SHA-256 已写入当前合同 manifest.json;为保护来源事实,不改名、不改字节、不作为另一个当前运行入口。其他旧方案、旧 MQ-only 合同与旧验收数字均为历史。
  • 当前仅验收单节点、单 Dispatcher、单 Agent、单 Cell、单租户的隔离 Mock。真实 SaaS/MQ/OSS/AI/Asterisk/SIP/ECS、容量及生产切换没有在本轮验证;样例、Hash 和本机测试均不是拨号或生产授权。
  • 不迁移、清空或自动处置现存 SQLite、Agent 恢复文件、旧 spool 和 outbox;发现旧执行/上传状态时拒绝启动并保留原文件,按事实另行确认处置。

工作项

阶段 本地状态及核验入口
P01 契约 已建立当前 HTTP/MQ Schema、拓扑、正反例和来源/hash;见 contracts/local/manifest.json 及 evidence/saas-dispatcher-implementation.md。
P02 单入口与 Proto 根命令只注册现行 Mock Agent/Dispatcher;八个 Agent RPC 方法、生成物与 proto/manifest.json 已验证。
P03 五类只读 HTTP SIP、任务、发现、租户额度及供应商配置只读;租户/任务归属和新鲜度均经隔离测试。
P04 MQ/SQLite SaaS 预建队列、独立 Dispatcher 身份、持久 inbox/outbox、控制屏障及共享结果队列有隔离 MQ 测试。Confirm 不等于 SaaS 已处理。
P05 AI/媒体 不可变获批 AI 快照,ASR-only、ASR+LLM+TTS、关键词、16 kHz 媒体及失败边界仅经本地 Mock 验证。
P06 录音/OSS/结果 隔离双向 TLS 录音、一次 HTTPS PUT、失败与未知结果恢复、48 小时边界和唯一最终 MQ 结果经本机测试。
P07 唯一当前入口 项目内已核查:旧执行/配置/MQ/AI/Proto/Schema/脚本路径已分批清除或逐字节归档,当前文档/引用/hash 及合法历史例外逐项核对,实际数据保留;详见 evidence/saas-dispatcher-p07-audit.md。真实外部兼容与主机诊断不在此项签收内。
P08 验收交付 A01–A12、K01–K16、业务覆盖率 ≥65%、重启/故障矩阵及诊断门禁的最终对照尚未完成。不得将前述分批通过写为最终签收。

每批变更、测试命令、正反例和未验证项详见 evidence/saas-dispatcher-implementation.md。发布包 production_approval=false;make check、make release-check-local 仅检验本机隔离制品与行为,不运行真实服务。

交付门禁

  • 必须执行格式、当前合同及 Proto 来源/hash 检查,go vet ./...、go test -race ./...、构建及三项实际通过的隔离 RabbitMQ 集成测试;旧测试筛选式匹配零项不得算通过。
  • 对照原计划 A01–A12 与 K01–K16 逐项记录本地证据和缺口,业务代码单元测试覆盖率须达到 65%;故障、重投、重启和约十分钟 Agent 会话过期边界不可遗漏。
  • 实际非生产主机验证另须执行 ../deploys/test/nonprod-call-evidence.sh 规定的资源/状态核查和拨号前受限抓包;本地 Mock、打包、证书与哈希均不能替代真实 Agent/Asterisk 加载、SaaS 应用收讫或供应商验收。未经单独安排不进行云操作或真实呼叫。