Files
gaokao-volunteer-system/docs/FRONTEND_GATE_RUNBOOK_2026-07-05.md
Hermes Agent 6a436a7941
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
docs(frontend): T0-03 add local gate runbook
2026-07-05 21:47:47 +08:00

152 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FRONTEND_GATE_RUNBOOK_2026-07-05
> 生成时间2026-07-05T21:47:26+08:00
> 适用范围:`apps/web` / V10 React + TypeScript 前端本地门禁与 Review 复验。
> 关联任务:`docs/ACTIVE_EXECUTION_BOARD_2026-07-05_REVIEW_REMEDIATION.md` / T0-03。
> 目的避免再次把“node_modules / turbo 缺失”误报为前端代码失败,或把未执行的前端 gate 误报为通过。
---
## 1. 环境前置条件
当前仓库根 `package.json` 声明:
- `packageManager`: `pnpm@10.33.0`
- `engines.node`: `>=20`
- 根脚本依赖 `turbo run ...`
建议本地使用:
- Node.js 20.x与 GitHub Actions 一致)或 Node.js 22.x当前工作站已验证可运行
- pnpm 10.33.0
- 从仓库根目录执行命令,不要只在 `apps/web` 子目录执行根 gate
检查命令:
```bash
node --version
pnpm --version
pnpm exec turbo --version
```
通过标准:
- `node --version` 为 v20.x 或 v22.x
- `pnpm --version` 输出 `10.33.0`
- `pnpm exec turbo --version` 可输出版本号,不得出现 `Command "turbo" not found`
---
## 2. 依赖安装
首次 clone、清理 `node_modules` 后、或 Review 复验前,必须先执行:
```bash
pnpm install --frozen-lockfile
```
安装后确认:
```bash
test -d node_modules && echo 'root node_modules exists'
test -d apps/web/node_modules && echo 'apps/web/node_modules exists'
pnpm exec turbo --version
```
禁止:
- 未执行 `pnpm install --frozen-lockfile` 就直接报告前端 gate 失败。
- 看到 `turbo: not found` 后把结果归类为代码失败。
- 用历史 green 报告替代当前 fresh gate。
---
## 3. 必跑本地前端门禁
从仓库根目录执行:
```bash
pnpm typecheck
pnpm lint
pnpm test
pnpm build
```
等价的包级调试命令:
```bash
pnpm --filter @gaokao/web typecheck
pnpm --filter @gaokao/web lint
pnpm --filter @gaokao/web test
pnpm --filter @gaokao/web build
```
通过标准:
- typecheck0 error
- lint0 error / 0 warning按当前 eslint 配置)
- testVitest 全部通过
- buildVite build 通过,`scripts/bundle-report.cjs` 输出 total gzip 不超过预算
当前 2026-07-05 fresh evidence 摘要:
```text
pnpm typecheck/lint/test/build: PASS
@gaokao/web build total: 393.60 KB gzip ✅
```
---
## 4. E2E / 浏览器 / 视觉门禁
本 runbook 的 `typecheck/lint/test/build` 通过只代表“前端本地基础门禁通过”,不代表 V10 全部前端验收闭环。
后续 Phase 1+ 必须继续补:
```bash
pnpm --filter @gaokao/web test:e2e
```
最低验收维度:
- Admin 真实登录,不再通过 localStorage seed 伪造 admin
- Admin 全导航遍历,所有 `adminNavItems` 不得落入 NotFound
- token 过期 / 401 / 403 错误态可恢复
- mobile-chrome 覆盖后台横向导航
- 关键用户页与后台页需真实浏览器视觉验收或等价截图基线
---
## 5. CI 口径
`.github/workflows/web-ci.yml` 当前 CI 使用 Node 20 + pnpm install再执行
```bash
pnpm typecheck
pnpm lint
pnpm test
pnpm build
pnpm --filter @gaokao/web test:e2e
```
仍需后续整改的 CI gate
- LHCI preview 启动命令 / 端口 / ready pattern 必须显式一致
- Chromatic token 缺失时必须明确 skip / non-blocking / hard gate 语义
- Storybook / Chromatic 视觉基线尚不能被当作已闭环证据
---
## 6. 完成报告口径
正确表述:
- `前端本地基础门禁已 fresh PASStypecheck/lint/test/build`
- `Playwright/LHCI/Chromatic/视觉验收仍待执行或待单独闭环`
禁止表述:
- `前端全部完成`(除非 e2e / LHCI / Chromatic / 视觉验收全部 fresh PASS
- `历史报告显示通过,所以当前通过`
- `turbo not found所以前端代码失败`