{
  "schema_version": "2.0",
  "product": "英语默写AI版",
  "handoff_version": "0.12.3",
  "date": "2026-10-13",
  "id": "B-2-empty",
  "name": "选单元 · 未选单元",
  "module": "默写单-教材默写单与打印",
  "purpose": "B-2同页状态审阅：选单元 · 未选单元；只按整个单元选择，不增加独立业务路由。",
  "entry": {
    "from": [
      "B：教材打印",
      "A-3：无课本待恢复动作（建议）",
      "B-3：教材线返回"
    ],
    "preconditions": [
      "已有当前课本；无课本先按已确认规则进 A-3。"
    ],
    "rule_status": "confirmed",
    "source": "原 UE B-2；用户课本规则。"
  },
  "ui_elements": [
    {
      "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"
    }
  ],
  "data_source": [
    {
      "name": "当前课本单元目录/词库",
      "data": [
        "单元编号与名称",
        "每个单元包含的全部词条",
        "单元词数"
      ],
      "contract_status": "pending"
    },
    {
      "name": "最近活动记录",
      "data": [
        "上次练到的位置"
      ],
      "contract_status": "pending"
    }
  ],
  "data_model": [
    {
      "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"
    }
  ],
  "interactions": [
    {
      "id": "B-2-I-01",
      "trigger": "点击单元卡/选择框",
      "condition": "单元目录与词表可用",
      "effect": "切换整个单元选中状态，更新已选单元数和全部词数；不提供教材内容分组选择",
      "destination": "B-2",
      "payload": [
        "所选单元ID集合"
      ],
      "rule_status": "confirmed",
      "source": "用户2026-10-12确认整单元选择",
      "prototype_behavior": "一个单元只呈现一张可选卡；原型按本地测试词表聚合单元词数，不代表正式教材目录。"
    },
    {
      "id": "B-2-I-02",
      "trigger": "点击去挑单词",
      "condition": "至少一个单元为演示门槛",
      "effect": "带入所选单元全部词条，在B-3逐词删选",
      "destination": "B-3",
      "payload": [
        "textbookId",
        "unitIds",
        "origin=B-2"
      ],
      "rule_status": "confirmed",
      "source": "原UE B-2→B-3；用户2026-10-12确认范围仅整单元，下一步删选；零选择门槛为建议。",
      "prototype_behavior": "每个选中单元都带入全部示例词；同范围返回保持已删选词的本地草稿，生产保存策略仍待定。"
    },
    {
      "id": "B-2-I-03",
      "trigger": "点击当前课本",
      "condition": "主动换书",
      "effect": "进入A-3选书，成功或取消返回B首页；重新进入打印时按当前课本取目录。",
      "destination": "A-3",
      "payload": [
        "source=B",
        "returnAction=B-2（只记录，不自动恢复）"
      ],
      "rule_status": "confirmed",
      "source": "UE 换课本入口；用户新课本规则。",
      "prototype_behavior": "沿用户已确认的保存回来源首页；不同课本不会复用旧课本的选择。"
    },
    {
      "id": "B-2-I-04",
      "trigger": "点击返回",
      "condition": "当前本页",
      "effect": "回 B",
      "destination": "B",
      "payload": [],
      "rule_status": "confirmed",
      "source": "原 UE 返回 B。",
      "prototype_behavior": "保留选择/位置为建议。"
    },
    {
      "id": "B-2-I-05",
      "trigger": "缺课本/目录失败",
      "condition": "课本为空或目录不可用",
      "effect": "缺课本先选；目录错误给可恢复反馈",
      "destination": "A-3 / B-2",
      "payload": [
        "来源 B",
        "待恢复动作"
      ],
      "rule_status": "proposed",
      "source": "缺课本路由已确认，错误/恢复细节未定义。",
      "prototype_behavior": "missing-book/catalog-error 提示，绝不借用另一课本目录。"
    }
  ],
  "back_behavior": {
    "destination": "B",
    "rule_status": "confirmed",
    "preserve": "建议同课本内保留单元选择与位置；换书后的重置规则待确认。",
    "prototype_behavior": "返回 B-3 再回来保留样例选择；不保存到真实用户档案。"
  },
  "states": [
    {
      "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"
    }
  ],
  "acceptance_criteria": [
    {
      "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"
    }
  ],
  "pending_from_source": [
    {
      "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": "原待确认；本次不新增这两个入口。"
    }
  ],
  "additional_unspecified": [
    {
      "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": "用户要求先说明课时含义；本次仅确认整单元选择。"
    }
  ],
  "page_id": "B-2-empty",
  "references": {
    "interface": "B-2-empty.interface.md",
    "prototype": "B-2-empty.prototype.html",
    "design": "UI-DESIGN.md"
  },
  "sources": [
    "英语默写代码/xzx-pages/pages/B-2.html"
  ],
  "source_of_truth": {
    "visual": "B-2-empty.prototype.html 屏幕内产品 UI",
    "behavior": "原 UE 明确要求及当前用户已确认规则；proposed 与 pending 不构成已确认业务契约",
    "viewer_chrome": "手机外壳、项目导航、演示选择器、说明与页面编号属于预览宿主"
  },
  "limitations": {
    "prototype": [
      "仅演示目录选择、词表、版式和输出状态；没有真实出题、文件、支付、分享、音频或二维码服务。",
      "预览词库为示意数据：Unit2六词沿用UE，其余演示词为界面测试样例；不代表正式教材词库、词数或版次。",
      "新增详细状态、版式规则和草稿策略为设计建议；业务更改等待用户确认。",
      "专题、自建与补词已接入；默写单记录、会员和词库纠错属于后续模块。"
    ],
    "implementation": [
      "真实服务接口、鉴权、任务、额度、会员和系统调用契约未提供。",
      "具体字段/状态名及本地持久化方式均为实现建议。",
      "原型不证明真实文件、音频、扫码批改、正确额度或跨来源成长统计已实现。"
    ]
  },
  "prototype_states": [
    {
      "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"
    }
  ],
  "ui_family": "print",
  "parent_page_id": "B-2",
  "default_preview_state": "none-selected",
  "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": [
    "默写单"
  ]
}
