gwy-exam/docs/checks/task-06.md

8.0 KiB
Raw Blame History

任务 06 检查记录:计划、个人中心、设置与要闻

日期2026-09-01含演示数据初始化后的二次校准

交付内容

后端Handlers + Service + Schema + Routes

  • server/src/handlers/plans.ts
    • createTask:从纯返回对象改为 updateData 持久化写入 study-plans.json
    • toggleTask:写入新状态后返回。
    • 新增 review()(周报复盘):返回 weekStart/weekEnd/studyMinutes/answered/correct/accuracy/taskDone/taskTotal/weekNumber/streakDays/checkedInToday/weakPoints/wrongReasons/suggestions
    • 内部辅助:buildSuggestions()(自动生成下周建议)、computeReasons()(错因聚合)。
  • server/src/handlers/profile.tspatchProfile/patchSettings 从返回合并对象改为 updateData 持久化;DEFAULT_SETTINGS 增加 preferredDifficulty/learningReminder/mockPush
  • server/src/handlers/news.tsimportJson 实现指纹去重(标题+分类+发布时间)+ 写库;importRss/importApi/importUrl 保留占位(failed: 1 + 明确 message
  • server/src/services/stats.ts:新增 currentWeekRange()(自然周周一为起点)和 computeWeeklyOverview(records, plans)(本周作答数/正确数/正确率/分钟数/任务完成数)。
  • server/src/schemas/api.ts:新增 PlanReviewResponseSchema(含 streakDays/checkedInToday 等字段)。
  • server/src/schemas/entities.tsStudyPlanSchema 增加 note?: stringSettingsSchema 增加 preferredDifficulty/learningReminder/mockPush(均可选)。
  • server/src/routes.ts:新增路由 GET /api/plans/reviewtags: 备考计划),路由数 31 → 34。
  • server/src/data/seed.ts:扩充演示要闻至 5 条(覆盖 公告/联考/政策/时政/政治 分类),更新 settings 默认值(含新字段)。
  • server/src/types/index.tsStudyPlan 类型增加 note?: string

