Match3D & Puzzle: runtime UI, assets, drag fix

Backend: stop treating background music as a required draft asset and remove auto-submit/plan for background music; load persisted generated UI/assets into Match3D agent session responses (added helpers to resolve profile id and fetch existing generated assets). Frontend: make Match3D result preview reuse runtime UI styles, unify runtime settings entry, update PuzzleRuntime to apply immediate pointermove transforms (disable drag transition), use SVG clipPath for merged piece rounding, ensure PuzzleRuntimeShell supplies platform theme classes, and adjust related tests. Docs & logs: update decision log, pitfalls and product docs to reflect these changes.
This commit is contained in:
2026-05-15 08:49:59 +08:00
parent 0f36beee91
commit bb60ca91ef
23 changed files with 2127 additions and 593 deletions

View File

@@ -16,6 +16,54 @@
---
## 2026-05-15 抓大鹅结果页 UI 预览复用运行态布局
- 背景:抓大鹅结果页 `素材配置 > UI` 的预览弹层曾手写简化 HUD 和容器布局,和真实运行态顶部关卡卡片、右上设置入口、容器图定位及槽位样式出现漂移。
- 决策:结果页 UI 预览只组合 `match3dRuntimeUiStyles` 中的运行态 HUD、棋盘、容器图和槽位样式常量运行态尺寸或视觉层级调整时同步由这些常量影响预览不再在结果页单独维护另一套预览 UI。
- 影响范围:`src/components/match3d-result/Match3DResultView.tsx``src/components/match3d-runtime/Match3DRuntimeShell.tsx``src/components/match3d-runtime/match3dRuntimeUiStyles.ts`、抓大鹅结果页测试和玩法链路文档。
- 验证方式:执行 `npm run test -- src/components/match3d-result/Match3DResultView.test.tsx``npm run test -- src/components/match3d-runtime/Match3DRuntimeShell.test.tsx`,确认预览顶部 HUD、设置入口、容器图定位和槽位样式与运行态一致。
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`
## 2026-05-15 拼图拖拽视觉即时跟手且拼块裁切圆角
- 背景:拼图运行态在触控拖拽时不能有追手延迟,同时拼图片需要真实圆角裁切,合并后的 L 形 / 凹形块不能靠单格圆角拼接。
- 决策:`PuzzleRuntimeShell` 拖拽视觉在 `pointermove` 期间直接写入当前可见拼块 DOM 的 `translate3d(...)`,拖拽阶段禁用 transform transition不依赖后端回包、React 重渲染或 `requestAnimationFrame` 队列。拖动过程中不展示拼块选中态或底部“已选择”提示,选中状态只保留给点击交换语义。单块通过 `buildRoundedGridCellClipPath()` 裁切独立圆角;合并块视觉层必须用 SVG 原生 `clipPath` 裁切整体外轮廓,不只依赖 HTML `clip-path:url(#...)`,外凸角和内凹角分开计算半径,内凹角半径更大以避免移动端看起来仍是直角。
- 影响范围:拼图运行态拖拽手感、`puzzleRuntimeShape` 圆角路径、拼图运行态测试和玩法链路文档。
- 验证方式:执行 `npm run test -- src/components/puzzle-runtime/PuzzleRuntimeShell.test.tsx``npm run typecheck``npm run check:encoding`
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`
## 2026-05-15 拼图运行态点击弹层不使用像素素材框
- 背景:拼图运行态主界面已经切到平台主色主题,但提示和设置弹层仍复用像素九宫格素材框,和当前拼图视觉不一致。
- 决策:拼图运行态的提示、设置等点击弹层跟随 `puzzle-runtime-*` 主色主题,使用普通圆角主题面板和 CSS 变量分层,不再套 `pixel-nine-slice` / `pixel-modal-shell``UI_CHROME.modalPanel`
- 影响范围:`PuzzleRuntimeShell` 的道具确认弹窗、设置弹窗、拼图运行态样式和玩法链路文档。
- 验证方式:执行 `npm run test -- src/components/puzzle-runtime/PuzzleRuntimeShell.test.tsx`,确认提示和设置 dialog 不包含像素框类名。
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`
## 2026-05-15 拼图运行态壳层必须自带平台主题类
- 背景:`/puzzle` 直达页和运行态提前返回分支不一定挂在外层平台壳里,若壳层只依赖父级主题类,就会出现修改已经生效但页面看起来还是旧样式的错觉。
- 决策:`PuzzleRuntimeShell` 自身在正常运行态和等待态都补齐 `platform-ui-shell platform-theme platform-theme--light|dark`,让直达页和平台内嵌页共享同一套主题变量。
- 影响范围:`PuzzleRuntimeShell` 根容器、路由直达页、拼图运行态测试和玩法链路文档。
- 验证方式:执行 `npm run test -- src/components/puzzle-runtime/PuzzleRuntimeShell.test.tsx``npm run typecheck`,确认壳层 className 包含平台主题类。
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`
## 2026-05-15 抓大鹅草稿自动编排不再要求背景音乐
- 背景:抓大鹅音频入口关闭后,草稿生成仍可能在后端自动编排中调用 Suno导致“提交 Suno 背景音乐任务失败”阻断草稿生成。
- 决策:`match3d_compile_draft` 的完成条件只包含 2D 五视角物品图片、UI 背景和容器图;点击音效只在 `generateClickSound=true` 的历史配置下作为可选补齐。背景音乐字段仅作为历史兼容传递,不再由草稿自动生成或补齐。
- 影响范围:`api-server` Match3D 草稿资产编排、抓大鹅音频关闭口径、玩法链路文档。
- 验证方式:执行 `cargo test -p api-server match3d_generated_assets_require_only_images_when_click_sound_is_closed --manifest-path server-rs/Cargo.toml``cargo check -p api-server --manifest-path server-rs/Cargo.toml``npm run check:encoding`
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`
## 2026-05-15 抓大鹅运行态右上角统一为设置入口
- 背景:抓大鹅运行态右上角原先直接暴露重新开始按钮,和拼图的设置入口口径不一致,也不利于把设置、重开和后续扩展动作收口到统一面板。
- 决策:`Match3DRuntimeShell` 右上角改为设置按钮,点击后打开独立设置面板;重新开始动作仅放在设置面板内,结算弹层继续保留再来一局。拼图右上角设置图标同步改为非像素风 `lucide-react` `Settings` 图标。
- 影响范围:`src/components/puzzle-runtime/PuzzleRuntimeShell.tsx``src/components/match3d-runtime/Match3DRuntimeShell.tsx`、对应测试和玩法链路文档。
- 验证方式:执行 `npm run test -- src/components/puzzle-runtime/PuzzleRuntimeShell.test.tsx src/components/match3d-runtime/Match3DRuntimeShell.test.tsx`,确认拼图设置按钮不再渲染像素图片、抓大鹅右上角打开设置面板且面板内可重新开始。
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`
## 2026-05-15 汪汪声浪和宝贝识物入口设为敬请期待
- 背景:当前需要暂时关闭汪汪声浪和宝贝识物两个模板的创建链路,但仍保留创作 Tab 中的模板占位。