Files
cet6-90-day-checkin/app/plan.ts
T

15 lines
5.7 KiB
TypeScript
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.
export type TaskKey = "vocab"|"listening"|"reading"|"output"|"review";
export type Task = {key:TaskKey;label:string;text:string};
export type PlanDay = {date:string;weekday:string;week:string;phase:string;tasks:Task[]};
const T=(key:TaskKey,label:string,text:string):Task=>({key,label,text});
const V=(s:string)=>T("vocab","词汇",s), L=(s:string)=>T("listening","听力",s), R=(s:string)=>T("reading","阅读",s), O=(s:string)=>T("output","输出",s), X=(s:string)=>T("review","复盘",s);
const recovery=[[V("本周错词/熟词生义150–200个回顾"),L("重听本周错题 15–20 min"),R("复盘本周阅读错题"),X("周复盘:错词+错题+下周重点")],[V("80–120词:快速恢复+重点词+真题词"),L("长对话 1 组(20–25 min)"),R("仔细阅读 1 篇"),X("记录错词与听力漏听点")],[V("80–120词:熟词生义/抽象词"),L("篇章 1 组(20–25 min)"),R("长篇匹配 1 组"),O("翻译 1 小段(15–20 min)"),X("整理阅读同义替换")],[V("80–120词:形近词+近反义词"),L("讲座 1 组(20–25 min)"),R("仔细阅读 1 篇"),O("作文:列提纲+核心表达"),X("整理听力词汇/连读弱读")],[V("80–120词:固定搭配+真题词"),L("长对话 1 组(20–25 min)"),R("长篇匹配 1 组"),O("翻译 1 小段(15–20 min)"),X("记录翻译卡壳表达")],[V("80–120词:本周薄弱词回炉"),L("讲座 1 组(20–25 min)"),R("仔细阅读 1 篇"),O("作文:完整写 1 篇或半篇"),X("总结本周薄弱项")],[V("本周重点词80–120个回顾"),L("听力完整一部分(计时)"),R("阅读完整一部分(计时)"),X("整理本周错题")]];
const focused=[[V("真题词汇15 min"),R("仔细阅读 2 篇(计时)"),X("逐项分析4个选项为何对/错")],[V("高频难词+搭配20 min"),L("耳感保持10–15 min"),O("翻译 1 篇"),X("整理替代表达与卡壳词")],[V("真题错词15 min"),L("听力25 min"),R("阅读25 min"),X("记录用时和失分点")],[V("真题词汇15 min"),O("作文 1 篇(≤30 min)"),X("修改逻辑、语法和重复用词")],[V("错词快过10 min"),L("半套真题:听力"),R("半套真题:阅读"),X("严格计时,不暂停、不查词")],[V("本周重点词20–30 min"),L("重听本周听力错题"),R("复盘本周阅读错题"),X("周复盘:20–30词+同义替换+听力/作文表达")],[V("真题错词复习15 min"),L("听力重点训练30–40 min"),X("分析错因:漏听/未理解/误选/走神")]];
const papers=[[V("整理本套真题错词20–30个"),L("精听昨日错题"),R("精析昨日错题"),X("写清每道错题的判断依据")],[V("薄弱词汇15 min"),L("弱项专项30 min(若听力弱)"),R("弱项专项30 min(若阅读弱)"),X("只攻当前最弱模块")],[V("输出高频词15 min"),O("翻译1篇 + 作文1篇"),X("整理可复用表达")],[V("本周错词回炉30 min"),L("重听本周错题"),R("复盘本周阅读错题"),X("错题本只保留错因+依据")],[L("整套真题:听力"),R("整套真题:阅读"),O("整套真题:写作+翻译"),X("第二套完整真题,严格计时")],[V("本周重点词回顾20 min"),L("听力错题回放"),R("阅读错题复盘"),X("周总结:正确率、用时、下周弱项")],[L("整套真题:听力"),R("整套真题:阅读"),O("整套真题:写作+翻译"),X("严格模拟考试,全程计时")]];
const sprint=[[V("高频错词20 min"),L("错题耳感20 min"),R("阅读错题20 min"),O("作文框架10 min"),X("冲刺期启动:只做已学内容")],[L("完整模考:听力"),R("完整模考:阅读"),O("完整模考:写作+翻译"),X("严格按正式考试节奏")],[V("模考错词20 min"),L("精听12/1错题"),R("精析12/1错题"),X("修正时间分配与失分点")],[V("薄弱词汇15 min"),L("最弱听力题型25 min"),R("最弱阅读题型25 min"),O("翻译/作文弱项20 min"),X("只补一个最明显短板")],[L("完整模考:听力"),R("完整模考:阅读"),O("完整模考:写作+翻译"),X("再次检验时间策略")],[V("模考错词15 min"),L("精听12/4错题"),R("精析12/4错题"),X("减少新题,回炉高频错误")],[L("完整模考:听力"),R("完整模考:阅读"),O("完整模考:写作+翻译"),X("稳定发挥,不追求偏难怪题")],[L("最后一套完整真题:听力"),R("最后一套真题:阅读"),O("最后一套:写作+翻译"),X("此后不再大量刷新题")],[V("阅读错词15 min"),L("耳感保持15 min"),R("集中复习阅读错题"),X("回看同义替换与定位错误")],[V("听力词汇15 min"),L("集中复习听力错题"),R("阅读保持15 min"),X("重点回放没反应出的声音")],[V("输出词汇15 min"),L("耳感保持15 min"),O("作文框架+翻译表达集中复习"),X("不背生硬万能模板")],[V("高频词轻量回顾15–20 min"),L("英语耳感15–20 min"),R("只看少量典型错题"),O("作文框架快速过一遍"),X("提前收尾,准备证件与考试用品")]];
const phases=["Ⅰ 恢复期","Ⅱ 专项期","Ⅲ 真题期","Ⅳ 冲刺期"], weekdays=["周日","周一","周二","周三","周四","周五","周六"];
export const formatDate=(d:Date)=>d.toISOString().slice(0,10);
export const daysBetween=(a:string,b=formatDate(new Date()))=>Math.round((Date.parse(b+"T00:00:00Z")-Date.parse(a+"T00:00:00Z"))/86400000);
const start=Date.UTC(2026,8,13);
export const plan:PlanDay[]=Array.from({length:90},(_,i)=>{const d=new Date(start+i*86400000), date=formatDate(d), week="第"+(Math.floor(i/7)+1)+"周"; if(i<23)return{date,weekday:weekdays[d.getUTCDay()],week,phase:phases[0],tasks:recovery[i%7]};if(i<51)return{date,weekday:weekdays[d.getUTCDay()],week,phase:phases[1],tasks:focused[(i-23)%7]};if(i<78)return{date,weekday:weekdays[d.getUTCDay()],week,phase:phases[2],tasks:papers[(i-51)%7]};return{date,weekday:weekdays[d.getUTCDay()],week,phase:phases[3],tasks:sprint[i-78]};});