文档
08_归档04_VOZEB任务卡

VOZEB-UI-MIGRATION-02-M20 — 安装向导 Ocean Foundation 视觉切片

Task ID: VOZEB-UI-MIGRATION-02-M20-INSTALL
目标用户结果: 运维人员可以在统一的 Ocean Air / Liquid Glass 安装界面完成数据库配置、显式初始化与首个管理员创建
Feature / Atomic: HOME-P0-001;安装初始化、首个管理员与部署安全既有契约(仅视觉承载)
Base SHA: 32be7a41655f2ecf3fb984b9dbb559040d0d42ea
视觉基线: VOZEB-UI-FOUNDATION-01 候选(Ocean Air / Abyss)与 OceanInstallWizardKit
允许修改: 本任务包;web/src/app/install/page.tsx;web/src/app/install/install-wizard.tsx;web/src/app/install/install-page.module.css;web/src/app/install/install-layout.test.ts
禁止修改: install-scroll-unlock.tsx;database-config-builder.tsx;database-config.ts;安装 API、server/auth/store、shared Ocean 组件、其它页面与业务数据
范围: 以 OceanInstallWizardKit 重组安装页的步骤导航、状态、指标、数据库配置、安装令牌、管理员表单和错误/完成状态;接入统一玻璃材质与响应式降级
非目标: 不改变 getInstallStatus、数据库配置生成/复制、initialize POST、首个管理员 AuthForm、步骤锁定、刷新/错误/ready 语义、滚动解锁或任何持久化行为;不新增背景/WebGL、React runtime 或业务状态
已冻结契约与数据模型: getInstallStatus、InstallStatus、/api/install/initialize body { installToken }、AuthForm firstUser/installToken/nextPath 及 database-config-builder 的模式/片段契约保持不变
安全与数据限制: installToken、数据库密码、加密密钥和 Worker/维护令牌不写入 URL、LocalStorage、SessionStorage、日志或服务端新状态;只保留现有页面内存与显式复制动作
验收命令: pnpm exec vitest run src/app/install/install-layout.test.ts src/app/install/database-config.test.ts --config vitest.config.ts --reporter=dot;pnpm exec tsc --noEmit --pretty false;pnpm exec eslint src/app/install/page.tsx src/app/install/install-wizard.tsx --quiet;pnpm exec prettier --check docs/oceanway/VOZEB-UI-MIGRATION-02-M20-INSTALL.md src/app/install/page.tsx src/app/install/install-wizard.tsx src/app/install/install-page.module.css src/app/install/install-layout.test.ts;pnpm run build;git diff --check
人工决策点: LOCAL_IMPLEMENTATION_CANDIDATE / CANDIDATE_EVIDENCE / NOT_FORMAL_TEST;等待独立 Testing/Operations 验收,不提升 IMPLEMENTED、VERIFIED 或 OPERATIONALIZED
交付物: OceanInstallWizardKit 安装壳、三步状态/指标/错误/完成适配、Ocean Air 玻璃样式、窄屏与辅助功能契约测试和候选任务包

验收边界

  • /install 仍是独立的动态服务端页面;getInstallStatus() 与未完成安装时的路由行为保持原实现,安装完成仍由服务端重定向到 /。
  • OceanInstallWizardKit 只负责步骤、状态、指标、令牌输入和按钮的呈现;数据库配置生成、复制、初始化请求和首个管理员注册仍由本页适配器/既有组件负责。
  • 数据库初始化仍只在 configured && healthy && !schemaReady && encryptionReady && installTokenReady 且当前页内存令牌长度满足要求时可确认;失败消息仍留在当前页面,刷新检查仍重新访问 /install。
  • 管理员步骤继续使用 AuthForm mode="register" firstUser nextPath="/admin",安装令牌只通过既有受控回调进入注册请求;初始化完成分支继续提供 /login?next=/admin 入口。
  • 页面不挂载 AppWorkspaceShell、OceanAmbientBackground 或额外 canvas/WebGL;使用 Ocean Air token、单层玻璃 surface、SiteLogo 和 CSS 背景材质。prefers-reduced-motion、prefers-reduced-transparency、forced-colors 与 390/430px 窄屏下保持可读、可操作且无水平溢出。
  • 正文和状态说明使用中性 Ocean Air 文本 token;primary 只用于 logo/步骤焦点/图形强调,不新增蓝色正文。
  • 本提交的测试与浏览器 smoke 是开发侧候选证据;没有正式浏览器 E2E、Testing 或 Operations 结论。

行为保持记录

本切片只替换安装页外壳、步骤 DOM 和样式:getInstallStatus、DatabaseConfigBuilder、部署片段/复制行为、安装令牌内存边界、/api/install/initialize 请求与错误处理、AuthForm 首个管理员字段/会话/重定向以及 InstallScrollUnlock 均保持原有责任边界。新增 data-ocean-page、Ocean kit 状态和 CSS module 仅用于视觉契约、无障碍和候选回归验证。

状态:LOCAL_IMPLEMENTATION_CANDIDATE / CANDIDATE_EVIDENCE / NOT_FORMAL_TEST

On this page