8.2 KiB
8.2 KiB
⚠️ 历史快照(非当前真相源):本文件仅保留当时审查/收口结论。当前状态与执行顺序以
docs/CURRENT_STATE.md、docs/ACTIVE_REMEDIATION_2026-07-05_REVIEW.md、docs/ACTIVE_EXECUTION_BOARD_2026-07-05_REVIEW_REMEDIATION.md、docs/plans/2026-07-05-review-remediation-systemic-fix-plan.md和reports/REVIEW_REPORT_2026-07-05_COMPREHENSIVE_PROJECT_REVIEW.md为准。
V10 前端重构 · 真实状态复核报告
审查日期:2026-07-05
复核更新:2026-07-05,已纳入2194f89 fix: stabilize e2e assertions after i18n migration与系统性二次 review
审查范围:Sprint 1 ~ Sprint 8 前端重构任务
结论:S1-S7 前端代码已落地,i18n 迁移导致的 14 个 e2e 回归已修复;二次 review 又发现后台导航断链、Admin mock 登录未对接真实 JWT、CI/Lighthouse/Chromatic 配置风险;因此仍不能宣称 V10 全部完成。
一、当前结论
原始审查发现的主要代码级 blocker 是 Sprint 7 i18n 迁移后 e2e selector 未同步,导致 navigation、data-query、poster、admin mobile/a11y 等用例在多项目矩阵下失败。
该问题已在 2194f89 修复:
- e2e 断言改为兼容 i18n 后的可访问名称或结构化 role/cell 定位。
- poster e2e mock 已匹配当前 job/status 生成模型。
- mobile-chrome 下 Admin 布局补齐移动端横向导航,修复真实 UI 缺口。
二、闸门复验
| 闸门 | 最新复验结果 | 状态 |
|---|---|---|
| build | pnpm run build 通过;main 146.74 KB gzip,total 393.60 KB gzip |
✅ 通过 |
| lint | pnpm run lint 通过 |
✅ 通过 |
| typecheck | pnpm run typecheck 通过 |
✅ 通过 |
| vitest | 提权后 pnpm run test 通过;85 files / 317 tests |
✅ 通过 |
| targeted e2e | data-query + navigation + poster,8/8 passed | ✅ 通过 |
| Chromium e2e | 29/29 passed | ✅ 通过 |
| 非 Firefox e2e 矩阵 | Chromium + WebKit + mobile-chrome,87/87 passed | ✅ 通过 |
| Firefox e2e | 本机 Playwright browserContext.newPage 环境异常 |
⏳ 待环境复验 |
| Lighthouse / LHCI | 本机 Chrome 临时目录 EPERM,未复跑 | ⏳ 待 CI 或环境修复 |
| T-B-27 后端 regression | 本轮未复跑,需要真实后端 / pytest 环境 | ⏳ 待环境 |
| T-C-44 Poster Docker | 本机暂无 Docker | ⏳ 待环境 |
三、系统性二次 Review Findings
F1 · 后台导航存在真实断链(High)
apps/web/src/layouts/AdminLayout.tsx暴露/admin/review导航项。apps/web/src/router.tsx的/admin子路由没有review,只有订单、案例、share-links、posters、score-lines、rank-estimator、majors、schools、error 等子路由。- 确定性脚本校验结果:
missing admin nav routes: /admin/review。 - 影响:后台用户点击“复核 / Review”会进入后台 NotFound,而不是复核页面。
- 测试缺口:现有
admin-portal.spec.ts只覆盖登录、订单、案例、错误页,没有遍历全部后台导航链接。
F2 · React Admin 登录仍是前端 mock(High)
apps/web/src/pages/admin/LoginPage.tsx只接受验证码123456,然后直接setUser(... role: 'admin')写入 Zustand/localStorage。apps/web/src/lib/api-client.ts没有从 user store 或 auth store 注入Authorization: Bearer ...。- 后端 admin API 依赖
/api/auth/login返回 JWT,并通过Authorization头访问受保护路由。 - 影响:真实后端环境中可能出现“前端显示已登录,但 admin API 请求 401/403”的集成失败。
F3 · Lighthouse CI 启动配置存在口径不一致(Medium)
.github/workflows/web-ci.yml使用treosh/lighthouse-ci-action@v12,URL 指向http://127.0.0.1:8080/...。apps/web/lighthouserc.cjs也使用 8080 URL,但注释写“vite preview 启动(8081)”。- workflow 未显式配置
startServerCommand/startServerReadyPattern/staticDistDir。 - 影响:LHCI 可能在 CI 中因服务未启动或端口口径不一致而假挂;也可能误以为 G3 Lighthouse 已真实复验。
F4 · Chromatic token 缺失会阻塞 CI(Medium)
.github/workflows/web-ci.yml的chromaticjob 直接使用${{ secrets.CHROMATIC_TOKEN }},没有 secret 存在性条件。- 当前项目状态仍把 Chromatic / Storybook baseline 视为外部 token 待配置项。
- 影响:未配置 token 的 push / PR 可能被 Chromatic job 阻断,与“外部 token 待配置”的文档口径不一致。
F5 · 后端非 Docker 测试当前被本机 Python 环境阻塞(Environment)
python -m pytest ...失败:系统 Python 是C:\Python314\python.exe,未安装 pytest。- 项目
.venv不存在。 uv run pytest ...失败:uv trampoline failed to spawn Python child process。- 结论:这不是业务断言失败,但当前本机无法完成后端非 Docker regression 复验。
四、Sprint 状态
| Sprint | 当前状态 | 说明 |
|---|---|---|
| Sprint 1 | ✅ 完成 | Monorepo / CI 基础已落地 |
| Sprint 2 | ✅ 完成 | Vite + Zustand + TanStack Query 基础已落地 |
| Sprint 3 | ✅ 完成 | 5 新模块 + LLM fallback 已落地 |
| Sprint 4 | ⚠️ 部分完成 | 15/16 任务代码落地;e2e 回归已修;Lighthouse / 后端 / Docker 仍待环境复验 |
| Sprint 5 | ✅ 完成 | 14 shared 组件及测试已落地 |
| Sprint 6 | ✅ 完成 | 业务组件、暗色态、a11y 守门已落地 |
| Sprint 7 | ⚠️ 部分完成 | i18n + Admin 页面已落地;e2e 回归已修;G6.1 Lighthouse ≥95 待复验 |
| Sprint 8 | ❌ 未启动 | 仍无 Sprint 8 progress 文档和落地进度 |
五、已修复项
- B1 e2e 14 个 i18n selector 回归:已由
2194f89修复。 - B2 e2e 数量/状态口径不一致:核心文档已更新为当前 29 tests/project 与非 Firefox 87/87 复验结果。
- S1 bundle 数值过时:已更新为 main 146.74 KB gzip、total 393.60 KB gzip,仍在预算内。
- S3 Sprint 4 标题不一致:
SPRINT_4_PROGRESS_2026-07-03.md已从 9/16 修正为 15/16。 - S4 working tree 标记过时:Sprint 4 文档已改为实际 commit hash。
- N1 MobileNav aria-label 测试不兼容 i18n:e2e 已使用中英双语可访问名称匹配。
- N2 poster alt 中文依赖:e2e 已改为
getByRole('img', { name: /海报预览|Poster preview/ })并补齐 job/status mock。
六、仍未完成项
- F1 后台
/admin/review断链:需要补 admin 子路由或移除/改指导航项,并新增全量后台导航 e2e。 - F2 React Admin 真实鉴权:需要接入
/api/auth/login、保存 JWT,并在apiClient注入Authorization。 - F3 Lighthouse CI:需要显式配置 LHCI 启动方式,统一 8080/8081 口径后在 CI 复跑。
- F4 Chromatic CI:需要在无 token 时跳过或降级为非阻塞 job。
- Firefox 项目矩阵:当前失败是本机 Playwright 环境级
browserContext.newPage异常,需修复环境后补跑。 - Lighthouse / LHCI:需要 CI 或修复本机 Chrome 临时目录权限后复跑。
- T-B-27 后端 regression:需要真实后端与 pytest 环境。
- T-C-44 Poster Docker:需要 Docker 环境或 CI runner。
- Sprint 8:尚未启动,V10 不能宣称全部完成。
七、最终判断
不能宣称 V10 前端重构全部完成。
可以宣称:
- S1-S7 的主要前端代码已落地。
- 本轮发现的 14 个 i18n e2e 回归已修复。
- 非 Firefox 前端 e2e 矩阵已全绿。
- 本轮系统性二次 review 已完成前端 lint / typecheck / unit / build / Chromium e2e 验证,并识别出新的真实集成风险。
- 核心进度文档中的 e2e、bundle、commit hash 口径已修正。
仍需完成:
- 修复
/admin/review后台导航断链,并补全后台导航 e2e。 - 将 React Admin 登录从 mock 改为真实
/api/auth/login+ Bearer JWT。 - 修复 Lighthouse / Chromatic CI 配置口径。
- 修复 Firefox 本机 Playwright 环境异常并补跑 Firefox 矩阵。
- 在 CI 或完整本地环境补跑 Lighthouse + T-B-27 后端 regression。
- Docker 环境就绪后跑 T-C-44 Poster Docker 构建。
- 启动并完成 Sprint 8。