feat: add guarded image generation controls
This commit is contained in:
+16
-5
@@ -32,10 +32,10 @@ export const ASSET_PLUGIN_CATALOG = [
|
||||
];
|
||||
|
||||
export const IMAGE_MAKE_PURPOSE_CATALOG = [
|
||||
{ id: 'inline_image', label: '页面正文图片', presetId: 'memind_square_illustration' },
|
||||
{ id: 'hero', label: '页面头图', presetId: 'memind_dark_hero' },
|
||||
{ id: 'card_cover', label: '卡片封面', presetId: 'memind_card_cover' },
|
||||
{ id: 'feed_cover', label: '信息流与缩略图源图', presetId: 'memind_feed_cover_source' },
|
||||
{ id: 'inline_image', label: '页面正文图片', presetId: 'memind_square_illustration', strategy: 'generate', sourcePurpose: null },
|
||||
{ id: 'hero', label: '页面头图', presetId: 'memind_dark_hero', strategy: 'generate', sourcePurpose: null },
|
||||
{ id: 'card_cover', label: '卡片封面图', presetId: 'memind_card_cover', strategy: 'derive', sourcePurpose: 'hero' },
|
||||
{ id: 'feed_cover', label: '信息流缩略图', presetId: 'memind_feed_cover_source', strategy: 'derive', sourcePurpose: 'hero' },
|
||||
];
|
||||
|
||||
const imageMakePurposeIds = new Set(IMAGE_MAKE_PURPOSE_CATALOG.map((purpose) => purpose.id));
|
||||
@@ -281,10 +281,21 @@ export function createAssetGatewayConfigService(pool, { llmProviderService = nul
|
||||
if (!resolved.plugin.purposes?.[purpose]) {
|
||||
return { ok: false, code: 'purpose_disabled', message: '该图片用途未启用,可安全降级到原有流程' };
|
||||
}
|
||||
const purposeConfig = IMAGE_MAKE_PURPOSE_CATALOG.find((item) => item.id === purpose);
|
||||
if (purposeConfig?.strategy === 'derive' && resolved.plugin.purposes?.hero) {
|
||||
return {
|
||||
ok: false,
|
||||
code: 'reuse_hero_required',
|
||||
message: '页面头图已启用:请只生成一次 hero,并从该主图派生卡片封面和信息流缩略图',
|
||||
sourcePurpose: 'hero',
|
||||
};
|
||||
}
|
||||
return {
|
||||
ok: true,
|
||||
purpose,
|
||||
presetId: IMAGE_MAKE_PURPOSE_CATALOG.find((item) => item.id === purpose)?.presetId,
|
||||
presetId: purposeConfig?.presetId,
|
||||
strategy: purposeConfig?.strategy ?? 'generate',
|
||||
sourcePurpose: purposeConfig?.sourcePurpose ?? null,
|
||||
plugin: resolved.plugin,
|
||||
};
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user