Files
go-sip/docs/evidence/schema-task-trunk-concurrency-20261008.md
T

43 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-10-08 Schema 业务适配:本地验证
## 来源与范围
- 共享合同:`b502ad2d47629fece4542b117c90509f005eaedb`;字段唯一来源为 [`http-task-detail.schema.json`](../../contracts/schema/http-task-detail.schema.json) 和 [`http-ai-providers.schema.json`](../../contracts/schema/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`](saas-dispatcher-p08-acceptance.md);本轮只验证新结构影响的配置、调度、占用及入站校验,并回归现有测试,不重新签收已确认业务规则。
## 未授权或未签收
没有更新测试机,没有真实拨号、真实 AI/OSS 请求或生产发布。RabbitMQ、本地 HTTPS 和双向 TLS 测试不代表真实 SaaS、线路、Asterisk 媒体或 AI 服务签收。旧快照/旧数据库的处置仍须使用者单独确认,不自动迁移或清理。本记录生成时,共享合同已在前一阶段推送,主项目业务改动仍未提交;后续提交、合并与推送状态以 Git 记录为准。