# A-2-sent · 验证码 · 倒计时

产品：英语默写AI版 · 交付 0.12.3 · 日期 2026-10-13 · 模块：认证及登录

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

## 职责与进入条件

A-2同页状态审阅：已模拟发送验证码、验证码空、46秒倒计时（实时递减），重新获取按钮禁用。不新增业务页面或短信服务。

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：countdown

## 界面元素

- 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

## 数据与来源

- name：canonical A-2服务与规则；data：号码；验证码；同意协议；发码与校验状态；contract_status：pending；source：page_id：A-2；file：A-2.function.json；detail：与A-2同页，不另设服务或认证结果。

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

- 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

## 页面状态

- id：countdown；description：已模拟发送验证码、验证码空、46秒倒计时（实时递减），重新获取按钮禁用。；rule_status：proposed；source：kind：user_confirmation；date：2026-10-11；detail：当前修改：产品名英语默写AI版，沿用“按课本出默写单，打印就能用”；本机号码完整显示、协议不折行、其他手机号入口加强；短信号码显示3-4-4空格并提供多个状态画面；登录成功统一进入B首页，选课本改为进入首页后通过可关闭引导卡发起。发码前同意协议规则继续生效。；prototype_behavior：仅设置同页预览，不发送或校验真实短信。

## 可切换演示状态

- id：countdown；label：验证码 · 倒计时；scope：prototype_only

## 交互 A-2-I-01：点击返回

- 触发：点击返回

- 条件：在 A-2

- 反馈：返回本机号登录

- 跳转目标：A-1

- 携带数据：

- 规则确认程度：confirmed

- 来源：page_id：A-2；interaction_id：A-2-I-01；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：当前预览会话保留输入/倒计时为演示；生产敏感验证码保留期限待定。

## 交互 A-2-I-02：输入/修改手机号

- 触发：输入/修改手机号

- 条件：发码前或需要换号

- 反馈：将输入/粘贴提取为最多11位纯数字并显示3-4-4空格，保存数字光标位置；业务值不含空格。

- 跳转目标：A-2

- 携带数据：手机号

- 规则确认程度：confirmed

- 来源：page_id：A-2；interaction_id：A-2-I-02；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：18500643030显示185 0064 3030；展示删除分隔空格时删除相邻数字、编辑光标保留；换号清空码/已发状态为预览建议。

## 交互 A-2-I-03：切换协议勾选

- 触发：切换协议勾选

- 条件：用户主动选择

- 反馈：更新协议选择；未勾选禁止获取及重新获取验证码，自动与手动登录也需同意

- 跳转目标：A-2

- 携带数据：协议状态

- 规则确认程度：confirmed

- 来源：page_id：A-2；interaction_id：A-2-I-03；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：未勾选时发码、重发和登录按钮禁用；勾选后再依据号码、倒计时和四位码条件启用。

## 交互 A-2-I-04：点击获取验证码

- 触发：点击获取验证码

- 条件：协议已选；号码合法、频控、倒计时细节为建议或服务契约待确认

- 反馈：进入请求态，模拟成功后切换已发码状态和倒计时

- 跳转目标：A-2

- 携带数据：手机号；发送状态

- 规则确认程度：proposed

- 来源：page_id：A-2；interaction_id：A-2-I-04；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：先勾协议且演示号码合法、未提交、不在倒计时，点击后切换已发码与60秒演示；无真实短信请求，频控值仍待定。

## 交互 A-2-I-05：输入满四位验证码

- 触发：输入满四位验证码

- 条件：协议已选，当前号码已发码，输入恰好四位数字；真实校验成功后进入首页B。

- 反馈：真实认证成功后建立会话，统一进入B首页；无课本在首页引导选择。

- 跳转目标：B

- 携带数据：手机号；四位码；校验结果/成功 token 概念

- 规则确认程度：confirmed

