Files
junhong_cmp_fiber/.scratch/tech-global-audit/审计覆盖基线.md
break ff44305d0e
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m19s
实现审计覆盖门禁与外部集成日志闭环
2026-07-23 21:31:22 +09:00

4.9 KiB
Raw Blame History

全系统审计覆盖基线

状态:源码扫描与自动分类已完成,待业务、研发和安全三方评审确认

可复核制品

  • 显式逐入口清单:审计覆盖清单.json,当前共 490 项。
  • 扫描范围270 个 HTTP RouteSpec、24 个 Asynq Worker、4 个定时任务、3 个 Application 公共写入口、189 个旧 Service 公共写入口。
  • 生成入口:go run ./cmd/audit-coverage
  • 发布门禁:go test ./internal/governance/auditcoverage。源码新增、删除或修改入口后,若未同步更新显式清单,测试必定失败。
  • 每项均固定代码入口、业务所有者、中文摘要以及待评审的 Audit Event / Domain Ledger / Integration Log / Outbox 分类候选,并预留动作、风险、资源、操作者来源、事务边界、失败策略、前后数据、敏感策略和确认测试接缝。
  • 当前 Audit Event=N/A 候选均填写逐入口理由;评审前不能据此宣称全系统分类已经确认。

生成器只负责产生待评审候选,不能自行代表评审通过。更新清单时必须核对业务语义,不能仅运行生成命令后直接提交。

分类边界

入口类型 Audit Event Domain Ledger Integration Log Outbox
状态变更、资金、权限、关键配置 必须;关键成功与业务事实同事务 既有业务表仍是权威 存在外部调用时必须 存在提交后可靠副作用时必须
失败、拒绝 业务回滚后独立短事务 不伪造领域事实 外部尝试仍记录真实结果 不为已回滚事实制造事件
普通读取 N/A逐项记录理由 只读投影 N/A N/A
敏感读取、下载和导出 返回敏感结果前必须,自审计失败则不返回 业务数据仍是权威 N/A 异步导出按任务契约决定
外部回调、轮询和 Gateway 调用 状态变化、人工触发、连续失败或高风险异常时必须 业务状态仍在领域表 每次实际或未发送尝试都必须 需要可靠后续处理时必须
Domain 方法 不直接依赖审计基础设施,由 Application 写入 维护业务不变量 由 Application/Adapter 负责 只记录领域事件,由 Application 持久化

旧 Writer 与旧表写入口清单

旧账号审计

  • Writer 与 Storeinternal/service/account_audit/service.gointernal/store/postgres/account_operation_log_store.go
  • 生产装配:internal/bootstrap/services.gointernal/bootstrap/stores.go
  • 调用模块:internal/service/account/service.gointernal/service/agent_recharge/service.gointernal/service/shop_package_batch_allocation/service.gointernal/service/wechat_config/service.go
  • 已确认裸 goroutine 调用:internal/service/agent_recharge/service.go 1 处,internal/service/wechat_config/service.go 5 处Writer 自身另启 goroutine。
  • 迁移责任04、07、0819 号票验证生产装配和直接旧表写入归零。

旧资产审计

  • Writer、Builder 与 Storeinternal/service/asset_audit/internal/store/postgres/asset_operation_log_store.go
  • API/Worker 装配:internal/bootstrap/services.gointernal/bootstrap/worker_services.gointernal/bootstrap/stores.gointernal/bootstrap/worker_stores.go
  • 调用模块:internal/service/asset/internal/service/device/internal/service/device_import/internal/service/iot_card/internal/service/iot_card_import/internal/service/polling/asset_polling_service.go
  • 兼容读取:internal/handler/admin/asset.gointernal/routes/asset.gointernal/model/dto/asset_operation_log_dto.go;由 10 号票保留读取契约。
  • 迁移责任05、06、0919 号票验证生产装配和直接旧表写入归零。

旧手动轮询日志

  • 状态与写入:internal/service/polling/manual_trigger_service.gointernal/store/postgres/polling_manual_trigger_store.gointernal/model/polling.go
  • 装配与接口:internal/bootstrap/services.gointernal/bootstrap/stores.gointernal/handler/admin/polling_manual_trigger.go
  • 当前仍同时承担运行状态和历史查询不能提前停写09 号票先切到公共异步任务与 Integration Log10 号票提供历史投影19 号票再启用旧写护栏。

评审门禁

以下确认尚未由本地代码执行替代00 号票在三方评审前不得标记完成:

  • 业务评审逐入口业务所有者、资源、Domain Ledger 与 N/A 理由准确,没有改变已评审业务范围。
  • 研发评审:事务边界、失败策略、旧 Writer 清单、动作编码和测试接缝能由对应迁移票落地。
  • 安全评审:风险等级、敏感字段策略、拒绝/失败覆盖和外部正文摘要策略完整。

评审发现错误时应修改对应显式条目和生成分类规则,并重新运行覆盖门禁;禁止仅手改统计数字。