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

89 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第 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. 本轮工作方向
```text
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 实现 + 验证 + 收口报告。