CR-01-review
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 传播、消息调度、审计持久化和监控仍需在生产化阶段实现并进行集成与安全测试。