{
  "schema_version": "2.0",
  "product": "英语默写AI版",
  "handoff_version": "0.12.3",
  "date": "2026-10-13",
  "id": "A-3",
  "page_id": "A-3",
  "name": "选课本 · 首页引导与换课本共用",
  "module": "课本设置",
  "purpose": "从首页引导或换课本入口选择教材；未确认不保存，成功返回来源首页，教材供默写/听写/练习共用。",
  "entry": {
    "from": [
      "B：未选课本引导卡或教材功能入口",
      "B/C/D：选课本或换课本",
      "A-4：关闭封面"
    ],
    "preconditions": [
      "已进入首页后主动选择课本；真实目录与封面待教研提供。"
    ],
    "rule_status": "confirmed",
    "source": {
      "kind": "user_confirmation",
      "date": "2026-10-11",
      "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
    },
    "context": {
      "entryMode": {
        "values": [
          "first",
          "change"
        ],
        "rule_status": "proposed",
        "meaning": "首页首次选书或已有课本换书，生产字段为建议。"
      },
      "sourceRoute": {
        "values": [
          "B",
          "C",
          "D"
        ],
        "rule_status": "proposed",
        "meaning": "来源首页；不再从认证成功直接进入。"
      },
      "returnRoute": {
        "values": [
          "B",
          "C",
          "D"
        ],
        "rule_status": "proposed",
        "meaning": "首次选课本与换课本都返回进入来源B/C/D；取消也返回同一来源，不改已保存教材。字段名称为实现建议。"
      }
    }
  },
  "ui_elements": [
    {
      "id": "A-3.title",
      "type": "text",
      "label": "选课本",
      "description": "页面标题。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.skip",
      "type": "button",
      "label": "稍后再选",
      "description": "账号无课本时可稍后再选并回来源首页；已有课本换书不显示。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      }
    },
    {
      "id": "A-3.back",
      "type": "button",
      "label": "返回",
      "description": "换课本退出回来源为建议；取消规则待定。",
      "rule_status": "proposed"
    },
    {
      "id": "A-3.description",
      "type": "text",
      "label": "选好后每次出单都默认用它，随时可改",
      "description": "沿源说明。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.stage",
      "type": "segmented-control",
      "label": "小学 / 初中 / 高中 / 课外",
      "description": "四学段，KET/PET/FCE 归课外；真实目录待提供。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.grade",
      "type": "choice-group",
      "label": "年级",
      "description": "源小学示例一至六；其它映射未提供，不扩造。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.semester",
      "type": "segmented-control",
      "label": "上册 / 下册",
      "description": "源两册；课外适用性待定。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.search",
      "type": "input",
      "label": "搜课本名，如 PEP、译林、新概念",
      "description": "源有搜索，匹配规则未定义。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.books",
      "type": "list",
      "label": "课本列表",
      "description": "源 PEP/译林/外研社（三起）三上三本示例，不是正式目录。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.cover",
      "type": "button",
      "label": "封面及放大角标",
      "description": "独立点击 A-4 核对版次。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.selection",
      "type": "choice",
      "label": "选择课本",
      "description": "非封面区域更新单选草稿，触发区为交互补全建议。",
      "rule_status": "proposed"
    },
    {
      "id": "A-3.confirm",
      "type": "button",
      "label": "就用这本",
      "description": "保存回来源；无选择时禁用为建议。",
      "rule_status": "confirmed"
    },
    {
      "id": "A-3.feedback",
      "type": "status",
      "label": "目录/保存状态",
      "description": "加载、空结果、保存失败详细状态建议。",
      "rule_status": "proposed"
    }
  ],
  "data_source": [
    {
      "name": "教研课本目录",
      "data": [
        "课本 ID",
        "学段/年级/册",
        "名称/封面/版次/适用说明"
      ],
      "contract_status": "pending",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      }
    },
    {
      "name": "用户档案课本设置",
      "data": [
        "B/C/D 共用课本选择"
      ],
      "contract_status": "pending",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      }
    },
    {
      "name": "进入来源上下文",
      "data": [
        "首次/换课本模式",
        "B/C/D 来源"
      ],
      "contract_status": "pending",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      }
    },
    {
      "name": "课外考级词表",
      "data": [
        "KET/PET/FCE 作为课本"
      ],
      "contract_status": "pending",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      }
    }
  ],
  "data_model": [
    {
      "id": "stage",
      "type": "enum",
      "description": "源四学段，字段名为建议。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "grade",
      "type": "string|null",
      "description": "小学示例六年级值，其它需目录。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "semester",
      "type": "enum|null",
      "description": "上下册，课外适用待定。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "query",
      "type": "string",
      "description": "搜索词。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "draftTextbookId",
      "type": "string|null",
      "description": "未确认的当前单选草稿，不提前写档案。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "savedTextbookId",
      "type": "string|null",
      "description": "正式保存后 B/C/D 共用。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "entryMode",
      "type": "enum",
      "description": "建议 first/change，业务概念来自源。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "sourceRoute",
      "type": "string",
      "description": "换课本来源 B/C/D。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "scrollPosition",
      "type": "number",
      "description": "返回位置保留建议。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "saveStatus",
      "type": "enum",
      "description": "建议 idle/saving/error/success。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "textbookSetup",
      "type": "enum:unstarted|skipped|selected",
      "description": "课本selected/unstarted/skipped及引导状态供首页展示使用；不再阻断已登录启动或成功登录进入B。变量名和持久化契约待实现。",
      "rule_status": "proposed",
      "contract_status": "pending"
    }
  ],
  "interactions": [
    {
      "id": "A-3-I-01",
      "trigger": "切换学段/年级/上下册",
      "condition": "真实选项由教研目录支持",
      "effect": "更新筛选展示匹配目录，不提交档案",
      "destination": "A-3",
      "payload": [
        "学段",
        "年级",
        "册"
      ],
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源有控件，筛选联动未定义。"
      },
      "prototype_behavior": "提供原三上三本教材及 KET/PET/FCE 三份课外词表示例；无匹配显示空态。完整目录尚未接入，不伪造其它年级教材。"
    },
    {
      "id": "A-3-I-02",
      "trigger": "输入/清空搜索词",
      "condition": "目录可用",
      "effect": "按筛选搜索名称，更新同页列表",
      "destination": "A-3",
      "payload": [
        "搜索词",
        "筛选"
      ],
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源有搜索，匹配规则未定。"
      },
      "prototype_behavior": "搜索源 PEP/译林/外研社；无结果说明样例有限，不宣称生产没有教材。"
    },
    {
      "id": "A-3-I-03",
      "trigger": "点击非封面区域/选择控件",
      "condition": "课本在可选列表",
      "effect": "更新单选草稿及选中视觉",
      "destination": "A-3",
      "payload": [
        "草稿课本 ID"
      ],
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源有单选视觉，触发区未定。"
      },
      "prototype_behavior": "可初选源 PEP 三上但只是展示样例，不是正式默认；点击封面不改当前选择。"
    },
    {
      "id": "A-3-I-04",
      "trigger": "点击课本封面/放大角标",
      "condition": "该行有封面数据",
      "effect": "进入大图核对版次",
      "destination": "A-4",
      "payload": [
        "被查看课本 ID",
        "同源封面/名称/适用信息/版次",
        "筛选/搜索/草稿/位置/来源上下文"
      ],
      "rule_status": "confirmed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      },
      "prototype_behavior": "点击哪本展示哪本；查看 ID 与选择 ID 分开，返回不改选择。"
    },
    {
      "id": "A-3-I-05",
      "trigger": "点击就用这本",
      "condition": "已选课本，真实保存成功，换课本模式",
      "effect": "写共用档案并返回 B/C/D 进入来源",
      "destination": "entry.sourceRoute：B / C / D",
      "payload": [
        "保存课本 ID",
        "共用课本设置"
      ],
      "rule_status": "confirmed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      },
      "prototype_behavior": "模拟请求后保存预览会话教材，按source直接返回本包对应B/C/D首页，不写远程档案。"
    },
    {
      "id": "A-3-I-06",
      "trigger": "点击就用这本",
      "condition": "从首页引导首次选择且真实保存成功",
      "effect": "保存共用课本，返回进入来源B/C/D首页；更新共用教材状态并关闭该来源的无书引导。",
      "destination": "entry.sourceRoute：B / C / D",
      "payload": [
        "保存课本ID",
        "进入来源B/C/D"
      ],
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "prototype_behavior": "首次选书与换书使用同一保存流程，模拟成功后按source直接返回B/C/D；没有来源时回B。"
    },
    {
      "id": "A-3-I-07",
      "trigger": "点击稍后再选",
      "condition": "账号当前无课本",
      "effect": "保持无课本并返回来源首页，不默认保存样例；教材功能需要时再选书。",
      "destination": "entry.sourceRoute：B / C / D",
      "payload": [
        "无课本/暂缓选择状态"
      ],
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "prototype_behavior": "写入演示skipped，不写课本；返回来源首页。"
    },
    {
      "id": "A-3-I-08",
      "trigger": "关闭 A-4 返回",
      "condition": "有此前本页上下文",
      "effect": "恢复选择，建议恢复筛选搜索和位置",
      "destination": "A-3",
      "payload": [
        "筛选",
        "搜索",
        "草稿课本 ID",
        "滚动位置",
        "来源模式"
      ],
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-4",
          "英语默写代码/xzx-pages/pages/A-4.html"
        ],
        "detail": "选择不变已确认，其它保留为本次建议。"
      },
      "prototype_behavior": "会话还原，不重置第一本或来源/模式。"
    },
    {
      "id": "A-3-I-09",
      "trigger": "保存/目录请求失败",
      "condition": "真实返回失败",
      "effect": "反馈可恢复错误，保留草稿，不改原共用配置，不跳成功",
      "destination": "A-3",
      "payload": [],
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "失败/加载原未定义。"
      },
      "prototype_behavior": "宿主可演示失败，保留草稿并可恢复重试。"
    },
    {
      "id": "A-3-I-10",
      "trigger": "点击返回或取消",
      "condition": "尚未确认保存",
      "effect": "回来源首页且原教材不变；无课本仍保持无课本，不保存候选。",
      "destination": "entry.sourceRoute：B / C / D",
      "payload": [
        "来源上下文"
      ],
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "prototype_behavior": "按source直接返回本包B/C/D首页，已保存教材不变；无课本仍无课本。候选草稿留预览会话，不等于账号保存。"
    }
  ],
  "back_behavior": {
    "destination": "B/C/D 来源首页；A-4关闭回A-3",
    "rule_status": "proposed",
    "preserve": "取消不写入候选课本；A-4关闭选择不变；筛选搜索滚动保留为建议。",
    "source": {
      "kind": "user_confirmation",
      "date": "2026-10-11",
      "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
    },
    "prototype_behavior": "始终提供返回；无教材可稍后再选返回来源。确认才写入共用教材；取消不自动指定教材。"
  },
  "states": [
    {
      "id": "first-setup",
      "description": "从首页引导进入；提供返回及稍后再选，未保存时没有默认课本。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      }
    },
    {
      "id": "change-textbook",
      "description": "不显示跳过，保留 B/C/D 来源。",
      "rule_status": "confirmed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      }
    },
    {
      "id": "catalog-loading",
      "description": "加载提示，不误报无教材。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源未定义。"
      }
    },
    {
      "id": "catalog-ready",
      "description": "展示原三本教材及三份课外词表示例，正式目录待提供。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "目录待教研。"
      }
    },
    {
      "id": "no-preview-match",
      "description": "显示暂无匹配课本及调整筛选提示；宿主规格说明样例有限，真实目录待提供。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "无匹配原未定。"
      }
    },
    {
      "id": "no-selection",
      "description": "确认按钮禁用为建议。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源未定义门槛。"
      }
    },
    {
      "id": "saving",
      "description": "保存请求态防重复。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源未定义。"
      }
    },
    {
      "id": "save-error",
      "description": "失败留草稿和原设置。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源未定义。"
      }
    }
  ],
  "acceptance_criteria": [
    {
      "id": "A-3-AC-01",
      "given": "从B首页引导首次选择",
      "when": "返回或稍后再选",
      "then": "回B，账号仍无课本，不保存候选演示教材。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "verification_scope": "product"
    },
    {
      "id": "A-3-AC-02",
      "given": "B/C/D 换课本进入",
      "when": "查看/确认成功",
      "then": "无跳过，真实保存成功回对应来源，三个 Tab 共用设置。",
      "rule_status": "confirmed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。"
      },
      "verification_scope": "product"
    },
    {
      "id": "A-3-AC-03",
      "given": "查看非选中课本封面",
      "when": "打开关闭 A-4",
      "then": "展示对应封面，选择不变。",
      "rule_status": "confirmed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-4",
          "英语默写代码/xzx-pages/pages/A-4.html"
        ],
        "detail": "源关闭选择不变。"
      },
      "verification_scope": "product"
    },
    {
      "id": "A-3-AC-04",
      "given": "预览有筛选搜索及位置",
      "when": "打开关闭封面",
      "then": "保留筛选/搜索/位置/来源。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "本次返回建议。"
      },
      "verification_scope": "prototype"
    },
    {
      "id": "A-3-AC-05",
      "given": "没有对应源样例",
      "when": "筛选/搜索",
      "then": "没有样例的筛选显示暂无匹配，不造教材；B/C/D来源首页在本包直接返回，其他未交付子功能为明确边界。",
      "rule_status": "proposed",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "本次样例边界。"
      },
      "verification_scope": "prototype"
    },
    {
      "id": "A-3-AC-10",
      "given": "从首页进入首次选书",
      "when": "稍后再选或保存成功",
      "then": "回来源首页；稍后再选无默认教材，保存后共用该教材；再次启动仍统一B。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "verification_scope": "product"
    },
    {
      "id": "A-3-AC-11",
      "given": "从C或D首页无课本状态进入首次选书",
      "when": "选择教材且保存成功",
      "then": "分别返回C或D来源首页；B/C/D读取同一已保存教材，不强制返回B。",
      "rule_status": "confirmed",
      "source": {
        "kind": "current_user_revision_and_original_ue",
        "date": "2026-10-11",
        "detail": "当前用户改为进入首页后选书；原UE明确B/C/D共用课本且保存回来源。首次与换书统一保存/取消返回来源，无书不保存候选。"
      },
      "verification_scope": "product"
    },
    {
      "id": "A-3-AC-12",
      "given": "从B/C/D首页进入选课本",
      "when": "尚未保存时取消或返回",
      "then": "回对应来源首页；原教材不变，无教材仍无教材；不把查看封面或候选教材当作已保存。",
      "rule_status": "confirmed",
      "source": {
        "kind": "current_user_revision_and_original_ue",
        "date": "2026-10-11",
        "detail": "当前用户改为进入首页后选书；原UE明确B/C/D共用课本且保存回来源。首次与换书统一保存/取消返回来源，无书不保存候选。"
      },
      "verification_scope": "product"
    }
  ],
  "pending_from_source": [
    {
      "id": "A-3-P-02",
      "question": "地区推荐是否后续补，优先级如何？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "原待确认。"
      },
      "rule_status": "pending"
    }
  ],
  "additional_unspecified": [
    {
      "id": "A-3-U-02",
      "question": "各学段年级/课外目录与上下册规则？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源仅小学六选项三上样例。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-3-U-03",
      "question": "正式目录、封面、版权和版次由何处提供？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源待教研提供。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-3-U-04",
      "question": "搜索匹配、筛选联动、草稿跨筛选保留？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "具体算法未定。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-3-U-05",
      "question": "保存失败、目录失败、空结果提示/重试？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "原 additional_unspecified。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-3-U-06",
      "question": "取消后候选草稿需保留多久？返回来源且不保存已确认，生产草稿时限待定义。",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源取消未定。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-3-U-07",
      "question": "B/C/D 接收新课本后已选单元/词表如何重置？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-3",
          "英语默写代码/xzx-pages/pages/A-3.html"
        ],
        "detail": "源只确认共用设置。"
      },
      "rule_status": "pending"
    }
  ],
  "references": {
    "interface": "A-3.interface.md",
    "prototype": "A-3.prototype.html",
    "design": "UI-DESIGN.md"
  },
  "sources": [
    "英语默写代码/app说明示例/login-source-specs.json#/A-3",
    "英语默写代码/xzx-pages/pages/A-3.html"
  ],
  "source_of_truth": {
    "visual": "A-3.prototype.html 屏幕内产品 UI",
    "behavior": "原 UE 明确要求及当前用户已确认规则；proposed 与 pending 不构成已确认业务契约",
    "viewer_chrome": "手机外壳、项目导航、演示选择器、说明与页面编号属于预览宿主"
  },
  "limitations": {
    "scope": "本轮认证与四个首页Tab；验证码的五个额外画面为A-2同页状态预览。",
    "prototype": [
      "无真实认证、取号、短信、网络请求、远程档案存储。",
      "演示手机号、验证码、封面、版次、成功失败不是认证结果或正式教研目录。",
      "本地跨页保留仅展示返回体验，不定义生产持久化。",
      "完整模拟器、状态栏、手势条保留，演示控件属于宿主。"
    ],
    "implementation": [
      "真实服务字段、鉴权、错误码、重试、持久化契约未提供。",
      "data_model 的具体字段名/类型为建议，不作为已确认 API 契约。"
    ]
  },
  "prototype_limitations": [
    "无真实认证、取号、短信、网络请求、远程档案存储。",
    "演示手机号、验证码、封面、版次、成功失败不是认证结果或正式教研目录。",
    "本地跨页保留仅展示返回体验，不定义生产持久化。",
    "完整模拟器、状态栏、手势条保留，演示控件属于宿主。"
  ],
  "implementation_constraints": [
    "真实服务字段、鉴权、错误码、重试、持久化契约未提供。",
    "data_model 的具体字段名/类型为建议，不作为已确认 API 契约。"
  ],
  "confirmations": [
    {
      "kind": "user_confirmation",
      "date": "2026-10-11",
      "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
    }
  ],
  "user_confirmed_rules": [
    {
      "id": "GROWTH-WORD",
      "description": "积累单词统计成功导出的练习卷、已提交听写／客观练习、有效朗读涉及的词库单词，跨课本去重；答案卷不计，短语句子不拆词；表示接触，不表示掌握。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "GROWTH-CORRECT",
      "description": "同一稳定错题首次改对计一次；同轮末尾再练答对也计入；首答正确率保持原成绩。反复错后再对不重复累计。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "KEEP",
      "description": "三类记录与错题长期保留，不按会员截断，支持主动删除；自建词表历史独立保留。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "PRICE",
      "description": "年卡68元、终身98元；手动续费，无自动续费。价格由正式商品配置校验。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "PLATFORM",
      "description": "中国区iOS使用系统内购，国内安卓使用微信或支付宝；恢复权益、延迟到账与取消／失败都有独立状态。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "QUOTA",
      "description": "每账号免费累计3个成功导出文件、累计5轮听写／读单词／课文跟读批改评测，共用总额度，不按天恢复。失败不扣，同轮重试重读不重复扣。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "BENEFIT",
      "description": "客观练习不限次；免费开放6个专题、答案卷带水印；会员不限次数，手写／纸笔批改需会员。到期不重置已用免费总额度。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "WRONG",
      "description": "错题本仅做管理、来源／类型筛选、详情、移除及按原来源再练。听写与五种客观题收录，朗读低分独立。AI排期留25。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "INVITE",
      "description": "新用户经邀请完成注册即奖励邀请人7天会员，每月最多3次；年卡／赠送时长顺延，终身只记邀请不叠加时长；老用户重复邀请不奖励。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "CANCEL",
      "description": "验证身份并二次确认后立即注销；退出登录保留账号资产；退款按真实渠道与正式条款处理。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "HELP",
      "description": "先做帮助文章与邮箱联系版式；客服邮箱尚未确定；不编造可用邮箱。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    }
  ],
  "module_base": "课本设置",
  "tabs": [],
  "prototype_states": [
    {
      "id": "first",
      "label": "从首页首次选书",
      "scope": "prototype_only"
    },
    {
      "id": "change_book",
      "label": "从首页换课本",
      "scope": "prototype_only"
    },
    {
      "id": "empty",
      "label": "无匹配课本",
      "scope": "prototype_only"
    },
    {
      "id": "loading",
      "label": "目录加载中",
      "scope": "prototype_only"
    },
    {
      "id": "error",
      "label": "目录加载失败",
      "scope": "prototype_only"
    },
    {
      "id": "save_error",
      "label": "课本保存失败",
      "scope": "prototype_only"
    }
  ]
}
