仅接受 Sign-in 返回的 challenge_id;页面不从 URL 或本地存储推断真实验证码。
TARGETF4B2 PARTIALQA 0/5 VERIFIEDR01 · 2/21 PASS COMPLETEWeb · 等待邮箱或手机验证码的用户
OTP 验证
验证码的发送、倒计时、重发、错误、过期与限流都在同一状态机内
/identity/verifyplatform-identityR01 · KNIFE 2 / 21
OTP 验证 · 页面级细化任务包
完成一个有次数、期限、重发和可恢复错误边界的六位验证码挑战。
服务端验证成功后持久化 session,再返回有界 access/refresh token 与 session receipt。
每 client/kind/subject 5 次/10 分钟;单 challenge 最多 5 次失败;生产无 fixed code。
六格输入在 320–390px 保持 44px 触控;支持粘贴、自动填充、退格回退和屏幕阅读器单字段语义。
otp_view · otp_submit · otp_resend · otp_locked;只记录 challenge_id 哈希和错误类别。
- challenge create/verify
- 600s TTL
- 创建限流与五次失败锁定
- 持久化/多实例 challenge
- 真实 OTP E2E artifact
- 重发/倒计时/a11y UI fixture
63-STATE PROGRAM / THIS SCREEN
QA 0 / 5 VERIFIED九态改变真实区域,而不是盖一张共用提示卡
验证码输入
AUTH-OTP-READY→ 验证并继续Challenge + RateLimit
AUTH-OTP-LOAD→ 返回登录验证码字段
AUTH-OTP-EMPTY→ 输入验证码重发控制
AUTH-OTP-RESEND-PARTIAL→ 继续验证OtpVerification
AUTH-OTP-503→ 重新验证Challenge freshness
AUTH-OTP-OFFLINE→ 重新连接RateLimit
AUTH-OTP-LOCKED→ 重新开始登录重发确认
AUTH-OTP-RESEND-CONFIRM→ 确认重新发送Session issue receipt
AUTH-OTP-VERIFIED→ 继续安全流程UI STUDIO
platform-auth-otpWeb1440 × 900100%
100%
IMPLEMENTATION MAP
目标定义与下一轮逐页细化入口
当前处于 B1/B2:可以拆出架构、设计、交互和 QA 任务,但完成 D01–D12、通过 B3/B4 之前,不得宣称页面已经可以照稿实现。
页面区域
- 流程进度
- 验证目标
- 验证码输入
- 重发与修改
- 状态反馈
用户动作
- 验证并继续
- 重新发送
- 更换账号
- 返回登录
必须状态
- 等待验证码输入
- Challenge 加载
- 验证码尚未输入
- 重发能力部分不可用
- 验证服务失败
- 离线且 Challenge 已 stale
- 发送或验证受限
- 更换账号或重发确认
- 验证成功
数据契约
- OtpChallenge
- OtpVerification
- RateLimit
- ReturnContext
TARGET MODULES
目标页面必须交付的模块
- 01验证目标遮罩
- 02六位验证码
- 03倒计时与重发
- 04更换账号
- 05安全与可访问性提示
PRODUCT ROUTE INDEX
身份与会话 的 7 个稳定 Screen ID
同一产品内的页面共享 token、导航和状态语言,但每个 Screen ID 保留自己的字段、数据契约和 QA 基线。