Files
2026-08-20 12:03:17 +08:00

3.1 KiB

ADDED Requirements

Requirement: 审计在线数据逐日物理留存

系统 SHALL 以 Asia/Shanghai 已结束的自然日为单位处理统一审计事件及其资源快照的在线留存。每次留存执行 SHALL 从最早尚未完成清理的归档日开始,连续处理至昨天;任一归档日未通过完整性校验时,系统 MUST 保留该日及其后续日期的在线审计数据,且不得将它们标记为已清理。系统 MUST 先删除该日的审计资源快照,再删除该日的审计事件,并保留对象存储归档对象及清单作为恢复凭证。

Scenario: 已验证日期完成物理清理

  • GIVEN 某已结束自然日的审计归档成功,归档对象和清单可读取且与在线记录范围、数量和校验摘要一致
  • WHEN 日留存任务处理该日期
  • THEN 系统分批删除该日在线审计资源快照和审计事件,并将该归档日标记为已清理

Scenario: 归档校验失败阻断连续清理

  • GIVEN 某尚未清理的归档日缺少归档、归档校验失败或清单与在线数据不一致
  • WHEN 日留存任务处理该日期
  • THEN 系统不删除该日或更晚日期的在线审计数据,并将失败信息写入独立日留存日志

Scenario: 失败后从未完成日期续跑

  • GIVEN 日留存任务在某个归档日失败,较早日期已经标记为已清理
  • WHEN 后续日留存任务再次执行
  • THEN 系统从最早未完成清理的归档日继续处理,不重复删除已完成日期的数据

Requirement: 日留存独立运行日志

系统 SHALL 将日留存的日期推进、清理成功和阻断失败写入独立轮转日志。该日志 MUST 位于 Worker 工作目录下配置的 logs/audit-retention.log,每条失败记录 MUST 包含归档日期、数据来源、失败分类和安全错误摘要。日留存和日归档路径 MUST NOT 将失败详情写入 tb_log_archive_run.error_summary

Scenario: 留存日期被阻断

  • GIVEN 日留存处理某个归档日时发生缺失账本、pending 记录、归档校验或删除错误
  • WHEN 系统停止该日期推进
  • THEN logs/audit-retention.log 记录该日期、来源、失败分类和错误摘要
  • AND 对应账本记录的 error_summary 不写入该失败详情

Scenario: 留存日期清理成功

  • GIVEN 某归档日通过全部校验并完成在线数据物理删除
  • WHEN 系统完成该日期处理
  • THEN logs/audit-retention.log 记录归档日期、各来源清理数量和耗时

Requirement: 审计调查留存边界连续

系统 SHALL 仅将连续完成物理清理的审计归档日期间公开为已归档边界。在线审计调查接口 MUST 继续允许查询任何尚未物理清理的较早日期,且不得因某个较晚日期已归档而将仍在线的日期错误标记为已归档。

Scenario: 清理链存在未完成日期

  • GIVEN 某较早归档日尚未完成清理
  • WHEN 后续日期的归档已成功生成
  • THEN 审计调查接口仍将较早未清理日期视为在线可查询数据