aps-agent/docs/round-13-audit-export-plan.md

4.4 KiB
Raw Permalink Blame History

第 13 轮工作计划(轻量合并版):审计合规导出与保留脱敏

更新日期:2026-08-01

1. 本轮目标

新增审计合规导出:GET /api/gov/audit/export?format=json|csv 导出当前作用域全部审计事件(含链校验与锚定状态摘要),导出时对敏感字段(token/password/secret/key/authorization 等)脱敏;黄金测试证明导出完整、脱敏生效、格式可解析;矩阵 104 行剩余项(保留脱敏、合规导出)落地。

2. 背景和当前状态

  • 当前已完成:世界内 SHA-256 链(audit.py)、独立介质锚定(audit_ledger.py)、事件镜像(audit_mirror.py)、/api/gov/audit 展示链/锚定/镜像状态。
  • 当前缺口:无导出端点;无保留脱敏(导出可能含 confirmId、用户信息等敏感字段)。
  • 本轮为什么现在做:矩阵 104 行剩余「保留脱敏、合规导出」;纯本地、低风险。
  • Workspace preflight:第 12 轮收口(479 passed);服务 8003/5173 正常;共享脏工作区、无提交。
  • 方向分析:Q1 推荐(审计合规导出/脱敏),目标续跑轮授权执行。

3. 本轮工作方向

audit 事件仅内页展示,无导出/脱敏
-> audit_export.py:sanitize_event(敏感键脱敏)+ export_events(events, fmt=json|csv)
-> GET /api/gov/audit/export?format=...(含 chain/anchor 摘要)
-> 黄金测试:导出完整、脱敏生效、json/csv 可解析
-> 矩阵 104 行注记;CHANGELOG

4. 已确认决策

任务重量:

  • 档位:轻型(audit_export 模块 + 网关端点 + 黄金测试)。
  • 规模依据:新增独立模块与端点,不改既有审计写入;风险 LOW。
  • 选择原因:矩阵 104 行明确剩余项之一;合规导出是审计闭环的收尾能力。

P0/P1 决策(按 Q1 推荐采纳):

  • 决策 1(P0):本轮切片 = 审计合规导出与保留脱敏。
  • 决策 2(P1):不新建分支、不提交、不推送。
  • 决策 3(P1):验证深度 = 聚焦导出/脱敏测试 + 全量黄金回归。

默认假设:

  • 假设 1:脱敏规则覆盖键名含 token/password/secret/key/authorization/credential 的值 → 替换为 ***REDACTED***;嵌套 dict/list 递归。
  • 假设 2:导出格式 json(列表)/ csv(表头 + 行),均含 exportedAt 与 chainOk 摘要元信息。
  • 假设 3:导出仅当前作用域(复用 gov_audit 的 mirror-first 事件源),不含跨租户数据。

未决但不阻塞:WORM 物理介质、完整 Merkle 树、异常告警(后续轮)。

5. 范围

In scope:

  • server/agent_core/audit_export.py(新):sanitize_value/sanitize_event(敏感键脱敏,递归)+ export_events(events, fmt)(json/csv)。
  • server/gateway/app.py:GET /api/gov/audit/export?format=json|csv(复用 mirror-first 事件源 + chain/anchor 摘要)。
  • tests/golden/test_audit_export.py(新):导出完整、脱敏生效(敏感键被掩码)、json/csv 可解析、非敏感值保留。
  • 文档:docs/architecture/harness.md、docs/product/plan-completion-matrix.md(104 行注记)、docs/CHANGELOG.md。

Out of scope:

  • WORM 物理介质、完整 Merkle 树、异常告警、前端导出 UI。
  • 提交/推送/合并/清理用户改动。

6. 成功标准

  • 聚焦:python -m pytest -q tests/golden/test_audit_export.py -p no:cacheprovider 通过(≥4 项)。
  • 全量:python -m pytest tests/golden -q -p no:cacheprovider(固定 .venv)≥ 479。
  • ruff 干净;git diff --check 无空白错误。

7. 验证方式

  • 脱敏单测(敏感键掩码、非敏感保留、嵌套递归);导出 json/csv 解析;全量回归。

8. 关键风险

风险 影响 控制方式
脱敏规则误伤合法字段 导出信息缺失 只掩码敏感键名;测试锁定非敏感保留
导出大事件集内存 性能 当前作用域事件量有限;分页留待后续
CSV 转义问题 解析失败 csv 模块标准写入

9. 停止条件

  • 全量黄金测试非本轮相关回归无法快速定位时暂停。
  • 任何提交/推送/合并/清理操作停下等待授权。

10. 本轮完成定义

  • 实现、测试、文档完成;聚焦与全量通过;矩阵/CHANGELOG 回写;不提交。
  • 收口:报告主要结论、关键洞察、需要特别留意的地方。

11. 下一步

轻量合并版:主 agent 实现 + 验证 + 收口报告。