完善公共基础接入与全局审计闭环

This commit is contained in:
2026-07-23 19:10:30 +09:00
parent 17782d5f8e
commit 7e0171a8b4
32 changed files with 295 additions and 26 deletions

View File

@@ -321,13 +321,14 @@ queueClient.EnqueueTask(ctx, constants.TaskTypeXxx, payloadBytes)
### 审计日志规范
**适用场景**任何敏感操作(账号管理、权限变更、数据删除等)
**适用场景**整个系统中的状态变更、敏感读取以及关键拒绝和失败,不限于七月迭代。实现前必须查阅并增量维护 `.scratch/tech-global-audit/审计覆盖基线.md`;选择不审计必须登记 N/A 理由,禁止留空。
- 旧模块在 Service 层、新 DDD 模块在 Application UseCase 中注入审计能力,操作成功后调用 `LogOperation()`
- 必填字段:`OperatorID``OperationType``OperationDesc``BeforeData``AfterData`
- 异步写入Goroutine写入失败不影响业务失败时记录 Error 日志
**示例参考**`internal/service/account/service.go`
- Access Log 只负责 HTTP 调试Audit Event 负责业务审计Domain Ledger 负责金额和状态等领域事实Integration Log 负责外部交互;四者不得混用或合并。
- 旧模块在 Service/Application 事务脚本中、新 DDD 模块在 Application UseCase 中通过统一 Audit Writer Port/Adapter 接入;禁止新增裸 goroutine 审计写入。
- 成功的资金、权限、关键配置、人工状态变更和其他高风险操作必须与业务事实同一 GORM 事务,审计失败则业务回滚。
- 业务已回滚后的 `failed/denied` 审计使用独立短事务;二次失败保留原业务错误,并记录 critical 日志和指标。
- Audit Event 至少记录稳定动作编码、操作者、来源、主要资源、前后数据、结果、风险及 request/correlation 标识;敏感值按统一 Sanitizer 删除或摘要化。
- 新增或修改 PRD、Ticket 时必须明确 Audit Event、Domain Ledger、Integration Log、Outbox 的使用决定或 N/A 理由,并在最终发布门禁引用具体公共基础票。
---