feat(agent): clean delivered recording files with resumable deletion
This commit is contained in:
@@ -28,6 +28,16 @@
|
||||
- 原 `event_id` 清理后可再次接纳、执行和回传;只删除本通数据,共享配置和任务状态保留。报告的是删除的逻辑行/正文字节,不声称 SQLite 文件立即变小。
|
||||
- `go test -race ./internal/store ./internal/dispatcher ./internal/rpc` 通过。
|
||||
|
||||
### 已交付录音文件
|
||||
|
||||
- 先添加反例:原逻辑不能读取音频已删但 `info.json` 仍为 delivered 的合法中间状态,且不会删除已交付文件;实现后通过。
|
||||
- 仅持久 delivered、上传成功回执和原身份/长度/校验和等信息有效、且原事件无未完成 `.results` 引用时删除。prepared、ready、end_pending 引用都保留原恢复文件,引用完成后可以继续收尾。
|
||||
- 依次删除本条 `recording.wav`、同步目录、删除 `info.json`、同步并删除准确且空的叶目录;共享父目录、`.results`、未知侧文件与 OSS 对象不删除。信息或叶目录删除失败保留/恢复 delivered 依据,下次启动只补删除,不申请授权、PUT 或重报。
|
||||
- delivered 且原音频已经缺失时,只放行这一已确认删除的中间状态;其他状态缺音频仍报错。原校验和严格保持有效的小写 SHA-256,上传回执、长度和身份校验不弱化。
|
||||
- 同一录音跨不同 recovery 实例使用临时按路径互斥;结果引用写入/确认与删除协调,锁使用结束即移除,不形成永久身份历史。并发实例仍只有一次 PUT、一次回报;完成后不存在该记录,后续直接调用明确返回不存在而非虚构已完成历史。
|
||||
- 既有恢复扫描能续处理 delivered 中间状态,避免清理后同次遍历把已删除音频误报成孤立文件;单条坏目录不妨碍其他合法记录。没有新增十秒全目录清理任务,既有恢复调度保持原用途。
|
||||
- 信息/目录删除失败后重启、未完成引用、无音频的坏回执、未知文件、跨实例并发及互斥清退测试通过;`go test -race ./internal/agent ./internal/rpc ./cmd/sip-go-agent` 通过。
|
||||
|
||||
## 尚待完成
|
||||
|
||||
已交付录音、拒绝原始文件的准确关联与续处理、午夜补扫,以及全量检查、隔离 MQ/HTTPS/mTLS、覆盖率和增长验收。上述局部验证不代表首期全部完成,不代表真实 SaaS、通话或生产验收。
|
||||
拒绝原始文件的准确关联与续处理、午夜补扫,以及全量检查、隔离 MQ/HTTPS/mTLS、覆盖率和增长验收。上述局部验证不代表首期全部完成,不代表真实 SaaS、通话或生产验收。
|
||||
|
||||
Reference in New Issue
Block a user