# B-2-empty · 选单元 · 未选单元

产品：英语默写AI版 · 交付 0.12.3 · 日期 2026-10-13 · 模块：默写单-教材默写单与打印

功能规格：[B-2-empty.function.json](B-2-empty.function.json)
原型设计：[B-2-empty.prototype.html](B-2-empty.prototype.html)

## 职责与进入条件

B-2同页状态审阅：选单元 · 未选单元；只按整个单元选择，不增加独立业务路由。

from：B：教材打印；A-3：无课本待恢复动作（建议）；B-3：教材线返回；preconditions：已有当前课本；无课本先按已确认规则进 A-3。；rule_status：confirmed；source：原 UE B-2；用户课本规则。

## 界面元素

- id：B-2.back；type：button；label：返回；description：回 B。；rule_status：confirmed

- id：B-2.book；type：button；label：当前课本；description：进入 A-3，共用设置。；rule_status：confirmed

- id：B-2.units；type：multi-select-list；label：整单元选择卡；description：每个单元只有一个勾选入口，展示Unit编号、名称与全部词数；整张卡可切换，不再展示Part A/Part B等独立选择行。；rule_status：confirmed；source：用户2026-10-12确认

- id：B-2.last；type：text；label：上次练到这儿；description：源提示位，事件来源与默认选中逻辑待定。；rule_status：pending

- id：B-2.summary；type：status；label：已选单元数 · 全部词数 · 所属单元；description：例如选Unit2时显示已选1单元·6词；多个单元汇总词数，列出Unit编号。跨单元去重及过长摘要仍为实现建议。；rule_status：confirmed

- id：B-2.next；type：button；label：去挑单词；description：进入 B-3；零选时禁用为建议。；rule_status：proposed

## 数据与来源

- name：当前课本单元目录/词库；data：单元编号与名称；每个单元包含的全部词条；单元词数；contract_status：pending

- name：最近活动记录；data：上次练到的位置；contract_status：pending

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

- id：textbookId；type：string；description：来自共用课本。；rule_status：proposed；contract_status：pending

- id：selectedUnitIds；type：string[]；description：整单元选择的ID集合，作为范围带入B-3；选择粒度已确认，具体服务字段待定。；rule_status：proposed；contract_status：pending

- id：wordCount；type：integer；description：跨单元去重规则待确认。；rule_status：proposed；contract_status：pending

- id：pageEstimate；type：number|null；description：取配置和词数估算，算法待定。；rule_status：proposed；contract_status：pending

- id：draftContext；type：object；description：建议用教材ID、范围ID隔离单元/词条/顺序/配置/滚动草稿；不作为API字段；rule_status：proposed；contract_status：pending

## 页面状态

- id：ready；description：目录可用；rule_status：confirmed

- id：none-selected；description：未选单元；rule_status：proposed

- id：catalog-loading；description：目录加载中；rule_status：proposed

- id：catalog-error；description：目录加载失败；rule_status：proposed

- id：catalog-empty；description：没有可用单元；rule_status：proposed

- id：missing-book；description：未选课本；rule_status：proposed

## 可切换演示状态

- id：none-selected；label：未选单元；scope：prototype_only

- id：ready；label：目录可用；scope：prototype_only

- id：catalog-loading；label：目录加载中；scope：prototype_only

- id：catalog-error；label：目录加载失败；scope：prototype_only

- id：catalog-empty；label：没有可用单元；scope：prototype_only

- id：missing-book；label：未选课本；scope：prototype_only

## 交互 B-2-I-01：点击单元卡/选择框

- 触发：点击单元卡/选择框

- 条件：单元目录与词表可用

- 反馈：切换整个单元选中状态，更新已选单元数和全部词数；不提供教材内容分组选择

- 跳转目标：B-2

- 携带数据：所选单元ID集合

- 规则确认程度：confirmed

- 来源：用户2026-10-12确认整单元选择

- 预览能力：一个单元只呈现一张可选卡；原型按本地测试词表聚合单元词数，不代表正式教材目录。

## 交互 B-2-I-02：点击去挑单词

- 触发：点击去挑单词

- 条件：至少一个单元为演示门槛

- 反馈：带入所选单元全部词条，在B-3逐词删选

- 跳转目标：B-3

- 携带数据：textbookId；unitIds；origin=B-2

- 规则确认程度：confirmed

- 来源：原UE B-2→B-3；用户2026-10-12确认范围仅整单元，下一步删选；零选择门槛为建议。

- 预览能力：每个选中单元都带入全部示例词；同范围返回保持已删选词的本地草稿，生产保存策略仍待定。

