{
  "schema_version": "2.0",
  "product": "英语默写AI版",
  "handoff_version": "0.12.3",
  "date": "2026-10-13",
  "id": "A-2-resend",
  "page_id": "A-2-resend",
  "name": "验证码 · 可以重发",
  "module": "认证及登录",
  "purpose": "A-2同页状态审阅：模拟倒计时结束，重新获取按钮恢复；点击进入60秒重发预览。不新增业务页面或短信服务。",
  "entry": {
    "from": [
      "人类画布状态预览卡",
      "AI独立状态原型"
    ],
    "preconditions": [
      "同页演示seed；手机号18500643030和验证码仅为用户示例/演示值。"
    ],
    "rule_status": "confirmed",
    "source": {
      "kind": "user_confirmation",
      "date": "2026-10-11",
      "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
    },
    "prototype_initial_state": "resend-ready"
  },
  "ui_elements": [
    {
      "id": "A-2.back",
      "type": "button",
      "label": "返回",
      "description": "返回 A-1。",
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.heading",
      "type": "text",
      "label": "其他手机号登录",
      "description": "固定标题。",
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.description",
      "type": "text",
      "label": "手机号/验证码状态提示",
      "description": "发码前提示输入手机号，只有模拟发码后显示已发提示。",
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.phone",
      "type": "input",
      "label": "手机号",
      "description": "输入/粘贴号码显示3-4-4空格，例如185 0064 3030，原始业务字段为18500643030；保持数字位置编辑和删除。",
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.send",
      "type": "button",
      "label": "获取验证码 / 重新获取",
      "description": "同页发码前后，协议前置已确认；号码格式、发送频控与服务契约待定。",
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.code",
      "type": "input",
      "label": "四位验证码",
      "description": "四槽对应可编辑的四位数字输入，支持删除、粘贴和短信自动填充；满四位自动提交，条件门槛保持原确认规则。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "channel": "browser_design_comment",
        "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
      }
    },
    {
      "id": "A-2.countdown",
      "type": "status",
      "label": "重新获取倒计时",
      "description": "源展示 59 秒，60 秒周期仅演示不是生产频控。",
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.feedback",
      "type": "status",
      "label": "短信/验证反馈",
      "description": "源报错位；具体失败文案为设计建议。",
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.login",
      "type": "button",
      "label": "登录",
      "description": "保留手动提交；与自动提交的生产关系待确认。",
      "rule_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.agreement",
      "type": "checkbox",
      "label": "我已阅读并同意",
      "description": "用户已确认发码、重发与自动/手动登录前都须勾协议。",
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.user-agreement",
      "type": "link",
      "label": "《用户协议》",
      "description": "协议同一行，链接完整不折行；正文地址待提供。",
      "rule_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "A-2.privacy",
      "type": "link",
      "label": "《隐私政策》",
      "description": "协议同一行，链接完整不折行；正文地址待提供。",
      "rule_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    }
  ],
  "data_source": [
    {
      "name": "canonical A-2服务与规则",
      "data": [
        "号码",
        "验证码",
        "同意协议",
        "发码与校验状态"
      ],
      "contract_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json",
        "detail": "与A-2同页，不另设服务或认证结果。"
      }
    }
  ],
  "data_model": [
    {
      "id": "phone",
      "type": "string",
      "description": "11位纯数字原始号码；输入展示3-4-4空格，提交不可携带展示空格。格式化已确认，地区码及服务契约仍待定义。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "prototype_example": "",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "countryCode",
      "type": "string",
      "description": "源示例 +86；其它范围未定。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "prototype_example": "+86",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "verificationCode",
      "type": "string",
      "description": "用户已确认四位验证码；建议字符串保存，保留前导零。具体字段命名及服务契约为建议。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "channel": "browser_design_comment",
        "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
      },
      "length": 4,
      "pattern": "^[0-9]{4}$",
      "confirmed_constraints": {
        "length": 4,
        "allowed_characters": "0-9",
        "rule_status": "confirmed"
      }
    },
    {
      "id": "agreementAccepted",
      "type": "boolean",
      "description": "协议业务门槛已确认；具体字段名和存证契约待定。原型未勾选禁用发码/提交。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "smsStage",
      "type": "enum",
      "description": "建议 enter-phone/sending/code-sent/verifying/error，同页不加 ID。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "resendSeconds",
      "type": "integer",
      "description": "原型从 60 到 0，真实频控未定。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "prototype_example": 60,
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "verificationToken",
      "type": "string|null",
      "description": "源通过后下发 token，字段/有效期契约未定；预览不生成真实 token。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "accountClass",
      "type": "enum",
      "description": "源新/老账号概念，具体来源待定。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "textbookSetup",
      "type": "enum:unstarted|skipped|selected",
      "description": "课本selected/unstarted/skipped及引导状态供首页展示使用；不再阻断已登录启动或成功登录进入B。变量名和持久化契约待实现。",
      "rule_status": "proposed",
      "contract_status": "pending",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      }
    },
    {
      "id": "phoneDisplayValue",
      "type": "derived string",
      "description": "由纯数字phone派生3-4-4展示，最长13字符；不作为服务提交字段。",
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "file": "A-2.function.json"
      },
      "prototype_example": "185 0064 3030"
    }
  ],
  "interactions": [
    {
      "id": "A-2-I-01",
      "trigger": "点击返回",
      "condition": "在 A-2",
      "effect": "返回本机号登录",
      "destination": "A-1",
      "payload": [],
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-01",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "当前预览会话保留输入/倒计时为演示；生产敏感验证码保留期限待定。"
    },
    {
      "id": "A-2-I-02",
      "trigger": "输入/修改手机号",
      "condition": "发码前或需要换号",
      "effect": "将输入/粘贴提取为最多11位纯数字并显示3-4-4空格，保存数字光标位置；业务值不含空格。",
      "destination": "A-2",
      "payload": [
        "手机号"
      ],
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-02",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "18500643030显示185 0064 3030；展示删除分隔空格时删除相邻数字、编辑光标保留；换号清空码/已发状态为预览建议。"
    },
    {
      "id": "A-2-I-03",
      "trigger": "切换协议勾选",
      "condition": "用户主动选择",
      "effect": "更新协议选择；未勾选禁止获取及重新获取验证码，自动与手动登录也需同意",
      "destination": "A-2",
      "payload": [
        "协议状态"
      ],
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-03",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "未勾选时发码、重发和登录按钮禁用；勾选后再依据号码、倒计时和四位码条件启用。"
    },
    {
      "id": "A-2-I-04",
      "trigger": "点击获取验证码",
      "condition": "协议已选；号码合法、频控、倒计时细节为建议或服务契约待确认",
      "effect": "进入请求态，模拟成功后切换已发码状态和倒计时",
      "destination": "A-2",
      "payload": [
        "手机号",
        "发送状态"
      ],
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-04",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "先勾协议且演示号码合法、未提交、不在倒计时，点击后切换已发码与60秒演示；无真实短信请求，频控值仍待定。",
      "confirmed_rules": [
        {
          "rule": "发码/重新获取验证码前须勾选协议",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        }
      ]
    },
    {
      "id": "A-2-I-05",
      "trigger": "输入满四位验证码",
      "condition": "协议已选，当前号码已发码，输入恰好四位数字；真实校验成功后进入首页B。",
      "effect": "真实认证成功后建立会话，统一进入B首页；无课本在首页引导选择。",
      "destination": "B",
      "payload": [
        "手机号",
        "四位码",
        "校验结果/成功 token 概念"
      ],
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "channel": "browser_design_comment",
        "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
      },
      "prototype_behavior": "仅模拟认证请求与结果；成功进入B首页，未选书显示首页引导；错误留当前页，无真实token。",
      "routing_branches": [
        {
          "condition": "真实认证成功，无论新老账号及有无课本",
          "destination": "B"
        }
      ],
      "confirmed_rules": [
        {
          "rule": "提交登录必须同意协议",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        },
        {
          "rule": "登录成功统一B首页，选课本在首页引导",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        },
        {
          "rule": "验证码统一4位，恰好四位数字才提交；原六位长度已由用户修改覆盖。",
          "rule_status": "confirmed",
          "source": {
            "kind": "user_confirmation",
            "date": "2026-10-11",
            "channel": "browser_design_comment",
            "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
          }
        }
      ]
    },
    {
      "id": "A-2-I-06",
      "trigger": "点击登录",
      "condition": "协议门槛已确认；手动/自动提交的产品关系及其它服务条件待确认",
      "effect": "真实认证成功后建立会话，统一进入B首页；无课本在首页引导选择。",
      "destination": "B",
      "payload": [
        "手机号",
        "四位码"
      ],
      "rule_status": "pending",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-06",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "仅模拟认证请求与结果；成功进入B首页，未选书显示首页引导；错误留当前页，无真实token。",
      "routing_branches": [
        {
          "condition": "真实认证成功，无论新老账号及有无课本",
          "destination": "B"
        }
      ],
      "confirmed_rules": [
        {
          "rule": "提交登录必须同意协议",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        },
        {
          "rule": "登录成功统一B首页，选课本在首页引导",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        }
      ]
    },
    {
      "id": "A-2-I-07",
      "trigger": "倒计时结束后点击重新获取",
      "condition": "协议已选；号码合法、频控、倒计时细节为建议或服务契约待确认",
      "effect": "重新发送验证码，刷新倒计时/失败策略待定",
      "destination": "A-2",
      "payload": [
        "手机号"
      ],
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-07",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "先勾协议且演示号码合法、未提交、不在倒计时，点击后切换已发码与60秒演示；无真实短信请求，频控值仍待定。",
      "confirmed_rules": [
        {
          "rule": "发码/重新获取验证码前须勾选协议",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        }
      ]
    },
    {
      "id": "A-2-I-08",
      "trigger": "系统短信验证码自动填充",
      "condition": "平台提供验证码填充能力",
      "effect": "真实认证成功后建立会话，统一进入B首页；无课本在首页引导选择。",
      "destination": "B",
      "payload": [
        "四位验证码"
      ],
      "rule_status": "confirmed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-08",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "系统填充接入同一四位数字输入与提交流程；本包无真实短信或系统填充服务。",
      "routing_branches": [
        {
          "condition": "真实认证成功，无论新老账号及有无课本",
          "destination": "B"
        }
      ],
      "confirmed_rules": [
        {
          "rule": "提交登录必须同意协议",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        },
        {
          "rule": "登录成功统一B首页，选课本在首页引导",
          "rule_status": "confirmed",
          "source": {
            "page_id": "A-2",
            "file": "A-2.function.json",
            "kind": "current_user_confirmation"
          }
        },
        {
          "rule": "系统验证码自动填充接收四位数字，并按同一四位条件提交。",
          "rule_status": "confirmed",
          "source": {
            "kind": "user_confirmation",
            "date": "2026-10-11",
            "channel": "browser_design_comment",
            "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
          }
        }
      ]
    },
    {
      "id": "A-2-I-09",
      "trigger": "校验失败/验证码错误",
      "condition": "真实校验结果失败",
      "effect": "不进入成功目标；错误反馈、清码、锁定和重试规则未定",
      "destination": "A-2",
      "payload": [],
      "rule_status": "proposed",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-09",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "示例错误保留手机号，显示就地反馈，可重新输入；不演示未确认锁定阈值。"
    },
    {
      "id": "A-2-I-10",
      "trigger": "点击协议链接",
      "condition": "正文待提供",
      "effect": "阅读对应协议边界",
      "destination": "user-agreement / privacy-policy",
      "payload": [
        "协议类型"
      ],
      "rule_status": "pending",
      "source": {
        "page_id": "A-2",
        "interaction_id": "A-2-I-10",
        "file": "A-2.function.json",
        "detail": "同页业务操作和当前确认规则，与canonical A-2一致。"
      },
      "prototype_behavior": "明确边界说明，可返回保留预览会话，不显示虚构正文。"
    }
  ],
  "back_behavior": {
    "destination": "A-1",
    "rule_status": "confirmed",
    "preserve": "同A-2：预览会话保留手机号、同意协议和倒计时。生产保留时限待确认。",
    "prototype_behavior": "状态快照内返回使用canonical A-2对应业务导航，不创建新短信路由。"
  },
  "states": [
    {
      "id": "resend-ready",
      "description": "模拟倒计时结束，重新获取按钮恢复；点击进入60秒重发预览。",
      "rule_status": "proposed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "prototype_behavior": "仅设置同页预览，不发送或校验真实短信。"
    }
  ],
  "acceptance_criteria": [
    {
      "id": "A-2-resend-AC-01",
      "given": "打开独立状态预览",
      "when": "加载产品画面",
      "then": "模拟倒计时结束，重新获取按钮恢复；点击进入60秒重发预览。；操作和跳转仍使用canonical A-2业务页。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
      },
      "verification_scope": "prototype"
    },
    {
      "id": "A-2-resend-AC-4-DIGITS",
      "given": "当前手机号合法、已发码并同意协议",
      "when": "输入或系统填充四位数字",
      "then": "四个槽位对应显示；未满四位不提交，满四位执行既有自动提交；登录中阻止重复，成功B、失败当前页。",
      "rule_status": "confirmed",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "channel": "browser_design_comment",
        "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
      },
      "verification_scope": "product"
    }
  ],
  "pending_from_source": [
    {
      "id": "A-2-P-01",
      "question": "输错几次锁定、锁多久？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "原待确认。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-2-P-02",
      "question": "服务端频控和重发周期是什么？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "原待确认。"
      },
      "rule_status": "pending",
      "recommendation": {
        "rule_status": "proposed",
        "text": "60 秒仅展示。"
      }
    },
    {
      "id": "A-2-P-03",
      "question": "短信验证码自动填充需要支持哪些系统和版本，如何真机验收？",
      "rule_status": "pending",
      "source": {
        "detail": "源待确认栏目提出需支持自动填充；能力要求保留，平台方案与验收待确认。"
      }
    }
  ],
  "additional_unspecified": [
    {
      "id": "A-2-U-01",
      "question": "地区码支持、非中国大陆手机号及正式校验契约如何定义？3-4-4展示和原始纯数字值已确认。",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "原 additional_unspecified。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-2-U-02",
      "question": "协议文本、版本及同意记录如何存证？",
      "source": {
        "kind": "user_confirmation",
        "date": "2026-10-11",
        "detail": "原UE认证与课本设置参考；原登录先选书/课本分流规则已被本次用户修改覆盖。当前登录成功和已登录启动统一B，课本由首页引导选择。",
        "superseded_routing_source": {
          "kind": "user_confirmation",
          "date": "2026-10-11",
          "detail": "当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
        }
      },
      "rule_status": "pending"
    },
    {
      "id": "A-2-U-03",
      "question": "手动登录是否保留，与自动提交如何防重复？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "原 additional_unspecified。"
      },
      "rule_status": "pending",
      "recommendation": {
        "rule_status": "proposed",
        "text": "共用一个请求流程，请求中禁用。"
      }
    },
    {
      "id": "A-2-U-04",
      "question": "验证码有效期、网络/发送/校验失败如何提示重试？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "原 additional_unspecified。"
      },
      "rule_status": "pending"
    },
    {
      "id": "A-2-U-05",
      "question": "返回再进时号码、协议、验证码、倒计时保留多久？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "原 additional_unspecified。"
      },
      "rule_status": "pending",
      "recommendation": {
        "rule_status": "proposed",
        "text": "预览演示保留，生产敏感信息时限待定。"
      }
    },
    {
      "id": "A-2-U-07",
      "question": "修改号码是否使验证码/倒计时失效？",
      "source": {
        "files": [
          "英语默写代码/app说明示例/login-source-specs.json#/A-2",
          "英语默写代码/xzx-pages/pages/A-2.html"
        ],
        "detail": "源未定义。"
      },
      "rule_status": "pending",
      "recommendation": {
        "rule_status": "proposed",
        "text": "换号后清空验证码和该号码已发状态，避免混配。"
      }
    }
  ],
  "references": {
    "interface": "A-2-resend.interface.md",
    "prototype": "A-2-resend.prototype.html",
    "design": "UI-DESIGN.md"
  },
  "sources": [
    "英语默写代码/app说明示例/login-source-specs.json#/A-2",
    "英语默写代码/xzx-pages/pages/A-2.html"
  ],
  "source_of_truth": {
    "visual": "A-2-resend.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首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。"
    },
    {
      "kind": "user_confirmation",
      "date": "2026-10-11",
      "channel": "browser_design_comment",
      "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
    }
  ],
  "prototype_states": [
    {
      "id": "resend-ready",
      "label": "验证码 · 可以重发",
      "scope": "prototype_only"
    }
  ],
  "default_preview_state": "resend-ready",
  "parent_page_id": "A-2",
  "page_kind": "state-preview",
  "state_preview": {
    "canonical_page_id": "A-2",
    "state_id": "resend-ready",
    "navigation_target": "A-2",
    "seed_description": "模拟倒计时结束，重新获取按钮恢复；点击进入60秒重发预览。",
    "seed_is_mock": true
  },
  "verification_code_rule": {
    "length": 4,
    "allowed_characters": "ASCII digits 0-9",
    "rule_status": "confirmed",
    "source": {
      "kind": "user_confirmation",
      "date": "2026-10-11",
      "channel": "browser_design_comment",
      "detail": "用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。"
    },
    "auto_submit": "满4位且当前手机号已发码、协议已同意时进入既有提交；具体服务鉴权与校验契约待实现。"
  },
  "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": []
}
