8.0 KiB
8.0 KiB
任务 06 检查记录:计划、个人中心、设置与要闻
日期:2026-09-01(含演示数据初始化后的二次校准)
交付内容
后端(Handlers + Service + Schema + Routes)
server/src/handlers/plans.tscreateTask:从纯返回对象改为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.ts:patchProfile/patchSettings从返回合并对象改为updateData持久化;DEFAULT_SETTINGS增加preferredDifficulty/learningReminder/mockPush。server/src/handlers/news.ts:importJson实现指纹去重(标题+分类+发布时间)+ 写库;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.ts:StudyPlanSchema增加note?: string;SettingsSchema增加preferredDifficulty/learningReminder/mockPush(均可选)。server/src/routes.ts:新增路由GET /api/plans/review(tags: 备考计划),路由数 31 → 34。server/src/data/seed.ts:扩充演示要闻至 5 条(覆盖 公告/联考/政策/时政/政治 分类),更新 settings 默认值(含新字段)。server/src/types/index.ts:StudyPlan类型增加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/ImportResult;plansApi新增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/review(PlanReviewView)、/news/:id(NewsDetailView)。
对照原型图(结构核对)
| 原型要素 | 实现 |
|---|---|
| 桌面-备考计划:页头标题+「备考第 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)、wrongReasons(4 条)、suggestions(3 条) |
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 |
返回标题/分类/来源/content(Markdown 原文) |
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、导入占位)在前后端打通并持久化,双端渲染与原型结构对齐,接口实测、类型检查、生产构建全部通过。