收口编辑器媒体引用与抠图冒烟注释口径

将外部 OpenAPI 与图标/UI/宣发专题文档对齐为稳定引用(objectKey/资源/素材 ID),禁止 Data URL / Blob URL。

修正 platform-matting segment_smoke 依赖说明,临时 OSS 由 AuthorizeFileUpload 动态下发。
This commit is contained in:
2026-07-18 08:12:25 +00:00
parent 1fa6f346fc
commit 76ddcacc0d
5 changed files with 20 additions and 16 deletions
@@ -2569,7 +2569,7 @@
"type": "array",
"items": {
"type": "string",
"description": "图片 Data URL。quick-edit 最多 9 张,其它模式最多使用前 5 张。"
"description": "当前账号的 objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS 再提交。禁止 Data URL / Blob URL。普通生成最多使用前 5 张,数组上限为 9。"
},
"maxItems": 9
},
@@ -2691,7 +2691,7 @@
},
"sourceImageSrc": {
"type": "string",
"description": "待重绘/调整图片 Data URL。"
"description": "待重绘/调整图片的稳定引用:当前账号的 objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。"
},
"projectId": {
"type": [
@@ -2763,7 +2763,7 @@
"type": "array",
"items": {
"type": "string",
"description": "图片 Data URL、asset://、OSS object key 或公网 URL。"
"description": "当前账号的 objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。图片快速编辑当前不开放额外参考图。"
},
"maxItems": 8
},
@@ -2892,13 +2892,13 @@
"properties": {
"referenceImageSrc": {
"type": "string",
"description": "规范图/参考图 Data URL 或 objectKey;上传参考图优先提交 objectKey。"
"description": "图标规范的稳定引用:当前账号的 objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。"
},
"referenceImageSrcs": {
"type": "array",
"items": {
"type": "string",
"description": "额外图标素材参考图 Data URL 或 objectKey;上传参考图优先提交 objectKey。"
"description": "额外图标素材参考图的稳定引用:objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。最多 8 张。"
},
"maxItems": 8
},
@@ -2988,7 +2988,7 @@
"properties": {
"sourceImageSrc": {
"type": "string",
"description": "UI 设计图 Data URL 或 objectKey。"
"description": "带红框标注的 UI 设计图稳定引用:当前账号的 objectKey、项目资源 ID 或素材 ID;浏览器内合成后必须先上传 OSS 再提交。禁止 Data URL / Blob URL。"
},
"screenColor": {
"type": [
@@ -3006,7 +3006,7 @@
"type": "array",
"items": {
"type": "string",
"description": "额外 UI 素材参考图 Data URL 或 objectKey;上传参考图优先提交 objectKey。"
"description": "额外 UI 素材参考图的稳定引用:objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。最多 5 张。"
},
"maxItems": 5
},
@@ -3273,7 +3273,8 @@
"type": "string"
},
"sourceImageSrc": {
"type": "string"
"type": "string",
"description": "角色源图的稳定引用:当前账号的 objectKey、项目资源 ID 或素材 ID;本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。"
},
"sourceWidth": {
"type": "integer",
@@ -3557,7 +3558,7 @@
"type": "array",
"items": {
"type": "string",
"description": "公网 URL、asset://、OSS object key 或图片 Data URL。仅 Seedance 2.0 系列支持。"
"description": "公网 URL、asset://、当前账号的 objectKey、项目资源 ID 或素材 ID。本地临时图必须先上传 OSS。禁止 Data URL / Blob URL。仅 Seedance 2.0 系列支持。"
},
"maxItems": 9
},
@@ -3565,7 +3566,7 @@
"type": "array",
"items": {
"type": "string",
"description": "公网 URL、asset:// 或 OSS object key。仅 Seedance 2.0 系列支持。"
"description": "公网 URL、asset://、当前账号的 objectKey、项目资源 ID 或素材 ID。本地临时视频必须先上传 OSS。禁止 Data URL / Blob URL。仅 Seedance 2.0 系列支持。"
},
"maxItems": 3
},
@@ -3573,7 +3574,7 @@
"type": "array",
"items": {
"type": "string",
"description": "公网 URL、asset://、OSS object key 或音频 Data URL。仅 Seedance 2.0 系列支持。"
"description": "公网 URL、asset://、当前账号的 objectKey、项目资源 ID 或素材 ID。本地临时音频必须先上传 OSS。禁止 Data URL / Blob URL。仅 Seedance 2.0 系列支持。"
},
"maxItems": 3
},
@@ -55,7 +55,7 @@ Prompt 输入摘要与 Prompt 约束只作为内部生成契约维护,不在 U
- 宣发素材请求携带 `kind: publication-material`,前端提交和后端 handler 都固定归一为 `gpt-image-2`;即使旧前端或外部请求传入 `nanobanana2`,后端也按 `gpt-image-2` 生成和计费,但价格仍来自运行时模型定价配置,不写死数值。
- `publication-detail-gallery` 不再携带 `candidateCount: 5`;后端仍兼容多候选请求,但当前宣发素材入口不主动批量生成。
- 尺寸请求和成品交付规格必须使用明确像素值:游戏首图 `720x540`、详情图 `720x1280`、运营海报 `1280x720`。这些值是画布图层与成品的业务规格;由于三种规格并非都满足 `gpt-image-2` 的上游尺寸约束,VectorEngine 适配层会在发送前等比归一到合法请求尺寸(最大边 `3840`、两边为 `16` 的倍数、长短边比不超过 `3:1`、总像素 `655360..8294400`),不能将上游归一后的尺寸当作宣发成品规格。只有 `16:9``9:16``2k` 等比例 / 档位别名才走 provider 预设映射。
- 参考图在提交 `/api/editor/images/generations`由前端压缩成适合生成理解的图片 Data URL,避免原图 Data URL 撑爆 JSON 请求体;后端该路由保留 `12MB` body limit 作为兼容兜底
- 参考图在提交 `/api/editor/images/generations`必须先落稳定引用:本地图先上传 OSS 并确认 asset object,提交时使用 `objectKey`、项目资源 ID 或素材 ID;禁止把 Data URL / Blob URL 写入生成请求或外部生成队列载荷。浏览器内可对临时图做压缩等处理,但压缩结果也必须上传后再提交
- 扣费通过现有钱包资产操作封装执行;上游生成失败或未返回图片时按现有补偿逻辑退款。
- 生成成功后,成品作为图片画布生成图层加入画布,并保留游戏输入和参考图摘要供图层信息使用。
@@ -54,7 +54,7 @@
- 框选状态参考微信截图工具栏布局,默认矩形框选,并支持矩形框选、椭圆框选和画笔自由框选三种工具。
- 用户可在同一张 UI 设计图上多次框选;未至少框选一个区域时,工具栏 `提取` 按钮不可点击。
- 可上传普通参考图辅助 UI 素材提取,用于约束被框选素材的风格、配色或材质;普通参考图会以 `objectKey` 随合成后的红框 UI 设计图一起提交。
- 点击 `提取` 后,前端把所有框选的红色轮廓绘入原 UI 设计图生成合成图Data URL,再提交到 `POST /api/editor/ui-designs/assets/extractions`
- 点击 `提取` 后,前端把所有框选的红色轮廓绘入原 UI 设计图生成合成图Data URL / Blob URL 只允许停留在浏览器临时态,必须先上传 OSS 并确认 asset object,再以返回的 `objectKey`(或项目资源 / 素材 ID)作为 `sourceImageSrc` 提交到 `POST /api/editor/ui-designs/assets/extractions`
- 后端固定使用 `gpt-image-2` 图片编辑链路,并固定提示词:
```text
@@ -38,7 +38,7 @@
- 前端提交到 `POST /api/editor/icon-spritesheets/generations`
- 请求字段:
- `referenceImageSrc`:图标规范 Data URL。
- `referenceImageSrc`:图标规范的稳定引用(当前账号的 `objectKey`、项目资源 ID 或素材 ID);本地临时图必须先上传 OSS,禁止 Data URL / Blob URL。
- `iconDescriptions`:过滤空文本后的图标描述数组,`1..100`
- `model`:支持 `gemini-3.1-flash-image-preview`UI 显示 `nanobanana2`)和 `gpt-image-2`,默认 `nanobanana2`
- `aspectRatio`:按 `x:y` 展示,选项跟随模型。
@@ -78,7 +78,7 @@
- 默认 6 个素材描述会进入 prompt;用户在单个文本框中继续输入时最多解析 100 个素材描述。
- 默认打开图标素材面板时选中 `nanobanana2 / 1:1 / 1K`;模型切换后,角色和图标素材面板之间沿用上次选择的模型。
- 图标素材生成请求必须带 `model``aspectRatio``imageSize``nanobanana2` 请求体必须包含 `generationConfig.imageConfig.aspectRatio/imageSize``gpt-image-2` 请求必须包含文档映射后的 `size`
- 图标素材生成可以上传普通参考图;提交时图标规范图仍走 `referenceImageSrc`,普通参考图走 `referenceImageSrcs`上传参考图优先提交 `objectKey`,并写入 `generationInputs.references`
- 图标素材生成可以上传普通参考图;提交时图标规范图仍走 `referenceImageSrc`,普通参考图走 `referenceImageSrcs`二者都必须是稳定引用(`objectKey` / 项目资源 ID / 素材 ID),禁止 Data URL / Blob URL,并写入 `generationInputs.references`
- 透明背景处理和自动拆分都成功后,画布同时出现透明 spritesheet 图集和按描述命名的独立图标图层;透明图集成功但拆分失败时只出现透明图集,透明背景处理最终失败时只出现 provider 原图。
- 选中图集图层时显示 `拆分图集`,点击后不新增第二张图集,只在原图集右侧追加自动识别的独立素材,并同步写入素材库。
- 生成图标素材提交体包含按模型和尺寸计算的 `priceMudPoints``nanobanana2 1K` 应为 `12``gpt-image-2 1K` 应为 `3``gpt-image-2 2K` 应为 `5`。若前端传入与后端计费配置不一致的值,后端返回 `priceMudPoints` 校验错误,不继续调用上游生成。
@@ -3,7 +3,10 @@
//! 运行(在 server-rs 目录下):
//! cargo run -p platform-matting --example segment_smoke -- "C:\path\to\input.png"
//!
//! 依赖仓库根目录 .env.localOSS bucket/endpoint)与 .env.secrets.localAK/SK)。
//! 依赖仓库根目录 .env / .env.local / .env.secrets.local 中的 AK/SK
//!`GENARRATIVE_ALIYUN_MATTING_*` 或 `ALIBABA_CLOUD_ACCESS_KEY_*`);
//! 可选 `GENARRATIVE_ALIYUN_MATTING_ENDPOINT`。临时 OSS bucket/endpoint 由
//! AuthorizeFileUpload 动态下发,不依赖自有 OSS 配置。
use std::path::{Path, PathBuf};