合并画板素材生成与宣发入口改动
新增 UI 设计图提取素材入口并复用 gpt-image-2 spritesheet 拆分流程。 保留图标生成与 UI 提取的 spritesheet 原图并同步放置拆分素材到画布。 补齐宣发素材演示入口、占位图样式、引用上传与生成提交链路。 调整编辑器生成接口 body 限制和 VectorEngine 请求兼容逻辑。 更新画板音乐生成、项目基线、宣发素材与图片画布相关文档。
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 宣发素材工具入口设计
|
||||
|
||||
## 目标
|
||||
|
||||
在 Web 图片画布编辑器底部工具栏新增 `宣发素材` 分组入口,用于生成游戏发布物料。点击具体工作流后,不打开说明弹窗,而是在画布内创建一个可拖拽的宣发素材生成卡片;卡片包含游戏名、游戏分类、一句话描述游戏三个输入框、参考图控件、尺寸信息和生成按钮。点击生成后走图片画布现有生图 BFF,自动扣 5 泥点,生成成功后把成品图片放回画布。
|
||||
|
||||
Prompt 输入摘要与 Prompt 约束只作为内部生成契约维护,不在 UI 中默认暴露;真实生图请求会把结构化游戏输入和对应工作流约束合并为内部 Prompt。
|
||||
|
||||
三个工作流的输入框默认提示统一为:游戏名 `马戏团午夜惊魂`,游戏分类 `非对称对抗`,一句话描述游戏 `神奇数字马戏团里,帕姆尼失控了,找到钥匙,开门逃离马戏团,千万别被抓住了`。提示只作为占位文案,用户未填写时不进入生图 Prompt。
|
||||
|
||||
## 入口
|
||||
|
||||
- 页面:`/editor/canvas`
|
||||
- 位置:底部 AI 画布工具栏
|
||||
- 工具:`宣发素材`
|
||||
- 交互:点击工具后弹出独立浮层菜单,菜单项包括 `游戏首图`、`详情五图`、`运营海报`;点击菜单项后在画布中心创建对应工作流的生成占位卡片,卡片可拖拽,设置面板锚定在占位卡片下方。
|
||||
- 标题:画布占位卡片左上角使用英文功能名,例如 `Home Image Generator`、`Detail Gallery Generator`、`Promo Poster Generator`,与其它生成卡片保持一致。
|
||||
|
||||
## 三条独立工作流
|
||||
|
||||
1. `publication-cover-image`
|
||||
- 名称:游戏首图
|
||||
- 输出:单张主视觉
|
||||
- 尺寸:`720 x 540`
|
||||
- 适用:推荐流、作品卡和首屏传播位
|
||||
|
||||
2. `publication-detail-gallery`
|
||||
- 名称:详情五图
|
||||
- 输出:单张详情图;需要五图时由用户连续生成五次,保持同一参考摘要和输入信息
|
||||
- 尺寸:`720 x 1280`,`9:16` 竖版
|
||||
- 适用:作品详情、应用介绍和运营分发图组
|
||||
|
||||
3. `publication-promo-poster`
|
||||
- 名称:运营海报
|
||||
- 输出:单张活动海报
|
||||
- 尺寸:`1280 x 720`,`16:9` 横版
|
||||
- 版式:右下角保留白色二维码留白方块,并在方块内部上方加入黑色小字提示“此处换上你的游戏二维码”
|
||||
- 适用:社群、活动、渠道投放和运营节日位
|
||||
|
||||
## 职责边界
|
||||
|
||||
本功能边界只负责图片编辑器里的宣发素材生成:
|
||||
|
||||
- 可以维护:工作流框架、Prompt 约束、参考图解析约束、图片后处理验收约束。
|
||||
- 已落地:画布内生成占位卡片、游戏名 / 游戏分类 / 一句话描述游戏结构化输入、参考图上传 / 从画布选择、尺寸标识、真实生图、5 泥点扣费、成品回画布。
|
||||
- 详情五图:当前 UI 只有一个生成卡片,一次生成 1 张 `720 x 1280` 竖版详情图,单次扣 5 泥点;需要五图时连续生成并复用同一游戏输入和参考图。
|
||||
- 不在 UI 暴露:Prompt 输入摘要、Prompt 约束预览、内部提示词拼接过程。
|
||||
- 暂不实现:作品发布状态、审核、分享渠道、远程 Genarrative 接口、作品架或广场能力。
|
||||
- 不修改:SpacetimeDB schema、前端发布页、作品发布系统。
|
||||
|
||||
## 生成与计费
|
||||
|
||||
- 前端生成请求统一通过 `/api/editor/images/generations`。
|
||||
- 宣发素材请求携带 `kind: publication-material`,后端仅对这个 kind 扣 5 泥点。
|
||||
- `publication-detail-gallery` 不再携带 `candidateCount: 5`;后端仍兼容多候选请求,但当前宣发素材入口不主动批量生成。
|
||||
- 尺寸请求必须使用明确像素值:游戏首图 `720x540`、详情图 `720x1280`、运营海报 `1280x720`。VectorEngine 适配层对明确像素值保持原样透传;只有 `16:9`、`9:16`、`2k` 等比例 / 档位别名才走 provider 预设映射。
|
||||
- 参考图在提交 `/api/editor/images/generations` 前由前端压缩成适合生成理解的图片 Data URL,避免原图 Data URL 撑爆 JSON 请求体;后端该路由保留 `12MB` body limit 作为兼容兜底。
|
||||
- 扣费通过现有钱包资产操作封装执行;上游生成失败或未返回图片时按现有补偿逻辑退款。
|
||||
- 生成成功后,成品作为图片画布生成图层加入画布,并保留游戏输入和参考图摘要供图层信息使用。
|
||||
|
||||
## 代码位置
|
||||
|
||||
- 工具入口:`src/components/image-editor/ImageCanvasBottomToolbarView.tsx`
|
||||
- 菜单和生成卡片挂载:`src/components/image-editor/ImageCanvasGenerationComposerView.tsx`
|
||||
- 工作流状态:`src/components/image-editor/useImageCanvasGenerationWorkflow.ts`
|
||||
- 工作流内容模型:`src/components/image-editor/ImageCanvasPublicationMaterialsModel.ts`
|
||||
- 画布内生成卡片设置面板:`src/components/image-editor/ImageCanvasPublicationMaterialsDemoPanelView.tsx`
|
||||
|
||||
## 验证命令
|
||||
|
||||
```bash
|
||||
npm run test -- src/components/image-editor/ImageCanvasBottomToolbarView.test.tsx src/components/image-editor/useImageCanvasGenerationSurface.test.tsx src/components/image-editor/ImageCanvasGenerationSubmissionModel.test.ts src/components/image-editor/useImageCanvasGenerationSubmissionWorkflow.test.tsx src/services/image-editor/editorProjectClient.test.ts
|
||||
cargo test -p platform-image vector_engine --manifest-path server-rs/Cargo.toml
|
||||
cargo test -p api-server editor_image_generation_accepts_reference_body_above_default_limit --manifest-path server-rs/Cargo.toml
|
||||
cargo check -p api-server --manifest-path server-rs/Cargo.toml
|
||||
npm run check:encoding
|
||||
```
|
||||
@@ -121,4 +121,3 @@ POST /api/editor/audios/background-music/generations
|
||||
- 成功后的音频卡展示提示词;卡片、悬停角标、信息弹窗和待生成占位均显示时长。
|
||||
- 私有 generated 音频能先换签再预览播放,不出现播放条一直为 `0:00` 的裸路径失败状态。
|
||||
- 刷新后 layout 能恢复音频生成器和音频图层。
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ server-rs + Axum + SpacetimeDB
|
||||
- Issue tracker 是自托管 Gitea。可用 Gitea UI/API 或 `tea` CLI;不要用 GitHub `gh` 或 GitLab `glab`。
|
||||
- 默认 triage labels:`needs-triage`、`needs-info`、`ready-for-agent`、`ready-for-human`、`wontfix`。
|
||||
- 根 `CONTEXT.md` 是当前领域语言入口;架构决策以本文档和 `docs/project-memory/shared-memory/decision-log.md` 的最新稳定摘要为准。
|
||||
- `.hermes/` 只保存可进入 Git 的团队共享记忆、计划和可公开 skill,不提交个人 Hermes 配置、会话、密钥、Token 或本地私密路径。
|
||||
- `.hermes/` 只保存 Hermes 专用的仓库级工具资源,例如 skills、plugins 和启用说明;团队共享记忆、计划和 TODO 统一放在 `docs/project-memory/`,不提交个人 Hermes 配置、会话、密钥、Token 或本地私密路径。
|
||||
- 每次工程修改都应同步更新本目录当前文档;如果产生长期有效知识,再同步 `docs/project-memory/shared-memory/`。
|
||||
|
||||
## 当前文档策略
|
||||
|
||||
Reference in New Issue
Block a user