Commit 3392d1294a74d147eeadfbbb84a99c3cd8f62b7a
1 parent
1e55d1fd
docs(usr): REQ-USR-003 review round 4 approve + docs/08 勾选
REQ-USR-003
Showing
2 changed files
with
12 additions
and
8 deletions
docs/08-模块任务管理.md
docs/superpowers/reviews/2026-05-08-REQ-USR-003.md
| 1 | --- | 1 | --- |
| 2 | req_id: REQ-USR-003 | 2 | req_id: REQ-USR-003 |
| 3 | date: 2026-05-08 | 3 | date: 2026-05-08 |
| 4 | -round: 2 | 4 | +round: 4 |
| 5 | reviewer: superpower-code-reviewer | 5 | reviewer: superpower-code-reviewer |
| 6 | --- | 6 | --- |
| 7 | 7 | ||
| 8 | -# Review: REQ-USR-003 — round 2 | 8 | +# Review: REQ-USR-003 — round 4 |
| 9 | 9 | ||
| 10 | ## 结论 | 10 | ## 结论 |
| 11 | -request-changes | 11 | +approve |
| 12 | 12 | ||
| 13 | ## Must-fix | 13 | ## Must-fix |
| 14 | -- [major] docs/05-API接口契约.md:27 — 全局分页约定仍使用 `pageNum`,而 REQ-USR-003 具体接口入参与响应已修为 `page`,文档内部矛盾(建议:将第 27 行全局约定中的 `pageNum` 统一改为 `page`,与实际实现保持一致) | 14 | +(无) |
| 15 | 15 | ||
| 16 | ## Nice-to-have | 16 | ## Nice-to-have |
| 17 | -- docs/05-API接口契约.md:77 — staffName/department 的 equals matchType 对 NULL 员工的行为未记录在文档,建议补充说明(equals NULL 用户会被 JOIN 过滤掉) | 17 | +- backend/src/main/java/com/example/erp/module/usr/controller/UserController.java:35-50 — docs/05 声明了 Permission: usr:query,但当前 SecurityConfig 仅做鉴权(authenticated),未启用 @PreAuthorize,属跨切面 REQ 的存量缺口,非本 REQ 引入 |
| 18 | +- backend/src/main/java/com/example/erp/common/response/Result.java:19 — docs/04 § 1.3 示例写 code:0,实际实现与 docs/05 一致为 200;docs/04 示例是历史遗留,可单独 docs commit 修正 | ||
| 19 | +- backend/src/main/resources/mapper/UsrUserMapper.xml:29,43 — staffName/department equals 分支未加 IS NULL OR,因为 equals '部门名' 语义上不应匹配无职员用户,行为正确但可补注释说明 | ||
| 20 | +- backend/src/test/java/com/example/erp/module/usr/UserControllerTest.java:109 — getUsers_withToken_returns200 未用 ArgumentCaptor 验证五个参数均正确转发给 service | ||
| 18 | 21 | ||
| 19 | ## 反例 / 测试覆盖缺口 | 22 | ## 反例 / 测试覆盖缺口 |
| 20 | -- T1: 缺少针对 notContains NULL 修复的集成测试(验证 staffName/department 为 NULL 的用户确实出现在 notContains 结果中) | ||
| 21 | -- T2: 前端 queryField/matchType 未做枚举校验,非法值直接透传给后端(后端也无校验,可在后续迭代补充) | 23 | +- 无 XML 动态查询路径(含/不含/等于、disabled 是否、lastLoginDate DATE 过滤、pageSize cap)的集成/切片测试;mapper 被 mock 后 XML 逻辑未被单元覆盖 |
| 24 | +- UserControllerTest 未断言响应中不含 sPasswordHash / iLoginFailCount / tLockUntil | ||
| 25 | +- 前端测试未覆盖翻页 onChange 回调(load 以正确页码调用) |