Files
gaokao-volunteer-system/.workbuddy/memory/MEMORY.md
Frontend Developer f8d4bb3ab9
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(memory): Sprint 3 关键成果与 4 条新经验
- Sprint 3 完成:G2 闸门通过,5 模块端到端 + LLM 4 模 fallback
- 30+ TanStack Query hooks + 5 页面 + 1 LLM 适配器
- 4 模 fallback 链:claude → gpt → gemini → deepseek
- 37 单测 + 24 e2e
- Vite build 312 KB gzip

新增 4 条经验教训:
- 4 模 LLM fallback 链设计
- apiClient 强制 Zod schema 保持 0 any
- 大体积包拆 manualChunk(recharts 懒加载)
- Portal token 路由级联
2026-07-03 16:44:00 +08:00

3.9 KiB
Raw Blame History

高考志愿系统 - 长期项目记忆

项目核心

  • 业务高考志愿填报辅助系统chat-based AI + 数据查询 + 审核流)
  • 后端Python 3.10/3.11/3.12 + FastAPI + sqlite3 + Pydantic + Fernet 加密
  • 前端Vite 5 + React 19 + Zustand 4 + TanStack Query 5 + RHF 7 + Zod
  • 测试Vitest 2 + Playwright 1.55 + Chromatic
  • monorepopnpm 10.33 + Turborepo 2.10
  • 仓库https://tksea.top/niuniu/gaokao-volunteer-system.git(自定义 Git 服务器)

文档体系

  • V10_REFACTOR_STRATEGY_UI_VS_TECH.md UI/交互层 × 技术层解耦PM 拍板文档)
  • EXECUTION_ROADMAP_V10_2026-07-03.md V10 路线图
  • REVIEW_REPORT_2026-07-02_SENIOR_DEVELOPER.md V2 全面审查
  • FRONTEND_REFACTOR_PLAN_2026-07-02.md V2 重构方案
  • SPRINT_1_S1_FOUNDATION.md ~ SPRINT_8_S8_ADMIN_POLICY.md 8 个 Sprint 子文档
  • SPRINT_1_CLOSEOUT_2026-07-03.md Sprint 1 收口
  • SPRINT_2_CLOSEOUT_2026-07-03.md Sprint 2 收口

Sprint 状态

  • S1 完成2026-07-03 G0 通过)
  • S2 完成2026-07-03 G1 通过33 any 清零49 warning 清零)
  • S3 完成2026-07-03 G2 通过5 模块端到端 + LLM 4 模 fallback
  • S4-S8 待启动

V10 关键决策2026-07-03 PM 拍板)

  • 原型只锁 UI/交互,不锁技术栈
  • 整体重写为新实现(解决 33 any + 16 unused + 49 warning
  • Playwright + Chromatic 双验收
  • 82 人天(节省 10d vs V2

Sprint 2 关键成果2026-07-03 下午)

  • 切 Vite 5 + React 19 框架(删除 Next.js 16
  • 4 Zustand slice 替代 7 手写 hook800+ 行 → 320 行)
  • 15 TanStack Query hookschat/consultation/plan/audit/upload
  • 25 单测 + 20 e2e4 浏览器)
  • Vite build 192 KB gzip目标 < 300 KB
  • Git: commit e8b8ad0 + merge 5ea8221

Sprint 3 关键成果2026-07-03 傍晚)

  • 5 个新模块Share / Query / Review / LLM / Poster端到端跑通
  • 30+ TanStack Query hooks + 5 页面 + 1 LLM 适配器
  • 4 模 fallback 链claude → gpt → gemini → deepseek
  • 37 单测 + 24 e2e4 浏览器 × 6 spec
  • Vite build 312 KB gziprecharts 拆分后主 chunk 83KB
  • Git: commit e24cbb7

经验教训

  1. 原型未在 git 中Sprint 1 勘误。原"git mv"假设是错的,用 cp -r 替代
  2. G0 闸门先于 Sprint 2:确保 monorepo + CI 灯绿后再启动业务开发
  3. 整体重写 vs 渐进重构:当原型有 33 any + 49 warning 时,整体重写更划算
  4. 设计 token 提前抽取:避免后续 Sprint 反复修改
  5. 主题持久化双源方案ThemeToggle 同步写 localStorage['theme-pref']index.html 内联脚本读,刷新不丢
  6. MobileNav fixed 定位Playwright 768px 视口能正确识别,避免 flex 父级挤压
  7. Vite 切框架保留 monorepoturbo.json/pnpm-workspace.yaml/CI 已 Sprint 1 验证S2 只在 apps/web 内部切
  8. 4 模 LLM fallback 链enhanceWithFallback(order) 接受 provider 数组,依次尝试,最后一个失败时抛错
  9. apiClient 强制 Zod schema:所有 API 调用第二个参数必须是 ZodSchema无 schema 编译失败(保持 0 any
  10. 大体积包拆 manualChunkrecharts 375KB 拆 chart-vendor触发懒加载时下载
  11. Portal token 路由/portal/:token 共享 token 字段,自动级联 CWB + 完整方案

UI/交互 12 项不变量V10 锁定)

  • 布局 4 项1024px 断点 / 移动 48px Tab / 中间折叠 / 容器宽度
  • 组件 4 项PlanCard 3-Tab / ModeIndicator 4 模式 / FormCard 3-step / Badge 8 态
  • 行为 2 项Typing 三态 / SafeMarkdown XSS
  • 设计 2 项247 行 design token / 三主题 + 1.2s 缓动 + SSR/CSR 一致

视觉基线Chromatic

  • S1: 5 组件 × 5 态 = 25 截图
  • S2: 8 页面 × 3 主题 = 24 截图
  • S3: 13 页面(含 5 新模块)= 13 截图
  • S6: 7 业务组件 × 3 主题 × 3 viewport × 6 态 = 378 截图
  • S7: 所有 admin 页面
  • S8: 12 后台 + 10 公共门户页