CR-01-review

report
2026年7月20日1 min read82 words

Updated 2026年7月20日

CR-01 代码审查报告

日期:2026-07-20

审查结论

未发现阻断 Spring Boot MVC 交付或违反安全规格的代码问题。领域规则、MVC 分层、traceId 错误映射与前端只读边界相互一致。

按严重度的发现

低:traceId 测试未直接覆盖缺失请求头和 MDC 清理。

位置:backend/src/test/java/com/shgalaxy/assessment/api/BookingReconciliationControllerTest.java

过滤器实现会生成缺失/非法 traceId,并通过 MDC.MDCCloseable 清理上下文;测试只直接断言非法 traceId 替换。应补充缺失 X-Trace-Id 的生成断言和请求完成后的 MDC 清理断言。

审查确认

  • Controller 使用构造器注入,只做 DTO 校验、协议适配、Clock 获取和审计日志,不直接访问持久层或供应商客户端。
  • BookingReconciliationService 不读取系统时间,并保留 afterCreate(...) / afterQuery(...) 两个领域入口。
  • 不确定建单、非白名单拒绝、零匹配、查询错误、耗尽、冲突和人工审核均禁止自动重建;白名单条件之外没有 safeToCreateAgain=true 路径。
  • SupplierQueryResult 将 matches=null 规范化为空列表;多匹配优先于查询错误,标识冲突优先于旧事件忽略。
  • 全局异常处理返回结构化错误,正常/异常日志从同一请求属性取得 traceId,且不暴露异常细节。
  • POM 未引入数据库、MQ、调度或 Repository 相关依赖;前端源代码没有 API 集成。

验证

  • mvn -f backend/pom.xml test:59 tests,0 failures,0 errors,0 skipped。
  • cd frontend; npm run build:TypeScript 检查和生产构建通过。

剩余风险

持久化、数据库唯一约束、并发 CAS、供应商鉴权/签名、真实下游 trace 传播、消息调度、审计持久化和监控仍需在生产化阶段实现并进行集成与安全测试。