From 76ddcacc0d94541cf86f7e03b7f39a11a75f3f9d Mon Sep 17 00:00:00 2001 From: Linghong Date: Sat, 18 Jul 2026 08:12:25 +0000 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E5=8F=A3=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E5=AA=92=E4=BD=93=E5=BC=95=E7=94=A8=E4=B8=8E=E6=8A=A0=E5=9B=BE?= =?UTF-8?q?=E5=86=92=E7=83=9F=E6=B3=A8=E9=87=8A=E5=8F=A3=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将外部 OpenAPI 与图标/UI/宣发专题文档对齐为稳定引用(objectKey/资源/素材 ID),禁止 Data URL / Blob URL。 修正 platform-matting segment_smoke 依赖说明,临时 OSS 由 AuthorizeFileUpload 动态下发。 --- .../genarrative-external-v1.openapi.json | 23 ++++++++++--------- ...辑器】宣发素材工具演示入口设计-2026-06-17.md | 2 +- ...辑器】画板UI设计图生成入口设计-2026-06-17.md | 2 +- ...辑器】画板图标素材生成入口设计-2026-06-15.md | 4 ++-- .../examples/segment_smoke.rs | 5 +++- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/docs/openapi/genarrative-external-v1.openapi.json b/docs/openapi/genarrative-external-v1.openapi.json index 2bff16c14..0ce096e27 100644 --- a/docs/openapi/genarrative-external-v1.openapi.json +++ b/docs/openapi/genarrative-external-v1.openapi.json @@ -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 }, diff --git a/docs/【编辑器】宣发素材工具演示入口设计-2026-06-17.md b/docs/【编辑器】宣发素材工具演示入口设计-2026-06-17.md index 6a29a90b2..6aeb9e5aa 100644 --- a/docs/【编辑器】宣发素材工具演示入口设计-2026-06-17.md +++ b/docs/【编辑器】宣发素材工具演示入口设计-2026-06-17.md @@ -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 写入生成请求或外部生成队列载荷。浏览器内可对临时图做压缩等处理,但压缩结果也必须上传后再提交。 - 扣费通过现有钱包资产操作封装执行;上游生成失败或未返回图片时按现有补偿逻辑退款。 - 生成成功后,成品作为图片画布生成图层加入画布,并保留游戏输入和参考图摘要供图层信息使用。 diff --git a/docs/【编辑器】画板UI设计图生成入口设计-2026-06-17.md b/docs/【编辑器】画板UI设计图生成入口设计-2026-06-17.md index 416fdd5fb..4289edb6c 100644 --- a/docs/【编辑器】画板UI设计图生成入口设计-2026-06-17.md +++ b/docs/【编辑器】画板UI设计图生成入口设计-2026-06-17.md @@ -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 diff --git a/docs/【编辑器】画板图标素材生成入口设计-2026-06-15.md b/docs/【编辑器】画板图标素材生成入口设计-2026-06-15.md index 636ba3d25..208d47bf1 100644 --- a/docs/【编辑器】画板图标素材生成入口设计-2026-06-15.md +++ b/docs/【编辑器】画板图标素材生成入口设计-2026-06-15.md @@ -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` 校验错误,不继续调用上游生成。 diff --git a/server-rs/crates/platform-matting/examples/segment_smoke.rs b/server-rs/crates/platform-matting/examples/segment_smoke.rs index e6abd20e6..ba684b9a5 100644 --- a/server-rs/crates/platform-matting/examples/segment_smoke.rs +++ b/server-rs/crates/platform-matting/examples/segment_smoke.rs @@ -3,7 +3,10 @@ //! 运行(在 server-rs 目录下): //! cargo run -p platform-matting --example segment_smoke -- "C:\path\to\input.png" //! -//! 依赖仓库根目录 .env.local(OSS bucket/endpoint)与 .env.secrets.local(AK/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};