合并图标规范与图集生成优化
合入 PR 137 的图标规范生成、稳定引用与图集提示词链路 保留主分支现行音效提交、Prompt 模块与结果压缩逻辑 解决 External Worker、生成提交和客户端测试冲突
This commit is contained in:
@@ -39,6 +39,7 @@ import {
|
||||
} from './useImageCanvasGenerationWorkflow';
|
||||
|
||||
const generateEditorImageMock = vi.hoisted(() => vi.fn());
|
||||
const generateEditorIconSpecMock = vi.hoisted(() => vi.fn());
|
||||
const generateEditorCharacterAnimationMock = vi.hoisted(() => vi.fn());
|
||||
const generateEditorIconSpritesheetMock = vi.hoisted(() => vi.fn());
|
||||
const generateEditorSoundEffectMock = vi.hoisted(() => vi.fn());
|
||||
@@ -78,6 +79,7 @@ vi.mock('../../services/image-editor/editorProjectClient', async () => {
|
||||
generateEditorBackgroundMusic: generateEditorBackgroundMusicMock,
|
||||
generateEditorCharacterAnimation: generateEditorCharacterAnimationMock,
|
||||
generateEditorIconSpritesheet: generateEditorIconSpritesheetMock,
|
||||
generateEditorIconSpec: generateEditorIconSpecMock,
|
||||
generateEditorImage: generateEditorImageMock,
|
||||
generateEditorSoundEffect: generateEditorSoundEffectMock,
|
||||
loadEditorProject: loadEditorProjectMock,
|
||||
@@ -609,8 +611,17 @@ function GenerationWorkflowHarness({
|
||||
<button type="button" onClick={workflow.openIconGenerationDialog}>
|
||||
打开图标生成
|
||||
</button>
|
||||
<button type="button" onClick={() => workflow.openSpecDialog('ui')}>
|
||||
打开UI规范
|
||||
<button type="button" onClick={() => workflow.openSpecDialog('icon')}>
|
||||
打开图标规范
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => {
|
||||
workflow.updateSpecFormValue('playSetting', '消除玩法');
|
||||
workflow.updateSpecFormValue('artStyle', '清爽卡通');
|
||||
}}
|
||||
>
|
||||
填写图标规范
|
||||
</button>
|
||||
<button type="button" onClick={workflow.openUiDesignGenerationDialog}>
|
||||
打开UI设计生成
|
||||
@@ -1120,6 +1131,7 @@ function GenerationWorkflowHarness({
|
||||
id: 'spec-ref',
|
||||
label: '参考.png',
|
||||
src: 'data:image/png;base64,ref',
|
||||
resourceId: 'resource-spec-ref',
|
||||
},
|
||||
}
|
||||
: currentDialog,
|
||||
@@ -2143,36 +2155,23 @@ describe('useImageCanvasGenerationWorkflow', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('submits spec generation with reference image and reference prompt semantics', async () => {
|
||||
uploadEditorMediaAssetFileMock.mockResolvedValueOnce({
|
||||
src: 'https://signed.example.test/generation-reference.png',
|
||||
objectKey:
|
||||
'generated-character-drafts/editor/generation-references/reference.png',
|
||||
assetObjectId: 'asset-object-generation-reference',
|
||||
legacyPublicPath:
|
||||
'/generated-character-drafts/editor/generation-references/reference.png',
|
||||
});
|
||||
generateEditorImageMock.mockResolvedValueOnce(
|
||||
it('submits icon spec generation with business fields and a stable reference', async () => {
|
||||
generateEditorIconSpecMock.mockResolvedValueOnce(
|
||||
createGenerated({ prompt: 'UI规范图' }),
|
||||
);
|
||||
render(<GenerationWorkflowHarness />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '打开UI规范' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '打开图标规范' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '填写图标规范' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '添加规范参考图' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '提交生成' }));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(generateEditorImageMock).toHaveBeenCalledWith(
|
||||
expect(generateEditorIconSpecMock).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
size: '2048x1152',
|
||||
kind: 'spec',
|
||||
model: 'gpt-image-2',
|
||||
aspectRatio: '16:9',
|
||||
imageSize: '2K',
|
||||
referenceImageSrcs: [
|
||||
'generated-character-drafts/editor/generation-references/reference.png',
|
||||
],
|
||||
prompt: expect.stringContaining('参考图生成规范'),
|
||||
playSetting: '消除玩法',
|
||||
artStyle: '清爽卡通',
|
||||
referenceId: 'resource-spec-ref',
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user