改为行引用保存画布参考图元数据
生成输入参考图只保存 refType/refId 行引用 生成器布局快照只保存参考图行指针并在加载时恢复临时源 上传参考图优先创建项目资源行并回写 resourceId 元数据弹窗改为展示参考图行引用信息 更新图片画布技术文档和项目决策记录
This commit is contained in:
@@ -163,14 +163,36 @@ describe('ImageCanvasGenerationModel', () => {
|
||||
expect(
|
||||
buildCharacterGenerationInputs(
|
||||
'主角骑士',
|
||||
{ id: 'spec', label: '角色规范', src: '/spec.png' },
|
||||
[{ id: 'ref-1', label: '盔甲参考', src: '/armor.png' }],
|
||||
{
|
||||
id: 'spec',
|
||||
label: '角色规范',
|
||||
src: '/spec.png',
|
||||
resourceId: 'resource-spec',
|
||||
},
|
||||
[
|
||||
{
|
||||
id: 'ref-1',
|
||||
label: '盔甲参考',
|
||||
src: '/armor.png',
|
||||
resourceId: 'resource-armor',
|
||||
},
|
||||
],
|
||||
),
|
||||
).toEqual({
|
||||
fields: [{ title: '角色设定', value: '主角骑士' }],
|
||||
references: [
|
||||
{ title: '角色规范', label: '角色规范', src: '/spec.png' },
|
||||
{ title: '常规参考图 1', label: '盔甲参考', src: '/armor.png' },
|
||||
{
|
||||
title: '角色规范',
|
||||
label: '角色规范',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-spec',
|
||||
},
|
||||
{
|
||||
title: '常规参考图 1',
|
||||
label: '盔甲参考',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-armor',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
@@ -179,13 +201,19 @@ describe('ImageCanvasGenerationModel', () => {
|
||||
id: 'icon-spec',
|
||||
label: '图标规范',
|
||||
src: '/icon-spec.png',
|
||||
resourceId: 'resource-icon-spec',
|
||||
}),
|
||||
).toEqual({
|
||||
fields: [
|
||||
{ title: '素材描述', value: '返回按钮\n设置按钮' },
|
||||
],
|
||||
references: [
|
||||
{ title: '图标规范', label: '图标规范', src: '/icon-spec.png' },
|
||||
{
|
||||
title: '图标规范',
|
||||
label: '图标规范',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-icon-spec',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
@@ -194,18 +222,38 @@ describe('ImageCanvasGenerationModel', () => {
|
||||
).toEqual({
|
||||
fields: [{ title: '修改要求', value: '换成夜晚' }],
|
||||
references: [
|
||||
{ title: '参考图', label: '原图', src: '/source.png' },
|
||||
{
|
||||
title: '参考图',
|
||||
label: '原图',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-source',
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(
|
||||
buildQuickEditGenerationInputs('快速编辑提示词', '让图2下雨', sourceLayer, [
|
||||
{ id: 'ref-1', label: '天空', src: '/sky.png' },
|
||||
{
|
||||
id: 'ref-1',
|
||||
label: '天空',
|
||||
src: '/sky.png',
|
||||
resourceId: 'resource-sky',
|
||||
},
|
||||
]),
|
||||
).toEqual({
|
||||
fields: [{ title: '快速编辑提示词', value: '让图2下雨' }],
|
||||
references: [
|
||||
{ title: '参考图 1', label: '天空', src: '/sky.png' },
|
||||
{ title: '参考图 2', label: '原图', src: '/source.png' },
|
||||
{
|
||||
title: '参考图 1',
|
||||
label: '天空',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-sky',
|
||||
},
|
||||
{
|
||||
title: '参考图 2',
|
||||
label: '原图',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-source',
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
@@ -278,11 +326,23 @@ describe('ImageCanvasGenerationModel', () => {
|
||||
buildSpecGenerationInputs(
|
||||
'custom',
|
||||
{ ...blankSpecValues, customPrompt: '生成一张怪兽规范图' },
|
||||
{ id: 'spec-ref', label: '参考.png', src: '/ref.png' },
|
||||
{
|
||||
id: 'spec-ref',
|
||||
label: '参考.png',
|
||||
src: '/ref.png',
|
||||
resourceId: 'resource-ref',
|
||||
},
|
||||
),
|
||||
).toEqual({
|
||||
fields: [{ title: '自定义规范提示词', value: '生成一张怪兽规范图' }],
|
||||
references: [{ title: '参考图', label: '参考.png', src: '/ref.png' }],
|
||||
references: [
|
||||
{
|
||||
title: '参考图',
|
||||
label: '参考.png',
|
||||
refType: 'project-resource',
|
||||
refId: 'resource-ref',
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user