{
  "meta": {
    "total": 13,
    "source": "tasks/00-总体方案.md 第四节；文案规则见 handoff/15-screen-copy.md 第二节",
    "copy_rules": [
      "标题是任务名词短语，不超过 8 个字",
      "一句话本质（plain）排在标题下面，说人话、给画面，外行能原样转述给别人",
      "引导语一句话，对学生说，说明这一步做什么、助教做什么不做什么",
      "按钮是动词短语，每屏只有一个主按钮",
      "页面不自评，不出现被禁用的自评词",
      "数字出现即带口径角标；数字旁边要有一句「超了会怎样」的后果话"
    ],
    "integration": "第二波 T6 集成：viz 与 viz_alt 写的是这一步真正装进去的组件名（见 app/js/core/viz-registry.js）；hook_in 是上一段完成卡留下的问题，显示在这一段第一屏的标题下面。",
    "plain_note": "plain 是通俗化第一期加的字段，由 app/js/core/dom.js 的 page() 渲染成标题下的 .page-plain 一行；改写法则见 tasks/10-通俗化改造方案.md。删掉这个字段该屏就只剩标题与引导语，不报错。",
    "presets_note": "presets 是预设选项：助教面板输入框上方三枚可点的话，点一下就当作学生自己说的发出去，同时把 {id, kind, text} 记进这一步的 preset_picks（kind 只有参考／追问／误区三种），进报告、进教师端、进助教上下文；学生仍可自己打字。kind 是记录不是评分。删掉这个字段该步就没有选项。"
  },
  "segments": [
    {
      "id": "task",
      "name": "任务",
      "steps": [
        1,
        2
      ]
    },
    {
      "id": "analyze",
      "name": "分析",
      "steps": [
        3,
        4,
        5
      ]
    },
    {
      "id": "design",
      "name": "设计",
      "steps": [
        6,
        7,
        8
      ]
    },
    {
      "id": "verify",
      "name": "验证",
      "steps": [
        9,
        10,
        11
      ]
    },
    {
      "id": "result",
      "name": "成果",
      "steps": [
        12,
        13
      ]
    }
  ],
  "steps": [
    {
      "n": 1,
      "seg": "task",
      "title": "任务书",
      "plain": "四台设备、四个故障，追到底都是同一件事没调好：该让哪些频率进来。",
      "lead": "读右边的任务书，点开一张现场难题卡，再接受任务。",
      "no_ai_note": "这一步没有助教；看不懂就点右上角的「了解更多」。",
      "primary": "接受任务",
      "primary_kind": "primary",
      "template": "select",
      "visual": "四张难题卡",
      "viz": null,
      "problems": [
        "p1",
        "p2",
        "p3",
        "p4"
      ],
      "assistant_title": null,
      "assistant_opening": null,
      "evidence": "四张难题卡的阅读记录与你选中的第一个入手难题",
      "more": "四个难题分别来自北斗定位终端、中继无人机、单兵电台与前沿雷达。它们合起来覆盖本课程的核心章节：LC 谐振与阻抗匹配、调幅与包络检波，以及作为次要练习的三点式振荡器与丙类功放。要把四个场景收到这些章节上，全站统一按同一条教学链路讨论：10.7 MHz 中频、240 kHz 通频带、包络检波。这条链路是简化过的——真实北斗终端的信号带宽约 4 MHz，解调也不用包络检波；这里的频率与带宽只代表课程里这条教学链路，不代表某一台真实终端。"
    },
    {
      "n": 2,
      "seg": "task",
      "title": "技术指标",
      "plain": "「要能用」不是指标，「多少、什么单位、在什么条件下量」才是。",
      "lead": "把四个难题里的要求，写成一张你自己的技术指标表；助教只追问，不代写。",
      "primary": "确定并请助教评价",
      "primary_kind": "confirm",
      "template": "quad",
      "visual": "指标表",
      "viz": null,
      "problems": [
        "p1",
        "p2",
        "p3",
        "p4"
      ],
      "assistant_title": "AI 助教 · 技术指标",
      "assistant_opening": "我不会往你的表里写字。点「引导」，我把要想清楚的四点列给你，再追问你一句；写完点「确定」，我再逐条看。",
      "evidence": "你写的设计要求与技术指标表，以及助教对这一稿的逐条追问",
      "more": "先说任务书里最挡路的那句：「中频通道邻道抑制不低于 60 dB（整机；单级选频回路按 35 dB 计）」写的是两个数，不是一个数——60 dB 是整台接收机最后要做到的，35 dB 是你这一级选频回路要做到的，多级级联起来才凑出 60 dB。这一步你按哪个写都行，写 35 dB 就在后面注明「单级」，写 60 dB 就注明「整机」，第 8 步那六条约束用的是单级 35 dB 这一档。任务书里的「要求」还不是技术指标：指标要有量、有单位、有测量条件。比如「邻道抑制不低于 60 dB」缺了「在多大频偏处」，「恢复连续定位」缺了可测量的量。一处口径先说清：本任务书里的「邻道」指峡谷里那部与本机频差 1 MHz 的强邻频电台，不是体制规定的信道间隔；「邻道抑制」就是对这部电台的抑制量，所以写这一条时要把「@ 频偏 1 MHz」一起写上。",
      "completion": {
        "seg_name": "任务",
        "happened": "你读完了任务书，把四个难题里的要求写成了一张自己的技术指标表。",
        "evidence": "设计要求若干条、技术指标表若干行，以及与助教的全部对话。",
        "hook": "指标定下来了。可是同一个谐振回路，实验台上的曲线和理论算出来的对不上——先去看现象。"
      },
      "presets": [
        {
          "id": "s2-ref",
          "kind": "参考",
          "text": "邻道抑制我标成单级 35 dB、频偏 1 MHz；整机 60 dB 另注一行。"
        },
        {
          "id": "s2-ask",
          "kind": "追问",
          "text": "邻道抑制我到底写 60 还是 35？"
        },
        {
          "id": "s2-pitfall",
          "kind": "误区",
          "text": "通频带我先写「够宽就行」，具体多少等仿真再定。"
        }
      ]
    },
    {
      "n": 3,
      "seg": "analyze",
      "title": "现场现象",
      "plain": "同一只回路，公式说它在 10.7 MHz 最响，实验台上却在 4.4 MHz 最响。",
      "lead": "同一个谐振回路，理论与实测对不上；写下三种可能，再锁定最有把握的一条作为初判。",
      "primary": "锁定初判",
      "primary_kind": "confirm",
      "template": "chart",
      "visual": "双曲线（蓝理论、金实测）",
      "viz": "dual-curve",
      "problems": [
        "p1"
      ],
      "assistant_title": "AI 助教 · 现场现象",
      "assistant_opening": "这一步我不给提示。你先把三条可能写完，我们再谈。",
      "evidence": "三条初判、你最有把握的一条，以及你给出的信心",
      "more": "图上蓝线是理论计算，金线是按探头加载模型算出的实测样例，与第 9 步仿真同一组参数。这条回路取自难题一的中频选频通道：L = 10 μH、C = 22 pF、线圈损耗 6.74 Ω，与第 9 步预置电路 C1 同一组参数，算出来理论谐振点 10.730 MHz、有载 Q 37.5、通频带 286 kHz、回路电压峰值 1.265 V。金线是同一只回路在实验台上量到的那一版：谐振点 4.381 MHz、峰值 0.436 V。两条线差多少，写在图下方的读数行里；数据口径写在图下方的说明行——本轮没有实验台的原始记录，金线是按那次测量的等效元件值复现的，不是原始数据。",
      "hook_in": "指标定下来了。可是同一个谐振回路，实验台上的曲线和理论算出来的对不上——先去看现象。",
      "presets": [
        {
          "id": "s3-ref",
          "kind": "参考",
          "text": "我最信第一条：回路上多了约 110 pF 电容，只有它能一次解释谐振点从 10.73 掉到 4.38 MHz。"
        },
        {
          "id": "s3-ask",
          "kind": "追问",
          "text": "谐振点下降了，所以一定是并联电容变大了？"
        },
        {
          "id": "s3-pitfall",
          "kind": "误区",
          "text": "两条线对不上，应该是仪器读数不准，换台示波器就好。"
        }
      ]
    },
    {
      "n": 4,
      "seg": "analyze",
      "title": "找原因",
      "plain": "怀疑谁不重要，重要的是你拿哪个读数能把他和别人分开。",
      "lead": "原因要覆盖器件、负载、测量、布局、信号五类，每一支写出能和别的支区分开的判据，五支齐了才能生成证据计划。",
      "primary": "生成证据计划",
      "primary_kind": "confirm",
      "template": "sandbox",
      "visual": "原因树画布",
      "viz": null,
      "problems": [
        "p1",
        "p2"
      ],
      "assistant_title": "AI 助教 · 找原因",
      "assistant_opening": "我不告诉你是哪一支。每加一支，我只问一句：你打算用什么数据，把它和别的支区分开？",
      "evidence": "五类原因分支及各自的判据，以及由判据生成的证据计划",
      "more": "判据不是「我觉得是器件不准」，而是「换一种接法后如果读数回到理论值，就说明是这一支」。判据要写成可以照着做一遍的动作加一个能判真假的结果。",
      "presets": [
        {
          "id": "s4-ref",
          "kind": "参考",
          "text": "测量这一支的判据：换测点不换仪器再测，读数不动就不是布局、是仪器。"
        },
        {
          "id": "s4-ask",
          "kind": "追问",
          "text": "我觉得是器件不准，还需要写判据吗？"
        },
        {
          "id": "s4-pitfall",
          "kind": "误区",
          "text": "五类都有可能，先把元件全换一遍再说。"
        }
      ]
    },
    {
      "n": 5,
      "seg": "analyze",
      "title": "器件与链路",
      "plain": "信号从天线走到耳机要过八道关，四个故障各堵在哪一道。",
      "lead": "在整机收发链路电平图上找出四个难题各落在哪一级，再翻开这一级的关键器件。",
      "primary": "记录我的判断",
      "primary_kind": "confirm",
      "template": "chart",
      "visual": "链路电平图与器件三维模型",
      "viz": "link-level-diagram",
      "viz_alt": "parts3d",
      "problems": [
        "p1",
        "p2",
        "p3",
        "p4"
      ],
      "assistant_title": "AI 助教 · 器件认知",
      "assistant_opening": "我按结构、参数、工程要点、常见故障四步讲，随时可以打断我。",
      "evidence": "四个难题在链路上的定位，以及你查看过的器件与提问",
      "more": "链路电平图上，蓝线是信号电平，金点是每一级的输出，红虚线是噪声底。每一级都对应教材里的一章：选频、变频、放大、检波。四个难题落在哪一级由你判断：左栏四个下拉都选完之后，图上才会把四个难题的徽标标出来给你对答案。一处口径：这张图只把增益与噪声系数逐级累计（噪声按弗里斯公式），选择性、通频带与群时延不在这张图上级联；图上的中频选频也只画了一级，别处文案里说的「两级级联」不在这张图上体现。",
      "completion": {
        "seg_name": "分析",
        "happened": "你写下了三条初判，搭出覆盖五类的原因树，并把四个难题定位到了收发链路的具体一级。",
        "evidence": "初判三条、原因树各支的判据、证据计划，以及链路定位记录。",
        "hook": "原因有了候选，也知道该动哪一级了。接下来要把它们变成具体的数值。"
      },
      "presets": [
        {
          "id": "s5-ref",
          "kind": "参考",
          "text": "难题一落在中频双调谐选频回路，邻道抑制和通频带都在这一级权衡。"
        },
        {
          "id": "s5-ask",
          "kind": "追问",
          "text": "难题三为什么不落在音频放大？"
        },
        {
          "id": "s5-pitfall",
          "kind": "误区",
          "text": "四个难题都落在低噪声放大器，它是第一级、最重要。"
        }
      ]
    },
    {
      "n": 6,
      "seg": "design",
      "title": "参数估算",
      "plain": "先别问这个数取多少，先问它被哪两件事夹在中间。",
      "lead": "估算 Q 值、带宽、匹配网络的电感与电容、检波 RC，每一项写一句你为什么这么估。",
      "primary": "确定并请助教评价",
      "primary_kind": "confirm",
      "template": "dialog",
      "visual": "参数表单",
      "viz": "resonance-sweep",
      "problems": [
        "p1",
        "p2",
        "p3"
      ],
      "assistant_title": "AI 助教 · 参数估算",
      "assistant_opening": "我不替你算。我只问一句：这个 Q 值，你是按带宽定的，还是按邻道抑制定的？",
      "evidence": "参数估算表及每一项的理由，助教的评价记录",
      "more": "这一步的图跟着你正在估的那一项走：估 Q 值、带宽、匹配元件时看幅频曲线族，估检波 RC 时看调幅波与检波输出。曲线全部由浏览器里的解析公式现算：谐振与 Q 来自 LC 谐振公式，检波 RC 的界来自惰性失真条件。点数值右上角的角标可以看到用的是哪一条式子。",
      "hook_in": "原因有了候选，也知道该动哪一级了。接下来要把它们变成具体的数值。",
      "viz_alt": "detector-waveform",
      "presets": [
        {
          "id": "s6-ref",
          "kind": "参考",
          "text": "Q 我按带宽定：10.7 MHz / 240 kHz ≈ 45；这样邻道抑制会不够，留到第 8 步处理。"
        },
        {
          "id": "s6-ask",
          "kind": "追问",
          "text": "Q 到底取多少？"
        },
        {
          "id": "s6-pitfall",
          "kind": "误区",
          "text": "Q 越大越好，我直接取 150。"
        }
      ]
    },
    {
      "n": 7,
      "seg": "design",
      "title": "指标—参数矩阵",
      "plain": "你能拧的旋钮就那几个，先看清哪一个同时管着两件事。",
      "lead": "需求做行、设计特性做列，在交叉格里标出这一行要靠哪几列去实现。",
      "primary": "确定并请助教评价",
      "primary_kind": "confirm",
      "template": "matrix",
      "visual": "质量屋",
      "viz": "qfd-matrix",
      "problems": [
        "p1",
        "p2",
        "p3",
        "p4"
      ],
      "assistant_title": "AI 助教 · 质量屋",
      "assistant_opening": "先认行列：一行是一条需求（你要达到什么），一列是一项设计特性（你能动手调什么），交叉格标的是这一行要靠这一列使多大劲。屋顶上每出现一个负相关，我都会问你打算怎么取舍。",
      "evidence": "关系强度矩阵、屋顶的耦合标记、由此排出的特性优先级",
      "more": "关系强度用三档：强、中、弱。屋顶上的正相关表示两项特性可以同向做好，负相关表示提高一项会压低另一项——Q 值与带宽就是典型的一对。",
      "presets": [
        {
          "id": "s7-ref",
          "kind": "参考",
          "text": "C1 与 C8 强负相关：我把 Q 限在一个窗口里，超出窗口就靠收紧元件容差来补。"
        },
        {
          "id": "s7-ask",
          "kind": "追问",
          "text": "Q 和通频带那一对最要紧，别的先不管行不行？"
        },
        {
          "id": "s7-pitfall",
          "kind": "误区",
          "text": "所有格子都标强相关，保险。"
        }
      ]
    },
    {
      "n": 8,
      "seg": "design",
      "title": "扫描与边界",
      "plain": "要窄才干净，要宽才不失真——两条要求在抢同一个旋钮。",
      "lead": "拖动 Q 值与匹配网络参数看幅频、相频、带宽与驻波比怎么变，再把设计点挪进可行域。",
      "primary": "应用到设计点",
      "primary_kind": "primary",
      "template": "chart",
      "visual": "曲线族与约束边界",
      "viz": "constraint-boundary",
      "viz_alt": "matching-vswr",
      "problems": [
        "p1",
        "p2"
      ],
      "assistant_title": "AI 助教 · 约束分析",
      "assistant_opening": "设计点落在可行域外时，我会指出违反了哪一条，但不会替你挪。",
      "evidence": "扫描区间、最终设计点坐标，以及被违反过的约束记录",
      "more": "设计平面的横轴是回路有载品质因数 Q_L，纵轴是耦合因数 η = k·Q，六条虚线是六条约束的边界，薄荷青阴影是六条同时满足的可行域。先说总口径：六条线、图下六个读数、可行域与推荐点，全部是单级选频回路的取值，这一步不做任何级联折算。邻道抑制这条线用的是单级 35 dB，任务书写的整机 60 dB 要靠多级级联或陶瓷滤波器实现；这里的「邻道」指与本机频差 1 MHz 的那部强邻频电台，不是体制规定的信道间隔。群时延也是单级取值，两级级联后翻倍——但任务书没有给整机通道的时延门限，翻倍后的值在这里没有可比的限。通频带、中心凹陷、通道幅度一致性同样是单级取值：按别处文案里的「两级级联」实做时，这三条的整机值都要另算，本步不替你算。另一个页签是匹配网络的驻波比随频率。",
      "completion": {
        "seg_name": "设计",
        "happened": "你估出了关键参数，用质量屋排出了优先级，并在六条约束围出的设计平面上定下了自己的设计点。",
        "happened_tpl": {
          "feasible": "你估出了关键参数，用质量屋排出了优先级，并把设计点挪进了六条约束围出的可行域（六条全部满足）。",
          "partial": "你估出了关键参数，用质量屋排出了优先级，并在六条约束围出的设计平面上定下了自己的设计点（这一轮六条里满足 {ok} 条，还差 {names}）。"
        },
        "evidence": "参数估算表、质量屋矩阵与优先级、设计点坐标与约束核对记录。",
        "hook": "纸上的设计点你已经定了。放进电路里，它还站得住吗？",
        "hook_tpl": {
          "feasible": "纸上的设计点落在可行域里了。放进电路里，它还站得住吗？",
          "partial": "纸上的设计点你已经定了（六条里满足 {ok} 条，还差 {names}）。放进电路里，它还站得住吗？"
        }
      },
      "presets": [
        {
          "id": "s8-ref",
          "kind": "参考",
          "text": "Q 拉到 120 抑制够了但通频带只剩 126 kHz；我改推耦合因数 η 到 1.9，Q 落在 85 附近。"
        },
        {
          "id": "s8-ask",
          "kind": "追问",
          "text": "我把 Q 拉到 120，邻道抑制 48 dB，为什么还不行？"
        },
        {
          "id": "s8-pitfall",
          "kind": "误区",
          "text": "直接点「跳到最稳的点」就行，不用自己拖。"
        }
      ]
    },
    {
      "n": 9,
      "seg": "verify",
      "title": "电路仿真",
      "plain": "纸上算得再好，也要在电路里量一遍才算数。",
      "lead": "双击电路图上的元件改一个值，看示波器波形与读数怎么变；换电路在仿真器标题栏右边的「预置电路」下拉里选，C6 是探头那一路，C7 是按你第 8 步设计点搭的双调谐回路。",
      "primary": "记录这次改动",
      "primary_kind": "confirm",
      "template": "sandbox",
      "visual": "电路仿真器",
      "viz": "circuitjs",
      "problems": [
        "p1",
        "p3"
      ],
      "assistant_title": "AI 助教 · 电路仿真",
      "assistant_opening": "我不替你调元件值。你说改了什么、看到什么，我陪你对照公式。",
      "evidence": "每次改动的元件值、改动前后的波形与仿真器示波器上的读数，以及设计点电路的读数",
      "more": "预置了七个电路：单调谐 LC 并联谐振回路、双调谐互感耦合回路、L 型阻抗匹配网络、二极管包络检波、简化丙类功率放大器、带示波器探头加载的选频回路，最后一个 C7 是按你在第 8 步定下的设计点（Q_L 与耦合因数 η）搭出来的双调谐中频回路——上一段留下的那句「放进电路里，它还站得住吗」，就在这里量。仿真器在本机自托管，断网也能打开；每个电路文件顶部写了取值依据与仿真器读数。",
      "hook_in": "纸上的设计点你已经定了。放进电路里，它还站得住吗？",
      "hook_in_tpl": {
        "feasible": "纸上的设计点落在可行域里了。放进电路里，它还站得住吗？",
        "partial": "纸上的设计点你已经定了（六条里满足 {ok} 条，还差 {names}）。放进电路里，它还站得住吗？"
      },
      "presets": [
        {
          "id": "s9-ref",
          "kind": "参考",
          "text": "C7 量到 37.9 dB、解析 37.7 dB，差 0.2 dB 是读数精度；这是单级，整机 60 dB 要两级级联。"
        },
        {
          "id": "s9-ask",
          "kind": "追问",
          "text": "C7 量到 37.9 dB，第 8 步算的是 37.7 dB，这算对上了吗？"
        },
        {
          "id": "s9-pitfall",
          "kind": "误区",
          "text": "仿真器读数就是实测，可以直接写进报告。"
        }
      ]
    },
    {
      "n": 10,
      "seg": "verify",
      "title": "实测验证",
      "plain": "不是元件不准，是你手里那支表把被测的东西改了。",
      "lead": "依次补入探头输入电容与示波器输入电阻，再核对一次带宽，看仿真曲线怎样一步步和实测曲线合上。",
      "primary": "播放回填与核对",
      "primary_kind": "primary",
      "template": "chart",
      "visual": "曲线合上",
      "viz": "dual-curve",
      "viz_alt": null,
      "problems": [
        "p1",
        "p2"
      ],
      "assistant_title": "AI 助教 · 实测验证",
      "assistant_opening": "曲线合上不等于解释成立。我会问你：补进去的每一项，物理上对应什么？",
      "evidence": "每一步回填的参数、回填后两条曲线的偏差，以及你的解释",
      "more": "回填分两步：先补探头输入电容 110 pF（回路总电容 22 pF → 132 pF，谐振点从 10.730 MHz 掉到 4.381 MHz），再补示波器输入电阻 1 MΩ（有载 Q 从 32.0 压到 31.7、通频带从 137.1 kHz 放到 138.3 kHz）。每补一步，图下方的读数行会同步刷新仿真与实测各自的谐振点、有载 Q、3 dB 带宽，以及两者的偏差，全部按同一组元件值用谐振回路的公式现算。最后一档把两条线的 3 dB 带宽标在图上逐点核对。",
      "presets": [
        {
          "id": "s10-ref",
          "kind": "参考",
          "text": "110 pF 解释频率（22→132 pF，10.73→4.38 MHz），1 MΩ 只让 Q 动了 0.3；是测量改变了被测对象。"
        },
        {
          "id": "s10-ask",
          "kind": "追问",
          "text": "两条线合上了，说明我的解释成立？"
        },
        {
          "id": "s10-pitfall",
          "kind": "误区",
          "text": "曲线合上了，所以原来的电感值标错了。"
        }
      ]
    },
    {
      "n": 11,
      "seg": "verify",
      "title": "AI 协同优化",
      "plain": "分数最高的那个方案，往往正是最不能用的那个。",
      "lead": "在左边写扫描函数，点「运行扫描」真跑一遍，再和对照方案比。",
      "primary": "运行扫描",
      "primary_kind": "primary",
      "template": "matrix",
      "visual": "曲线族与雷达图",
      "viz": "resonance-sweep",
      "viz_alt": "constraint-boundary",
      "problems": [
        "p1",
        "p4"
      ],
      "assistant_title": "AI 助教 · 代码评审",
      "assistant_opening": "我会引用你在第 8 步定的约束来看你的目标函数。分数更高，不代表那个方案能用。",
      "evidence": "你写的扫描函数、两套方案的对比结果，以及你的取舍理由",
      "more": "点「运行扫描」会把你写的这段代码送进浏览器的一条独立线程里真跑一遍：那条线程里备好了这门课的九组公式，以 rf 交到你手上，跑过 3 秒会被停掉，出错会把浏览器给出的错误原文原样显示，不美化也不伪造结果。曲线族里每一条的 Q 值，就是你的函数返回的那几组。另一个页签把「只看得分、不看约束」取到的对照方案放到第 8 步那张设计平面上：它的邻道抑制更高，却踩了好几条约束。判断权在你，取舍理由会进入成果报告。",
      "completion": {
        "seg_name": "验证",
        "happened": "你在仿真器里改了元件值，用回填让仿真曲线与实测曲线合上，并评审了另一套优化方案。",
        "evidence": "仿真改动记录、参数回填过程与偏差、扫描函数与你的取舍理由。",
        "hook": "验证做完了。回到开头那四个难题：现在各自解决到什么程度？"
      },
      "presets": [
        {
          "id": "s11-ref",
          "kind": "参考",
          "text": "对照方案通频带只剩 48.4 kHz，240 kHz 的信号装不下；我保留自己的点，靠两级级联把整机做到 72.7 dB。"
        },
        {
          "id": "s11-ask",
          "kind": "追问",
          "text": "对照方案分数高 22.5 dB，我是不是该改用它？"
        },
        {
          "id": "s11-pitfall",
          "kind": "误区",
          "text": "分数高就是更优，六条约束可以后面再补。"
        }
      ]
    },
    {
      "n": 12,
      "seg": "result",
      "title": "成效对照",
      "plain": "回到开头那四台设备，现在它们各自好到什么程度。",
      "lead": "四张前后对照图逐一回应开头的四个难题；左栏切优化前后，难题四还能切极坐标与直角坐标。",
      "no_ai_note": "这一步没有助教；看不懂就点右上角的「了解更多」。",
      "primary": "四张对照都看过了",
      "primary_kind": "primary",
      "template": "chart",
      "visual": "四场景前后对照图",
      "viz": "scenario-compare",
      "problems": [
        "p1",
        "p2",
        "p3",
        "p4"
      ],
      "assistant_title": null,
      "assistant_opening": null,
      "evidence": "四个场景的前后对照读数与依据等级",
      "more": "四张图分别是定位误差热图、图传覆盖热图、通信稳定分布图与相控阵方向图，算法来自本课程既有的原型，在浏览器里重算。每张图标两件事：依据等级（公式计算 / 仿真结果 / 教学示意 / 实验台实测）与模型依据（物理公式 / 简化模型 / 示意）。难题四的「优化后」用的是你在第 8 步定的设计点。一处口径：难题一「优化后」的说明里同时给了单级值与两级级联折到整机的值，热图本身算的是单级值；全站折算过的也只有邻道抑制这一项，通频带、群时延、中心凹陷与通道幅度一致性都还是第 8 步的单级取值，没有折算到整机。",
      "hook_in": "验证做完了。回到开头那四个难题：现在各自解决到什么程度？"
    },
    {
      "n": 13,
      "seg": "result",
      "title": "成果报告",
      "plain": "你留下的每一个数，都能指回它是从哪来的。",
      "lead": "以下是你这一轮留下的全部证据；确认无误后生成可下载的成果报告。",
      "no_ai_note": "这一步没有助教；看不懂就点右上角的「了解更多」。",
      "primary": "生成成果报告",
      "primary_kind": "primary",
      "template": "cards",
      "visual": "报告",
      "viz": null,
      "problems": [
        "p1",
        "p2",
        "p3",
        "p4"
      ],
      "assistant_title": null,
      "assistant_opening": null,
      "evidence": "成果报告，含全部对话与输入记录",
      "more": "报告包含：任务书与你的技术指标表、原因树与证据计划、参数估算与质量屋、设计点与约束核对、仿真与回填记录、四张成效对照图，以及各步与助教的全部对话。",
      "completion": {
        "seg_name": "成果",
        "happened": "四张前后对照图逐一回应了开头的四个难题，成果报告已生成。",
        "evidence": "一份成果报告，含全部对话与输入记录。",
        "hook": "还没解决干净的那一条，下一轮带回实验台。"
      }
    }
  ]
}
