4.2 KiB
4.2 KiB
2026-10-08 Schema 业务适配:本地验证
来源与范围
- 共享合同:
b502ad2d47629fece4542b117c90509f005eaedb;字段唯一来源为http-task-detail.schema.json和http-ai-providers.schema.json。 - 使用者确认:适配任务在线路上的并发上限,允许 0;核验 AI 的 HTTP/WebSocket 地址分工;只进行本地开发和测试。
- 主项目基于
3d3d190的现有工作区,保留此前未提交改动;本记录不是一个已提交版本的部署证据。
实现结果
- 配置读取、冻结任务快照和 Agent 校验使用新线路对象;旧字符串数组、缺失上限、负数和重复线路拒绝。
- Dispatcher 按任务配置顺序选择仍有容量的线路,0 或本任务在线路上的占用已达上限时不使用该线路;不会在发出失败后换线重拨。
- SQLite 原子接纳同时核对租户、任务总量、线路总量和任务在线路上的上限。最后一次选线的任务修订必须与持久快照相同,防止选线期间配置调整后仍发出旧选择。
- 任务在线路上的占用从现有 inbox 中计算;
dispatching、dispatched、unknown均计入。未知执行不因配置调整、重启或经过时间释放,明确终结后才释放。 - 不新增数据库表,不迁移旧库,不自动转换旧任务快照。已发出通话的冻结快照不被 edit 改写。
- 已有 AI 地址分工保持不变:ASR/TTS 使用
ws_endpoint,LLM 使用api_endpoint;补充不同地址、同连接多用途及缺失地址不回退的测试。 - 发出前日志只记录事件标识、修订、线路和并发计数,不记录被叫、密钥、完整配置或对话。
- SaaS Mock 的受限单通入口和结果核验使用新结构;三个本地错误示例只更新线路形状,保留各自原本要验证的错误。
验证
| 检查 | 结果 |
|---|---|
| 配置读取及序列化 | 对象数组与 0 保持原值;旧格式、缺失上限、负数、重复 ID 拒绝 |
| 选线 | 独立任务占用、0、容量不足、配置顺序和重复 ID 均有测试 |
| 原子占用 | 20 个竞争请求在任务线路上限 5 时仅 5 个被接纳 |
| 未知与重启 | 原未知通话保留占用;另一任务有独立的任务线路容量;原通话明确结束后才重新开放 |
| edit | 新上限立即约束后续接纳;旧选择修订拒绝;已发出通话维持旧快照 |
| Agent 入站 | 旧格式、无效配置、禁用或未授权线路在记录尝试/发出前拒绝 |
| AI 地址 | 火山/百炼 ASR、百炼 TTS 与 OpenAI 兼容 LLM 地址分工及无回退测试通过 |
make check |
通过格式、合同/Proto 来源、go vet ./...、go test -race ./...、构建及本地集成检查 |
| RabbitMQ 及完整 Mock 链路 | Broker、Dispatcher runtime、正式命令入口与两个 SaaS Mock 测试实际运行,未跳过;正式命令测试包含双向 TLS Agent 与 HTTPS Mock OSS 上传及结果回报 |
make coverage |
总语句覆盖率 71.6%,高于 65% 要求 |
make release-check-local |
通过;共享合同为上述提交;source dirty=true、production_approval=false |
新测试按失败再修复:读取测试先暴露旧 []string 无法解析新对象;占用测试先暴露 0 被接纳、未知占用未受到任务线路限制、20 个竞争请求全部被接纳。实现调整后通过,并进行全量回归。
A01–A12 / K01–K16 的权威项目内对照仍见 saas-dispatcher-p08-acceptance.md;本轮只验证新结构影响的配置、调度、占用及入站校验,并回归现有测试,不重新签收已确认业务规则。
未授权或未签收
没有更新测试机,没有真实拨号、真实 AI/OSS 请求或生产发布。RabbitMQ、本地 HTTPS 和双向 TLS 测试不代表真实 SaaS、线路、Asterisk 媒体或 AI 服务签收。旧快照/旧数据库的处置仍须使用者单独确认,不自动迁移或清理。本记录生成时,共享合同已在前一阶段推送,主项目业务改动仍未提交;后续提交、合并与推送状态以 Git 记录为准。