# A-3 · 选课本 · 首页引导与换课本共用

产品：英语默写AI版 · 交付 0.12.3 · 日期 2026-10-13 · 模块：课本设置

功能规格：[A-3.function.json](A-3.function.json)
原型设计：[A-3.prototype.html](A-3.prototype.html)

## 职责与进入条件

从首页引导或换课本入口选择教材；未确认不保存，成功返回来源首页，教材供默写/听写/练习共用。

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；取消也返回同一来源，不改已保存教材。字段名称为实现建议。

## 界面元素

- 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

## 数据与来源

- 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 归课外。

## 字段建议（尚非服务契约）

- 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

## 页面状态

- 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：源未定义。

## 可切换演示状态

- 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

## 交互 A-3-I-01：切换学段/年级/上下册

- 触发：切换学段/年级/上下册

- 条件：真实选项由教研目录支持

- 反馈：更新筛选展示匹配目录，不提交档案

- 跳转目标：A-3

- 携带数据：学段；年级；册

- 规则确认程度：proposed

- 来源：files：英语默写代码/app说明示例/login-source-specs.json#/A-3；英语默写代码/xzx-pages/pages/A-3.html；detail：源有控件，筛选联动未定义。

- 预览能力：提供原三上三本教材及 KET/PET/FCE 三份课外词表示例；无匹配显示空态。完整目录尚未接入，不伪造其它年级教材。

## 交互 A-3-I-02：输入/清空搜索词

- 触发：输入/清空搜索词

- 条件：目录可用

- 反馈：按筛选搜索名称，更新同页列表

- 跳转目标：A-3

- 携带数据：搜索词；筛选

- 规则确认程度：proposed

- 来源：files：英语默写代码/app说明示例/login-source-specs.json#/A-3；英语默写代码/xzx-pages/pages/A-3.html；detail：源有搜索，匹配规则未定。

- 预览能力：搜索源 PEP/译林/外研社；无结果说明样例有限，不宣称生产没有教材。

## 交互 A-3-I-03：点击非封面区域/选择控件

- 触发：点击非封面区域/选择控件

- 条件：课本在可选列表

- 反馈：更新单选草稿及选中视觉

- 跳转目标：A-3

- 携带数据：草稿课本 ID

- 规则确认程度：proposed

- 来源：files：英语默写代码/app说明示例/login-source-specs.json#/A-3；英语默写代码/xzx-pages/pages/A-3.html；detail：源有单选视觉，触发区未定。

- 预览能力：可初选源 PEP 三上但只是展示样例，不是正式默认；点击封面不改当前选择。

## 交互 A-3-I-04：点击课本封面/放大角标

- 触发：点击课本封面/放大角标

- 条件：该行有封面数据

- 反馈：进入大图核对版次

- 跳转目标：A-4

- 携带数据：被查看课本 ID；同源封面/名称/适用信息/版次；筛选/搜索/草稿/位置/来源上下文

- 规则确认程度：confirmed

- 来源：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 与选择 ID 分开，返回不改选择。

## 交互 A-3-I-05：点击就用这本

- 触发：点击就用这本

- 条件：已选课本，真实保存成功，换课本模式

- 反馈：写共用档案并返回 B/C/D 进入来源

- 跳转目标：entry.sourceRoute：B / C / D

- 携带数据：保存课本 ID；共用课本设置

- 规则确认程度：confirmed

- 来源：files：英语默写代码/app说明示例/login-source-specs.json#/A-3；英语默写代码/xzx-pages/pages/A-3.html；detail：源：首次与换课本共用；B/C/D 共用课本；筛选搜索列表封面；封面 A-4；确认写档案回来源；首次跳过 B，换课本不显示跳过；KET/PET/FCE 归课外。

- 预览能力：模拟请求后保存预览会话教材，按source直接返回本包对应B/C/D首页，不写远程档案。

## 交互 A-3-I-06：点击就用这本

- 触发：点击就用这本

- 条件：从首页引导首次选择且真实保存成功

- 反馈：保存共用课本，返回进入来源B/C/D首页；更新共用教材状态并关闭该来源的无书引导。

- 跳转目标：entry.sourceRoute：B / C / D

