Commit 49f72e9f422051c20469a8f4d1547a17cb3c776b
1 parent
b1259b3b
docs(mod): review approved + check off REQ-MOD-001
Showing
2 changed files
with
35 additions
and
1 deletions
docs/08-模块任务管理.md
| @@ -60,7 +60,7 @@ | @@ -60,7 +60,7 @@ | ||
| 60 | - 路径: backend/module/mod/, frontend/pages/mod/ | 60 | - 路径: backend/module/mod/, frontend/pages/mod/ |
| 61 | - MR: — | 61 | - MR: — |
| 62 | - 功能: | 62 | - 功能: |
| 63 | - - [ ] REQ-MOD-001 模块新增 | 63 | + - [x] REQ-MOD-001 模块新增 |
| 64 | - [ ] REQ-MOD-002 模块修改 | 64 | - [ ] REQ-MOD-002 模块修改 |
| 65 | - [ ] REQ-MOD-003 模块删除 | 65 | - [ ] REQ-MOD-003 模块删除 |
| 66 | - [ ] REQ-MOD-004 模块查询 | 66 | - [ ] REQ-MOD-004 模块查询 |
docs/superpowers/reviews/2026-04-29-REQ-MOD-001.md
0 → 100644
| 1 | +--- | ||
| 2 | +req_id: REQ-MOD-001 | ||
| 3 | +date: 2026-04-29 | ||
| 4 | +round: 1 | ||
| 5 | +reviewer: superpower-code-reviewer | ||
| 6 | +--- | ||
| 7 | + | ||
| 8 | +# Review: REQ-MOD-001 — round 1 | ||
| 9 | + | ||
| 10 | +## 结论 | ||
| 11 | +approve | ||
| 12 | + | ||
| 13 | +## Must-fix | ||
| 14 | +(无) | ||
| 15 | + | ||
| 16 | +## Nice-to-have | ||
| 17 | + | ||
| 18 | +- backend/src/main/java/com/xly/erp/common/security/JwtAuthenticationFilter.java:20 — `@Component` 加在 servlet filter 上会被 Spring Boot 自动注册到原生 servlet 链上(与 `addFilterBefore` 重叠注册)。`OncePerRequestFilter` 防住了重复执行,但顺序与作用域容易让人困惑。建议去掉 `@Component` 改在 SecurityConfig 用 `@Bean` 暴露,或追加 `FilterRegistrationBean<JwtAuthenticationFilter>` 并 `setEnabled(false)` 禁用原生注册。 | ||
| 19 | +- backend/src/main/java/com/xly/erp/module/mod/service/impl/ModuleServiceImpl.java:58 — stub 回退 `stub.getStubUserNo()` 缺 spec/plan 约定的 `// REQ-MOD-001 stub: see USR-004 follow-up` 锚点;目前只有 SecurityConfig 一处带锚点,USR-004 上线时 grep 容易漏改这处。建议在该行加注释。 | ||
| 20 | +- backend/src/main/java/com/xly/erp/module/mod/entity/Module.java:11 — 类名 `Module` 与 `java.lang.Module`(JPMS)撞,未来 entity 与反射/模块 API 混用易踩坑。可考虑改名 `ModuleEntity` / `TModule`,本 REQ 不强制。 | ||
| 21 | +- backend/src/main/java/com/xly/erp/common/exception/GlobalExceptionHandler.java:32 — 兜底 `handleAny(Exception)` 会把 `HttpMessageNotReadableException`(非法 JSON)/ `HttpRequestMethodNotSupportedException` 等框架级 4xx 转成 50000,掩盖请求格式错误。建议后续 REQ 增加专用 handler 返回 40001。 | ||
| 22 | +- backend/src/main/resources/application.yml:30 — `erp.security.jwt-secret: ${JWT_SECRET}` 没有 fail-fast 默认值,未来漏 export 时会用字面量当 secret。建议 `${JWT_SECRET:?JWT_SECRET 必须从 .env.local 注入}` 让缺失即启动失败。 | ||
| 23 | +- backend/src/main/java/com/xly/erp/common/security/JwtUtil.java:23 — 暴露了两个 public 构造器(`JwtUtil(String)` 实质只供测试用)。建议改 package-private 加 `// test-only`,或在测试侧自行构造 StubSecurityProperties。 | ||
| 24 | +- backend/src/main/resources:0 — docs/09 § 二 列出的 `application-dev.yml` 缺失。本 REQ 不强求,建议在模块完成报告 follow-up 列表中提一下。 | ||
| 25 | +- backend/src/test/java/com/xly/erp/module/mod/controller/ModuleControllerIT.java:142 — `postWithoutJwt_permitAllStub_returns200_andCreatedBySTUBADMIN` 用例硬写 STUB_ADMIN 期望,spec 已声明 USR-004 闭环后改 401。建议加 `@DisplayName` 或 javadoc 带 `REQ-MOD-001 stub: see USR-004 follow-up` 锚点便于 grep。 | ||
| 26 | + | ||
| 27 | +## 反例 / 测试覆盖缺口 | ||
| 28 | + | ||
| 29 | +Spec 验收清单(单测 6 + IT 7 + 工程脚手架 5)全部覆盖到位:surefire 报告 6 个 testsuite 共 26 用例,0 failure / 0 error;错误码 40001 / 40010 / 40020 / 40021 / 20001 全部端到端验证。 | ||
| 30 | + | ||
| 31 | +非阻塞可补缺口(留给后续 REQ): | ||
| 32 | +1. `@Size` 长度溢出(如 `sProcedureName` > 100 字符)路径仅在『缺必填』用例顺带覆盖,没有独立断言。 | ||
| 33 | +2. `iParentId` 指向 `bDeleted=1` 旧记录是否回 40021 没单独验证(目前只测了不存在的 99999999)。 | ||
| 34 | +3. 非法 JSON body 落到 `handleAny` 转 50000 的链路 spec 未列入,可在引入专用 4xx handler 时一起补。 |