diff --git a/docs/superpowers/module-reports/2026-05-15-frontend-phase.md b/docs/superpowers/module-reports/2026-05-15-frontend-phase.md new file mode 100644 index 0000000..fd8def2 --- /dev/null +++ b/docs/superpowers/module-reports/2026-05-15-frontend-phase.md @@ -0,0 +1,123 @@ +--- +module_id: frontend-phase +date: 2026-05-15 +git_range: a6d4ac9 (docs/08 § 三 FE 清单 + 落入 prototype) ↔ 410ca8a (test-gate evidence) +--- + +# 模块完成报告 — frontend-phase 前端阶段(整体) + +## ① 模块信息 +- 模块 ID: frontend-phase +- 模块名: 前端阶段(整体) +- 开发区间: 2026-05-15 单日,FE-01 → FE-02 +- 分支: frontend-phase + +## ② FE 完成清单 + +- [x] FE-01 — 用户登录 + - spec: docs/superpowers/specs/2026-05-15-FE-01.md + - plan: docs/superpowers/plans/2026-05-15-FE-01.md + - review: docs/superpowers/reviews/2026-05-15-FE-01.md +- [x] FE-02 — 用户管理(列表 + 新增 / 编辑) + - spec: docs/superpowers/specs/2026-05-15-FE-02.md + - plan: docs/superpowers/plans/2026-05-15-FE-02.md + - review: docs/superpowers/reviews/2026-05-15-FE-02.md + +## ③ 文件变更表 + +| 文件 | 操作 | 说明 | +|---|---|---| +| `frontend/package.json` / `tsconfig.json` / `vite.config.ts` / `vitest.config.ts` / `playwright.config.ts` / `index.html` / `.gitignore` | Create | Vite 5 + React 18 + TS 5 + Vitest 2 + Playwright 1.x 项目骨架(FE-01 引入) | +| `frontend/src/main.tsx` / `App.tsx` | Create | 入口;Redux Provider + AntD ConfigProvider + RouterProvider | +| `frontend/src/styles/{tokens.css, global.css}` | Create | tokens.css 与 docs/06 § 二 SSoT 全量对齐(含 16 个 canonical token) | +| `frontend/src/api/{client.ts, errors.ts, auth.ts, users.ts}` | Create | Axios 统一实例 + BizError 拦截器 + authApi + usersApi 4 个函数 | +| `frontend/src/store/{index.ts, hooks.ts, slices/authSlice.ts}` | Create | Redux Toolkit + typed hooks + auth slice(accessToken + userInfo + status) | +| `frontend/src/router/{index.tsx, RequireAuth.tsx, RequireSuperAdmin.tsx}` | Create | createBrowserRouter + 两级守卫;/login + /users(\*) 路由表 | +| `frontend/src/pages/login/{LoginPage,LoginForm,LoginHero,LoginFooter,loginConstants}.tsx` | Create | FE-01 登录页 + 表单 + hero + footer | +| `frontend/src/pages/users/{UsersListPage,UsersToolbar,UsersFilterBar,UsersTable,UserFormPage,UserFormFields,UserPermissionPanel,usersConstants}.{ts,tsx}` | Create | FE-02 列表 / 新增 / 编辑全套组件 + 常量 | +| `frontend/src/test-utils/{setup.ts, msw-handlers.ts}` | Create | Vitest setup(jest-dom + jsdom polyfills + MSW server);MSW 拦截 6 个后端端点 | +| `frontend/src/App.test.tsx` 等 9 个 `*.test.tsx/ts` | Create | 44 个 vitest 单测覆盖 API / Redux / 路由守卫 / 页面集成 | +| `frontend/tests/e2e/{login,users}.spec.ts` | Create | 6 个 Playwright spec,`test.fixme()` 标记延后手工验收 | +| `docs/08-模块任务管理.md` | Modify | § 三 FE 清单写入(FE-01 + FE-02)+ 后续 review 勾选 | +| `prototype/erp.html` | Add | 850 行 HTML mockup(之前未入库,本阶段开始时落入 frontend-phase 分支) | + +> 文件总数:48 个新建 + 1 个修改;约 7475 行净增(含 prototype)。 + +## ④ 数据库使用表 + +N/A(前端阶段) + +## ⑤ 测试结果 + +- `npm test` (vitest) 最终: GREEN(详见 `docs/superpowers/module-reports/frontend-phase-test-gate.md`) +- 通过: 44 / 失败: 0 / 跳过: 0(vitest) +- Playwright E2E: 6 个 spec 全部 `test.fixme()` 跳过,留作手工验收(需 `npx playwright install` + 启 backend 9090) +- 覆盖率: 未配置;spec 验收覆盖: + - FE-01: 8 个 LoginPage 测试 + a11y + 锁定 disabled + 空字段必填 + JwtUtil/auth API 单测 + - FE-02: 7 个 UserFormPage 测试(create + edit + canEditDocument prefill + 40401 / 40901 等错误码)+ 4 个 UsersListPage 测试 + 7 个 usersApi + 3 个 RequireSuperAdmin 守卫 + +## ⑥ 本模块新增 Migration + +N/A(前端阶段) + +## ⑦ 跨模块改动清单(软规则 S2) + +N/A(前端阶段不涉及跨模块代码改动;token 漂移见 § ⑧) + +## ⑧ 偏离 spec 清单 + +**docs vs 实际渲染**: + +- **FE-01 LoginPage**: spec § 二组件树有 `LoginHeader { Logo SVG, BrandName, SubTitle }`,实际实现 inline `