- 来源：kind：user_confirmation；date：2026-10-11；channel：browser_design_comment；detail：用户最新标注：所有验证码统一4位；沿用已确认自动提交规则，输入满4位且号码/发码/协议条件齐备时提交。覆盖原UE验证码位数，四位要求已确认。

- 预览能力：仅模拟认证请求与结果；成功进入B首页，未选书显示首页引导；错误留当前页，无真实token。

## 交互 A-2-I-06：点击登录

- 触发：点击登录

- 条件：协议门槛已确认；手动/自动提交的产品关系及其它服务条件待确认

- 反馈：真实认证成功后建立会话，统一进入B首页；无课本在首页引导选择。

- 跳转目标：B

- 携带数据：手机号；四位码

- 规则确认程度：pending

- 来源：page_id：A-2；interaction_id：A-2-I-06；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：仅模拟认证请求与结果；成功进入B首页，未选书显示首页引导；错误留当前页，无真实token。

## 交互 A-2-I-07：倒计时结束后点击重新获取

- 触发：倒计时结束后点击重新获取

- 条件：协议已选；号码合法、频控、倒计时细节为建议或服务契约待确认

- 反馈：重新发送验证码，刷新倒计时/失败策略待定

- 跳转目标：A-2

- 携带数据：手机号

- 规则确认程度：proposed

- 来源：page_id：A-2；interaction_id：A-2-I-07；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：先勾协议且演示号码合法、未提交、不在倒计时，点击后切换已发码与60秒演示；无真实短信请求，频控值仍待定。

## 交互 A-2-I-08：系统短信验证码自动填充

- 触发：系统短信验证码自动填充

- 条件：平台提供验证码填充能力

- 反馈：真实认证成功后建立会话，统一进入B首页；无课本在首页引导选择。

- 跳转目标：B

- 携带数据：四位验证码

- 规则确认程度：confirmed

- 来源：page_id：A-2；interaction_id：A-2-I-08；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：系统填充接入同一四位数字输入与提交流程；本包无真实短信或系统填充服务。

## 交互 A-2-I-09：校验失败/验证码错误

- 触发：校验失败/验证码错误

- 条件：真实校验结果失败

- 反馈：不进入成功目标；错误反馈、清码、锁定和重试规则未定

- 跳转目标：A-2

- 携带数据：

- 规则确认程度：proposed

- 来源：page_id：A-2；interaction_id：A-2-I-09；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：示例错误保留手机号，显示就地反馈，可重新输入；不演示未确认锁定阈值。

## 交互 A-2-I-10：点击协议链接

- 触发：点击协议链接

- 条件：正文待提供

- 反馈：阅读对应协议边界

- 跳转目标：user-agreement / privacy-policy

- 携带数据：协议类型

- 规则确认程度：pending

- 来源：page_id：A-2；interaction_id：A-2-I-10；file：A-2.function.json；detail：同页业务操作和当前确认规则，与canonical A-2一致。

- 预览能力：明确边界说明，可返回保留预览会话，不显示虚构正文。

## 返回与保留

destination：A-1；rule_status：confirmed；preserve：同A-2：预览会话保留手机号、同意协议和倒计时。生产保留时限待确认。；prototype_behavior：状态快照内返回使用canonical A-2对应业务导航，不创建新短信路由。

## 验收

- id：A-2-sent-AC-01；given：打开独立状态预览；when：加载产品画面；then：已模拟发送验证码、验证码空、46秒倒计时（实时递减），重新获取按钮禁用。；操作和跳转仍使用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-sent-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

## 原材料待确认

- 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：源待确认栏目提出需支持自动填充；能力要求保留，平台方案与验收待确认。

## 补充未定义事项

- 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：换号后清空验证码和该号码已发状态，避免混配。

## 实现边界

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

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

## 原型限制

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

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

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

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

- 旧预览缓存若仍含超四位验证码将清空后重新输入；不将旧码截断后自动认证。

## 能力与接入限制

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

## 预览宿主与产品 UI

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