2.8 KiB
2.8 KiB
历史导出归档生命周期与安全清理审计
结论
历史导出归档从“只进不出”的记录池升级为管理员可控、可预演、可保护、可审计的生命周期工作区。清理不再由列表长度触发,也不会在 jobs.json 超过 500 条时静默丢弃旧任务。
本轮解决的问题
- 取消持久化阶段的 500 条静默截断,550 条归档任务重启后仍完整可检索。
- 新增 30 / 90 / 180 / 365 天清理策略预演;只选取已归档、已结束且未受保护的任务。
- 单批永久清理最多 500 条,候选按最早归档优先;预演令牌失效后必须重新确认。
- 支持为单个归档任务设置“长期保留”,强制填写原因,并记录操作者和时间;可恢复参与清理。
- 清理回执独立写入
cleanup-audit.json,保留执行人、账号范围、策略、截止时间、清理量、保护量、文件影响和候选摘要。 - 清理提交先持久化独立审计,再删除任务索引;任务索引写入失败时恢复任务和审计内存状态,并回滚审计文件。
- 已过保留期的导出文件在状态刷新时同步删除,避免只清空文件路径而留下孤儿文件。
- 桌面维护弹窗由 480px 提升为 760px 工作区;内容区独立滚动、操作栏固定。移动端保持 390px 单列、2 × 2 摘要和固定底栏。
权限与安全边界
- 永久清理、预演、清理审计和长期保留设置仅管理员可用。
ownerScope=mine只处理当前持久化主体创建的任务;all明确表示全部可审计账号。- 生成中任务不会进入候选;长期保留项永远排除在当前批次之外。
- 归档本身不删除任务;永久删除必须重新进入维护工作区、预演并二次确认。
- 本轮浏览器复核没有执行真实清理或修改真实保护状态;候选、保护、确认和回执状态由集成测试覆盖。
视觉证据
01-before-archive-desktop.png:优化前仅有审计归档列表,没有生命周期维护入口。02-after-cleanup-preview-desktop.png:1280 × 720 下的 760px 安全清理工作区。03-after-cleanup-preview-mobile.png:390 × 844 下的单列内容区、2 × 2 影响摘要与固定操作栏。
验证
- 历史页面专项:51 / 51 通过。
- Web 正式套件:78 个文件、517 / 517 通过。
- API 全量测试:通过。
- 根生产构建:Web、开放门户和 Go 二进制全部通过;Web 构建门禁为
web_build_gate=ok。 - 浏览器已检查 1280 × 720 与 390 × 844,没有横向溢出;仅保留 Semi UI 已知的
findDOMNode开发警告。
仍需继续验证
- 生产环境自动调度清理的审批窗口、失败重试和运行告警。
- 多实例同时清理时的分布式互斥与存储事务策略。
- RAW 分类索引物化的收益,以及通知投递幂等重试。