2026-05-08-REQ-USR-002.md
1.97 KB
req_id: REQ-USR-002 date: 2026-05-08 round: 1
reviewer: superpower-code-reviewer
Review: REQ-USR-002 — round 1
结论
request-changes
Must-fix
- [HIGH] backend/src/main/java/com/example/erp/module/usr/dto/UserUpdateReqDTO.java:12-13 — userType / language 缺少 @NotBlank + @Pattern 校验,非法值直接写库(建议:参照 UserCreateReqDTO 添加 @NotBlank + @Pattern 注解)
- [HIGH] frontend/src/pages/usr/UserFormDrawer.tsx:8-14 — InitialData 接口缺少 permGroupIds 字段,导致有权限组的用户打开编辑抽屉时权限组无法被预填(建议:添加 permGroupIds?: string[],useEffect 改为 setSelectedPermIds(initialData.permGroupIds ?? []))
- [HIGH] frontend/src/pages/usr/UserListPage.tsx:124 — canEditDoc 写死为 false,每次保存会将已有用户的 canEditDoc 覆盖为 false(建议:在列表查询中加入 bCanEditDoc,传入 initialData 时使用真实值)
- [MEDIUM] backend/src/test/java/com/example/erp/module/usr/UserServiceTest.java — 缺少测试 userId==自己 但 userType 仍为 "超级管理员" 时不抛出 40301(建议:补充 updateUser_selfAdminKeepType_doesNotThrow 测试,确认允许路径)
Nice-to-have
- backend/.../vo/UserUpdateRespVO.java — updatedAt 建议加 @JsonFormat(pattern="yyyy-MM-dd'T'HH
ss") 确保序列化格式显式 - backend/.../dto/UserUpdateReqDTO.java — permGroupIds 建议加 @NotNull,防止调用方传 null 时静默跳过权限组删除
- frontend/src/test/UserListPage.test.tsx:106 — editMode_submit_callsUpdateUser 只断言调用次数,建议补充 toHaveBeenCalledWith('u1', ...) 验证 userId 传值正确
反例 / 测试覆盖缺口
- 缺 "自己修改自己 userType 但保持 超级管理员" 的无异常路径测试(G1)
- controller 层无 BizException → 错误码映射测试(G4,40300/40400/40301 未被 controller 测试覆盖)
- canEditDoc/isDisabled 写入 DB 的 int 映射值(0/1)未在 service happy-path 测试中验证