2.2 KiB
2.2 KiB
01 — 交付不可变 Audit Event 写入闭环
What to build: 业务用例可以通过统一 Audit Writer 写入不可变、多资源、可串联且默认脱敏的审计事件。成功事件能够与业务事实共用事务,失败或拒绝事件使用独立短事务保留;未注册动作、缺少主要资源或审计写入失败时按明确策略阻止错误事实落地。
Blocked by: .scratch/tech-public-foundation/issues/01-public-migration-ownership-and-gates.md — 01 — 建立公共迁移所有权与检查门禁
Status: ready-for-agent
架构通道: 主通道为 Application + Port/Adapter,辅助通道为 Infrastructure。
完整业务边界: 本票收口 Audit Event、事件资源、动作注册表、统一 Sanitizer、内容哈希、大小控制和 Writer 可靠性,并用一个代表性敏感写操作验证公开接缝。明确不迁移其他旧 Service,不提供完整审计查询中心,不用 Audit Event 替代领域流水。
- Audit Event 支持稳定事件 ID、操作者与入口快照、结果、风险、前后数据、请求/关联/父事件 ID、HTTP 摘要、内容哈希和创建时间;事件资源支持
primary/affected/reference,且每个事件至少包含一个primary。 - 动作注册表集中定义稳定动作编码、中文名称、类别、默认风险、允许资源类型和敏感字段规则;未经注册的动作不能写入生产审计。
- 统一 Sanitizer 删除禁止字段;
before_data、after_data、metadata分别执行 16KB 上限,超限后保存截断标志、原字节数、摘要和受控制品引用。 content_hash基于脱敏、标准化后的不可变内容生成,不包含数据库自增 ID;相同内容哈希稳定,Repository 不提供 Update/Delete 能力。AppendWithTx与业务事实使用同一 GORM 事务,任一步失败整体回滚;已经回滚的failed/denied使用独立短事务,二次失败保留原业务错误并产生 critical 日志和指标。- 真实 PostgreSQL 集成测试覆盖不可变约束、多资源、动作注册、风险默认值、哈希、截断、禁止字段、重复事件幂等和事务回滚。