QA-01-acceptance-report
QA-01 验收报告
日期:2026-07-20
结论
验收通过,但有 1 项低优先级测试覆盖缺口。当前实现符合本轮 Spring Boot MVC 与只读前端原型范围;未将生产化能力误实现进题目范围。
已验证需求
- Spring Boot MVC:应用启动 Spring Boot;Controller 仅暴露两个 JSON POST 端点并委派领域服务。
- 领域服务边界:afterCreate(...)、afterQuery(...) 保持显式 now 的确定性决策,无 Spring、Servlet、网络、数据库或系统时钟依赖。
- 重建安全条件:仅 EXPLICIT_REJECT + NO_INVENTORY_NO_BOOKING_CREATED + 无供应商标识返回 safeToCreateAgain=true。
- 状态、冲突与查询边界:覆盖多匹配、错误与匹配冲突、标识冲突、查询重试/耗尽、终态、人工审核粘性和乱序保护。
- traceId:TraceIdFilter 统一接收/生成 X-Trace-Id、写入响应头、请求属性和 MDC;正常审计日志与异常日志/错误体使用同一请求值。
- 前端:仅固定展示数据,只读表格;无业务 API、fetch、XHR、axios、轮询或写操作。
- 依赖:仅 Spring Web、Validation 与 Test starter;无数据库、MQ、调度或 Repository 越界实现。
验证
- mvn -f backend/pom.xml test:59 tests,0 failures,0 errors,0 skipped,BUILD SUCCESS。
- cd frontend; npm run build:tsc --noEmit 与 Vite production build 均通过。
- rg -n "TODO|服务未实现" README.md DECISIONS.md AI_USAGE.md:无匹配。
发现
低:traceId 的缺失请求头与 MDC 清理未被直接自动化断言。实现会对缺失/非法头生成 UUID,并以 MDC.putCloseable(...) 清理上下文;现有 MVC 测试覆盖合法头沿用、非法头替换、成功/400/415/500 的响应头与错误/审计日志一致性。建议后续补两条过滤器/MVC 测试。
剩余风险
当前没有持久化、数据库唯一约束与并发控制、真实供应商调用、鉴权、分布式幂等、消息/调度、审计存储或生产监控。这些是已文档化的生产化缺口。