2.5 KiB
2.5 KiB
MQ 整体补传阶段证据
已实现
call.replay、command.replay按已确认v2命令Schema进入MQ消费入口;校验原D、租户、路由和期限,不转换为旧协议。- 事务内保存原命令身份、内容摘要和固定的
command.result响应,提交后才可ACK。 - 只将原业务事件恢复为待投递,保留原event_id和正文;不创建任务、通话或资产,不重拨、不PUT。
- 按source_command_id补传时,从已持久命令确定execution,再通过已记录的call.status/call.finished确定call_id;这样覆盖只含call_id、不含execution_id的已批准recording.uploaded,未擅自加字段。
- 同一命令重复到达只恢复原响应,不再次执行补传副作用;不同内容冲突、错路由及过期命令被拒绝。正在发送的原事件不被重置。
- 新增
007_mq_command_receipts.sql保存固定回执关联;复合外键具有对应唯一索引。现有inbox的历史全局command_id主键没有在本步重建,不将本步宣称为双租户能力完成。 - 命令查询改用已记录command.result的状态、时间、原因和版本,不把inbox的persisted误报为业务状态。
实际测试
- 存储触发器注入失败:原事件投递状态、命令及响应均回滚,不发生部分提交。
- 两类补传的原event_id/正文不变、重复请求同响应、错目标、异内容、过期与零新增拨号任务。
- 新v2通用消息校验/命令解码覆盖四类命令,拒绝旧版本;未添加旧协议回退。
- 本机RabbitMQ测试统一为
TestLocalMQRequestRoundTrip,覆盖command.query、call.query、call.replay、command.replay四类实际MQ往返,验证持久消息、正确目标队列/路由/身份/关联和重复响应身份。 - 补传集成测试明确以本地fixture预置此前已保存的业务事实,证明通知重投,不等同于真实外呼或当前v1执行路径已生成v2事件。
最新全仓race+coverage、vet、构建、格式、diff及旧v1与704652b无差异检查通过。两个本机RabbitMQ测试入口启用,真实外部集成关闭。
- 覆盖率:37.5%,尚未达到65%。
- 临时日志/覆盖率:
/tmp/go-sip-mq-replay.GLsL0Q/。 - 未提交、未推送,未触碰云或真实供应商。
未完成
mq-control仍未关闭:执行/事件仍有旧版本路径;task.control及AI配置/授权的完整MQ协同、所有权断连后的准入联动仍待实现。上传TOKEN/R13的新完成边界及整体部署验收也仍未完成。