- 携带数据：保存课本ID；进入来源B/C/D

- 规则确认程度：confirmed

- 来源：kind：user_confirmation；date：2026-10-11；detail：当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。

- 预览能力：首次选书与换书使用同一保存流程，模拟成功后按source直接返回B/C/D；没有来源时回B。

## 交互 A-3-I-07：点击稍后再选

- 触发：点击稍后再选

- 条件：账号当前无课本

- 反馈：保持无课本并返回来源首页，不默认保存样例；教材功能需要时再选书。

- 跳转目标：entry.sourceRoute：B / C / D

- 携带数据：无课本/暂缓选择状态

- 规则确认程度：confirmed

- 来源：kind：user_confirmation；date：2026-10-11；detail：当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。

- 预览能力：写入演示skipped，不写课本；返回来源首页。

## 交互 A-3-I-08：关闭 A-4 返回

- 触发：关闭 A-4 返回

- 条件：有此前本页上下文

- 反馈：恢复选择，建议恢复筛选搜索和位置

- 跳转目标：A-3

- 携带数据：筛选；搜索；草稿课本 ID；滚动位置；来源模式

- 规则确认程度：proposed

- 来源：files：英语默写代码/app说明示例/login-source-specs.json#/A-4；英语默写代码/xzx-pages/pages/A-4.html；detail：选择不变已确认，其它保留为本次建议。

- 预览能力：会话还原，不重置第一本或来源/模式。

## 交互 A-3-I-09：保存/目录请求失败

- 触发：保存/目录请求失败

- 条件：真实返回失败

- 反馈：反馈可恢复错误，保留草稿，不改原共用配置，不跳成功

- 跳转目标：A-3

- 携带数据：

- 规则确认程度：proposed

- 来源：files：英语默写代码/app说明示例/login-source-specs.json#/A-3；英语默写代码/xzx-pages/pages/A-3.html；detail：失败/加载原未定义。

- 预览能力：宿主可演示失败，保留草稿并可恢复重试。

## 交互 A-3-I-10：点击返回或取消

- 触发：点击返回或取消

- 条件：尚未确认保存

- 反馈：回来源首页且原教材不变；无课本仍保持无课本，不保存候选。

- 跳转目标：entry.sourceRoute：B / C / D

- 携带数据：来源上下文

- 规则确认程度：confirmed

- 来源：kind：user_confirmation；date：2026-10-11；detail：当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。

- 预览能力：按source直接返回本包B/C/D首页，已保存教材不变；无课本仍无课本。候选草稿留预览会话，不等于账号保存。

## 返回与保留

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：始终提供返回；无教材可稍后再选返回来源。确认才写入共用教材；取消不自动指定教材。

## 验收

- 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

## 原材料待确认

- 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

## 补充未定义事项

- 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

## 实现边界

- 真实服务字段、鉴权、错误码、重试、持久化契约未提供。

- data_model 的具体字段名/类型为建议，不作为已确认 API 契约。

## 原型限制

- 无真实认证、取号、短信、网络请求、远程档案存储。

- 演示手机号、验证码、封面、版次、成功失败不是认证结果或正式教研目录。

- 本地跨页保留仅展示返回体验，不定义生产持久化。

- 完整模拟器、状态栏、手势条保留，演示控件属于宿主。

## 能力与接入限制

scope：本轮认证与四个首页Tab；验证码的五个额外画面为A-2同页状态预览。；prototype：无真实认证、取号、短信、网络请求、远程档案存储。；演示手机号、验证码、封面、版次、成功失败不是认证结果或正式教研目录。；本地跨页保留仅展示返回体验，不定义生产持久化。；完整模拟器、状态栏、手势条保留，演示控件属于宿主。；implementation：真实服务字段、鉴权、错误码、重试、持久化契约未提供。；data_model 的具体字段名/类型为建议，不作为已确认 API 契约。

## 预览宿主与产品 UI

手机外壳、项目导航、演示状态选择器、页面说明、页面编号与前后页导航属于预览宿主。产品实现包含屏幕内的业务 UI，状态栏与手势条由目标系统承载。原型仅操作本地示例状态，不发送真实短信，不执行真实认证；首页统计与教研目录为示例，不保存用户档案到服务端。
