{
  "schema_version": "2.0",
  "product": "英语默写AI版",
  "handoff_version": "0.12.3",
  "date": "2026-10-13",
  "id": "B-3",
  "name": "挑单词 · 默写线",
  "module": "默写单-教材默写单与打印",
  "purpose": "教材完整单元词表中删选默写词，设置顺序，补词共用自建流程；专题现直接B-4，不经此页。",
  "entry": {
    "from": [
      "B-2：单元范围",
      "B-1：专题清单",
      "B：专题快捷卡",
      "B-4：返回教材线"
    ],
    "preconditions": [
      "存在所选范围/专题来源；来源必须保留以便正确返回。"
    ],
    "rule_status": "confirmed",
    "source": "原 UE B-3。",
    "scope_note": "本页仅教材挑词；专题入口及返回不经本页。"
  },
  "ui_elements": [
    {
      "id": "B-3.back",
      "type": "button",
      "label": "返回",
      "description": "按 B-2/B-1/B 来源动态回。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.title",
      "type": "heading",
      "label": "挑单词",
      "description": "默写线标题。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.correction",
      "type": "button",
      "label": "纠错",
      "description": "共用22帮助反馈，带入当前教材范围词表与来源；具体提交/审核/回执后续补齐。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.bulk",
      "type": "choice-group",
      "label": "全选 / 没打印过的 / 反选 / 补充几个词",
      "description": "全选/反选作用于当前范围；没打印过的以成功导出练习卷的词为准；补词共用03手输/粘贴。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.words",
      "type": "list",
      "label": "词条与选择框",
      "description": "单词、音标、词性/释义需与教材一致；可点选。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.audio",
      "type": "button",
      "label": "试听",
      "description": "点播放当前词，不因试听改变选中。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.hint",
      "type": "text",
      "label": "来源/打乱建议",
      "description": "源提示上次默过可打乱，真实触发依据待定。",
      "rule_status": "pending"
    },
    {
      "id": "B-3.order",
      "type": "segmented-control",
      "label": "课本顺序 / 打乱",
      "description": "出题顺序位于当前范围提示下方、批量操作及词表上方；可切换课本顺序/打乱顺序。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.summary",
      "type": "status",
      "label": "已选词数 · 来源 · 约页数",
      "description": "动态摘要，实际计算口径待定。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3.next",
      "type": "button",
      "label": "选择样式",
      "description": "进入B-4选择样式；零选禁用为既有设计建议。",
      "rule_status": "confirmed",
      "source": "用户2026-10-12最新修改"
    }
  ],
  "data_source": [
    {
      "name": "教材/专题词库",
      "data": [
        "稳定词条 ID",
        "词/音标/词性/释义"
      ],
      "contract_status": "pending"
    },
    {
      "name": "音频与活动记录",
      "data": [
        "试听音源",
        "是否练过"
      ],
      "contract_status": "pending"
    }
  ],
  "data_model": [
    {
      "id": "originPageId",
      "type": "string",
      "description": "B/B-1/B-2 来源。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "sourceContext",
      "type": "object",
      "description": "教材/专题、范围、组别。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "selectedWordIds",
      "type": "string[]",
      "description": "选择词条集合。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "orderMode",
      "type": "enum",
      "description": "textbook/shuffle 建议命名。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "orderedWordIds",
      "type": "string[]",
      "description": "随机实际序列保存时机待定。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "audioStatus",
      "type": "enum",
      "description": "仅演示 loading/playing/error，实际音源待定。",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "draftContext",
      "type": "object",
      "description": "建议用教材ID、范围ID隔离单元/词条/顺序/配置/滚动草稿；不作为API字段",
      "rule_status": "proposed",
      "contract_status": "pending"
    },
    {
      "id": "printedExerciseWordIdsByTextbook",
      "type": "object",
      "description": "按教材查询成功导出练习卷包含的词条记录；单独答案卷不计入。业务口径已确认，具体服务字段和分页成功映射契约待定。",
      "rule_status": "proposed",
      "contract_status": "pending"
    }
  ],
  "interactions": [
    {
      "id": "B-3-I-01",
      "trigger": "点击词条选择区域",
      "condition": "词条可用",
      "effect": "切换单词选择并更新汇总",
      "destination": "B-3",
      "payload": [
        "所选词 ID"
      ],
      "rule_status": "confirmed",
      "source": "源词条单选视觉/挑词职责。",
      "prototype_behavior": "只按源样例词条动态计数，不凭空扩展课本词库。"
    },
    {
      "id": "B-3-I-02",
      "trigger": "点击全选/反选",
      "condition": "当前词表存在",
      "effect": "批量更新选择",
      "destination": "B-3",
      "payload": [
        "选择集合"
      ],
      "rule_status": "confirmed",
      "source": "源批量控件。",
      "prototype_behavior": "全选/反选真实作用于当前样例；跨筛选作用范围待定。"
    },
    {
      "id": "B-3-I-03",
      "trigger": "点击没打印过的",
      "condition": "当前教材范围词表可用，取得成功导出练习卷的词条记录",
      "effect": "选中当前范围内尚未成功导出过练习卷的词；单独导出答案卷不影响筛选",
      "destination": "B-3",
      "payload": [
        "当前范围词条ID",
        "按教材区分的练习卷成功导出词条记录"
      ],
      "rule_status": "confirmed",
      "source": "用户2026-10-12确认",
      "prototype_behavior": "本地示例历史red、blue已打印；练习卷/双卷成功演示导出后更新记录，答案卷单独导出不更新。真实历史需接服务。"
    },
    {
      "id": "B-3-I-04",
      "trigger": "点击试听",
      "condition": "当前词有可用音频",
      "effect": "播放当前词，反馈播放状态",
      "destination": "B-3",
      "payload": [
        "词条 ID"
      ],
      "rule_status": "confirmed",
      "source": "原交互点▶播当前词。",
      "prototype_behavior": "audio-playing/audio-error 是状态演示；无正式音源时不声称教材原声。"
    },
    {
      "id": "B-3-I-05",
      "trigger": "点击补充几个词/纠错",
      "condition": "当前教材/范围/词条上下文已取得",
      "effect": "补词进入F的补词模式，核对后回填原词表；纠错共用22帮助反馈",
      "destination": "F（补词模式）/ CORRECTION",
      "payload": [
        "教材ID",
        "教材单元ID集合",
        "当前范围词表ID集合",
        "已选词ID集合",
        "返回来源B-3"
      ],
      "rule_status": "confirmed",
      "source": "用户2026-10-12确认共用能力及后续模块补齐",
      "prototype_behavior": "手输／粘贴纯英文、核对释义后添加回原选择；反馈未发送真实服务"
    },
    {
      "id": "B-3-I-06",
      "trigger": "切换课本顺序/打乱",
      "condition": "当前有选择词",
      "effect": "更新顺序模式，生成序列策略待定",
      "destination": "B-3",
      "payload": [
        "顺序模式"
      ],
      "rule_status": "confirmed",
      "source": "源两段控件。",
      "prototype_behavior": "演示显示模式；打乱的固定种子/重印序列不定义为规则。"
    },
    {
      "id": "B-3-I-07",
      "trigger": "点击选择样式",
      "condition": "源路由明确，至少一词为建议门槛",
      "effect": "带所选词、来源与顺序进入配置",
      "destination": "B-4",
      "payload": [
        "选择词集合",
        "顺序",
        "returnPage=B-3",
        "来源上下文"
      ],
      "rule_status": "confirmed",
      "source": "用户2026-10-12最新修改按钮文案；路由B-4保持。",
      "prototype_behavior": "选中才能点击，保持本地草稿；不创建文件。"
    },
    {
      "id": "B-3-I-08",
      "trigger": "点击返回",
      "condition": "来源为 B-2/B-1/B",
      "effect": "回实际来源",
      "destination": "entry.originPageId",
      "payload": [
        "来源上下文"
      ],
      "rule_status": "confirmed",
      "source": "原 UE 返回回来处。",
      "prototype_behavior": "返回还原分组/范围/位置，保留选择为建议。"
    }
  ],
  "back_behavior": {
    "destination": "B-2 / B-1 / B（按来源）",
    "rule_status": "confirmed",
    "preserve": "同一教材范围内保留所选词、顺序和列表位置；范围变化后重建词表；为设计建议。",
    "prototype_behavior": "同一预览会话回实际来源，B-4 返回仍保留草稿。"
  },
  "states": [
    {
      "id": "ready",
      "description": "已选单词",
      "rule_status": "confirmed"
    },
    {
      "id": "none-selected",
      "description": "未选单词",
      "rule_status": "proposed"
    },
    {
      "id": "audio-error",
      "description": "音源加载失败",
      "rule_status": "proposed"
    },
    {
      "id": "words-error",
      "description": "词表加载失败",
      "rule_status": "proposed"
    },
    {
      "id": "missing-fields",
      "description": "释义或音标缺失",
      "rule_status": "proposed"
    }
  ],
  "acceptance_criteria": [
    {
      "id": "B-3-AC-01",
      "given": "从三个来源进入",
      "when": "点返回",
      "then": "分别回 B-2/B-1/B。",
      "rule_status": "confirmed"
    },
    {
      "id": "B-3-AC-02",
      "given": "改变选择/顺序",
      "when": "去打印再返回",
      "then": "同会话保持所选与顺序，试听不误切选择。",
      "rule_status": "proposed"
    },
    {
      "id": "B-3-AC-03",
      "given": "词库有音标释义",
      "when": "浏览/试听",
      "then": "教材内容一致，不把示意音源当原声。",
      "rule_status": "confirmed"
    },
    {
      "given": "预览选中数为0",
      "when": "点击下一步",
      "then": "按钮禁用，不能进入空词表生成流程",
      "rule_status": "proposed"
    },
    {
      "given": "从下一步返回",
      "when": "回本页",
      "then": "同一教材与范围保持草稿；不同范围重新核对",
      "rule_status": "proposed"
    },
    {
      "given": "网络或音源失败",
      "when": "重试或返回",
      "then": "保留可恢复数据，不伪造成功结果",
      "rule_status": "proposed"
    },
    {
      "given": "当前范围有已成功导出练习卷的词条",
      "when": "点击没打印过的",
      "then": "只选中其余词；已导出答案卷的词仍可被选中",
      "rule_status": "confirmed"
    },
    {
      "given": "本次导出包含练习卷",
      "when": "文件成功生成",
      "then": "记录成功文件对应的练习卷词条；生成失败不记录",
      "rule_status": "confirmed"
    },
    {
      "given": "查看挑词页",
      "when": "选择顺序或进入下一步",
      "then": "出题顺序在词表上方；点击选择样式进入B-4",
      "rule_status": "confirmed"
    }
  ],
  "pending_from_source": [
    {
      "id": "B-3-P-01",
      "question": "每条词库都有音标和词性吗？",
      "rule_status": "pending",
      "source": "原待确认。"
    }
  ],
  "additional_unspecified": [
    {
      "id": "B-3-U-02",
      "question": "帮助反馈里的词库纠错如何提交、审核、回执？在22帮助与客服模块细化。",
      "rule_status": "pending",
      "source": "已确认共用反馈；具体流程尚未定义。"
    },
    {
      "id": "B-3-U-03",
      "question": "随机序列何时固定，重印是否保存原顺序？",
      "rule_status": "pending",
      "source": "源只顺序选择。"
    },
    {
      "id": "B-3-U-04",
      "question": "零选/缺释义/重复词如何拦截？",
      "rule_status": "pending",
      "source": "源未给。"
    },
    {
      "question": "建议按相同词条ID去重，保留教材来源；跨单元同拼写但不同词义不自动合并。",
      "rule_status": "proposed"
    }
  ],
  "page_id": "B-3",
  "references": {
    "interface": "B-3.interface.md",
    "prototype": "B-3.prototype.html",
    "design": "UI-DESIGN.md"
  },
  "sources": [
    "英语默写代码/xzx-pages/pages/B-3.html"
  ],
  "source_of_truth": {
    "visual": "B-3.prototype.html 屏幕内产品 UI",
    "behavior": "原 UE 明确要求及当前用户已确认规则；proposed 与 pending 不构成已确认业务契约",
    "viewer_chrome": "手机外壳、项目导航、演示选择器、说明与页面编号属于预览宿主"
  },
  "limitations": {
    "prototype": [
      "仅演示目录选择、词表、版式和输出状态；没有真实出题、文件、支付、分享、音频或二维码服务。",
      "预览词库为示意数据：Unit2六词沿用UE，其余演示词为界面测试样例；不代表正式教材词库、词数或版次。",
      "新增详细状态、版式规则和草稿策略为设计建议；业务更改等待用户确认。",
      "专题、自建与补词已接入；默写单记录、会员和词库纠错属于后续模块。"
    ],
    "implementation": [
      "真实服务接口、鉴权、任务、额度、会员和系统调用契约未提供。",
      "具体字段/状态名及本地持久化方式均为实现建议。",
      "原型不证明真实文件、音频、扫码批改、正确额度或跨来源成长统计已实现。"
    ]
  },
  "prototype_states": [
    {
      "id": "ready",
      "label": "已选单词",
      "scope": "prototype_only"
    },
    {
      "id": "none-selected",
      "label": "未选单词",
      "scope": "prototype_only"
    },
    {
      "id": "audio-error",
      "label": "音源加载失败",
      "scope": "prototype_only"
    },
    {
      "id": "words-error",
      "label": "词表加载失败",
      "scope": "prototype_only"
    },
    {
      "id": "missing-fields",
      "label": "释义或音标缺失",
      "scope": "prototype_only"
    }
  ],
  "ui_family": "print",
  "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": [
    "默写单"
  ]
}