前端Views + Router + Utils + API

  • client/src/utils/markdown.ts(新建):自包含轻量渲染器,先 escapeHtml 转义再渲染,支持标题/段落/加粗/斜体/行内代码/有序无序列表/引用块/链接/分割线(不引入第三方依赖)。
  • client/src/utils/format.ts:新增 weekOfYear/weekdayName/formatDateWeekday/timeAgo/daysSince
  • client/src/api/index.ts:新增类型 PlansToday/PlansWeek/PlanReview/StudyPlanItem/NewsItem/ImportResultplansApi 新增 review()
  • client/src/views/plan/PlanView.vue(重写):桌面(页头+4 指标卡+今日任务+本周安排+周报复盘/新建任务按钮)、移动(今日计划列表+本周计划进度+周报复盘入口+明日预告新建任务弹层Teleport 模态);模块字段改为五大模块下拉(解决类型枚举问题)。
  • client/src/views/plan/PlanReviewView.vue(新建):页头返回按钮、周区间、本周刷题/正确率汇总、本周薄弱考点 Top 3、错因分布语义色进度条、下周建议。
  • client/src/views/profile/ProfileView.vue(重写):桌面(头像卡+设置+备考概览+备考里程碑+本周学习建议)、移动(头像卡+概览+设置入口+学习建议onMounted 时 profile.fetch() 加载真实昵称/目标/备考天数。
  • client/src/views/settings/SettingsView.vue(重写):刷题设置(每日提醒时间/题库难度偏好/默认答题时长)、偏好设置(目标分数/考试日期)、通知(学习提醒/模考成绩推送开关、AI 配置状态、关于与版本;watch 从接口初始化表单,save() 同时 PATCH settings 和 profile。
  • client/src/views/news/NewsView.vue(重写):分类 Tab全部/公告/联考/政策/时政/申论)、置顶深蓝卡、列表卡(分类徽章+来源+相对时间、导入弹层JSON/RSS/API/URL 四 Tab
  • client/src/views/news/NewsDetailView.vue新建返回按钮、hero 卡(分类徽章+标题+来源日期)、v-html="renderMarkdown(content)" 渲染正文。
  • client/src/router/index.ts:新增路由 /plan/reviewPlanReviewView/news/:idNewsDetailView

对照原型图(结构核对)

原型要素 实现
桌面-备考计划:页头标题+「备考第 93 天」+ 周报复盘/新建任务按钮
桌面-备考计划:本周任务 / 学习时长 / 完成率 / 连续打卡 4 指标卡
桌面-备考计划:今日任务(完成态+待完成态,含「待完成」标签与分类徽章)
桌面-备考计划:本周安排(周一至周日,含暂无安排)
移动-备考计划:今日计划列表 + 本周计划进度条(60%) + 周报复盘入口
桌面-我的:头像卡(昵称/目标/备考天数)+ 设置 + 备考概览 + 备考里程碑 + 本周学习建议
移动-我的:头像卡 + 概览四指标 + 目标分数设置 + 本周复盘/时政要闻入口 + 学习建议
桌面-设置:刷题设置 / 偏好设置 / 通知 / AI 配置状态 / 关于与版本
移动-设置:保存设置 + 刷题设置 + 偏好设置 + 通知
桌面-要闻:分类 Tab + 置顶深蓝卡 + 列表卡(徽章+来源+相对时间)
移动-要闻:分类 Tab + 置顶卡 + 列表卡 + TabBar
要闻详情hero 卡 + Markdown 渲染正文

接口实测curl数据重置后

接口 结果
GET /api/plans/today 今日任务 3 个(言语理解 done / 资料分析 pending / 错题复盘 pending
GET /api/plans/review weekStart 2026-08-31 / weekEnd 09-06 / studyMinutes 43 / answered 14 / correct 8 / accuracy 57 / taskDone 3 / taskTotal 5 / weekNumber 35 / streakDays 6 / checkedInToday true、weakPoints行程问题×2、wrongReasons4 条、suggestions3 条)
POST /api/plans/tasks 创建任务(含 note 持久化,写入 study-plans.json
PATCH /api/plans/tasks/:id/toggle 切换任务状态并写库
GET/PATCH /api/profile 返回/更新 nickname/examDate/targetScore/startedAt
GET/PATCH /api/settings 返回/更新含 aiConfigured 等字段
GET /api/news/list total 5,覆盖 公告/联考/政策/时政/政治
GET /api/news/:id 返回标题/分类/来源/contentMarkdown 原文)
POST /api/news/import/json success 1,指纹去重(标题+分类+时间)写库
POST /api/news/import/rss 占位反馈:failed 1 + message「RSS 解析器尚未配置…」
GET /api/dashboard/overview 正确反映任务状态(今日 tasks 2/4、targetScore 72

浏览器检查agent-browser数据重置后

场景 结果
桌面 1440计划/我的/设置/要闻/要闻详情/周报复盘 均渲染干净演示数据(昵称「备考人」、目标 72 分、要闻 5 条无测试新增)
移动 390计划/我的/设置/要闻/要闻详情/周报复盘 均渲染正确;scrollWidth 380 ≤ 390 无横向溢出
要闻详情 Markdown# / 加粗 / 引用 / 列表)正确渲染
数据持久化 删除 data/*.json 重启后 seed 重新写入演示数据,昵称/目标/要闻恢复初始状态

截图:deliverables/checks/task-06-{plan,profile,settings,news,newsdetail,review}-{desktop,mobile}.png

完成标准核对

  • 任务状态变更能影响首页统计dashboard overview 的 todayTasks 随 toggle 更新)。
  • 设置刷新后保留PATCH settings 持久化到 JSON重启后读回
  • 要闻详情支持 Markdown自写渲染器无第三方依赖
  • RSS/API/URL 入口返回明确占位反馈(failed 1 + 明确 message
  • 计划任务创建/切换持久化study-plans.json
  • 页面布局与原型图结构、内容、样式对照一致PC 与 Mobile 双端)。

当前结论

任务 06 完成并按原型图校准:计划、个人中心、设置与要闻四个页面(含周报复盘、要闻详情 Markdown、导入占位在前后端打通并持久化双端渲染与原型结构对齐接口实测、类型检查、生产构建全部通过。