test(cleanup): verify isolated delivery reuse and bounded data growth
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## 范围与状态
|
||||
|
||||
- 开发分支:`feat/sqlite-cleanup-v0.1`;首期开发尚未全部完成。
|
||||
- 开发分支:`feat/sqlite-cleanup-v0.1`;首期本地开发及规定验收完成。
|
||||
- 用户确认:仅本项目内部数据保留周期调整,不新增 `execution_id`,源 `event_id`(包括 numberID)原样回传;SaaS 如何处理再次返回的同 ID 结果不在范围内。
|
||||
- 共享合同固定 `ef3009d`,`make contracts-update` 的 43 个 JSON 检查与 8 项合同测试通过;接口字段、消息类型、路由、共享文件及 submodule 指针不变,没有共享发布。
|
||||
- 没有合入或推送本项目 main、部署、操作现存运行数据库/恢复目录、退役主机 `.approved`、拨号、抓包或调用真实 AI/OSS。
|
||||
@@ -56,6 +56,37 @@
|
||||
- UTC/上海转换、12:00 不清理、午夜启动安排次日、时钟回退、失败等待次日、取消计时器,以及 205 条跨页候选、未确认/待拨邻居保留、取消后续处理、只清 delivered 不重试其他录音验证通过。
|
||||
- `go test -race ./internal/daily ./internal/store ./internal/dispatcher ./internal/agent ./cmd/sip-go-agent` 通过。
|
||||
|
||||
## 尚待完成
|
||||
## 最终验收
|
||||
|
||||
全量检查、隔离 MQ/HTTPS/mTLS、覆盖率和增长验收。上述局部验证不代表首期全部完成,不代表真实 SaaS、通话或生产验收。
|
||||
- `make check`:格式、合同固定引用/43 JSON及8合同测试、Proto来源、`go vet ./...`、`go test -race ./...`、二进制构建及隔离 MQ 检查通过。
|
||||
- `make release-check-local`:制品及固定合同/队列门禁通过;`production_approval=false` 保持不变,未部署。最终源码的干净提交检查见后续补充,不把最初 dirty 源发布检查当作固定提交制品。
|
||||
- 实际运行的隔离 RabbitMQ + HTTPS + gRPC mTLS 端到端通过。更新旧“完成后永不重用”断言:收到原 ID 最终结果、两个消息类型分别确认、本地清理后,再通过 MQ 投递同一源 ID,Agent 再次接纳且 ID 不变。没有以孤立单元测试代替 MQ/HTTPS/mTLS 运行事实。
|
||||
- 业务覆盖率 **72.9%**(新增纯测试后复核),高于 65%;Python生产部署 **26** 项、脚本 **9** 项通过。
|
||||
- SQLite增长:4轮各40通、同源 numberID 重用及重启,完成后 inbox/outbox/recordings 都为0,共享task/config仍各1;预热后 page_count 不继续增长,不执行 VACUUM、不要求数据库文件立即缩小。
|
||||
- 录音/拒绝文件增长:各3轮×20条重复身份,完成后原件/回执或录音叶目录不存在;保留共享目录,不留 `.approved` 或内存永久完成身份历史。
|
||||
- 没有修改部署主机或现有运行数据库/文件,未 main 合入/推送、部署、重置、迁移、拨号、抓包、实际 AI/OSS 调用或 OSS 对象删除。SaaS收到、判重、覆盖和真实通话/生产验收不在本次范围。
|
||||
|
||||
### 计划验收逐项对应
|
||||
|
||||
| 项目 | 本地证据 |
|
||||
| --- | --- |
|
||||
| finished需结果成功与派发/最终结果各自confirm;任一缺失保留 | store/cleanup_test.go、dispatcher/cleanup_test.go及隔离runtime集成 |
|
||||
| rejected需正式未发起拒绝confirm,不要求不存在的最终结果 | store/cleanup_test.go、rpc definitive-no-dial及原有占用释放回归 |
|
||||
| suppressed需durable stopped和成功stop confirm | store/cleanup_control_test.go:205条、单条SQL故障、取消中断及补收尾 |
|
||||
| Stop回执后删;停止状态/共享配置/未决/unknown保留 | store清理/占用恢复、dispatcher缓冲旧批次/并发派发及既有恢复测试 |
|
||||
| .approved不生成;活动并发仍受保护 | rpc/approved_retirement_test.go:活动重叠拒绝、结束/重启后重用、旧标记不读改 |
|
||||
| 已存主机.approved受控退役 | 仅临时目录验证私密备份bytes/size/SHA和相邻边界;主机操作范围外未执行 |
|
||||
| 音频删、delivered info仍在时续处理;其他状态缺音频报错 | agent/recording_cleanup_test.go,信息/叶目录失败和坏SHA,重启不PUT/report |
|
||||
| 未完成.results引用、未知侧文件/坏记录保留,独立记录继续 | agent录音清理/扫描及全量结果日志回归;临时锁释放和跨实例一次PUT |
|
||||
| 原始拒绝准确关联;一回执多文件;孤立/未确认不删 | store/cleanup_rejected_test.go,完整回执/身份/内容/文件索引证明 |
|
||||
| 两阶段删除失败/并发新捕获不会提前清回执 | 原件半途失败、回执SQL触发器失败、capture-race及独立坏组回归 |
|
||||
| .results正常成功收尾、SIP来源、既有临时行为不退化 | 全量agent/result_journal、store/sip_source及cmd/rpc回归;未知.pending保持 |
|
||||
| 实时与午夜同条件;0点非12点;故障/取消不关准入 | daily/midnight_test.go、dispatcher/cleanup_scan_test.go、Agent delivered-only回归 |
|
||||
| 同源ID原值重用,不新增字段,不验证SaaS重复处理 | controller单元与隔离MQ最终结果/再次执行;Schema/Proto/submodule均未改 |
|
||||
|
||||
### A01–A12 / K01–K16 范围核对
|
||||
|
||||
- A01–A03、K01–K02:固定共享合同、来源检查、事件身份及入站/出站边界由本次完整检查和现行Schema回归核验;不另复制或修改运行契约。
|
||||
- A04–A06、K03–K10:HTTP完整配置、任务控制优先级、租户/任务/线路占用、停止/缓冲并发、publisher confirm及未决重启保护由全量回归及实际隔离MQ/HTTPS/mTLS核验;已完成数据只在本地条件满足后释放记录。
|
||||
- A07–A09、K11–K14:Agent会话/原值派发、执行终结、上传绑定/未知PUT/恢复与结果交付由rpc/agent/store回归核验;本次只清理成功delivered,不扩大重试或真实云授权。
|
||||
- A10–A12、K15–K16:可观测性、构建制品、本地门禁和单节点边界检查通过;真实SaaS/management、真实通话/AI/OSS、ECS、容量、多节点/租户及生产签收不适用且未宣称通过。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Dispatcher SQLite、本地文件清理与配置缓存调整计划(v0.1)
|
||||
|
||||
- **状态:** 首期实施中;按已确认目标执行,尚未完成验收
|
||||
- **状态:** 首期本地实施与验收完成;未合入/推送 main、未部署。逐项证据见 `docs/evidence/sqlite-cleanup-v0.1-local.md`
|
||||
- **日期:** 2026-10-10
|
||||
- **首期范围:** Dispatcher SQLite 内已满足条件的单次呼叫执行记录及回执;Agent `.approved` 持久执行标记、已完成交付的录音恢复文件;Dispatcher 已确认拒绝的原始数据文件。遗留临时文件仅发现并报告,不自动删除。
|
||||
- **后续独立范围:** 当前配置内存化;不作为首期清理的开发或验收前置条件。
|
||||
|
||||
Reference in New Issue
Block a user