{
  "generated_at": "2026-10-22 05:11:01",
  "today": "2026-10-22",
  "students_analytics": {
    "赵铭哲": {
      "name": "赵铭哲",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "zmz123",
      "login_alias": "赵铭哲",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 3,
      "syntax_learned_lesson": 3,
      "sprint_unlocked_modules": [],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 3,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": false,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_zmz_s1",
            "date": "2026-08-06",
            "sub_type": "学校平时测",
            "title": "入学试课摸底基线",
            "score": 30.0,
            "full_score": 150.0,
            "pct": 20.0,
            "note": "入学起点约30分，小学600词缺60词，启动听音回炉"
          },
          {
            "id": "ex_zmz_s2",
            "date": "2026-10-11",
            "sub_type": "统考",
            "title": "高三10月新阵地联考(第9课最终定档)",
            "score": 57.0,
            "full_score": 150.0,
            "pct": 38.0,
            "note": "较入学接近翻倍！客观题49分(听力狂揽24/30分) + 双写作8分(3.5+4.5)"
          }
        ],
        "inst": [
          {
            "id": "ex_zmz_i1",
            "date": "2026-10-18",
            "sub_type": "长难句阶段测",
            "title": "第1-2课综合语法骨架与修饰通关卷(30题)",
            "score": 76.0,
            "full_score": 100.0,
            "pct": 76.0,
            "note": "Q1-3、Q6、Q8-11全对，靶场闪电测6题对4题"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:已上✅】核验自第5~9次督导报告(10月18日)：第5~8次课系统精讲并死磕第0课《动词与九大时态矩阵》，最新推进至第3课《名词性从句》。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "小陈": {
      "name": "小陈",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "xckz123",
      "login_alias": "小陈",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 4,
      "syntax_learned_lesson": 4,
      "sprint_unlocked_modules": [
        1,
        2
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 4,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": true,
      "checkin_ignore_reason": "住校（仅休息一天）或暂时停课，免除未打卡弹窗",
      "exam_scores": {
        "school": [
          {
            "id": "ex_xc_s1",
            "date": "2026-10-14",
            "sub_type": "学校平时测",
            "title": "余姚中学高一10月质量检测",
            "score": 120.0,
            "full_score": 150.0,
            "pct": 80.0,
            "note": "七选五12.5满分、阅读42.5/47.5、语篇语填13.5/15；单句语填9/15待补定从下半部"
          }
        ],
        "inst": [
          {
            "id": "ex_xc_i1",
            "date": "2026-07-31",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(暑期第3课·同期全员第1名!)",
            "score": 95.0,
            "full_score": 100.0,
            "pct": 95.0,
            "note": "仅错1道填空与1道选择，句型与非谓语底子极佳"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自陈坤泽第1次督导报告(7月23日)及阶段报告：直接从《第一课基础句分析》开讲，尚未上第0课；已学第1~4课 + 冲刺M1/M2。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "马涵琪": {
      "name": "马涵琪",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "mhq123",
      "login_alias": "马涵琪",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 7,
      "syntax_learned_lesson": 7,
      "sprint_unlocked_modules": [
        1,
        2
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 7,
      "last_lesson_type": "assignment_review",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_mhq_s1",
            "date": "2026-09-04",
            "sub_type": "学校平时测",
            "title": "9月初八中校内摸底考",
            "score": 82.0,
            "full_score": 150.0,
            "pct": 54.7,
            "note": "定位听力与阅读短板，导入两题记忆窗口"
          },
          {
            "id": "ex_mhq_s2",
            "date": "2026-10-11",
            "sub_type": "学校平时测",
            "title": "八中高三综合限时训(折合150分制)",
            "score": 87.0,
            "full_score": 150.0,
            "pct": 58.0,
            "note": "无听力卷面69.5/120分(班均75)；七选五交卷前改错2题痛失5分"
          }
        ],
        "inst": [
          {
            "id": "ex_mhq_i1",
            "date": "2026-08-23",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第4课·全员最高分!)",
            "score": 98.0,
            "full_score": 100.0,
            "pct": 98.0,
            "note": "五大句型与非谓语斩获全员最高分98分"
          },
          {
            "id": "ex_mhq_i2",
            "date": "2026-10-04",
            "sub_type": "长难句阶段测",
            "title": "阶段测试二(第10课·三大从句综合)",
            "score": 90.0,
            "full_score": 100.0,
            "pct": 90.0,
            "note": "三大从句稳固，课后8篇七选五全对7篇"
          },
          {
            "id": "ex_mhq_i3",
            "date": "2026-10-11",
            "sub_type": "长难句阶段测",
            "title": "阶段1.5测试(第11课·前四课更新过关)",
            "score": 73.0,
            "full_score": 100.0,
            "pct": 73.0,
            "note": "暴露出汉译英长难句骨架搭建需强化"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1次督导报告(8月8日)及1~10课阶段报告：直接从第1课开讲，尚未上第0课；已学第1~7课 + 冲刺M1/M2。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "程宇杨": {
      "name": "程宇杨",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "cyy123",
      "login_alias": "程宇杨",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 7,
      "syntax_learned_lesson": 7,
      "sprint_unlocked_modules": [
        1,
        2,
        3
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 7,
      "last_lesson_type": "assignment_review",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_6c5b0e27",
            "date": "2026-08-21",
            "sub_type": "学校平时测",
            "title": "Z20",
            "score": 85.5,
            "full_score": 150.0,
            "pct": 57.0,
            "note": ""
          },
          {
            "id": "ex_cyy_s1",
            "date": "2026-09-22",
            "sub_type": "学校平时测",
            "title": "9月中旬校内高难月考(班第5)",
            "score": 100.0,
            "full_score": 150.0,
            "pct": 66.7,
            "note": "依托前期语法框架看懂长句主干，首次突破百分线"
          },
          {
            "id": "ex_cyy_s2",
            "date": "2026-10-13",
            "sub_type": "统考",
            "title": "高三10月新阵地联考(班第3/校47)",
            "score": 125.0,
            "full_score": 150.0,
            "pct": 83.3,
            "note": "阅读/七选五/语填全满分，完形13，听力27，写作8+12=20分"
          },
          {
            "id": "ex_cyy_s3",
            "date": "2026-10-18",
            "sub_type": "一模",
            "title": "学军中学高三模拟卷5(第13课实测)",
            "score": 124.0,
            "full_score": 150.0,
            "pct": 82.7,
            "note": "客观题80分斩获72.5分，折算全卷稳居123-125分优秀梯队"
          }
        ],
        "inst": [
          {
            "id": "ex_cyy_i1",
            "date": "2026-08-05",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第1-2课骨架与非谓语)",
            "score": 88.0,
            "full_score": 100.0,
            "pct": 88.0,
            "note": "第3课当堂测试，语法大框架牢靠"
          },
          {
            "id": "ex_cyy_i2",
            "date": "2026-09-03",
            "sub_type": "长难句阶段测",
            "title": "阶段1.5/2测试(第6课内部语法测试)",
            "score": 92.0,
            "full_score": 100.0,
            "pct": 92.0,
            "note": "长难句翻译与结构分析得46/50分"
          },
          {
            "id": "ex_cyy_i3",
            "date": "2026-10-15",
            "sub_type": "冲刺课阶段测",
            "title": "江苏高考七选五真题13篇(65题)通关测",
            "score": 90.0,
            "full_score": 100.0,
            "pct": 90.0,
            "note": "65题仅失6题，四级动线与选项三标法彻底成型"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1~13次督导报告：7月22日第1课直接从五大句型开讲（第9课仅切入情态动词局部，完整第0课时态体系待补）；已学第1~7课 + 冲刺M1/M2/M3。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 11,
          "label": "冲刺三·完形填空镜头轴",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "张浩轩": {
      "name": "张浩轩",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "zhx123",
      "login_alias": "张浩轩",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 8,
      "syntax_learned_lesson": 8,
      "sprint_unlocked_modules": [
        1,
        2,
        3
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 8,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_zhx_s1",
            "date": "2026-06-28",
            "sub_type": "统考",
            "title": "高二下学期期末统考",
            "score": 120.0,
            "full_score": 150.0,
            "pct": 80.0,
            "note": "高二期末难度120+分，理科逻辑底子扎实"
          },
          {
            "id": "ex_zhx_s2",
            "date": "2026-10-11",
            "sub_type": "统考",
            "title": "2026届Z20高三联考实测(第13课)",
            "score": 110.5,
            "full_score": 150.0,
            "pct": 73.7,
            "note": "七选五12.5满分，阅读+完形仅失7题，按写作6+12折算实底108-113分"
          }
        ],
        "inst": [
          {
            "id": "ex_zhx_i1",
            "date": "2026-07-25",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第4课·骨架与非谓语)",
            "score": 91.0,
            "full_score": 100.0,
            "pct": 91.0,
            "note": "单句选择与填空几乎零失误"
          },
          {
            "id": "ex_zhx_i2",
            "date": "2026-08-16",
            "sub_type": "长难句阶段测",
            "title": "阶段测试二(第7课·从句综合)",
            "score": 95.0,
            "full_score": 100.0,
            "pct": 95.0,
            "note": "选择与填空零纰漏"
          },
          {
            "id": "ex_zhx_i3",
            "date": "2026-08-16",
            "sub_type": "长难句阶段测",
            "title": "阶段1.5测试(原2.5阶段测试·第7课)",
            "score": 94.0,
            "full_score": 100.0,
            "pct": 94.0,
            "note": "原2.5阶段测试归入1.5阶段，仅中译英微瑕"
          },
          {
            "id": "ex_zhx_i4",
            "date": "2026-09-05",
            "sub_type": "长难句阶段测",
            "title": "阶段测试三(第10课·第5-6课测试)",
            "score": 87.0,
            "full_score": 100.0,
            "pct": 87.0,
            "note": "疲劳期测试，强调句去壳与翻译细节扣分"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1~14次督导报告及阶段报告：直接从第1课开讲推进至第8课虚拟语气收官，尚未单独补第0课；冲刺已讲M1/M2/M3。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 8,
          "label": "第8课·虚拟语气与情态高阶",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 11,
          "label": "冲刺三·完形填空镜头轴",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "徐煜轩": {
      "name": "徐煜轩",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "xyx123",
      "login_alias": "徐煜轩",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 8,
      "syntax_learned_lesson": 8,
      "sprint_unlocked_modules": [
        1,
        2
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 8,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_xyx_s1",
            "date": "2026-09-06",
            "sub_type": "学校平时测",
            "title": "9月初校内月考(严格掐表自测)",
            "score": 95.0,
            "full_score": 150.0,
            "pct": 63.3,
            "note": "远超班级均分"
          },
          {
            "id": "ex_xyx_s2",
            "date": "2026-10-05",
            "sub_type": "学校平时测",
            "title": "9月底校内无听力/作文统考(折150分)",
            "score": 111.5,
            "full_score": 150.0,
            "pct": 74.3,
            "note": "客观题卷面59.5/80分(得分率74.4%)"
          },
          {
            "id": "ex_xyx_s3",
            "date": "2026-10-10",
            "sub_type": "统考",
            "title": "高三10月新阵地联考(修正后实分)",
            "score": 90.0,
            "full_score": 150.0,
            "pct": 60.0,
            "note": "听力28.5/30、完形13/15极稳；因应用文超时致续写仅得1.5分"
          }
        ],
        "inst": [
          {
            "id": "ex_xyx_i1",
            "date": "2026-07-29",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第5课·第1-2课综合)",
            "score": 86.0,
            "full_score": 100.0,
            "pct": 86.0,
            "note": "正确率85%以上，掌握Very测试法"
          },
          {
            "id": "ex_xyx_i2",
            "date": "2026-08-12",
            "sub_type": "长难句阶段测",
            "title": "阶段1.5测试(原2.5阶段·前四课大综合)",
            "score": 93.0,
            "full_score": 100.0,
            "pct": 93.0,
            "note": "原2.5阶段测试获93分高分"
          },
          {
            "id": "ex_xyx_i3",
            "date": "2026-08-23",
            "sub_type": "长难句阶段测",
            "title": "阶段测试二(第7课·从句综合)",
            "score": 89.0,
            "full_score": 100.0,
            "pct": 89.0,
            "note": "顶住压力拿下89分好成绩"
          },
          {
            "id": "ex_xyx_i4",
            "date": "2026-09-06",
            "sub_type": "长难句阶段测",
            "title": "阶段测试三(第9课·第5-6课测试)",
            "score": 84.0,
            "full_score": 100.0,
            "pct": 84.0,
            "note": "强调句去壳法与粗心扣5分"
          },
          {
            "id": "ex_xyx_i5",
            "date": "2026-10-18",
            "sub_type": "冲刺课阶段测",
            "title": "高考七选五真题5篇(25题)专项验收",
            "score": 96.0,
            "full_score": 100.0,
            "pct": 96.0,
            "note": "25题仅错1题，三标法大捷"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:已上✅】核验自第11/14次督导报告(10月17日)：第11次课(9月21日)专门讲授第0课《动词系统重构》；语法第1~8课已收官，冲刺已讲M1(阅读)、M2(七选五)。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 8,
          "label": "第8课·虚拟语气与情态高阶",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "沈子瑞": {
      "name": "沈子瑞",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "Shen315400",
      "login_alias": "沈子瑞",
      "cred_customized": true,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 3,
      "syntax_learned_lesson": 3,
      "sprint_unlocked_modules": [
        1,
        2
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 3,
      "last_lesson_type": "assignment_review",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "2026-10-21 18:45",
      "total_checkin_days": 1,
      "days_since_last_checkin": 2,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_szr_s1",
            "date": "2026-08-05",
            "sub_type": "统考",
            "title": "入学七彩阳光统考摸底",
            "score": 84.0,
            "full_score": 150.0,
            "pct": 56.0,
            "note": "入学基线卡在及格线，六科总分差特控线0.5分"
          },
          {
            "id": "ex_szr_s2",
            "date": "2026-09-23",
            "sub_type": "学校平时测",
            "title": "9月校内月考(班级第6名!)",
            "score": 98.5,
            "full_score": 150.0,
            "pct": 65.7,
            "note": "英语单科首次大爆发冲上班级第6名"
          },
          {
            "id": "ex_szr_s3",
            "date": "2026-10-14",
            "sub_type": "统考",
            "title": "高三10月新阵地联考(超特控线10分!)",
            "score": 99.5,
            "full_score": 150.0,
            "pct": 66.3,
            "note": "较统考净涨15.5分！听力28.5、七选五10、阅读C篇满分"
          }
        ],
        "inst": [
          {
            "id": "ex_szr_i1",
            "date": "2026-09-02",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第3课·骨架搭建与非谓语)",
            "score": 91.0,
            "full_score": 100.0,
            "pct": 91.0,
            "note": "斩获91分高分，攻克SVOC代入be动词验证法"
          },
          {
            "id": "ex_szr_i2",
            "date": "2026-10-07",
            "sub_type": "冲刺课阶段测",
            "title": "七选五四级动线6分钟限时实战(第7课)",
            "score": 80.0,
            "full_score": 100.0,
            "pct": 80.0,
            "note": "6分钟限时斩获4/5高分"
          },
          {
            "id": "ex_szr_i3",
            "date": "2026-10-18",
            "sub_type": "冲刺课阶段测",
            "title": "杭二中最后一卷高难阅读C&D篇实测(第9课)",
            "score": 100.0,
            "full_score": 100.0,
            "pct": 100.0,
            "note": "8道高阶阅读题100%全对满分通关"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "full",
          "syntax": 15,
          "vocab": 20
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 1,
      "last_active_str": "2026-10-20 21:15",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 2,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1次督导报告(8月16日)及第4/7/8次报告：直接从《第1课 基础句子分析》开讲，尚未上第0课；已学第1~4课 + 冲刺M1/M2。",
      "last_diag": {
        "id": "lt_c2d04a31",
        "user": "沈子瑞",
        "time": 1792579721,
        "date": "2026-10-21 18:48",
        "total": 10,
        "correct": 7,
        "rate": 70.0,
        "verdict": "YELLOW",
        "sop_mode": "局部排毒 10 分钟后推进新课（针对错题口令复验）",
        "wrong_details": [
          {
            "card_id": "SYN_L1_007",
            "lesson_no": 1,
            "card_type": "binary_judge",
            "title": "SVOC 隐蔽高频结构：advise / tell / force sb. to do sth.",
            "rule_formula": "在 `advise / tell / ask / force / allow sb. to do sth.` 中，后面的 `to do` 绝不是目的状语，而是补充说明宾语要执行的动作！加 be 动词验证：`The patient is to quit smoking`（be to do 表安排或医嘱指令）完全成立 ➔ 100% 锁死【SVOC（主谓宾宾补）】！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "判断句子主干句型：The doctor strongly advised the patient to quit smoking immediately.",
            "options": [
              "SVOC（主谓宾宾补）",
              "SVOO（主谓双宾）",
              "SVC（主系表）",
              "SVO（主谓宾）"
            ],
            "correct": false,
            "chosen_text": "SVOO（主谓双宾）",
            "correct_text": "SVOC（主谓宾宾补）",
            "breakdown": "【骨架】The doctor(S) strongly <u>advised</u>(V) the patient(O) (to quit smoking immediately)(C). 💡 铁律：在宾语后加 is 变成 <b>The patient is to quit smoking</b>（be to do 表安排/指令），逻辑成立！to quit smoking 是宾语补足语，句型锁死 <b>SVOC</b>！<br>📖 <b>【全句译文】</b>医生强烈建议这位病人立刻戒烟。"
          },
          {
            "card_id": "SYN_L1_001",
            "lesson_no": 1,
            "card_type": "token_select",
            "title": "五步拆句法·排伪锁真谓语（定海神针 1）",
            "rule_formula": "①扫雷（圈动词长相）→ ②排伪（划掉孤立的 doing/done 和 to do）→ ③找绳子（无连词则全句只有 1 个真谓语）→ ④划地盘 → ⑤锁定唯一【定海神针（真谓语）】！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "The scientists conducting the experiment in the lab discovered a new element.",
            "options": [
              "The",
              "scientists",
              "conducting",
              "the",
              "experiment",
              "in",
              "the",
              "lab",
              "discovered",
              "a",
              "new",
              "element."
            ],
            "correct": false,
            "chosen_text": "The",
            "correct_text": "discovered",
            "breakdown": "【骨架】The scientists (conducting the experiment in the lab) <u>discovered</u> a new element. 💡 排伪：conducting 是孤立的 doing 作定语，直接划掉；全句无连词，唯一真谓语是 <b>discovered</b>！<br>📖 <b>【全句译文】</b>在实验室里进行实验的科学家们发现了一种新元素。"
          },
          {
            "card_id": "SPR_M1_002",
            "lesson_no": 9,
            "card_type": "binary_judge",
            "title": "阅读战法 2：Z字扫读刹车阀与句尾限定词防漏看",
            "rule_formula": "命中锚点立即踩死刹车精读前后共3句，必须读完句尾过去分词/从句限定词！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "原文写：'Members pay $0.5 per day, capped at $10 per month.' 问月最高开销应选？",
            "options": [
              "$30",
              "$15",
              "$10",
              "$0.5"
            ],
            "correct": false,
            "chosen_text": "$15",
            "correct_text": "$10",
            "breakdown": "🎯 必读完句尾限定词 capped at $10（封顶10美元）！<br>📖 <b>【全句译文】</b>【原文译文】会员每天支付 0.5 美元，每月封顶 10 美元。（capped at 封顶于/最高不超过……，切勿只算 0.5×30=15 而漏看句尾刹车词！）"
          }
        ],
        "all_details": [
          {
            "card_id": "SYN_L2_011",
            "lesson_no": 2,
            "card_type": "binary_judge",
            "title": "非谓语动词的本质（「动词之心，其他词性之身」）与句首逗号一刀切铁律",
            "rule_formula": "第2课核心定义：① 非谓语动词（to do / doing / done）的本质是【有一颗动词的心（能带自己的宾语和状语），但穿着名词、形容词、副词的身体】（抢占主宾表/定/状/补槽位，绝不是从句！）；②【句首一刀切铁律】只要句首出现大写 `Doing..., / Done..., / To do...,` 且后面有【逗号】与主句隔开，100% 作【状语】；若句首 `Doing...` 后没有逗号直接跟单数谓语，则是【动名词作主语】！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "第2课如何定义非谓语动词的本质？并且当句首出现大写 'Seen from the top of the hill, the city looks beautiful.'（有逗号）与 'Seeing is believing.'（无逗号）时，句首非谓语分别作什么成分？",
            "options": [
              "非谓语就是从句；两句的句首非谓语都作主语",
              "非谓语是「动词之心，其他词性之身」，绝不是从句！句首带逗号的 'Seen..., ' 一刀切 100% 作【状语】；无逗号直接接谓语 is 的 'Seeing' 作【主语】",
              "两句的句首非谓语都作定语",
              "Seen from the top of the hill 是主语从句"
            ],
            "correct": true,
            "chosen_text": "非谓语是「动词之心，其他词性之身」，绝不是从句！句首带逗号的 'Seen..., ' 一刀切 100% 作【状语】；无逗号直接接谓语 is 的 'Seeing' 作【主语】",
            "correct_text": "非谓语是「动词之心，其他词性之身（名/形/副）」，绝不是从句！句首带逗号的 'Seen..., ' 一刀切 100% 作【状语】；无逗号直接接谓语 is 的 'Seeing' 作【主语】",
            "breakdown": "💡 第2课秒判铁律：看到句首大写的 <b>Doing / Done / To do</b>，第一步先瞄一眼后面有没有<b>逗号</b>！有逗号隔开主句 ➔ 一刀切 100% 是<b>状语</b>；没逗号且后面直接跟谓语动词 ➔ <b>动名词/不定式作主语</b>！<br>📖 <b>【参考句意】</b>非谓语 = 动词之心 + 名/形/副之身（绝非从句）；句首「非谓语 + 逗号」一刀切 100% 作状语；句首「Doing + 无逗号 + 单数谓语」作主语。",
            "auto_fixed_v17": true
          },
          {
            "card_id": "SYN_L2_003",
            "lesson_no": 2,
            "card_type": "binary_judge",
            "title": "非谓语作后置定语：doing（主动）vs done（被动）vs to do（待做）",
            "rule_formula": "名词后面的非谓语定语：① 主动正在发出动作用 doing（the woman wearing...）；② 被动或已完成用 done（the novel published last month）；③ 将来有待去做的事用 to do / to be done（urgent documents to be signed）！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "The sci-fi novel, ______ just last month, became an instant bestseller.",
            "options": [
              "published",
              "to publish",
              "publish",
              "publishing"
            ],
            "correct": true,
            "chosen_text": "published",
            "correct_text": "published",
            "breakdown": "【骨架】The sci-fi novel, (<b>published</b> just last month), <u>became</u> an instant bestseller. 💡 秒杀：主干已有真谓语 became，小说与 publish 是被动关系，填过去分词 <b>published</b> 作后置定语！<br>📖 <b>【全句译文】</b>仅在上个月出版的那本科幻小说迅速成了畅销书。"
          },
          {
            "card_id": "SYN_L3_014",
            "lesson_no": 3,
            "card_type": "binary_judge",
            "title": "形式宾语 it 铁律：make / find / think / consider + it + adj./n. + that/to do",
            "rule_formula": "当动词 make / find / think / feel / consider 后接形容词或名词作宾补，且真正的宾语是不定式 to do 或 that 从句时，中间必须填形式宾语 it（绝不能填 that 或 this）！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "High-speed railways have made ______ much easier for people to travel across provinces.",
            "options": [
              "that",
              "this",
              "it",
              "what"
            ],
            "correct": true,
            "chosen_text": "it",
            "correct_text": "it",
            "breakdown": "【骨架】High-speed railways <u>have made</u> <b>it</b>(形式宾语) much easier(宾补) {for people} <u>to travel</u>(真宾语). 💡 铁律：make + it + adj. + to do，必填形式宾语 <b>it</b>！<br>📖 <b>【全句译文】</b>高铁让人们跨省出行变得容易多了。"
          },
          {
            "card_id": "SPR_M2_003",
            "lesson_no": 10,
            "card_type": "binary_judge",
            "title": "七选五战法 3：转折（However/Instead）情绪 180° 翻转律",
            "rule_formula": "带 However / But / Instead / Yet 的选项，其正负情感或观点方向必须与前一句发生 180° 翻转！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "前句写：'Many people believe that skipping breakfast helps lose weight.[+]' 若后空填 'However, ______.' 则后空必选？",
            "options": [
              "it is a great way to stay slim",
              "many students get up late",
              "studies show it actually slows down metabolism and leads to weight gain",
              "breakfast is the first meal of the day"
            ],
            "correct": true,
            "chosen_text": "studies show it actually slows down metabolism and leads to weight gain",
            "correct_text": "studies show it actually slows down metabolism and leads to weight gain",
            "breakdown": "🎯 However 触发 [+] ➔ [-] 180° 翻转（研究表明反而导致发胖）！<br>📖 <b>【全句译文】</b>【原文译文】许多人认为不吃早餐有助于减肥 [+]；然而（However），研究表明这实际上会导致体重增加 [-]。"
          },
          {
            "card_id": "SYN_L3_003",
            "lesson_no": 3,
            "card_type": "binary_judge",
            "title": "whether vs if 四大禁区",
            "rule_formula": "介词后、主从句首、表从、同位从以及直接连 or not/to do 时，表“是否”只能用 whether 不用 if！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "It all depends on ______ we can get enough financial support for the project.",
            "options": [
              "whether",
              "that",
              "if",
              "what"
            ],
            "correct": true,
            "chosen_text": "whether",
            "correct_text": "whether",
            "breakdown": "【骨架】介词 on 后只用 whether！<br>📖 <b>【全句译文】</b>这完全取决于我们能否为该项目获得足够的资金支持。（介词 on 之后的宾语从句表“是否”，只能用 whether，禁用 if！）"
          },
          {
            "card_id": "SYN_L1_007",
            "lesson_no": 1,
            "card_type": "binary_judge",
            "title": "SVOC 隐蔽高频结构：advise / tell / force sb. to do sth.",
            "rule_formula": "在 `advise / tell / ask / force / allow sb. to do sth.` 中，后面的 `to do` 绝不是目的状语，而是补充说明宾语要执行的动作！加 be 动词验证：`The patient is to quit smoking`（be to do 表安排或医嘱指令）完全成立 ➔ 100% 锁死【SVOC（主谓宾宾补）】！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "判断句子主干句型：The doctor strongly advised the patient to quit smoking immediately.",
            "options": [
              "SVOC（主谓宾宾补）",
              "SVOO（主谓双宾）",
              "SVC（主系表）",
              "SVO（主谓宾）"
            ],
            "correct": false,
            "chosen_text": "SVOO（主谓双宾）",
            "correct_text": "SVOC（主谓宾宾补）",
            "breakdown": "【骨架】The doctor(S) strongly <u>advised</u>(V) the patient(O) (to quit smoking immediately)(C). 💡 铁律：在宾语后加 is 变成 <b>The patient is to quit smoking</b>（be to do 表安排/指令），逻辑成立！to quit smoking 是宾语补足语，句型锁死 <b>SVOC</b>！<br>📖 <b>【全句译文】</b>医生强烈建议这位病人立刻戒烟。"
          },
          {
            "card_id": "SYN_L3_001",
            "lesson_no": 3,
            "card_type": "binary_judge",
            "title": "同位语从句 that vs 定语从句 that/which",
            "rule_formula": "抽象名词（belief/fact/news/idea）后接 that/which 从句时（注：非 that 引导词如 whether/what 遵循左右全等律必为同位从；唯有 that 需查缺成分）：① 若从句主谓宾完整、不缺任何主宾表成分，说明是同位语从句（切开抽象名词解释内容），必填连词 that（不可省略）；② 若从句动词缺主语或宾语，说明是定语从句，填 that/which（作宾语时可省略）！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "We hold the firm belief ______ hard work will eventually pay off.",
            "options": [
              "that",
              "what",
              "whether",
              "which"
            ],
            "correct": true,
            "chosen_text": "that",
            "correct_text": "that",
            "breakdown": "【骨架】pay off 不及物，从句完整解释 belief 内容 → 同位语从句填 that！<br>📖 <b>【全句译文】</b>我们坚信努力终将得到回报。（pay off 得到回报[不及物]，从句主谓完整，解释抽象名词 belief 的具体内容 ➔ 同位语从句填 that）"
          },
          {
            "card_id": "SPR_M2_001",
            "lesson_no": 10,
            "card_type": "binary_judge",
            "title": "七选五战法 1：段首小标题「语法同构强迫症」",
            "rule_formula": "其他段落小标题是祈使句，本空 100% 必选动词原形开头的祈使句！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "前三个小标题为：'Set clear boundaries.' / 'Listen without judging.' / 'Keep your promises.' 第 4 个小标题应选？",
            "options": [
              "How to talk with relatives.",
              "Communication is very important.",
              "Choose your battles wisely.",
              "Why family conflicts happen?"
            ],
            "correct": true,
            "chosen_text": "Choose your battles wisely.",
            "correct_text": "Choose your battles wisely.",
            "breakdown": "🎯 祈使句 100% 语法同构 → Choose your battles wisely.！<br>📖 <b>【全句译文】</b>【原文译文】前三个小标题：设定清晰界限。/ 倾听而不评判。/ 遵守你的承诺。➔ 第四个小标题必选同样以动词原形开头的祈使句：明智地选择你的争论点（Choose your battles wisely.）。"
          },
          {
            "card_id": "SYN_L1_001",
            "lesson_no": 1,
            "card_type": "token_select",
            "title": "五步拆句法·排伪锁真谓语（定海神针 1）",
            "rule_formula": "①扫雷（圈动词长相）→ ②排伪（划掉孤立的 doing/done 和 to do）→ ③找绳子（无连词则全句只有 1 个真谓语）→ ④划地盘 → ⑤锁定唯一【定海神针（真谓语）】！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "The scientists conducting the experiment in the lab discovered a new element.",
            "options": [
              "The",
              "scientists",
              "conducting",
              "the",
              "experiment",
              "in",
              "the",
              "lab",
              "discovered",
              "a",
              "new",
              "element."
            ],
            "correct": false,
            "chosen_text": "The",
            "correct_text": "discovered",
            "breakdown": "【骨架】The scientists (conducting the experiment in the lab) <u>discovered</u> a new element. 💡 排伪：conducting 是孤立的 doing 作定语，直接划掉；全句无连词，唯一真谓语是 <b>discovered</b>！<br>📖 <b>【全句译文】</b>在实验室里进行实验的科学家们发现了一种新元素。"
          },
          {
            "card_id": "SPR_M1_002",
            "lesson_no": 9,
            "card_type": "binary_judge",
            "title": "阅读战法 2：Z字扫读刹车阀与句尾限定词防漏看",
            "rule_formula": "命中锚点立即踩死刹车精读前后共3句，必须读完句尾过去分词/从句限定词！",
            "difficulty": "easy",
            "difficulty_label": "🟢 简单·基础",
            "prompt": "原文写：'Members pay $0.5 per day, capped at $10 per month.' 问月最高开销应选？",
            "options": [
              "$30",
              "$15",
              "$10",
              "$0.5"
            ],
            "correct": false,
            "chosen_text": "$15",
            "correct_text": "$10",
            "breakdown": "🎯 必读完句尾限定词 capped at $10（封顶10美元）！<br>📖 <b>【全句译文】</b>【原文译文】会员每天支付 0.5 美元，每月封顶 10 美元。（capped at 封顶于/最高不超过……，切勿只算 0.5×30=15 而漏看句尾刹车词！）"
          }
        ],
        "wrong_titles": [
          "SVOC 隐蔽高频结构：advise / tell / force sb. to do sth.",
          "五步拆句法·排伪锁真谓语（定海神针 1）",
          "阅读战法 2：Z字扫读刹车阀与句尾限定词防漏看"
        ]
      },
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 15,
          "weak_titles": [],
          "good_rate": 83.3,
          "sampling_weight": 0.22,
          "status_tag": "🟢 良率达标(自动降频)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 4,
          "weak_titles": [],
          "good_rate": 20.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 4,
          "weak_titles": [],
          "good_rate": 25.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 6,
          "weak_titles": [],
          "good_rate": 42.9,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": [
        {
          "word_id": "band_110_0216",
          "word": "anxious",
          "meaning": "[adj.] 焦虑的；渴望的",
          "band_name": "110分进阶提分词",
          "lapses": 1,
          "checks": 0,
          "last_wrong_ts": 1760965800,
          "last_wrong_str": "2026-10-20 21:10"
        },
        {
          "word_id": "band_110_0105",
          "word": "burden",
          "meaning": "[n./v.] 重担、负担",
          "band_name": "110分进阶提分词",
          "lapses": 1,
          "checks": 0,
          "last_wrong_ts": 1760965800,
          "last_wrong_str": "2026-10-20 21:10"
        }
      ]
    },
    "谢沛铮": {
      "name": "谢沛铮",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "xpz123",
      "login_alias": "谢沛铮",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 3,
      "syntax_learned_lesson": 3,
      "sprint_unlocked_modules": [
        1,
        2
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 9,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_xpz_s1",
            "date": "2026-10-13",
            "sub_type": "统考",
            "title": "高三10月新阵地联考(第8课复盘)",
            "score": 95.0,
            "full_score": 150.0,
            "pct": 63.3,
            "note": "七选五12.5/12.5满分！阅读失7题、完形失7题、写作18.5分(应用文6+续写12.5)"
          }
        ],
        "inst": [
          {
            "id": "ex_xpz_i1",
            "date": "2026-08-29",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第3课·骨架搭建与非谓语)",
            "score": 94.0,
            "full_score": 100.0,
            "pct": 94.0,
            "note": "语言悟性极强，仅SVOO变形粗心扣6分"
          },
          {
            "id": "ex_xpz_i2",
            "date": "2026-09-12",
            "sub_type": "长难句阶段测",
            "title": "非谓语与谓语分析30题专项实测(第4课)",
            "score": 96.7,
            "full_score": 100.0,
            "pct": 96.7,
            "note": "30道专项题做对29题"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:已上✅】核验自10月20日最新课堂转写及第8次督导报告：10月20日当堂完整补讲第0课《动词与词性前置》；语法推进至第3课，冲刺已讲M1、M2。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "马奕涵": {
      "name": "马奕涵",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "myh123",
      "login_alias": "马奕涵",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 4,
      "syntax_learned_lesson": 4,
      "sprint_unlocked_modules": [
        1,
        2
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 4,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [
          {
            "id": "ex_myh_s1",
            "date": "2026-10-17",
            "sub_type": "统考",
            "title": "高三10月新阵地联考(班第7/总分跃升100名!)",
            "score": 87.0,
            "full_score": 150.0,
            "pct": 58.0,
            "note": "听力30/30满分！七选五仅错1题；因全篇套五步法超时致A篇全蒙、应用文格式写混得4分"
          }
        ],
        "inst": [
          {
            "id": "ex_myh_i1",
            "date": "2026-10-10",
            "sub_type": "冲刺课阶段测",
            "title": "2026届Z20三模高难阅读C篇限时实测(第7课)",
            "score": 100.0,
            "full_score": 100.0,
            "pct": 100.0,
            "note": "8分钟限时全对攻克Z20反光镜卫星高难科技阅读"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1~8次督导报告(10月17日)：直接从第1课开讲推進至第4课《定语从句》，尚未上第0课；冲刺已讲M1/M2。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "熊俊程": {
      "name": "熊俊程",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "xjc123",
      "login_alias": "熊俊程",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 1,
      "syntax_learned_lesson": 1,
      "sprint_unlocked_modules": [],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 1,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": false,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": true,
      "checkin_ignore_reason": "住校（仅休息一天）或暂时停课，免除未打卡弹窗",
      "exam_scores": {
        "school": [
          {
            "id": "ex_xjc_s1",
            "date": "2026-08-18",
            "sub_type": "统考",
            "title": "2026届Z20联考客观题摸底(折合150分制)",
            "score": 105.0,
            "full_score": 150.0,
            "pct": 70.0,
            "note": "英语第2课验收：不含作文前110分斩获77/110分"
          }
        ],
        "inst": [
          {
            "id": "ex_xjc_i1",
            "date": "2026-08-25",
            "sub_type": "长难句阶段测",
            "title": "阶段测试二(第6课·综合阶段检测)",
            "score": 86.0,
            "full_score": 100.0,
            "pct": 86.0,
            "note": "课件复习扎实，粗心失分约占1/4"
          },
          {
            "id": "ex_xjc_i2",
            "date": "2026-09-15",
            "sub_type": "长难句阶段测",
            "title": "阶段测试三(第14课·高阶综合测评)",
            "score": 92.0,
            "full_score": 100.0,
            "pct": 92.0,
            "note": "卷面46/50分(折92分)，近期硬核模块吸收极佳"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:已上✅】核验自第1~5次督导报告(9月28日)：第1次课(9月7日)从前置第0课入手梳理动词与词性；最新完成第1课《长难句骨架搭建与翻译编号法》。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "陈柯诺": {
      "name": "陈柯诺",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "ckn123",
      "login_alias": "陈柯诺",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 4,
      "syntax_learned_lesson": 4,
      "sprint_unlocked_modules": [
        1,
        3
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 11,
      "last_lesson_type": "assignment_review",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": true,
      "checkin_ignore_reason": "住校生（仅休息一天）/ 暂时停课",
      "exam_scores": {
        "school": [
          {
            "id": "ex_ckn_s1",
            "date": "2026-07-01",
            "sub_type": "统考",
            "title": "入学实考基线(雅思6.5分折算高考档)",
            "score": 130.0,
            "full_score": 150.0,
            "pct": 86.7,
            "note": "具备雅思6.5分扎实学术阅读与语感底子"
          },
          {
            "id": "ex_ckn_s2",
            "date": "2026-07-18",
            "sub_type": "统考",
            "title": "2026年高考英语真题实测(第4课复盘)",
            "score": 135.0,
            "full_score": 150.0,
            "pct": 90.0,
            "note": "前序客观题仅扣7分(完形错4题)，专项导入完形四层解题漏斗"
          }
        ],
        "inst": [
          {
            "id": "ex_ckn_i1",
            "date": "2026-07-25",
            "sub_type": "冲刺课阶段测",
            "title": "完形填空四层漏斗解题系统实测(第5课)",
            "score": 100.0,
            "full_score": 100.0,
            "pct": 100.0,
            "note": "Passage 1全对通关"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1~6次督导报告：直接从第1课五步拆句法与从句开讲，尚未上第0课；已学第1~4课 + 冲刺M1/M3。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 11,
          "label": "冲刺三·完形填空镜头轴",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "张珈宁": {
      "name": "张珈宁",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "zjn123",
      "login_alias": "张珈宁",
      "cred_customized": false,
      "lesson0_unlocked": false,
      "lightning_unlocked": false,
      "learned_no": 5,
      "syntax_learned_lesson": 5,
      "sprint_unlocked_modules": [],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 5,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": false,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": true,
      "checkin_ignore_reason": "住校（仅休息一天）或暂时停课，免除未打卡弹窗",
      "exam_scores": {
        "school": [],
        "inst": [
          {
            "id": "ex_zjn_i1",
            "date": "2026-07-08",
            "sub_type": "长难句阶段测",
            "title": "第1-4课长难句排伪与连接词阶段测评",
            "score": 78.0,
            "full_score": 100.0,
            "pct": 78.0,
            "note": "自创v-ed+介词后置定语排伪捷径"
          },
          {
            "id": "ex_zjn_i2",
            "date": "2026-07-12",
            "sub_type": "长难句阶段测",
            "title": "第5课状语从句与课堂脱稿盲测",
            "score": 65.0,
            "full_score": 100.0,
            "pct": 65.0,
            "note": "脱离纸质笔记盲测主干提取卡壳，需回炉前四课"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:待补🔒】核验自第1~6次督导报告：5月24日直接从第1课五大基本句型开讲推进至第5课《状语从句》，尚未上第0课。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "卢辰豪": {
      "name": "卢辰豪",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "lch123",
      "login_alias": "卢辰豪",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 2,
      "syntax_learned_lesson": 2,
      "sprint_unlocked_modules": [],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 0,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": false,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": true,
      "checkin_ignore_reason": "住校（仅休息一天）或暂时停课，免除未打卡弹窗",
      "exam_scores": {
        "school": [
          {
            "id": "ex_lch_s1",
            "date": "2026-09-05",
            "sub_type": "学校平时测",
            "title": "开学初校内英语摸底基准(第7课)",
            "score": 90.0,
            "full_score": 150.0,
            "pct": 60.0,
            "note": "当前成绩在90分上下，确立主攻110分中档基础题战略"
          }
        ],
        "inst": [
          {
            "id": "ex_lch_i1",
            "date": "2026-08-20",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第5课·前三讲综合验收测验)",
            "score": 72.0,
            "full_score": 100.0,
            "pct": 72.0,
            "note": "暴露从句边界切分与when/where关系副词映射盲区"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:已上✅】核验自第8次督导报告(10月3日)：第8次课专门启用新版课件重讲第0课《动词时态体系》；语法已学至第2课《非谓语》。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "鲁艳怡": {
      "name": "鲁艳怡",
      "role": "student",
      "role_label": "🎓 学生",
      "access_code": "lyy123",
      "login_alias": "鲁艳怡",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": false,
      "learned_no": 4,
      "syntax_learned_lesson": 4,
      "sprint_unlocked_modules": [],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 0,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": false,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": true,
      "checkin_ignore_reason": "住校（仅休息一天）或暂时停课，免除未打卡弹窗",
      "exam_scores": {
        "school": [],
        "inst": [
          {
            "id": "ex_lyy_i1",
            "date": "2026-08-10",
            "sub_type": "长难句阶段测",
            "title": "阶段测试一(第3课·基本句型与非谓语)",
            "score": 63.0,
            "full_score": 100.0,
            "pct": 63.0,
            "note": "概念填空仅错2题，但选择题与句子结构分析需强化应用"
          },
          {
            "id": "ex_lyy_i2",
            "date": "2026-08-22",
            "sub_type": "冲刺课阶段测",
            "title": "雅思C19 T1 P1听力与脱稿口语测评",
            "score": 60.0,
            "full_score": 100.0,
            "pct": 60.0,
            "note": "听力正答6/10，口语脱稿预估5.5-6.0分"
          }
        ]
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 1,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "【第0课:已上✅】核验自第7/8次督导报告(10月3日)：第8次课专门回头补讲第0课动词基础（时间+态度二维九种时态）；语法已学至第4课《定语从句》。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "毛毛": {
      "name": "毛毛",
      "role": "manager",
      "role_label": "👑 管理者",
      "access_code": "19971510Xx!",
      "login_alias": "毛毛",
      "cred_customized": true,
      "lesson0_unlocked": true,
      "lightning_unlocked": true,
      "learned_no": 8,
      "syntax_learned_lesson": 8,
      "sprint_unlocked_modules": [
        1,
        2,
        3,
        4,
        5
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 8,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": true,
      "checkin_status_code": "half",
      "checkin_status_detail": "🟡 只打了一半：单词已满(26/20)，差句法(3/15)",
      "today_total_actions": 30,
      "today_syntax_actions": 4,
      "today_vocab_actions": 26,
      "first_active_today": "2026-10-22 01:03",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [],
        "inst": []
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "half",
          "syntax": 1,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "half",
          "syntax": 3,
          "vocab": 26
        }
      ],
      "streak_days": 0,
      "last_active_str": "2026-10-22 02:58",
      "done_today": 3,
      "target_today": 15,
      "vocab_done_today": 26,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 3,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 2,
      "teacher_note": "【第0课:已开✅】教师全权限演示测试账号（第0课开关已开 + 语法第1~8课 + 冲刺M1~M5全开）。",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 1,
          "weak_titles": [],
          "good_rate": 5.6,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 8,
          "label": "第8课·虚拟语气与情态高阶",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 3,
          "mastered": 0,
          "seen": 3,
          "weak_titles": [
            "阅读战法 3：首段引出话题铁律 & 推理题思维克制律",
            "阅读战法 1：双题滚动夹击定位法"
          ],
          "good_rate": 33.3,
          "sampling_weight": 2.95,
          "status_tag": "🔴 薄弱强化(高频加权)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 11,
          "label": "冲刺三·完形填空镜头轴",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 12,
          "label": "冲刺四·语法填空三问",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 13,
          "label": "冲刺五·双写作高分句架",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [
        {
          "card_id": "SPR_M1_001",
          "lesson_no": 9,
          "lesson_label": "冲刺一·阅读理解3+1",
          "title": "阅读战法 1：双题滚动夹击定位法",
          "rule_formula": "只读 Q1+Q2 以二定一；做完 Q1 读 Q3 以三定二；Q4 主旨最后做！",
          "lapses": 1,
          "level": 0,
          "last_wrong_ts": 1792603047,
          "last_wrong_str": "2026-10-22 01:17",
          "sample_prompt": "拿到一篇 C 篇阅读（Q28~Q31），35秒读完首段定主旨后，下一步标准动作是？"
        },
        {
          "card_id": "SPR_M1_003",
          "lesson_no": 9,
          "lesson_label": "冲刺一·阅读理解3+1",
          "title": "阅读战法 3：首段引出话题铁律 & 推理题思维克制律",
          "rule_formula": "说明文/议论文首段讲故事/提问题 100% 是为了 To introduce the topic；推理题只走半步绝不脑补！",
          "lapses": 2,
          "level": 1,
          "last_wrong_ts": 1792583471,
          "last_wrong_str": "2026-10-21 19:51",
          "sample_prompt": "科普文第一段先讲了一个生活趣事，第二段引出核心科学概念。问第一段写作目的应选？"
        }
      ],
      "stubborn_vocab": []
    },
    "Elina": {
      "name": "Elina",
      "role": "teacher",
      "role_label": "👨‍🏫 老师",
      "access_code": "888888",
      "login_alias": "Elina",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": true,
      "learned_no": 8,
      "syntax_learned_lesson": 8,
      "sprint_unlocked_modules": [
        1,
        2,
        3,
        4,
        5
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 8,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [],
        "inst": []
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 3,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 8,
          "label": "第8课·虚拟语气与情态高阶",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 11,
          "label": "冲刺三·完形填空镜头轴",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 12,
          "label": "冲刺四·语法填空三问",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 13,
          "label": "冲刺五·双写作高分句架",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    },
    "符老师": {
      "name": "符老师",
      "role": "teacher",
      "role_label": "👨‍🏫 老师",
      "access_code": "888888",
      "login_alias": "符老师",
      "cred_customized": false,
      "lesson0_unlocked": true,
      "lightning_unlocked": true,
      "learned_no": 8,
      "syntax_learned_lesson": 8,
      "sprint_unlocked_modules": [
        1,
        2,
        3,
        4,
        5
      ],
      "scheduling_mode_label": "🎯 伪随机动态权重模式（强项少出 · 弱项与未完项加权）",
      "all_first_pass_good": false,
      "latest_lesson_focus": 8,
      "last_lesson_type": "new_lesson",
      "sprint_unlocked": true,
      "checked_in_today": false,
      "partial_active_today": false,
      "checkin_status_code": "none",
      "checkin_status_detail": "❌ 今日未打（句法 0/15 · 单词 0/20）",
      "today_total_actions": 0,
      "today_syntax_actions": 0,
      "today_vocab_actions": 0,
      "first_active_today": "—",
      "total_checkin_days": 0,
      "days_since_last_checkin": 6,
      "checkin_alert_ignored": false,
      "checkin_ignore_reason": "",
      "exam_scores": {
        "school": [],
        "inst": []
      },
      "history_7d": [
        {
          "date": "10-16",
          "full_date": "2026-10-16",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-17",
          "full_date": "2026-10-17",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-18",
          "full_date": "2026-10-18",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-19",
          "full_date": "2026-10-19",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-20",
          "full_date": "2026-10-20",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-21",
          "full_date": "2026-10-21",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        },
        {
          "date": "10-22",
          "full_date": "2026-10-22",
          "status": "none",
          "syntax": 0,
          "vocab": 0
        }
      ],
      "streak_days": 0,
      "last_active_str": "今日暂未打卡",
      "done_today": 0,
      "target_today": 15,
      "vocab_done_today": 0,
      "vocab_graduated": 0,
      "vocab_unlocked_stage": 3,
      "vocab_stubborn_count": 0,
      "mastered_cards": 0,
      "lapsed_cards": 0,
      "teacher_note": "",
      "last_diag": null,
      "chart_bars": [
        {
          "lesson_no": 0,
          "label": "第0课·动词时态与情态",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 1,
          "label": "第1课·五步拆句与五大句型",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 2,
          "label": "第2课·非谓语与修饰破局",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 3,
          "label": "第3课·名词性从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 4,
          "label": "第4课·定语从句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 5,
          "label": "第5课·状语从句与逻辑词",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 6,
          "label": "第6课·长句升级与强调句",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 7,
          "label": "第7课·倒装与省略",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 8,
          "label": "第8课·虚拟语气与情态高阶",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 9,
          "label": "冲刺一·阅读理解3+1",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 10,
          "label": "冲刺二·七选五三标法",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 11,
          "label": "冲刺三·完形填空镜头轴",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 12,
          "label": "冲刺四·语法填空三问",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        },
        {
          "lesson_no": 13,
          "label": "冲刺五·双写作高分句架",
          "lapses": 0,
          "mastered": 0,
          "seen": 0,
          "weak_titles": [],
          "good_rate": 0.0,
          "sampling_weight": 1.6,
          "status_tag": "🔵 一轮推进(标准权重)"
        }
      ],
      "dead_spot_cards": [],
      "stubborn_vocab": []
    }
  },
  "recent_lightning_logs": [
    {
      "id": "lt_c2d04a31",
      "user": "沈子瑞",
      "time": 1792579721,
      "date": "2026-10-21 18:48",
      "total": 10,
      "correct": 7,
      "rate": 70.0,
      "verdict": "YELLOW",
      "sop_mode": "局部排毒 10 分钟后推进新课（针对错题口令复验）",
      "wrong_details": [
        {
          "card_id": "SYN_L1_007",
          "lesson_no": 1,
          "card_type": "binary_judge",
          "title": "SVOC 隐蔽高频结构：advise / tell / force sb. to do sth.",
          "rule_formula": "在 `advise / tell / ask / force / allow sb. to do sth.` 中，后面的 `to do` 绝不是目的状语，而是补充说明宾语要执行的动作！加 be 动词验证：`The patient is to quit smoking`（be to do 表安排或医嘱指令）完全成立 ➔ 100% 锁死【SVOC（主谓宾宾补）】！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "判断句子主干句型：The doctor strongly advised the patient to quit smoking immediately.",
          "options": [
            "SVOC（主谓宾宾补）",
            "SVOO（主谓双宾）",
            "SVC（主系表）",
            "SVO（主谓宾）"
          ],
          "correct": false,
          "chosen_text": "SVOO（主谓双宾）",
          "correct_text": "SVOC（主谓宾宾补）",
          "breakdown": "【骨架】The doctor(S) strongly <u>advised</u>(V) the patient(O) (to quit smoking immediately)(C). 💡 铁律：在宾语后加 is 变成 <b>The patient is to quit smoking</b>（be to do 表安排/指令），逻辑成立！to quit smoking 是宾语补足语，句型锁死 <b>SVOC</b>！<br>📖 <b>【全句译文】</b>医生强烈建议这位病人立刻戒烟。"
        },
        {
          "card_id": "SYN_L1_001",
          "lesson_no": 1,
          "card_type": "token_select",
          "title": "五步拆句法·排伪锁真谓语（定海神针 1）",
          "rule_formula": "①扫雷（圈动词长相）→ ②排伪（划掉孤立的 doing/done 和 to do）→ ③找绳子（无连词则全句只有 1 个真谓语）→ ④划地盘 → ⑤锁定唯一【定海神针（真谓语）】！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "The scientists conducting the experiment in the lab discovered a new element.",
          "options": [
            "The",
            "scientists",
            "conducting",
            "the",
            "experiment",
            "in",
            "the",
            "lab",
            "discovered",
            "a",
            "new",
            "element."
          ],
          "correct": false,
          "chosen_text": "The",
          "correct_text": "discovered",
          "breakdown": "【骨架】The scientists (conducting the experiment in the lab) <u>discovered</u> a new element. 💡 排伪：conducting 是孤立的 doing 作定语，直接划掉；全句无连词，唯一真谓语是 <b>discovered</b>！<br>📖 <b>【全句译文】</b>在实验室里进行实验的科学家们发现了一种新元素。"
        },
        {
          "card_id": "SPR_M1_002",
          "lesson_no": 9,
          "card_type": "binary_judge",
          "title": "阅读战法 2：Z字扫读刹车阀与句尾限定词防漏看",
          "rule_formula": "命中锚点立即踩死刹车精读前后共3句，必须读完句尾过去分词/从句限定词！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "原文写：'Members pay $0.5 per day, capped at $10 per month.' 问月最高开销应选？",
          "options": [
            "$30",
            "$15",
            "$10",
            "$0.5"
          ],
          "correct": false,
          "chosen_text": "$15",
          "correct_text": "$10",
          "breakdown": "🎯 必读完句尾限定词 capped at $10（封顶10美元）！<br>📖 <b>【全句译文】</b>【原文译文】会员每天支付 0.5 美元，每月封顶 10 美元。（capped at 封顶于/最高不超过……，切勿只算 0.5×30=15 而漏看句尾刹车词！）"
        }
      ],
      "all_details": [
        {
          "card_id": "SYN_L2_011",
          "lesson_no": 2,
          "card_type": "binary_judge",
          "title": "非谓语动词的本质（「动词之心，其他词性之身」）与句首逗号一刀切铁律",
          "rule_formula": "第2课核心定义：① 非谓语动词（to do / doing / done）的本质是【有一颗动词的心（能带自己的宾语和状语），但穿着名词、形容词、副词的身体】（抢占主宾表/定/状/补槽位，绝不是从句！）；②【句首一刀切铁律】只要句首出现大写 `Doing..., / Done..., / To do...,` 且后面有【逗号】与主句隔开，100% 作【状语】；若句首 `Doing...` 后没有逗号直接跟单数谓语，则是【动名词作主语】！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "第2课如何定义非谓语动词的本质？并且当句首出现大写 'Seen from the top of the hill, the city looks beautiful.'（有逗号）与 'Seeing is believing.'（无逗号）时，句首非谓语分别作什么成分？",
          "options": [
            "非谓语就是从句；两句的句首非谓语都作主语",
            "非谓语是「动词之心，其他词性之身」，绝不是从句！句首带逗号的 'Seen..., ' 一刀切 100% 作【状语】；无逗号直接接谓语 is 的 'Seeing' 作【主语】",
            "两句的句首非谓语都作定语",
            "Seen from the top of the hill 是主语从句"
          ],
          "correct": true,
          "chosen_text": "非谓语是「动词之心，其他词性之身」，绝不是从句！句首带逗号的 'Seen..., ' 一刀切 100% 作【状语】；无逗号直接接谓语 is 的 'Seeing' 作【主语】",
          "correct_text": "非谓语是「动词之心，其他词性之身（名/形/副）」，绝不是从句！句首带逗号的 'Seen..., ' 一刀切 100% 作【状语】；无逗号直接接谓语 is 的 'Seeing' 作【主语】",
          "breakdown": "💡 第2课秒判铁律：看到句首大写的 <b>Doing / Done / To do</b>，第一步先瞄一眼后面有没有<b>逗号</b>！有逗号隔开主句 ➔ 一刀切 100% 是<b>状语</b>；没逗号且后面直接跟谓语动词 ➔ <b>动名词/不定式作主语</b>！<br>📖 <b>【参考句意】</b>非谓语 = 动词之心 + 名/形/副之身（绝非从句）；句首「非谓语 + 逗号」一刀切 100% 作状语；句首「Doing + 无逗号 + 单数谓语」作主语。",
          "auto_fixed_v17": true
        },
        {
          "card_id": "SYN_L2_003",
          "lesson_no": 2,
          "card_type": "binary_judge",
          "title": "非谓语作后置定语：doing（主动）vs done（被动）vs to do（待做）",
          "rule_formula": "名词后面的非谓语定语：① 主动正在发出动作用 doing（the woman wearing...）；② 被动或已完成用 done（the novel published last month）；③ 将来有待去做的事用 to do / to be done（urgent documents to be signed）！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "The sci-fi novel, ______ just last month, became an instant bestseller.",
          "options": [
            "published",
            "to publish",
            "publish",
            "publishing"
          ],
          "correct": true,
          "chosen_text": "published",
          "correct_text": "published",
          "breakdown": "【骨架】The sci-fi novel, (<b>published</b> just last month), <u>became</u> an instant bestseller. 💡 秒杀：主干已有真谓语 became，小说与 publish 是被动关系，填过去分词 <b>published</b> 作后置定语！<br>📖 <b>【全句译文】</b>仅在上个月出版的那本科幻小说迅速成了畅销书。"
        },
        {
          "card_id": "SYN_L3_014",
          "lesson_no": 3,
          "card_type": "binary_judge",
          "title": "形式宾语 it 铁律：make / find / think / consider + it + adj./n. + that/to do",
          "rule_formula": "当动词 make / find / think / feel / consider 后接形容词或名词作宾补，且真正的宾语是不定式 to do 或 that 从句时，中间必须填形式宾语 it（绝不能填 that 或 this）！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "High-speed railways have made ______ much easier for people to travel across provinces.",
          "options": [
            "that",
            "this",
            "it",
            "what"
          ],
          "correct": true,
          "chosen_text": "it",
          "correct_text": "it",
          "breakdown": "【骨架】High-speed railways <u>have made</u> <b>it</b>(形式宾语) much easier(宾补) {for people} <u>to travel</u>(真宾语). 💡 铁律：make + it + adj. + to do，必填形式宾语 <b>it</b>！<br>📖 <b>【全句译文】</b>高铁让人们跨省出行变得容易多了。"
        },
        {
          "card_id": "SPR_M2_003",
          "lesson_no": 10,
          "card_type": "binary_judge",
          "title": "七选五战法 3：转折（However/Instead）情绪 180° 翻转律",
          "rule_formula": "带 However / But / Instead / Yet 的选项，其正负情感或观点方向必须与前一句发生 180° 翻转！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "前句写：'Many people believe that skipping breakfast helps lose weight.[+]' 若后空填 'However, ______.' 则后空必选？",
          "options": [
            "it is a great way to stay slim",
            "many students get up late",
            "studies show it actually slows down metabolism and leads to weight gain",
            "breakfast is the first meal of the day"
          ],
          "correct": true,
          "chosen_text": "studies show it actually slows down metabolism and leads to weight gain",
          "correct_text": "studies show it actually slows down metabolism and leads to weight gain",
          "breakdown": "🎯 However 触发 [+] ➔ [-] 180° 翻转（研究表明反而导致发胖）！<br>📖 <b>【全句译文】</b>【原文译文】许多人认为不吃早餐有助于减肥 [+]；然而（However），研究表明这实际上会导致体重增加 [-]。"
        },
        {
          "card_id": "SYN_L3_003",
          "lesson_no": 3,
          "card_type": "binary_judge",
          "title": "whether vs if 四大禁区",
          "rule_formula": "介词后、主从句首、表从、同位从以及直接连 or not/to do 时，表“是否”只能用 whether 不用 if！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "It all depends on ______ we can get enough financial support for the project.",
          "options": [
            "whether",
            "that",
            "if",
            "what"
          ],
          "correct": true,
          "chosen_text": "whether",
          "correct_text": "whether",
          "breakdown": "【骨架】介词 on 后只用 whether！<br>📖 <b>【全句译文】</b>这完全取决于我们能否为该项目获得足够的资金支持。（介词 on 之后的宾语从句表“是否”，只能用 whether，禁用 if！）"
        },
        {
          "card_id": "SYN_L1_007",
          "lesson_no": 1,
          "card_type": "binary_judge",
          "title": "SVOC 隐蔽高频结构：advise / tell / force sb. to do sth.",
          "rule_formula": "在 `advise / tell / ask / force / allow sb. to do sth.` 中，后面的 `to do` 绝不是目的状语，而是补充说明宾语要执行的动作！加 be 动词验证：`The patient is to quit smoking`（be to do 表安排或医嘱指令）完全成立 ➔ 100% 锁死【SVOC（主谓宾宾补）】！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "判断句子主干句型：The doctor strongly advised the patient to quit smoking immediately.",
          "options": [
            "SVOC（主谓宾宾补）",
            "SVOO（主谓双宾）",
            "SVC（主系表）",
            "SVO（主谓宾）"
          ],
          "correct": false,
          "chosen_text": "SVOO（主谓双宾）",
          "correct_text": "SVOC（主谓宾宾补）",
          "breakdown": "【骨架】The doctor(S) strongly <u>advised</u>(V) the patient(O) (to quit smoking immediately)(C). 💡 铁律：在宾语后加 is 变成 <b>The patient is to quit smoking</b>（be to do 表安排/指令），逻辑成立！to quit smoking 是宾语补足语，句型锁死 <b>SVOC</b>！<br>📖 <b>【全句译文】</b>医生强烈建议这位病人立刻戒烟。"
        },
        {
          "card_id": "SYN_L3_001",
          "lesson_no": 3,
          "card_type": "binary_judge",
          "title": "同位语从句 that vs 定语从句 that/which",
          "rule_formula": "抽象名词（belief/fact/news/idea）后接 that/which 从句时（注：非 that 引导词如 whether/what 遵循左右全等律必为同位从；唯有 that 需查缺成分）：① 若从句主谓宾完整、不缺任何主宾表成分，说明是同位语从句（切开抽象名词解释内容），必填连词 that（不可省略）；② 若从句动词缺主语或宾语，说明是定语从句，填 that/which（作宾语时可省略）！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "We hold the firm belief ______ hard work will eventually pay off.",
          "options": [
            "that",
            "what",
            "whether",
            "which"
          ],
          "correct": true,
          "chosen_text": "that",
          "correct_text": "that",
          "breakdown": "【骨架】pay off 不及物，从句完整解释 belief 内容 → 同位语从句填 that！<br>📖 <b>【全句译文】</b>我们坚信努力终将得到回报。（pay off 得到回报[不及物]，从句主谓完整，解释抽象名词 belief 的具体内容 ➔ 同位语从句填 that）"
        },
        {
          "card_id": "SPR_M2_001",
          "lesson_no": 10,
          "card_type": "binary_judge",
          "title": "七选五战法 1：段首小标题「语法同构强迫症」",
          "rule_formula": "其他段落小标题是祈使句，本空 100% 必选动词原形开头的祈使句！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "前三个小标题为：'Set clear boundaries.' / 'Listen without judging.' / 'Keep your promises.' 第 4 个小标题应选？",
          "options": [
            "How to talk with relatives.",
            "Communication is very important.",
            "Choose your battles wisely.",
            "Why family conflicts happen?"
          ],
          "correct": true,
          "chosen_text": "Choose your battles wisely.",
          "correct_text": "Choose your battles wisely.",
          "breakdown": "🎯 祈使句 100% 语法同构 → Choose your battles wisely.！<br>📖 <b>【全句译文】</b>【原文译文】前三个小标题：设定清晰界限。/ 倾听而不评判。/ 遵守你的承诺。➔ 第四个小标题必选同样以动词原形开头的祈使句：明智地选择你的争论点（Choose your battles wisely.）。"
        },
        {
          "card_id": "SYN_L1_001",
          "lesson_no": 1,
          "card_type": "token_select",
          "title": "五步拆句法·排伪锁真谓语（定海神针 1）",
          "rule_formula": "①扫雷（圈动词长相）→ ②排伪（划掉孤立的 doing/done 和 to do）→ ③找绳子（无连词则全句只有 1 个真谓语）→ ④划地盘 → ⑤锁定唯一【定海神针（真谓语）】！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "The scientists conducting the experiment in the lab discovered a new element.",
          "options": [
            "The",
            "scientists",
            "conducting",
            "the",
            "experiment",
            "in",
            "the",
            "lab",
            "discovered",
            "a",
            "new",
            "element."
          ],
          "correct": false,
          "chosen_text": "The",
          "correct_text": "discovered",
          "breakdown": "【骨架】The scientists (conducting the experiment in the lab) <u>discovered</u> a new element. 💡 排伪：conducting 是孤立的 doing 作定语，直接划掉；全句无连词，唯一真谓语是 <b>discovered</b>！<br>📖 <b>【全句译文】</b>在实验室里进行实验的科学家们发现了一种新元素。"
        },
        {
          "card_id": "SPR_M1_002",
          "lesson_no": 9,
          "card_type": "binary_judge",
          "title": "阅读战法 2：Z字扫读刹车阀与句尾限定词防漏看",
          "rule_formula": "命中锚点立即踩死刹车精读前后共3句，必须读完句尾过去分词/从句限定词！",
          "difficulty": "easy",
          "difficulty_label": "🟢 简单·基础",
          "prompt": "原文写：'Members pay $0.5 per day, capped at $10 per month.' 问月最高开销应选？",
          "options": [
            "$30",
            "$15",
            "$10",
            "$0.5"
          ],
          "correct": false,
          "chosen_text": "$15",
          "correct_text": "$10",
          "breakdown": "🎯 必读完句尾限定词 capped at $10（封顶10美元）！<br>📖 <b>【全句译文】</b>【原文译文】会员每天支付 0.5 美元，每月封顶 10 美元。（capped at 封顶于/最高不超过……，切勿只算 0.5×30=15 而漏看句尾刹车词！）"
        }
      ],
      "wrong_titles": [
        "SVOC 隐蔽高频结构：advise / tell / force sb. to do sth.",
        "五步拆句法·排伪锁真谓语（定海神针 1）",
        "阅读战法 2：Z字扫读刹车阀与句尾限定词防漏看"
      ]
    }
  ],
  "pending_reports": []
}