8.0 KiB
8.0 KiB
全系统审计覆盖基线
状态:源码扫描与自动分类已完成,待业务、研发和安全三方评审确认
可复核制品
- 显式逐入口清单:
审计覆盖清单.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_order、tb_agent_wallet、tb_agent_wallet_transaction、tb_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 与 Store:
internal/service/account_audit/service.go、internal/store/postgres/account_operation_log_store.go。 - 生产装配:
internal/bootstrap/services.go、internal/bootstrap/stores.go。 - 调用模块:
internal/service/account/service.go、internal/service/agent_recharge/service.go、internal/service/shop_package_batch_allocation/service.go、internal/service/wechat_config/service.go。 - 已确认裸 goroutine 调用:
internal/service/agent_recharge/service.go1 处,internal/service/wechat_config/service.go5 处;Writer 自身另启 goroutine。 - 迁移责任:04、07、08;19 号票验证生产装配和直接旧表写入归零。
旧资产审计
- Writer、Builder 与 Store:
internal/service/asset_audit/、internal/store/postgres/asset_operation_log_store.go。 - API/Worker 装配:
internal/bootstrap/services.go、internal/bootstrap/worker_services.go、internal/bootstrap/stores.go、internal/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.go、internal/routes/asset.go、internal/model/dto/asset_operation_log_dto.go;由 10 号票保留读取契约。 - 迁移责任:05、06、09;19 号票验证生产装配和直接旧表写入归零。
旧手动轮询日志
- 状态与写入:
internal/service/polling/manual_trigger_service.go、internal/store/postgres/polling_manual_trigger_store.go、internal/model/polling.go。 - 装配与接口:
internal/bootstrap/services.go、internal/bootstrap/stores.go、internal/handler/admin/polling_manual_trigger.go。 - 当前仍同时承担运行状态和历史查询,不能提前停写;09 号票先切到公共异步任务与 Integration Log,10 号票提供历史投影,19 号票再启用旧写护栏。
评审门禁
以下确认尚未由本地代码执行替代,00 号票在三方评审前不得标记完成:
- 业务评审:逐入口业务所有者、资源、Domain Ledger 与 N/A 理由准确,没有改变已评审业务范围。
- 研发评审:事务边界、失败策略、旧 Writer 清单、动作编码和测试接缝能由对应迁移票落地。
- 安全评审:风险等级、敏感字段策略、拒绝/失败覆盖和外部正文摘要策略完整。
评审发现错误时应修改对应显式条目和生成分类规则,并重新运行覆盖门禁;禁止仅手改统计数字。