2026-05-15-FE-02.md
2.89 KB
fe_id: FE-02 date: 2026-05-15 round: 2
reviewer: fe-code-reviewer
Review: FE-02 — round 2
结论
approve
Round 1 修复落地核对
| # | 项目 | 状态 |
|---|---|---|
| H1 | UserFormPage edit prefill canEditDocument from backend(之前硬编码 false) | ✓ |
| M1 | UsersTable a11y 键盘可达(tabIndex/role/aria-label/onKeyDown)+ 操作列编辑链接 + 列头 sorter | ✓ |
| M2 | UserFormPage employeeId 三态映射(toCreateEmployeeId→null / toUpdateEmployeeId→保留) | ✓ |
| M3 | api/users.ts CreateUserReq/UpdateUserReq.employeeId 类型补 ` | null` |
| L1 | UserPermissionPanel 补 process/driver 两个 disabled Tab(与 prototype 对齐) | ✓ |
| L2 | UsersListPage 默认 sortField='tCreateDate'/sortOrder='desc' 显式发后端 | ✓ |
| L3 | usersConstants QUERY_FIELD_OPTIONS 补 lastLoginDate | ✓ |
| TEST | canEditDocument prefill 测试 + msw handler 返回该字段 | ✓ |
Nice-to-have(保留延后)
- frontend/src/pages/users/UserFormPage.tsx:129 — 40004 仍 banner;后端协议补 detail.field 后切 field-level
- frontend/src/pages/users/UsersTable.tsx:73 — 列头 sorter UI 已加但 onChange 未连到 UsersListPage.setQuery;视觉 sorter 生效但点击列头不会实际改变排序
- frontend/src/pages/users/UsersListPage.test.tsx — 缺 error banner 渲染态测试
- frontend/src/pages/users/UserFormPage.test.tsx — 缺 40004 错误码测试
- frontend/src/pages/users/UsersToolbar.tsx — prototype 还有作废 / 删除 / 重置密码 等按钮;FE-02 spec § 一已声明推后
7 维 checklist
| # | 维度 | 状态 |
|---|---|---|
| 1 | Prototype consistency | pass(UsersTable 操作列 + UserPermissionPanel 5 个 Tab) |
| 2 | Design tokens | pass(仅 App.tsx 受控 hex 镜像 ConfigProvider colorPrimary) |
| 3 | A11y | pass(tabIndex/role/aria-label/onKeyDown + Form.Item label) |
| 4 | Responsive | pass |
| 5 | 业务校验前端复刻 | pass(spec § 五 #3-7,11,12,16-17 全部实现;#13 banner 可接受) |
| 6 | API consistency | pass(统一 apiClient) |
| 7 | 状态机覆盖 | pass(5 基础态 + spec 列出的错误态) |
反例 / 测试覆盖缺口
44 vitest 通过;3 个 Playwright E2E .fixme() 留作手工验收。缺 list error 渲染态 + form 40004 路径的单测覆盖(已记 nice-to-have)。sortField/sortOrder UI ↔ query 通道未拉通——sorter 列头视觉已有但回调未绑,不影响默认排序但影响主动排序;可下个 FE 接前接 Table onChange。
总结
Round 1 全部 8 项 must-fix 已正确落地:编辑模式 prefill canEditDocument 走 detail VO 透传修复了静默数据回写 bug;UsersTable a11y / 操作列 / sorter 全套;employeeId 三态语义按 spec § 八 锁定;prototype Tab 对齐;默认排序显式发后端;QUERY_FIELD_OPTIONS 完整。所有 nice-to-have 均为用户标注的延后项,不阻断 approve。