From da220641c43aea3de1203c9d9e5817db3e18fd8c Mon Sep 17 00:00:00 2001 From: zichun Date: Mon, 1 Jun 2026 16:41:31 +0800 Subject: [PATCH] docs(review:FE-01:r1): approve --- docs/superpowers/reviews/2026-06-01-FE-01.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+), 0 deletions(-) create mode 100644 docs/superpowers/reviews/2026-06-01-FE-01.md diff --git a/docs/superpowers/reviews/2026-06-01-FE-01.md b/docs/superpowers/reviews/2026-06-01-FE-01.md new file mode 100644 index 0000000..17122f2 --- /dev/null +++ b/docs/superpowers/reviews/2026-06-01-FE-01.md @@ -0,0 +1,53 @@ +# FE-01 登录页 — AI 自审报告(第 1 轮) + +- 阶段:前端(frontend) +- 关联 REQ:REQ-USR-004(主);配套 `GET /api/usr/companies` +- 关联原型:`prototype/erp.html` → `
` +- 规格:`docs/superpowers/specs/2026-06-01-FE-01.md` +- 裁决:**approve** +- must-fix issues:无(空数组) + +## 审阅范围 + +本轮 diff(自 `2dce637^` 起的 FE-01 提交链)落在 `frontend/` 内,作用域合规,未触碰 `backend/` / `sql/` / `scripts/`。核心文件: + +- `frontend/src/pages/usr/Login/LoginPage.tsx` +- `frontend/src/pages/usr/Login/Login.module.css` +- `frontend/src/pages/usr/Login/loginMessages.ts` +- `frontend/src/api/{request.ts,types.ts,usrApi.ts}` +- `frontend/src/store/slices/authSlice.ts`、`frontend/src/router/index.tsx`、`frontend/src/App.tsx`、`frontend/src/styles/theme.ts` + +## 质量闸(独立复跑验证) + +- `tsc --noEmit`:通过(exit 0)。 +- `vitest run`:10 文件 / 32 用例全绿(含布局、版本预加载/空态/重试、校验、提交中态、错误码分流、成功落地、authSlice、request 拦截器)。 +- `eslint .`:通过(exit 0)。 + +## 前端 7 维 checklist + +1. **原型一致性(客观)— 通过**:复刻 `.login-wrap` 三段式(品牌头 / 深蓝主视觉+右侧浮层登录卡 / 页脚版权);登录卡 `right:8% top:50% translateY(-50%)`、宽 380px、主操作为底部 `block` 主按钮,与原型 DOM 结构与主操作位置一致。下拉以 AntD `Select` 等价复刻原型 `.lf.dropdown`,属允许的实现差异。 +2. **Design Tokens(客观)— 通过**:语义色(按钮 / 文字 / 标题 / 占位 / 边框 / 背景 / 错误)全部走 `var(--color-*)`,无硬编码。`Login.module.css` 中的 hex/rgba 全部位于 `.hero` 主视觉装饰(深蓝渐变 / 网格透视 / hero 文案)及阴影 alpha,属规格 D7 明确豁免的「登录页局部装饰,不挪用语义 token、不新增全局 token」。`LoginPage.tsx` 内两处 `fill="#0e1216"` / `#3a6cb6` 为原型逐字复刻的品牌 Logo / ICP 图标 SVG 装饰填充,非语义 UI 色,归同一装饰豁免。`theme.ts` 的 `#1890ff` 为读取 `--color-primary` 失败时的兜底常量(= token 现值),运行时优先读 CSS 变量。token 优先于原型的色值精度差异处理正确(原型品牌名为琥珀色 `#e0a020`,实现改用 `--color-primary`,符合「tokens.css 优先于 prototype」)。 +3. **无障碍(best-effort)**:表单控件仅用 `placeholder`,无显式 `