BE-03 查单接口与重试边界交付记录
BE-03 查单接口与重试边界交付记录
修改范围
QueryReconciliationRequest:仅封装OrderSnapshot与SupplierQueryResult,作为查询 REST 边界 DTO。BookingReconciliationController:新增POST /api/v1/booking-reconciliations/query-results,使用既有 UTCClock调用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)。