2026-05-06-REQ-USR-001.md
2.6 KB
req_id: REQ-USR-001 date: 2026-05-06 round: 2
reviewer: superpower-code-reviewer
Review: REQ-USR-001 — round 2
结论
approve
Must-fix
(无)
Round 1 两条 must_fix 处理结果:
-
HIGH(reviewer 误判):
UserServiceImpl.java:102实际已含up.setTCreateDate(LocalDateTime.now());,round 1 reviewer 看错。fix commit 520c01f2 正确不动代码。 -
MEDIUM(已修):spec/plan 中
bSelected提及全部转为「无该列」注解,与 docs/03 SSoT + UserPermissionEntity 实现一致(fix commit 520c01f2)。
Nice-to-have(待 sweep)
- backend/src/main/java/com/xly/erp/common/response/ErrorCode.java — 3 个新常量(STAFF_NOT_FOUND / PERM_CATEGORY_NOT_FOUND / USR_USER_NAME_OR_NO_DUP)追 Javadoc,特别
STAFF_NOT_FOUND(40421)与MOD_NOT_FOUND(40421)段位共享但语义不同——Javadoc 注明使用模块差异,避免 IDE 跳错枚举。 - backend/src/main/java/com/xly/erp/module/usr/service/impl/UserServiceImpl.java:30 —
INITIAL_PASSWORD = "666666"外置到application.yml+@Value("${xly.user.initial-password:666666}"),便于环境差异化 + REQ-USR-004 登录校验复用。 - backend/src/test/java/com/xly/erp/module/usr/controller/UserControllerIT.java — 补
post_staffSoftDeleted_returns40421、post_duplicateUserNo_returns40921两条 IT 镜像 service 单测分支。 - backend/src/main/java/com/xly/erp/module/usr/service/impl/UserServiceImpl.java:70 —
permissionCategoryIds含重复 id 时 found.size() < ids.size() 误报 40422;可在校验前 distinct。 - docs/05 § REQ-USR-001 错误码段位 40020 vs spec 落地 40010 sweep 对齐。
- docs/superpowers/plans/2026-05-06-REQ-USR-001.md Task 5 API shape — Javadoc 注释笔误
REQ-MOD-001 用户新增,Controller.java 内已正确为REQ-USR-001;plan 同步修正即可。
反例 / 测试覆盖缺口
- spec § 验收 #6(iStaffId 已软删除)IT 层未覆盖(仅 service mock 单测覆盖)。
- spec § 验收 #4 sUserNo 唯一冲突 IT 层未直接覆盖(仅 sUserName 冲突的 IT)。
- spec § 业务规则 8 「DuplicateKeyException 端到端映射 40921」无 IT 触发路径(@Transactional 包裹下不易触发;service mock 已覆盖,gap 可接受)。
- 跨 round 1 / round 2:fix commit 520c01f2 仅触及 3 份 docs,0 行代码变更;UserServiceImpl / UserPermissionEntity / 测试均保持原样,无新引入风险。
scripts/test.sh全量 101/0/0/0 BUILD SUCCESS。
核心结论:round 1 must_fix #1 是 reviewer 误判(无需修),#2 已修。所有 IT + 单元测试 101 个全绿。verdict: approve。