update
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s

This commit is contained in:
2026-09-03 09:28:28 +08:00
parent dbfeeee253
commit 370fd3e67f
150 changed files with 64402 additions and 247 deletions

View File

@@ -113,9 +113,41 @@
- **WHEN** 富友主扫统一下单返回失败或请求结果未知
- **THEN** 系统返回项目稳定错误且已接入外部交互日志的调用记录脱敏结果
### Requirement: 高频轮询外部交互日志保留边界
系统 SHALL 不为成功且无业务变化的自动轮询逐次创建 `tb_integration_log`。支付、审批、入站回调及其他依赖外部交互记录实现可靠幂等、结果恢复或渠道裁决的调用 MUST 继续持久化其外部交互记录。轮询外部调用失败、响应无效或结果未知时,系统 MUST 持久化可调查的失败或恢复记录。
#### Scenario: Gateway 轮询成功且状态未变化
- **GIVEN** 一次 Gateway 自动轮询成功,且结果没有引起业务事实变化
- **WHEN** 系统完成该轮询
- **THEN** 系统不创建该次轮询的 Integration Log
#### Scenario: Gateway 轮询调用失败
- **WHEN** 一次 Gateway 自动轮询超时、连接失败或返回无效响应
- **THEN** 系统创建可调查的失败或恢复记录,并按既有策略处理后续轮询
#### Scenario: 入站支付回调
- **GIVEN** 支付渠道发送入站回调
- **WHEN** 系统处理该回调
- **THEN** 系统继续使用可靠持久化的外部交互记录保证既有幂等和恢复语义
### Requirement: 外部交互日志归档与留存受控执行
系统 SHALL 在审计归档与日留存任务总开关关闭时停止 Integration Log 的日归档和日留存处理,并安全跳过已入队的相关任务。总开关开启后,每次相关任务执行 MUST 至多处理一个已结束的上海自然日,且必须继续满足既有归档校验和 pending 记录保留规则。
#### Scenario: Integration Log 归档任务被停用
- **GIVEN** 审计归档与日留存任务总开关关闭
- **WHEN** Integration Log 日归档或日留存任务被调度或消费
- **THEN** 系统不扫描、归档、删除或更新在线 Integration Log
#### Scenario: Integration Log 积压受控推进
- **GIVEN** 任务总开关开启且存在多个满足既有归档条件的日期
- **WHEN** 系统执行一次 Integration Log 归档或留存任务
- **THEN** 系统仅处理一个自然日,并继续保留未处理日期以供后续执行
### Requirement: 外部交互日志逐日物理留存
系统 SHALL 以 Asia/Shanghai 已结束的自然日为单位物理留存 `tb_integration_log`。删除一条已终态在线外部交互日志前,系统 MUST 已为其创建日生成可读取、可验证的归档对象和清单;该归档 MUST 包含该日当时全部外部交互日志,并验证日期范围、记录数量和校验摘要可作为恢复凭证。`pending` 记录 MUST 保留在线,不得被物理删除,且不得阻断同日已终态记录或更晚日期的归档、验证与物理清理。每次执行 SHALL 清理所有满足归档校验条件的已终态记录;某一来源的归档或校验失败时,系统 MUST 保留该来源当天及更晚日期的在线外部交互日志。
系统 SHALL 以 Asia/Shanghai 已结束的自然日为单位物理留存 `tb_integration_log`。删除一条已终态在线外部交互日志前,系统 MUST 已为其创建日生成可读取、可验证的归档对象和清单;该归档 MUST 包含该日当时全部外部交互日志,并验证日期范围、记录数量和校验摘要可作为恢复凭证。`pending` 记录 MUST 保留在线,不得被物理删除,且不得阻断同日已终态记录或更晚日期的归档、验证与物理清理。每次执行 SHALL 至多处理一个满足归档校验条件的已结束自然日;某一来源的归档或校验失败时,系统 MUST 保留该来源当天及更晚日期的在线外部交互日志。
#### Scenario: 最终归档通过后清理在线外部交互日志
- **GIVEN** 某已结束自然日的外部交互归档对象和清单校验成功,且存在已终态在线外部交互日志
@@ -132,15 +164,15 @@
- **WHEN** 日留存任务处理该日期
- **THEN** 系统分批删除该日已终态的在线外部交互日志,保留 `pending` 记录,并保留归档对象
#### Scenario: 历史积压按日期连续补清
#### Scenario: 历史积压按日期受控推进
- **GIVEN** 存在多个昨天及更早日期尚未完成物理清理,且这些日期各自存在满足归档校验条件的已终态外部交互日志
- **WHEN** 日留存任务执行
- **THEN** 系统按日期从早到晚清理全部符合条件的终态日志
- **THEN** 系统仅处理最早的一个符合条件日期,并保留其余日期供后续执行
#### Scenario: pending 不阻断后续日期
- **GIVEN** 较早归档日只剩 `pending` 外部交互日志,且更晚归档日存在满足归档校验条件的已终态外部交互日志
- **WHEN** 日留存任务执行
- **THEN** 系统继续处理更晚归档日的已终态外部交互日志,不因较早日期的 pending 停止日期推进
- **THEN** 系统在后续日留存任务中继续处理更晚归档日的已终态外部交互日志,不因较早日期的 pending 停止日期推进
#### Scenario: pending 后续终结
- **GIVEN** 某归档日的 pending 外部交互日志在该日首次留存后进入公开终态