Files
Genarrative/docs/technical/ASSET_HISTORY_PUZZLE_COVER_KIND_FIX_2026-04-27.md
高物 74fd9a33ac Increase VectorEngine timeouts and add image UI
Add VectorEngine image generation config and raise request timeouts (env + scripts) from 180000 to 1000000ms. Introduce a reusable CreativeImageInputPanel component with tests and wire up mobile keyboard-focus helpers; update generation views and related tests (CustomWorldGenerationView, BarkBattle editor, Match3D, Puzzle flows). Improve API error handling / VectorEngine request guidance (packages/shared http.ts and docs), and apply multiple backend/frontend fixes for puzzle/match3d/prompt handling. Also include extensive docs and decision-log updates describing UI/UX decisions and verification steps.
2026-05-15 02:40:59 +08:00

2.1 KiB

资产历史接口补齐拼图封面素材类型

日期:2026-04-27

背景

拼图结果页会通过 /api/assets/history?kind=puzzle_cover_image 读取历史封面素材,供“生成或更换图片”面板复用旧图。

该链路与角色主视觉、场景图共用同一资产历史接口,因此后端白名单一旦漏掉 puzzle_cover_image,前端就会收到 400 Bad Request,表现为拼图封面历史素材列表无法打开。

本次口径

  1. server-rs/crates/api-server/src/assets.rs 中的历史素材类型白名单统一收口为单一常量源。
  2. HTTP 层错误文案与实际支持列表由同一函数生成,避免后续再出现“校验改了但提示文案还是旧口径”的漂移。
  3. 增加 puzzle_cover_image 的回归测试,确保拼图封面素材不会再次被历史接口遗漏。
  4. ownerLabel 只表示资产归属账号,不是历史图片标题;前端历史素材卡片标题必须从 imageSrc 的路径末尾推导,例如 /generated-puzzle-assets/history/image.png 展示为 image.png
  5. createdAt / updatedAt 可能来自 SpacetimeDB / shared-kernel 的秒级字符串,例如 1713686400.000000Z,前端不得只用 new Date(value) 解析后把它显示成未知时间。
  6. 历史素材选中后仍把 imageSrc 作为 referenceImageSrc 传给生成链路;创作页和关卡详情页的预览必须通过 ResolvedAssetImage 换签展示,不直接请求裸 /generated-* 路径。

后续约束

  1. 新增历史素材类型时,必须同时更新:
    • api-serverSUPPORTED_ASSET_HISTORY_KINDS
    • spacetime-module 的历史素材白名单
    • 对应前端调用常量与测试
  2. 如果运行态仍返回旧白名单错误,优先检查本地 api-server.exe 是否已按最新源码重新编译并重启,而不是先回退前端类型参数。
  3. 历史素材列表的 UI 回归测试应覆盖:
    • 卡片标题不使用 账号 user-1 这类归属文案。
    • 1713686400.000000Z 能显示为可读生成时间。
    • 选中素材后工作台 / 关卡详情展示 历史素材 · image.png,并继续提交原始 imageSrc