Files
MailUI4Agents/deploy
JianFeeeee f9b849dcfc chore(deploy): 测试会话清理脚本(可复现、默认干跑、带备份与校验)
用户(2026-09-14):「清理一下」。库里积了 102 个会话 / 1038 封邮件,
其中 76 个是测试会话(gui-lab 专用测试 agent 发的 + drill-/e2e3-/冒烟/演练类)。

为什么不手敲 DELETE:

① 只看「收件箱里看得见的那几条」会漏掉大头 —— `ListInbox` 整体排除
   `status='archived'`(repo.go),归档的测试会话在界面上根本不出现,
   但在库里、在配额统计里都还在。所以按**来源 agent + 别名前缀**判定,
   不按「看得见看不见」。
② 直接 DELETE sessions 会留孤儿:mails/mail_reads/relayed_mails/attachments/
   permission_requests 都指向它们(只有 attachments 有 ON DELETE CASCADE),
   必须子表先删、且在同一个事务里。
③ 附件文件按 sha256 分片存放且**可能被多条记录共用**,所以只能在删完行之后
   逐个确认「已无人引用」再删文件。

校验那一步断言的是「**没有新增**外键孤儿」,不是「零孤儿」:
实测库里本来就有存量孤儿(agent_keys 指向已不存在的 user、3 封回复的
parent_mail_id 悬空),断言零孤儿会永远红 —— 下一个人就会当它坏了而忽略它。

本次实删:会话 76 / 邮件 290 / 已读标记 60 / 附件 80 / 转发 81 / 权限请求 63,
附件文件 22 个;foreign_key_check 与删除前逐条一致(无新增孤儿)。
另跑 prune-deploy-artifacts.sh --apply 释放 980MB 部署残留(/opt/agentmail 1.3G → 306M)。
2026-09-14 15:51:40 +08:00
..