## Context 统一审计 Writer 当前被业务事务直接调用;其错误由调用方返回,导致事务回滚。审计规则要求内部可见资源不携带主体投影,但个人客户绑定关联资源违反了该规则。 ## Goals / Non-Goals **Goals:** - 统一将审计写入失败降级为结构化诊断,不影响业务事务和接口结果。 - 修复个人客户资产绑定的无效审计资源。 **Non-Goals:** - 不改变已成功写入审计与业务事实同事务提交的行为。 - 不新增队列、表、重试机制或迁移。 ## Decisions - 在统一 `Writer` 的业务审计入口吞掉写入错误并记录失败;所有既有 86 个调用者由此共享行为,无需逐一改造。备选的逐调用者处理会遗漏路径且重复。 - 失败诊断复用现有 `auditfailure.RecordSecondaryWriteFailure`,同时用 Zap 写结构化日志,保留动作、资源、请求与关联标识。 - 删除内部关联卡/设备资源上的主体摘要;主体投影只保留在主个人客户资源。 ## Risks / Trade-offs - [审计记录可能缺失] → 写入结构化日志与二次失败记录,供告警和补偿处理。 - [调用方继续假定写入失败可回滚业务] → 统一入口保证实际行为一致,并通过构建与静态调用点复核。 ## Migration Plan 1. 发布代码后,首次 C 端登录及所有既有审计调用路径自动采用不阻断行为。 2. 回滚时恢复原 Writer 行为;不存在数据迁移。