15 lines
5.7 KiB
TypeScript
15 lines
5.7 KiB
TypeScript
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]};});
|