## 交互 B-2-I-03：点击当前课本

- 触发：点击当前课本

- 条件：主动换书

- 反馈：进入A-3选书，成功或取消返回B首页；重新进入打印时按当前课本取目录。

- 跳转目标：A-3

- 携带数据：source=B；returnAction=B-2（只记录，不自动恢复）

- 规则确认程度：confirmed

- 来源：UE 换课本入口；用户新课本规则。

- 预览能力：沿用户已确认的保存回来源首页；不同课本不会复用旧课本的选择。

## 交互 B-2-I-04：点击返回

- 触发：点击返回

- 条件：当前本页

- 反馈：回 B

- 跳转目标：B

- 携带数据：

- 规则确认程度：confirmed

- 来源：原 UE 返回 B。

- 预览能力：保留选择/位置为建议。

## 交互 B-2-I-05：缺课本/目录失败

- 触发：缺课本/目录失败

- 条件：课本为空或目录不可用

- 反馈：缺课本先选；目录错误给可恢复反馈

- 跳转目标：A-3 / B-2

- 携带数据：来源 B；待恢复动作

- 规则确认程度：proposed

- 来源：缺课本路由已确认，错误/恢复细节未定义。

- 预览能力：missing-book/catalog-error 提示，绝不借用另一课本目录。

## 返回与保留

destination：B；rule_status：confirmed；preserve：建议同课本内保留单元选择与位置；换书后的重置规则待确认。；prototype_behavior：返回 B-3 再回来保留样例选择；不保存到真实用户档案。

## 验收

- id：B-2-AC-01；given：所选范围为Unit2；when：进入挑单词页；then：范围摘要显示1单元·6词，B-3带入Unit2的六个演示词；可逐词取消。原型目录计数仅示例。；rule_status：confirmed；source：用户2026-10-12确认

- id：B-2-AC-02；given：无课本；when：进入教材功能；then：转 A-3，不默认选书。；rule_status：confirmed

- id：B-2-AC-03；given：原目录样例不足；when：查看词数；then：区分源示意计数与本次可演示词条。；rule_status：proposed

- given：预览选中数为0；when：点击下一步；then：按钮禁用，不能进入空词表生成流程；rule_status：proposed

- given：从下一步返回；when：回本页；then：同一教材与范围保持草稿；不同范围重新核对；rule_status：proposed

- given：网络或音源失败；when：重试或返回；then：保留可恢复数据，不伪造成功结果；rule_status：proposed

- given：同时选择Unit1和Unit2；when：查看范围并进入B-3；then：显示2单元及两单元完整词数，带入两单元全部词条；不能只选择Part A/Part B；rule_status：confirmed

## 原材料待确认

- id：B-2-P-01；question：跨单元汇总是否列全部单元？；rule_status：pending；source：原待确认。；recommendation：rule_status：proposed；text：建议显示涉及单元，不只写全部来自某一个。

- id：B-2-P-02；question：按周/整册复习本期撤掉，后续口径如何？；rule_status：pending；source：原待确认；本次不新增这两个入口。

## 补充未定义事项

- id：B-2-U-01；question：跨单元相同词是否去重？；rule_status：pending；source：源未给。

- id：B-2-U-02；question：上次练到依据打印/听写/练习哪个事件，是否默认选中？；rule_status：pending；source：源只给提示。

- id：B-2-U-03；question：换课本后单元/词条选择如何清空或恢复？；rule_status：pending；source：源未给。

- question：建议跨单元汇总直接列Unit编号；同册返回保留草稿，换书隔离草稿。；rule_status：proposed；source：详细设计；待模块审阅

- id：B-2-U-04；question：首次是否默认选择单元，之后是否复用上次成功导出的范围？用户尚未确认，当前选中Unit2仅为演示状态。；rule_status：pending；source：用户要求先说明课时含义；本次仅确认整单元选择。

## 实现边界

## 原型限制

## 能力与接入限制

prototype：仅演示目录选择、词表、版式和输出状态；没有真实出题、文件、支付、分享、音频或二维码服务。；预览词库为示意数据：Unit2六词沿用UE，其余演示词为界面测试样例；不代表正式教材词库、词数或版次。；新增详细状态、版式规则和草稿策略为设计建议；业务更改等待用户确认。；专题、自建与补词已接入；默写单记录、会员和词库纠错属于后续模块。；implementation：真实服务接口、鉴权、任务、额度、会员和系统调用契约未提供。；具体字段/状态名及本地持久化方式均为实现建议。；原型不证明真实文件、音频、扫码批改、正确额度或跨来源成长统计已实现。

## 预览宿主与产品 UI

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