08_归档04_VOZEB任务卡
VOZEB-UI-MIGRATION-02-M17-AUTH — 认证页面 Ocean Foundation 视觉切片
Task ID: VOZEB-UI-MIGRATION-02-M17-AUTH
目标用户结果: 用户可以在统一的 Ocean Air / Liquid Glass 认证界面完成登录、注册、找回密码和 MFA 继续操作
Feature / Atomic: HOME-P0-001;身份认证、邮箱验证码、首个管理员初始化与账户安全既有契约(仅视觉承载)
Base SHA: bce3896c1cc027a64135b9e4e7a91714b6baa2a0
视觉基线: VOZEB-UI-FOUNDATION-01 候选(Ocean Air / Abyss)与 OceanAuthKit
允许修改: 本任务包;web/src/components/auth/auth-form.tsx;web/src/components/auth/auth-page.module.css;web/src/app/forgot-password/page.tsx;本切片直属结构/契约测试
禁止修改: web/src/app/login/page.tsx;web/src/app/register/page.tsx(除非仅为编译所需的适配);API route;auth/session/store;install 页面;共享 Ocean 组件与 token;其它页面、公共路由和数据文件
范围: 以 AuthPageFrame + OceanAuthKit 重组登录、注册、忘记密码的 DOM/玻璃材质/响应式与无障碍呈现;保留既有页面适配器和提交回调
非目标: 不改变登录/注册/密码重置/MFA/邮箱验证码/邀请/政策/安装令牌/重定向的请求字段、错误语义、权限、会话或持久化;不新增 React runtime、WebGL 背景或业务状态机
已冻结契约与数据模型: /api/auth/login、/api/auth/register、/api/auth/email-code、/api/auth/password/reset 的既有 POST body;字段 name、autocomplete、required、policyAccepted、installToken、totpCode 及 next 路径语义保持不变
安全与数据限制: 不输出或持久化密码、验证码、安装令牌或会话;安装令牌仍仅由安装适配器保存在页面内存;不连接真实上游、账务或生产资源
验收命令: pnpm exec vitest run src/components/auth/auth-form-layout.test.ts --reporter=dot;pnpm exec tsc --noEmit --pretty false;pnpm exec eslint src/components/auth/auth-form.tsx src/app/forgot-password/page.tsx src/components/auth/auth-form-layout.test.ts --quiet;pnpm exec prettier --check docs/oceanway/VOZEB-UI-MIGRATION-02-M17-AUTH.md src/components/auth/auth-form.tsx src/components/auth/auth-page.module.css src/app/forgot-password/page.tsx src/components/auth/auth-form-layout.test.ts;pnpm run build;git diff --check
人工决策点: LOCAL_IMPLEMENTATION_CANDIDATE / CANDIDATE_EVIDENCE / NOT_FORMAL_TEST;等待独立 Testing/Operations 验收,不提升 IMPLEMENTED、VERIFIED 或 OPERATIONALIZED
交付物: 登录/注册/忘记密码共用的 Ocean Glass 认证页面壳、字段/验证码/MFA/政策状态适配、窄屏与辅助功能契约测试验收边界
- 登录和注册 route wrapper 继续负责安全重定向、安装状态、注册开关和服务端错误映射; 本切片不复制或重写这些数据语义。
AuthForm继续向既有 API 提交原字段。OceanAuthKit只负责受控字段、焦点、键盘和状态 的呈现;所有网络调用、session 写入、toast 和 router 跳转仍由页面适配器拥有。- 注册页继续支持邮箱注册、验证码、邀请码、政策勾选和注册关闭提示;登录页继续支持
MFA challenge 后的
totpCode重试;首个管理员继续要求一次性安装令牌。 - 忘记密码页继续先请求
purpose=password-reset验证码,再提交密码重置并跳转/login。 - 页面背景不新增独立 WebGL renderer;仅使用 Ocean Air token、单层页面材质与 AuthKit glass
surface。
prefers-reduced-motion、prefers-reduced-transparency、forced-colors与 窄屏下保持可读、可操作且无水平溢出。 - 本提交的测试是开发侧候选证据;没有正式浏览器 E2E、Testing 或 Operations 结论。
状态:LOCAL_IMPLEMENTATION_CANDIDATE / CANDIDATE_EVIDENCE / NOT_FORMAL_TEST