文档
08_归档04_VOZEB任务卡

VOZEB-COMPONENT-FOUNDATION-R2 — 输入与生成偏好组件候选

Task ID: VOZEB-COMPONENT-FOUNDATION-R2
目标用户结果: 在 VOZEB React/Next 组件实验室中提供可复用的输入、筛选、分页和生成偏好字段
Base SHA: bc6330950063685846ee0095d1776a22fe616b5c
允许修改: web/src/components/ocean/**、web/src/components/ui/component-manifest.*、
          web/src/app/components/**、docs/oceanway/VOZEB-COMPONENT-FOUNDATION-R2.md、
          docs/oceanway/VOZEB-COMPONENT-INVENTORY-01.md
禁止修改: retail-platform、User Web/Vue、API/领域契约、路由整合、Canvas/Space 迁移、生产配置
状态: DESIGN_CANDIDATE / REVIEW_REQUIRED / NOT_FROZEN

1. 范围与设计边界

本候选只在 oceanway-vozeb 的 React/Next 工作区新增无业务副作用的视觉组件。组件只接 可序列化 props、children 和 callbacks,不读取 store、router、session、API、模型、积分、 账务或持久化事实。retail-platform 仅作为内容语义参考,本候选未修改它。

本轮从原始 creative-generation-preference-fields.tsx 提取四个生成偏好字段,并补充三个 通用浏览/输入原子:

  • OceanRangeField:原生 range、token 轨道、值输出和键盘语义;
  • OceanSegmentedControl:单选分段、受控/非受控 API、roving focus 与方向键;
  • OceanPagination:有界页码、ellipsis、上一页/下一页和 aria-current;
  • OceanVideoQualityField:preset/custom 清晰度;
  • OceanSuggestedPositiveIntegerField:preset/custom 正整数;
  • OceanPositiveNumberField:开放正数偏好输入;
  • OceanSwitchPreference:委托 OceanSwitch 的紧凑偏好行。

正数归一化只保留原始组件已有的最小规则(trim、safe integer、finite positive);业务侧仍 负责模型能力、范围限制、单位、任务执行和账务语义。正数控件明确不用于价格、钱包、积分 或用量账本。

2. Ocean token 与动效规则

  • 所有颜色、边界、阴影和 surface 都读取 --ocean-air-* / --ocean-glass-* 语义 token; 本轮未新增独立色板,也未在组件 JSX/CSS 写入蓝色正文或 hex 色值。
  • 组件只使用轻量 CSS transition;prefers-reduced-motion 时取消 transition, prefers-reduced-transparency 时切换为不透明 surface,forced-colors 时使用系统颜色。
  • 分段、分页和 range 不创建 WebGL、RAF 或全局事件监听器;页面级背景 renderer 保持唯一。
  • 无 callback 时组件进入只读/禁用预览状态,避免实验室展示暗中改变业务事实。

3. 实验室与清单

/components 的 Foundation Lab 新增“输入与浏览控件”面板,使用合成状态展示 range、 segmented、pagination、质量、正整数、正数和 switch preference 的受控回调。材质 Showcase 的四个 slider 同时改用 OceanRangeField,避免页面专用 range 样式漂移。

component-manifest.ts 登记上述七个 built candidate;清单总数由 235 增至 242,built 由 89 增至 96,其余 readiness 数量保持不变。VOZEB-COMPONENT-INVENTORY-01.md 的统计和 Foundation 展示规则已同步。

4. 验收证据

本候选 worktree 的验证结果(2026-08-28):

focused Vitest:5 files / 24 tests passed
full Vitest:516 files passed、4 files skipped;2338 tests passed、9 tests skipped
pnpm exec tsc --noEmit --pretty false:passed
pnpm exec eslint . --quiet:passed
pnpm exec prettier --check .:passed
pnpm run check:release:passed(含安全审计、lint、Vitest、tsc、隔离 Next build)
Next production build:静态页面 63/63;standalone 产物检查通过
git diff --check:passed

浏览器复核至少覆盖:桌面 /components 无横向溢出、控件回调可见、深色主题、390px 移动 布局、reduced-motion/transparency 静态回退,以及单一背景 canvas。实际复核结果为:桌面 1280px scrollWidth === clientWidth、控件 marker 可见(range 5、segmented 3、pagination 1、四类偏好字段各 1)、背景 canvas 1;390px 下无横向溢出且控件布局折叠为单列;控制台 无 error/warn。浏览器结果是候选证据, 不替代独立 Testing,也不意味着 Gate 1/FROZEN。

5. 未覆盖 Gap

  1. Prompt、Work、Media Browser 等 Tier A 组件仍需独立 view-model 提取;本轮未改业务页面。
  2. 组件仍未逐页接入 VOZEB 路由,完整页面迁移、User Web 和后台整合不在范围内。
  3. 正式 Testing/Operations、跨浏览器色彩校准和 Gate 1 用户视觉确认仍待后续停点。
  4. React Bits SlicedWaves 仍是实验室研究候选,不进入产品页面,也不与现有背景并挂。

交接状态必须保持 DESIGN_CANDIDATE / REVIEW_REQUIRED / NOT_FROZEN。

On this page