BE-03 查单接口与重试边界交付记录

article
2026年7月20日1 min read76 words

Updated 2026年7月20日

BE-03 查单接口与重试边界交付记录

修改范围

  • QueryReconciliationRequest:仅封装 OrderSnapshotSupplierQueryResult,作为查询 REST 边界 DTO。
  • BookingReconciliationController:新增 POST /api/v1/booking-reconciliations/query-results,使用既有 UTC Clock 调用 BookingReconciliationService.afterQuery,并记录不含供应商标识的结构化审计日志。
  • BookingReconciliationQueryTest:新增 13 个查询领域测试,覆盖 QUERY-01 至 QUERY-11 的多匹配优先、查询结果冲突、完整/不完整确认、PENDING/零匹配/查询错误在次数 1/2 的边界、仅确认号冲突和终态供应商状态。
  • BookingReconciliationControllerTest:新增查询成功与查询输入错误的 traceId 覆盖。
  • ApiExceptionHandler:将未知错误兜底限制为 RuntimeException,使请求体解析错误保持 400,媒体类型错误保持 415,而非被错误翻译为 500。

行为保证

  • 查询端点返回既有 ReconciliationDecision,不复制或修改状态机规则。
  • 所有查询测试均断言 safeToCreateAgain=false;延迟重试精确为 now + 5 minutes,耗尽时无下次查询时间。
  • 多匹配与错误码同时出现优先 MULTIPLE_SUPPLIER_BOOKINGS;单匹配与错误码同时出现为 QUERY_RESULT_CONFLICT
  • 供应商订单号相同但确认号不同会进入 SUPPLIER_IDENTIFIER_CONFLICT,不输出回填标识。
  • 建单和查单成功/错误路径均沿用 X-Trace-Id、响应错误体、MDC 和审计日志;无数据库、调度、客户端或 Repository。

验证

mvn -f backend/pom.xml test

结果:44 tests,0 failures,0 errors,0 skipped,BUILD SUCCESS(2026-07-20 10:55:44 +08:00)。