Files
junhong_cmp_fiber/.scratch/tech-global-audit/审计覆盖基线.md
2026-07-24 16:07:18 +08:00

8.0 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 持久化

七月测试环境冻结期增量登记

complete-july-iteration-test-release 已明确把 Audit Event Writer 与发布门禁延期到任务 6.5。以下登记仅说明测试环境阶段的临时分类不代表生产评审通过也不得删除通知事实、Access Log 或公共 Outbox

入口 Audit Event Domain Ledger Integration Log Outbox
明确后台账号通知事件消费与幂等写入 N/A测试环境冻结生产前由 6.5 重新评审通知失败与系统告警治理) tb_notification 是通知投递与接收人已读状态的权威事实 N/A无外部系统调用 消费公共 Outbox 的稳定事件,不复制 Outbox
当前后台账号单条通知已读 N/A低风险个人阅读状态普通已读操作只进入 Access Log tb_notification.is_read/read_at 是权威状态 N/A N/A
当前后台账号未读数与基础列表 N/A普通读取不返回其他接收人数据或敏感业务正文 只读 tb_notification 投影 N/A N/A
代理主钱包订单统一扣款 延期(测试环境冻结;生产前由 6.5 为资金变更补齐同事务 Audit Event tb_ordertb_agent_wallettb_agent_wallet_transactiontb_payment 与套餐使用记录在同一事务形成权威事实 N/A不调用外部系统 同事务写入 wallet.agent_main.debited,为余额预警等后续消费者提供稳定事实
代理主钱包订单资金预占、释放与完成扣除 延期(测试环境冻结;生产前由 6.5 为冻结及终态变更补齐同事务 Audit Event tb_agent_wallet_reservation 是预占金额、付款钱包与唯一终态的权威事实;钱包与完成扣除流水同事务更新 N/A不调用外部系统 同事务写入 wallet.agent_main.reservation.changed;完成扣除同时写入 wallet.agent_main.debited,消费者按权威事实幂等确认
代理主钱包充值与人工调整正向入账 延期(测试环境冻结;生产前由 6.5 为入账补齐同事务 Audit Event 充值/人工调整业务事实、tb_agent_wallet 与唯一成功流水在同一事务形成权威事实 N/A本接缝不调用支付或审批外部系统 同事务写入 wallet.agent_main.credited,消费者按成功流水复核;支付/审批 Integration Log 由 UR#34 外部流程负责
代理订单主钱包退款回充 延期(测试环境冻结;生产前由 6.5 为退款资金变更补齐同事务 Audit Event 原成功扣款流水定位付款钱包并限定金额;退款审批、tb_agent_wallet 与唯一成功退款流水同事务形成权威事实 N/A本资金接缝不调用渠道或审批外部系统 同事务写入 wallet.agent_main.refunded,消费者复核退款流水、原扣款事实、金额上限和资产快照
代理商资金概况信用投影 N/A普通受权读取不返回其他数据范围的资金事实不执行资金或配置变更 只读投影 tb_shop、主/佣金钱包、提现汇总和主账号;派生金额不另建事实表 N/A无外部系统调用 N/A纯 Query 不产生可靠副作用)

旧 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 清单、动作编码和测试接缝能由对应迁移票落地。
  • 安全评审:风险等级、敏感字段策略、拒绝/失败覆盖和外部正文摘要策略完整。

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