3.3 KiB
3.3 KiB
MQ 查询阶段证据(mq-control 尚未完成)
已接通
command.query、call.query经 Dispatcher 的 MQ 消费入口进入严格v2校验,按D身份、原租户及实际路由检查归属。- 新增
006_mq_queries.sql:租户绑定与查询去重记录;查询身份、固定响应和outbox在同一事务保存,成功持久化后才允许ACK。 - 重复查询返回原响应身份及原快照;已发布响应可恢复为待发送,正在发送的响应不被重置。重启及请求期限过后重复投递仍取原决定,不重新计算快照。
- 过期的新请求保存明确拒绝;相同消息身份但不同内容、不同D或租户绑定冲突不被接受。
- 命令快照读取实际收件记录及已记录的aggregate version,不用固定版本填补缺失证据。
- 呼叫快照只收集同D、同租户、同call_id的事实,包含已批准的状态、尝试事件、文字事件、uploaded/failed录音事件及四类投递计数。
- 超出256 KiB预算返回有界的
rejected/unavailable响应,不截断成貌似完整的快照,不进入无限重投。合同没有include或分页字段,没有添加它们。
校验与错误
- 新增嵌入式Schema loader及编译结果复用;跨文件引用只取指定契约包,外部URL、跨版本和越界文件名被拒绝,不访问网络。
- 新服务消息使用已批准字段
message_type,不是message_kind或request_type。 - 非法UTF-8曾被当作可重试错误;真实失败测试后改为明确的无效消息错误分类,避免反复回队。
- 当前全局
contracts.SourceCommit及执行/事件流程统一固定为v1;新查询同样使用该唯一契约包,不尝试旧协议回退。
实际测试
- Schema离线引用、六类服务消息正例、额外字段/旧版本拒绝。
- 查询存储失败回滚:响应、去重记录、租户绑定均不部分提交。
- 查询重复、异内容冲突、重启、过期,以及缺失实际版本证据。
- 呼叫事实集合及投递计数;大快照拒绝;未批准include字段拒绝。
- 本机RabbitMQ真实命令查询往返:请求队列→Dispatcher→SQLite/outbox→指定SaaS队列;验证persistent、路由、租户、D身份和correlation_id。重复请求恢复同一响应ID。
- 该测试使用本Agent创建的本机容器及专用
go-sip-query-testsvhost,避免和MQ包测试抢取同一个固定SaaS队列。开关为GO_SIP_LOCAL_QUERY_MQ_URL,仅接受loopback。
最新全仓验证:go test -race -coverprofile=... ./...、vet、构建、格式及diff检查通过;同时启用两个本地MQ测试入口,真实外部集成开关清除。旧v1契约与704652b无差异。
覆盖率 36.9%,仍未达到65%。临时日志/覆盖率:/tmp/go-sip-mq-queries.hhyp37/。
未完成
旧HTTP业务实现、启动流程、CLI参数、环境字段及部署样例已删除;TestDispatcherHasNoBusinessHTTPFlags先失败后通过,删除后全仓race/vet/build及旧v1无变更检查通过,日志/tmp/go-sip-http-removal-tests.log。未保留兼容入口。
执行/控制/整体补传、AI配置/授权请求响应、全部旧MQ路由/信封替换、所有权断连后的准入联动,以及新上传事实交付仍待完成。本证据不关闭mq-control或其他任务,不代表完整业务、本地部署验收或真实供应商通过。