快速编辑直接覆盖原图

将图片快速编辑提交切到 /api/editor/images/edits,并用结果回写源图层

保留重绘作为右侧新结果图层,角色重绘继续走 character 生成契约

更新快速编辑文档和定向回归测试
This commit is contained in:
2026-06-27 19:47:53 +08:00
parent a6671e7da7
commit bb51c7e0d2
18 changed files with 336 additions and 298 deletions
@@ -5,6 +5,7 @@ import type {
CanvasLayer,
} from './ImageCanvasEditorTypes';
import {
applyImageEditResultToSourceLayer,
createAudioResultLayer,
createCharacterAnimationResultLayer,
createGeneratedResultLayer,
@@ -282,6 +283,46 @@ describe('ImageCanvasGenerationLayerModel', () => {
});
});
it('applies quick edits to the source layer in place', () => {
const sourceLayer = createSourceLayer({
width: 320,
height: 240,
originalWidth: 1024,
originalHeight: 768,
});
const layer = applyImageEditResultToSourceLayer({
generated: createGenerated({
imageSrc: 'data:image/png;base64,edited',
width: 1536,
height: 1024,
resource: {
resourceId: 'resource-edited',
objectKey: 'generated/edited.png',
assetObjectId: 'asset-object-edited',
width: 1536,
height: 1024,
sourceType: 'generated',
generationInputs: createGenerationInputs(),
},
}),
sourceLayer,
generationInputs: createGenerationInputs(),
});
expect(layer).toMatchObject({
id: 'layer-source',
title: '源图',
src: 'data:image/png;base64,edited',
width: 1536,
height: 1024,
originalWidth: 1536,
originalHeight: 1024,
resourceId: 'resource-edited',
sourceResourceId: 'resource-source',
objectKey: 'generated/edited.png',
});
});
it('creates wrapped icon layers with icon metadata', () => {
const layers = createIconSpritesheetResultLayers({
generated: {