gwy-exam/docs/开发计划.md

172 lines
7.9 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.

# 备考通|开发计划
版本v1.0 · 2026-08-27
说明:这是最终版本的实施顺序,不代表功能分期;所有工作完成后才视为项目交付。
## 1. 执行方式
采用“基础设施先行、纵向功能闭环、最后统一验收”的顺序。每项工作必须同时具备代码、可运行结果和验证记录,避免只完成页面而没有接口或持久化。
执行约束:
- 后端接口 Schema 先于前端 API 生成。
- 数据模型先于业务 Service业务 Service 先于页面联调。
- 每完成一个业务闭环,立即验证刷新后的 JSON 持久化结果。
- PC 与 Mobile 从第一张页面开始同步适配,不集中到末尾处理。
- 生成代码不手工修改,接口变更必须重新生成并检查差异。
## 2. 任务顺序
### 任务 01项目初始化与目录确定
工作创建前后端目录、TypeScript 配置、包管理脚本、环境变量模板、基础 Git 忽略规则。
产出:前后端分别可以启动;开发、构建、类型检查命令可执行。
完成标准:新环境按 README 操作可以启动前端和后端,启动失败时有明确错误。
### 任务 02JSON Store 与演示数据
工作:实现 `readData``writeData``updateData`,建立数据文件路径常量和缺失文件初始化;录入演示题、用户档案、计划、模考和要闻数据。
产出:`server/data/` 可独立运行;写入使用临时文件后原子替换。需要兼容开发/生产两套环境。
完成标准:服务重启后数据仍然存在;任一 JSON 文件缺失不会导致服务崩溃;非法 JSON 有可定位错误。
### 任务 03后端路由 Schema 与 OpenAPI
工作:注册 Fastify、统一错误处理、请求日志、Zod 校验;为每个业务接口补齐请求和响应 Schema导出静态 OpenAPI 文档。
产出:`/api/openapi.json`、Swagger UI、错误响应格式、OpenAPI 导出脚本。
完成标准:所有已登记接口都出现在文档中;请求参数错误能返回统一错误;`openapi:export` 可重复执行。
### 任务 04前端 API 自动生成与基础壳层
工作:接入 OpenAPI 代码生成建立请求客户端、路由、Pinia 基础 store、设计 Token、全局布局、PC 侧栏和 Mobile TabBar。
产出:`client/src/api/generated/`;页面可在桌面和移动断点切换;统一加载、空数据、错误提示组件。
完成标准:前端业务代码不直接写 URL 和 `fetch`;修改后端 Schema 能重新生成类型;首页路由能通过真实接口加载。
### 任务 05数据中枢纵向闭环
工作:实现概览、趋势、掌握度、今日任务和薄弱考点接口及页面;接入统计计算。
产出PC 数据看板和 Mobile 首页均使用同一份后端数据。
完成标准:存在演示数据时指标、图表和任务可见;清空数据时显示合理空状态;刷新后结果一致。
### 任务 06计划、个人中心、设置与要闻
工作:实现计划任务创建/切换、个人档案、设置修改、要闻列表/详情;接入 Markdown 渲染和 JSON 要闻数据。
产出:计划、个人、设置和要闻页面的接口、页面和持久化。
完成标准:任务状态变更能影响首页统计;设置刷新后保留;要闻详情支持 MarkdownRSS/API/URL 入口返回明确占位反馈。
### 任务 07题库管理与导入导出
工作实现题目列表筛选、JSON 导入、内容指纹去重、后台 UUID 生成、导出和删除确认。
产出:题库管理页面、导入结果报告、导出文件。
完成标准:导入文件不含 ID 也能成功;重复题目被跳过;错误题目不影响有效题目导入;导出的数据可再次导入。
### 任务 08刷题与结果闭环
工作实现模块选题、5/10/15 分钟组卷、自定义组卷、会话、计时、作答、提交、结果和标准解析。
产出:可从首页或刷题中心开始一套题并完成提交;记录写入 JSON。
完成标准:答案、正确率、耗时和完成状态准确;中途刷新按设计处理;提交后不能重复计入同一题。
### 任务 09错题复习闭环
工作:答错自动沉淀错题;实现待复习筛选、复习提交、+1/+3/+7 天安排、连续答对后标记掌握、再次答错回到当天。
产出:错题本、错题详情、复习操作和数据中枢联动。
完成标准:修改系统日期或使用测试时间可验证每个复习节点;复习结果影响掌握度和待复习数量。
### 任务 10模考分析
工作:实现行测模考录入、列表、趋势、模块分数、目标分差和较上次变化;补充无数据空状态。
产出:模考分析页和成绩录入页。
完成标准:只出现行测字段;至少两条记录能生成趋势;删除或修改记录后分析同步更新。
### 任务 11AI 讲解与申论占位
工作:实现 OpenAI 兼容客户端、Token 配置读取、结构化讲解、超时处理和题库解析回退;完成申论占位页面。
产出AI 讲解接口、前端结果展示、未配置和失败提示。
完成标准:配置有效 Token 能完成一次讲解未配置或超时不会阻塞刷题结果Token 不出现在前端和日志中。
### 任务 12联调与异常收口
工作逐接口联调补齐空数据、非法导入、重复提交、文件写入失败、AI 失败和网络断开处理;统一按钮禁用和提示文案。
产出:接口检查清单、边界场景记录、修复提交。
完成标准:主要用户流程无未处理异常;所有错误都能被用户理解;服务端日志能定位问题但不泄露敏感配置。
### 任务 13原型视觉验收与响应式修正
工作:对照原型逐页校准尺寸、间距、字号、颜色、图标、卡片层级和交互状态;检查 390px 手机宽度、平板宽度和桌面宽度。
产出:视觉差异修复、页面截图检查记录。
完成标准:导航、主要卡片、按钮和核心数据层级与原型一致;无横向溢出;触控目标可操作。
### 任务 14交付整理
工作:整理 README、环境变量示例、启动命令、题库格式说明、AI 配置说明和数据目录说明;执行生产构建。
产出:可交付代码、运行文档、最终 OpenAPI 文件和验收清单。
完成标准:清空依赖缓存后可重新安装并构建;生产构建成功;文档中的命令与实际脚本一致。
## 3. 关键依赖关系
```text
初始化
JSON Store ───────┐
↓ │
数据模型/Schema │
↓ │
OpenAPI ─→ 前端 API 生成
↓ ↓
业务 Service ─→ 页面联调
统计、错题、AI
双端验收与交付
```
以下事项不得提前绕过依赖:
- 页面不得在接口未定时自行定义重复类型。
- 统计页面不得使用仅存在于前端的模拟计算。
- 错题复习必须基于真实作答记录,不能单独维护一套展示数字。
- AI 页面必须复用刷题结果中的题目和用户答案。
## 4. 每项任务的完成检查
完成一项任务前,按以下顺序检查:
1. 启动前端并使用浏览器打开对应页面,在与原型图一致的视口尺寸下截图;将实现截图与对应原型逐项对比,记录布局、尺寸、间距、颜色、字体、图标和内容差异,修正明显偏差后再继续。
2. 使用浏览器实际操作一遍本任务涉及的核心流程,确认页面反馈、路由跳转和数据变化符合预期。
3. 正常流程是否可运行。
4. 空数据是否可展示。
5. 非法输入是否有反馈。
6. 写入后重启服务是否仍然正确。
7. PC 与 Mobile 是否都可操作。
8. OpenAPI、生成 API 和实际实现是否一致。
9. 是否引入了需求之外的抽象或依赖。
全部任务完成后,再执行一次从“首次启动 → 开始刷题 → 提交 → 错题复习 → 录入模考 → 查看数据中枢”的完整验收流程。