Commit 3392d1294a74d147eeadfbbb84a99c3cd8f62b7a

Authored by zichun
1 parent 1e55d1fd

docs(usr): REQ-USR-003 review round 4 approve + docs/08 勾选

REQ-USR-003
docs/08-模块任务管理.md
... ... @@ -62,5 +62,5 @@
62 62 - 功能:
63 63 - [x] REQ-USR-004 用户登录
64 64 - [x] REQ-USR-001 增加用户
65   - - [ ] REQ-USR-003 查询用户
  65 + - [x] REQ-USR-003 查询用户
66 66 - [ ] REQ-USR-002 修改用户
... ...
docs/superpowers/reviews/2026-05-08-REQ-USR-003.md
1 1 ---
2 2 req_id: REQ-USR-003
3 3 date: 2026-05-08
4   -round: 2
  4 +round: 4
5 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 13 ## Must-fix
14   -- [major] docs/05-API接口契约.md:27 — 全局分页约定仍使用 `pageNum`,而 REQ-USR-003 具体接口入参与响应已修为 `page`,文档内部矛盾(建议:将第 27 行全局约定中的 `pageNum` 统一改为 `page`,与实际实现保持一致
  14 +(无
15 15  
16 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 以正确页码调用)
... ...