Files
2026-08-26 14:54:26 +08:00

4.2 KiB
Raw Blame History

MODIFIED Requirements

Requirement: 外部交互日志逐日物理留存

系统 SHALL 以 Asia/Shanghai 已结束的自然日为单位物理留存 tb_integration_log。删除一条已终态在线外部交互日志前,系统 MUST 已为其创建日生成可读取、可验证的归档对象和清单;该归档 MUST 包含该日当时全部外部交互日志,并验证日期范围、记录数量和校验摘要可作为恢复凭证。pending 记录 MUST 保留在线,不得被物理删除,且不得阻断同日已终态记录或更晚日期的归档、验证与物理清理。每次执行 SHALL 清理所有满足归档校验条件的已终态记录;某一来源的归档或校验失败时,系统 MUST 保留该来源当天及更晚日期的在线外部交互日志。

Scenario: 最终归档通过后清理在线外部交互日志

  • GIVEN 某已结束自然日的外部交互归档对象和清单校验成功,且存在已终态在线外部交互日志
  • WHEN 日留存任务处理该日期
  • THEN 系统分批删除该日已终态的在线外部交互日志并保留归档对象

Scenario: 存在待完成外部交互日志

  • GIVEN 某归档日仍存在待完成的外部交互日志
  • WHEN 日留存任务尝试处理该日期
  • THEN 系统保留该 pending 日志,但不得停止同日终态记录和更晚日期的清理

Scenario: 含 pending 的日期清理终态日志

  • GIVEN 某已结束自然日同时存在已终态和 pending 的外部交互日志,且该日归档对象和清单校验成功
  • WHEN 日留存任务处理该日期
  • THEN 系统分批删除该日已终态的在线外部交互日志,保留 pending 记录,并保留归档对象

Scenario: 历史积压按日期连续补清

  • GIVEN 存在多个昨天及更早日期尚未完成物理清理,且这些日期各自存在满足归档校验条件的已终态外部交互日志
  • WHEN 日留存任务执行
  • THEN 系统按日期从早到晚清理全部符合条件的终态日志

Scenario: pending 不阻断后续日期

  • GIVEN 较早归档日只剩 pending 外部交互日志,且更晚归档日存在满足归档校验条件的已终态外部交互日志
  • WHEN 日留存任务执行
  • THEN 系统继续处理更晚归档日的已终态外部交互日志,不因较早日期的 pending 停止日期推进

Scenario: pending 后续终结

  • GIVEN 某归档日的 pending 外部交互日志在该日首次留存后进入公开终态
  • WHEN 后续日留存任务执行
  • THEN 系统为包含该记录的当前在线集合重新验证归档,并删除该已终态记录

Scenario: 归档或校验失败保留同来源后续数据

  • GIVEN 某归档日的外部交互归档缺失、归档校验失败或清单与在线数据不一致
  • WHEN 日留存任务处理该日期
  • THEN 系统不删除该日及更晚日期的在线外部交互日志,并将失败信息写入独立日留存日志

Requirement: 外部失败边界

系统 SHALL 将第三方超时、渠道错误和无效响应转换为当前稳定的系统错误已接入外部交互日志的渠道同时保留脱敏结果。Gateway 同步轮询在已建立 pending 外部交互日志后无论查询成功、失败或任务上下文取消MUST 尝试将该尝试终结为公开终态;终结失败 MUST 作为任务失败返回或记录为可重试错误,不得静默忽略。

Scenario: 外部失败边界

  • GIVEN 外部系统超时或返回失败
  • WHEN 调用依赖该系统的操作
  • THEN 客户端收到当前稳定错误;已接入外部交互日志的调用记录脱敏渠道结果

Scenario: Gateway 轮询查询失败

  • GIVEN Gateway 同步轮询已建立 pending 外部交互日志且查询返回错误
  • WHEN 轮询任务处理该错误
  • THEN 系统将该日志终结为失败或结果未知的公开终态,并按既有策略重新入队

Scenario: Gateway 轮询终结日志失败

  • GIVEN Gateway 同步轮询已建立 pending 外部交互日志且终结写入失败
  • WHEN 轮询任务结束该次尝试
  • THEN 系统记录并返回该终结失败,不得把该错误静默丢弃