前端按业务ID提交图片编辑

优先使用图层 resourceId 并回退正式 sourceAssetId
未登记来源在上传标注图前失败关闭
保持红框标注图为辅助 referenceImageSrcs 而非主来源
移除图片编辑请求中的旧来源和类型字段并补齐工作流测试
This commit is contained in:
2026-08-07 14:04:26 +08:00
parent 0cca0adcb1
commit 609b036b04
6 changed files with 150 additions and 56 deletions
@@ -1020,7 +1020,7 @@ describe('editorProjectClient', () => {
await expect(
editEditorImage({
prompt: '修改图片',
sourceImageSrc: '/generated-images/editor/source.png',
sourceReferenceId: 'resource-source',
referenceImageSrcs: references.slice(0, 5),
model: 'gpt-image-2',
}),
@@ -2075,17 +2075,15 @@ describe('editorProjectClient', () => {
const result = await editEditorImage({
prompt: '把画面改成黄昏光线',
sourceImageSrc: '/generated-images/editor/source.png',
sourceReferenceId: 'resource-character-1',
size: '1024x1024',
model: 'gpt-image-2',
aspectRatio: '1:1',
imageSize: '1K',
referenceImageSrcs: ['/generated-images/editor/style.png'],
projectId: 'editor-project-1',
assetKind: 'character',
assetFolderId: 'project',
assetLabel: '角色形象 修改结果',
sourceResourceId: 'resource-character-1',
targetLayerId: 'layer-character-1',
generationInputs: {
fields: [{ title: '修改提示词', value: '把画面改成黄昏光线' }],
@@ -2101,21 +2099,19 @@ describe('editorProjectClient', () => {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: '把画面改成黄昏光线',
sourceImageSrc: '/generated-images/editor/source.png',
sourceReferenceId: 'resource-character-1',
size: '1024x1024',
model: 'gpt-image-2',
aspectRatio: '1:1',
imageSize: '1K',
referenceImageSrcs: ['/generated-images/editor/style.png'],
projectId: 'editor-project-1',
assetKind: 'character',
generationInputs: {
fields: [{ title: '修改提示词', value: '把画面改成黄昏光线' }],
references: [],
},
assetFolderId: 'project',
assetLabel: '角色形象 修改结果',
sourceResourceId: 'resource-character-1',
targetLayerId: 'layer-character-1',
}),
}),
@@ -311,18 +311,16 @@ export type EditorUiDesignAssetExtractionInput = {
export type EditorImageEditInput = {
prompt: string;
sourceImageSrc: string;
sourceReferenceId: string;
size?: string;
model?: string;
aspectRatio?: string;
imageSize?: string;
referenceImageSrcs?: string[];
projectId?: string | null;
assetKind?: string | null;
generationInputs?: EditorAssetGenerationInputs | null;
assetFolderId?: string | null;
assetLabel?: string | null;
sourceResourceId?: string | null;
targetLayerId?: string | null;
canvasCompletion?: EditorCanvasGenerationCompletionInput | null;
};
@@ -1175,7 +1173,6 @@ export async function extractEditorUiDesignAssets(
}
export async function editEditorImage(input: EditorImageEditInput) {
assertStableEditorMediaReference(input.sourceImageSrc, '待修改图片');
assertStableEditorMediaReferences(input.referenceImageSrcs, '修改参考图');
assertEditorReferenceLimit(
input.referenceImageSrcs,
@@ -1189,7 +1186,7 @@ export async function editEditorImage(input: EditorImageEditInput) {
EDITOR_IMAGE_EDIT_API,
jsonRequest('POST', {
prompt: input.prompt,
sourceImageSrc: input.sourceImageSrc,
sourceReferenceId: input.sourceReferenceId,
...(input.size ? { size: input.size } : {}),
...(input.model ? { model: input.model } : {}),
...(input.aspectRatio ? { aspectRatio: input.aspectRatio } : {}),
@@ -1198,15 +1195,11 @@ export async function editEditorImage(input: EditorImageEditInput) {
? { referenceImageSrcs: input.referenceImageSrcs }
: {}),
...(input.projectId ? { projectId: input.projectId } : {}),
...(input.assetKind ? { assetKind: input.assetKind } : {}),
...(input.generationInputs
? { generationInputs: input.generationInputs }
: {}),
...(input.assetFolderId ? { assetFolderId: input.assetFolderId } : {}),
...(input.assetLabel ? { assetLabel: input.assetLabel } : {}),
...(input.sourceResourceId
? { sourceResourceId: input.sourceResourceId }
: {}),
...(input.targetLayerId ? { targetLayerId: input.targetLayerId } : {}),
...(input.canvasCompletion
? { canvasCompletion: input.canvasCompletion }