docs: add SaaS acceptance plan
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
# agent-call:SaaS 对接与任务调度专项验收计划
|
||||
|
||||
**版本:** v1.0
|
||||
**日期:** 2026-09-14
|
||||
**状态:** 计划已落地,专项集成用例待实施/执行;本文不是验收通过报告。
|
||||
**范围:** 排除真实 SIP 呼出,优先补齐 SaaS 对接、可靠消息、任务调度、控制与恢复的独立集成证据。本轮只修改文档。
|
||||
|
||||
## 1. 权威与边界
|
||||
|
||||
- [主契约](SaaS交互_OpenAPI与MQ契约规划_v0.1.md)是字段、路径、消息、权限与状态的唯一维护来源,不在本文重定义接口。
|
||||
- [最终实施计划](最终开发部署监控与验收计划_v1.0.md)规定整体门禁和工程基线;[功能审查整改计划](功能审查整改计划与验收标准_v1.0.md)规定 FIX-01~23。本文是两者的非 SIP 专项执行清单,不替代 M1~M3/R1~R3。
|
||||
- 执行指令与业务结果只走 RabbitMQ;HTTP 限主契约七条路径。不新增 HTTP 拨号、业务回调或应用收讫接口。
|
||||
- 不发真实电话、不调用收费 AI、不创建云资源、不操作生产数据库/队列/对象。真实 SaaS、MQ、OSS 验证另登记环境、数据与授权。
|
||||
- 执行器、Cell 和 AI 可用隔离替身验证调度语义,但必须标注 Mock。它们不证明真实 ARI/SIP 发起屏障、活动通话对账、媒体或 AI 能力。
|
||||
- 合成音频可用于资产上传验收,不宣称其为真实双方录音;不复用旧 voice_test LLM/TTS。
|
||||
|
||||
## 2. 审查基线与已知证据
|
||||
|
||||
| 已有证据 | 可确认范围 | 不能推出的结论 |
|
||||
| --- | --- | --- |
|
||||
| 整改计划第7节记载的52项本地回归 | 代码/契约层已有回归结果 | 非本专项重新执行,不等于独立集成通过 |
|
||||
| `evidence/rabbitmq-compose-smoke-2026-09-11.txt` | 真 RabbitMQ 基础处理、outbox 清空冒烟 | 不证明队列满、确认丢失、ACL、quorum HA |
|
||||
| `evidence/acceptance-mock-2026-09-13.json` | Mock 子项结果;总门禁 `INCOMPLETE` | 两个服务对象不等于双进程竞争;本地 inbox 不等于独立 SaaS 应用 |
|
||||
| `evidence/scale-mock-2026-09-12.json` | 历史状态负载观察 | 不证明独立双调度、正常生命周期补位或完整 V13 |
|
||||
|
||||
当前主要差距是独立进程/服务与故障证据不足;独立 SaaS/对象 HTTP 客户端链路、执行器隔离测试入口等还需核对并补齐。不得把“代码级整改已实现”当作所有集成适配器均已完成,也不因证据缺失直接断言功能必然有缺陷。
|
||||
|
||||
执行前固定实际 Git SHA、工作区差异、契约/profile版本、依赖版本和镜像 digest;本表历史证据保留,不覆盖重写。
|
||||
|
||||
## 3. 测试环境与实施交付
|
||||
|
||||
### 3.1 最小 L1 环境
|
||||
|
||||
1. 真实隔离 RabbitMQ:普通功能先用单节点;HA/可靠死信另用隔离3节点 quorum。独立 VHost、精确队列绑定、分角色凭据与 ACL。
|
||||
2. 真实持久数据库:先复用 SQLite 做同宿主双进程回归;两个调度器必须是独立 OS 进程,记录 PID、连接和竞争时序,禁止以内存锁或顺序调用冒充竞争。
|
||||
3. 独立 SaaS Mock:独立进程、凭据与业务库,通过真实 AMQP 发布执行、事务应用事件,通过真实 HTTP 提供 SaaS 契约端点。不得直接调用执行服务内部方法或共用其 inbox 作为独立证据。
|
||||
4. 独立对象 Mock:接收真实字节,独立读取并计算摘要,校验租户/会话/内容绑定、有效期和禁止覆盖;执行侧通过上传授权给定的受控目标传输。
|
||||
5. 独立执行器 Mock:记录收到的执行意图/许可、接受或拒绝、结束和对账事实;可稳定阻塞在指定边界。不新增 SaaS 业务字段或公网接口,不把 journal 自填成功作为唯一断言。
|
||||
6. 独立监控与故障运行器:可停止/恢复进程和测试依赖,注入确认/响应丢失、只读DB和测试卷水位;不得影响宿主无关资源。
|
||||
|
||||
Mock 网络默认阻止真实公网 SIP/AI/云 API;凭据运行时注入,原始证据受控存储,提交材料必须脱敏。
|
||||
|
||||
### 3.2 实施交付与决策点
|
||||
|
||||
- 先复用现有 `agent_call/`、`tests/`、`scripts/acceptance.py`、契约和部署配置;仅补缺失的集成适配、独立测试服务和故障用例,不重建 SaaS 产品或通用工作流平台。
|
||||
- 交付可重复环境启动/清理入口、分项运行入口、故障边界钩子和机器报告;路径与命令须在实际实现并验证后登记,本文不虚构可运行入口。
|
||||
- 若发现缺陷,先保存失败用例,再最小修复并回归;区分“尚未实现”“测试失败”“证据缺失”“外部阻塞”。
|
||||
- **生产数据库与跨主机协调为待确认项**:SQLite 同宿主结果不覆盖多机生产。选定目标引擎/拓扑后登记迁移方案,并重跑并发、恢复和回滚;不使用网络共享 SQLite 文件替代此决策,不擅自实施生产迁移。
|
||||
|
||||
## 4. 执行顺序与退出条件
|
||||
|
||||
| 阶段 | 执行内容 | 退出条件 |
|
||||
| --- | --- | --- |
|
||||
| P0 基线与环境 | 固定版本、隔离配置、检查适配器、建立独立服务和证据模板 | 各组件真实模式可识别;缺依赖失败关闭;责任人与运行入口登记 |
|
||||
| P1 安全与可靠传输 | SA-01~03、SC-01~02 | 无跨租户污染、丢事实、重复执行或额度超发;先关闭阻断缺陷 |
|
||||
| P2 业务闭环与恢复 | SA-04~06、SC-03~05 | 独立 SaaS 应用、控制/补传/资产与崩溃恢复具备独立证据 |
|
||||
| P3 综合运行 | OP-01~03 | 告警/恢复/回滚和持续调度负载通过;所有故障重复三轮 |
|
||||
| P4 真实外部替换 | EX-01 | 获授权真实 SaaS/MQ/OSS 按同契约复验;生产DB与跨主机证据单列 |
|
||||
|
||||
P1/P2 中不共享写入面的用例可并行;数据库迁移单一负责人。真实 SIP 不阻塞 P0~P3,但执行器 Mock 结论不得升级为真实呼出结论。
|
||||
|
||||
## 5. 专项验收矩阵
|
||||
|
||||
所有项目初始状态均为 **待执行**,下列通过标准不是已取得结果。
|
||||
|
||||
### 5.1 SaaS 对接
|
||||
|
||||
| 编号/关联 | 必测场景 | 通过标准与独立证据 |
|
||||
| --- | --- | --- |
|
||||
| SA-01 契约与身份;FIX-01/10~13,V01 | 七条 HTTP 路径请求/响应、MQ 正反例、未知主版本、64KiB/256KiB对应消息边界;401/403/跨租户404;控制与补传权限分离;幂等键跨目标/操作冲突;缺可信任务或不可变配置 | HTTP/AMQP实际响应符合主契约和生成Schema;越权无业务副作用;重试返回原操作,异内容409;缺配置不认领、不临时读取任意URL |
|
||||
| SA-02 租户与路由;FIX-02/03,V01/V02/V05 | 真broker上A路由/B正文、伪造header、错绑定、跨租户同ID;中文/点号/星号/井号key;224/225 UTF-8字节;真实发布/消费ACL | 原值往返且严格隔离;越权无执行/错误租户事件;同租户重投10次只一份原事实;超限不截断、停发保留SaaS原任务;broker配置与两侧DB可核对 |
|
||||
| SA-03 传输可靠性;FIX-04/07,V02/V05 | 分别触发条数/字节满、mandatory return、NACK、confirm丢失、blocked、死信失败;提交/ACK前后崩溃;3节点quorum节点失效与恢复 | 拒绝新发布、不丢旧队头和已确认消息;未确认保留原ID有限重试;不重复执行;重投/死信回原租户调度域、不绕过额度;单节点/HA证据分别判定 |
|
||||
| SA-04 结果应用与补传;FIX-09/12/16,V08/V10 | 独立SaaS事务应用;重复/乱序/异内容最终稿;业务提交后ACK丢失;补传第N条失败、重启、耗尽;固定截止点与实时结果竞争 | inbox与业务事实原子、重复不多次应用;最终稿不被中间稿或冲突稿覆盖;可能重投保持原event ID/内容;补传排除后生事件和自身结果,不触发执行/AI/重传文件;completed仅表示broker确认,不增加应用收讫协议 |
|
||||
| SA-05 资产交接;FIX-18~20,V09/V10/V11 | 独立授权→上传合成字节→complete→MQ ready→SaaS关联并授权读取;缺对象、错摘要/绑定、覆盖、过期续签、响应丢失、文件移动/提交边界崩溃 | 对象端独立读取字节验摘要;未verified不ready;同操作返回相同oss_id/verified_at,不产生第二资产;续签保持原绑定;上传目标白名单、HTTPS/重定向及SSRF边界有效;真实OSS不得将ETag直接当SHA-256 |
|
||||
| SA-06 撤销/DNC跨任务闭环;FIX-05,V04 | SaaS持久禁发、枚举受影响全部任务,控制与在途发布/重投竞争;一个Cell失联;重启后继续屏障;显式客户拒绝/人工标记 | 全部目标屏障applied后才确认执行侧撤销生效;失联保持未决;SaaS禁发事实不丢;不擅自号码级越过整任务屏障,不新增自动关键词DNC;人工/显式场景证据可追溯 |
|
||||
|
||||
### 5.2 任务调度
|
||||
|
||||
| 编号/关联 | 必测场景 | 通过标准与独立证据 |
|
||||
| --- | --- | --- |
|
||||
| SC-01 所有权与原子额度;FIX-06,V03/V07 | 两个独立进程争抢最后额度;A检查后停顿超过租期,B接管,A恢复;租户/供应商/Cell/AI/端口各自耗尽;FALLBACK | DB预留与执行器接受记录交叉核对,无过期许可执行、无双执行;所有实例汇总额度不超限;FALLBACK计CPS;未知活动占用不因租约过期释放 |
|
||||
| SC-02 控制与发起竞态;FIX-05/06,V04 | 在意图提交后、执行器接受前注入pause/到期/失权;pause未applied时resume;同键重试;stop drain/hangup及额外权限;控制先于execute | 屏障后无新接受;同键返回原revision/操作;冲突409不递增;失联保持applying/reconciling;stop不可resume;Mock强挂须有执行器结束证据,不能用控制受理替代结束 |
|
||||
| SC-03 公平与背压;FIX-07,V03/V05 | 大租户积压、小租户新加入;额度耗尽、线路不可用;双进程消费/重启;持续投递超过窗口;命令到期重投 | 共享窗口不翻倍;超窗留原队列,非无界ACK到DB;每租户每轮最多1许可;达到第6节公平指标;重投/重启不延长deadline;不抢占活动执行凑公平 |
|
||||
| SC-04 崩溃与对账;FIX-08,V02/V07/V10 | 意图提交前后、发送未确认、执行器确认活动后分别杀调度进程;执行器断连/重连、迟到结束;DB/MQ中断 | 重启不自动重拨/重建执行;未确认保留对账占用,不假ended;独立执行器事实确认结束后一次终态/释放;持久意图、屏障、outbox不丢 |
|
||||
| SC-05 目标数据库与多机;FIX-03/06/22,V03/V11/V12 | 在确认的生产引擎/拓扑上重跑复合键迁移、并发抢额、连接中断、所有权切换、版本回滚 | 保存目标引擎实际证据,无丢失/重复事实及额度超发;迁移前后租户、关联和屏障一致。引擎/环境未确认则阻塞,仅可签署同宿主子集 |
|
||||
|
||||
### 5.3 运维与综合负载
|
||||
|
||||
| 编号/关联 | 必测场景 | 通过标准与独立证据 |
|
||||
| --- | --- | --- |
|
||||
| OP-01 健康与告警;FIX-21,V12 | DB可读不可写、MQ断连/缺绑定、凭据失效、执行器失联、磁盘水位、时钟偏差、模式错误和指标缺失 | 不安全新准入停止;已有正常活动不被无差别终止;readiness范围正确;promtool语法/规则检查和实际告警产生→接收→恢复均有证据 |
|
||||
| OP-02 恢复与回滚;FIX-22,V11/V12 | 备份恢复到新库并实际启动;应用降级但保留较新DB/队列/卷;旧命令重投;未确认资产、outbox、stop屏障;测试卷故障 | 禁止旧快照覆盖新防重事实;记录/关联/屏障核对一致,无重复执行;不兼容回滚明确拒绝而非破坏数据;保留卷故障不丢已提交事实;永久卷丢失明确损失/failed/告警 |
|
||||
| OP-03 持续调度负载;FIX-23,V03及V13调度子集 | 至少双独立调度、100租户、正常生命周期≤180s并持续新授权补位;故障隔离一个Mock Cell,健康容量内恢复;记录故障窗口 | 按第6节负载持续60分钟;租户公平、原子额度、MQ/DB/outbox积压与恢复可核对;旧活动不接管/重拨。仅签“调度状态负载子集”,无持续媒体不能签完整V13 |
|
||||
| EX-01 真实SaaS/MQ/OSS替换;R阶段相关子集 | 获授权测试租户和合成资产,经双方真实身份/TLS/ACL、真实消息及对象服务重跑SA相关用例;确认凭据轮换、业务应用和授权读取 | 双方脱敏日志/业务库、broker和对象证据一致;分别标明真实/Mock组件;不拨真实电话也可验证数据交接。不能据此签R1完整通话、R2或R3 |
|
||||
|
||||
## 6. 沿用的工程基线
|
||||
|
||||
数值来自最终计划与整改计划第5节,是DEV/SCALE-MOCK初始基线,不是生产SLA、额度或收费授权。若上位计划更新,以其版本化profile为准并重跑关联用例。
|
||||
|
||||
- DEV:3租户、2独立调度进程、2 Mock Cell;每租户并发2/CPS1,全局并发6/CPS3,每Cell容量4。
|
||||
- 所有实例汇总:每租户未ACK≤4、持久待发起≤16;全局≤32/≤64。队列上限1000条或16MiB先到者,租户发布≤10条/s。
|
||||
- 新活跃租户发现≤1s;资源足够且持续可调度时B/C发现后≤2s获首次许可;至少100次许可中三租户份额偏差≤10个百分点。资源不足/故障样本单列。
|
||||
- 首次准入窗口30s,到期处理≤1s;心跳2s、租约10s;时钟偏差>500ms告警、>2s停止新准入。
|
||||
- 健康且无未决发起时,控制受理到全部屏障applied P95≤2s;未决/失联单列,不剔除后声称全样本成功。
|
||||
- 最终稿到独立SaaS事务应用P95≤3s;≤180s合成资产对应结束事件至verified、ready消费和授权读取≤120s。
|
||||
- 消费/上传中断5分钟,恢复后10分钟内补齐固定负载;DB/MQ恢复后60s内恢复安全调度,未知活动仍保留占用。上传跨300s有效期须验证原会话续签。
|
||||
- 补传每批≤100事件、全局≤50事件/s,实时结果优先;测试卷70%告警、80%停止新接单,降至60%且依赖正常后恢复。
|
||||
- OP-03:100租户×并发12、全局1200、拨号许可CPS20;预热后≥1000 Mock活动执行连续60分钟,以≤180s正常生命周期持续补位。故障窗口与恢复稳态分列,不隐藏故障后重新截取“连续通过”;不把状态数称为真实接通或媒体并发。
|
||||
|
||||
## 7. 证据、运行登记与判定
|
||||
|
||||
每个专项编号在 `docs/evidence/` 下保存追加式记录;具体文件名在执行时登记。历史证据不覆盖。记录至少包含:
|
||||
|
||||
- 编号及关联FIX/V、代码SHA/差异、契约/profile、镜像digest、DB/broker版本、组件模式、网络隔离、测试命名空间和种子。
|
||||
- 实施人、独立复核人、外部协作人;当前均待实际分派,不以角色名称充当已分派负责人。
|
||||
- 实际可重复命令、退出码、起止时间、故障/恢复时刻、输入与预期、PID/服务地址标识、实际结果和三轮记录。
|
||||
- broker投递/确认、执行侧DB与独立SaaS inbox/业务库、执行器接受/拒绝记录、对象字节摘要、指标样本分母/分位数、告警接收与恢复记录。
|
||||
- 未决操作数、未知占用、未发布outbox、未确认资产与清理结果;清理仅限本轮隔离资源,不删除生产事实或固定EIP。
|
||||
|
||||
状态统一为:**待执行 / 通过 / 失败 / 阻塞 / 不适用**。不适用必须提供契约依据与批准,缺环境不能记不适用。另列缺口类型:未实现、回归失败、证据缺失或外部依赖。
|
||||
|
||||
所有故障用例固定重复三轮,每轮独立命名空间和记录;任一轮失败即该项失败。真实外部故障注入必须在授权测试环境执行,不对生产做破坏实验。
|
||||
|
||||
机器报告须区分本专项子集、完整V项和生产门禁:失败或必需证据缺失返回非零;允许报告L1已通过,但SC-05/EX-01缺环境时总体专项仍为未完成。不得因排除SIP而自动放行M2/M3或R阶段。
|
||||
|
||||
## 8. 完成标准与后续衔接
|
||||
|
||||
1. P0~P3适用项取得独立证据,安全、重复执行、超额、丢事实、假终态/ready等阻断问题关闭;可先签署明确范围的同宿主L1子集。
|
||||
2. SC-05和EX-01分别在已确认目标数据库/多机及真实外部环境完成后,才声明对应生产拓扑与真实SaaS对接已验证;未完成项继续显式阻塞。
|
||||
3. 交付运行入口、分项报告、失败复现及修复回归、迁移/恢复步骤和剩余依赖清单,更新原整改计划的执行记录,不把计划文本当作执行证据。
|
||||
4. 真实执行侧屏障/活动对账、SIP/ARI/RTP、完整ASR/LLM/TTS、真实录音、完整V13与R1~R3继续独立验收。本专项不降低其条件,也不授权自动开展真实测试。
|
||||
@@ -175,6 +175,8 @@ git diff --check
|
||||
|
||||
## 7. 本轮执行记录与剩余门禁
|
||||
|
||||
2026-09-14:已新增[SaaS 对接与任务调度专项验收计划](SaaS对接与任务调度专项验收计划_v1.0.md),细化排除真实 SIP 呼出后的独立 SaaS/MQ/对象存储、双进程调度、控制恢复、告警回滚与持续负载验收顺序。本次仅落地计划文档,专项用例仍待实施/执行,不改变下列历史结果及未完成门禁。
|
||||
|
||||
已按本文的代码级要求实施最小整改:
|
||||
|
||||
- `agent_call/core.py`:模式/依赖拒绝、可信租户路由、租户复合键迁移、发布保留与重试、调度租约/额度、控制Cell屏障、重启对账态、补传进度、格式校验、最终稿幂等、稳定录音与上传恢复、readiness/metrics。
|
||||
|
||||
Reference in New Issue
Block a user