All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 51s
2.1 KiB
2.1 KiB
Context
tb_integration_log.audit_event_id 可空,现有所有调用方均未赋值;而事件查询已只使用该稳定字段返回外部交互引用。
Goals / Non-Goals
Goals:
- 正常路径让每条新 Integration Log 使用已持久化的 Audit Event 内部 ID。
- 保持同一外部交互的开始、终态与重试使用同一稳定关联。
- 在缺少关联时保留外部交互事实并输出可排查告警。
Non-Goals:
- 不回填历史空关联记录。
- 不按请求、资源、时间或摘要推断关联。
- 不改变外部渠道协议、重试策略或审计查询响应格式。
Decisions
- 为外部交互建立专用、已注册的 Audit Event,再将其内部 ID 传给 Integration Log 的开始或入站写入。这样在实际外呼或回调处理前已具备稳定关联;相比在完成后补写,不会留下因超时、崩溃或未发送而无关联的记录。
- 调用链在可取得审计事件时传递关联;Integration Log 仓储允许关联缺失并记录告警。相比拒绝写入,外部交互事实不会因审计关联故障丢失。
Complete仅延续既有关联,不接受用名称、时间或摘要寻找审计事件。重试沿用所属逻辑外部交互的审计事件。- 由完整用例负责在适当事务中创建审计事件并传递内部 ID;不让 Integration Log 仓储根据不完整上下文拼造操作者、资源或业务结果。
Risks / Trade-offs
- [调用链较多] → 先枚举所有
Start、RecordInbound与未发送裁决调用点,逐链路传递关联并验证缺失时告警。 - [审计事件写入先于外部调用] → 使用外部交互开始/入站事实的专用事件,终态仍由 Integration Log 保存,避免把未完成调用伪装为业务成功。
- [现有写入顺序不共享事务] → 关联事件优先创建;创建失败时仍写入 Integration Log 并记录告警。
Migration Plan
- 部署新的审计事件类型、关联传递和缺失关联告警。
- 逐调用链接入并在隔离数据库验证新记录均有有效关联。
- 监控缺失关联告警;回滚时恢复调用链改动,不修改历史数据。