630 lines
18 KiB
JavaScript
630 lines
18 KiB
JavaScript
/**
|
||
* 可配置的套路模板系统
|
||
* 运营人员可以自定义每张图的布局和内容
|
||
*/
|
||
|
||
// ============================================================
|
||
// 默认套路配置(基于真实交付成品分析)
|
||
// ============================================================
|
||
|
||
const DEFAULT_MAIN_TEMPLATES = {
|
||
// Main_01: 场景首图 + 卖点文字
|
||
Main_01: {
|
||
type: 'lifestyle_with_features',
|
||
name: '场景首图+卖点',
|
||
aspectRatio: '1:1',
|
||
layout: {
|
||
scene: 'left-center', // 场景图位置
|
||
title: 'center-bottom', // 标题位置
|
||
features: 'bottom-row' // 卖点位置
|
||
},
|
||
config: {
|
||
title: 'DESIGNED FOR COMFORTABLE RECOVERY',
|
||
titleStyle: 'curved-banner', // curved-banner | simple | none
|
||
features: [
|
||
{ icon: 'egg', text: 'LIGHTER THAN AN EGG' },
|
||
{ icon: 'water', text: 'WATERPROOF & EASY WIPE' },
|
||
{ icon: 'cloud', text: 'BREATHABLE COTTON LINING' }
|
||
],
|
||
background: 'warm-home'
|
||
}
|
||
},
|
||
|
||
// Main_02: 白底平铺 + 局部放大(关键改进!)
|
||
Main_02: {
|
||
type: 'product_with_callouts',
|
||
name: '白底平铺+细节放大',
|
||
aspectRatio: '1:1',
|
||
layout: {
|
||
product: 'center',
|
||
callouts: 'corners' // 放大镜效果在角落
|
||
},
|
||
config: {
|
||
title: 'DURABLE WATERPROOF PU LAYER',
|
||
titlePosition: 'top',
|
||
callouts: [
|
||
{
|
||
position: 'bottom-left',
|
||
target: 'material-edge',
|
||
label: 'DURABLE WATERPROOF PU LAYER',
|
||
hasArrow: true
|
||
},
|
||
{
|
||
position: 'bottom-right',
|
||
target: 'neck-binding',
|
||
label: 'DOUBLE-LAYER COMFORT',
|
||
hasArrow: true
|
||
}
|
||
],
|
||
background: 'white'
|
||
}
|
||
},
|
||
|
||
// Main_03: 功能调节展示
|
||
Main_03: {
|
||
type: 'feature_showcase',
|
||
name: '功能调节展示',
|
||
aspectRatio: '1:1',
|
||
layout: {
|
||
mainScene: 'left',
|
||
featureCircles: 'right-column'
|
||
},
|
||
config: {
|
||
title: 'ADJUSTABLE STRAP FOR A SECURE FIT',
|
||
titlePosition: 'top-left',
|
||
mainScene: {
|
||
type: 'cat-wearing',
|
||
background: 'lifestyle'
|
||
},
|
||
featureCircles: [
|
||
{ label: 'SECURE THE ADJUSTABLE BELLY STRAP', showDetail: 'velcro-close-up' },
|
||
{ label: 'ADJUST FOR A SNUG FIT', showDetail: 'full-product-view' }
|
||
],
|
||
background: 'matching-color' // 使用产品主色作为背景
|
||
}
|
||
},
|
||
|
||
// Main_04: 多场景使用(4宫格)
|
||
Main_04: {
|
||
type: 'multi_scenario_grid',
|
||
name: '多场景使用',
|
||
aspectRatio: '1:1',
|
||
layout: {
|
||
grid: '2x2',
|
||
captionPosition: 'below-each'
|
||
},
|
||
config: {
|
||
scenarios: [
|
||
{ scene: 'standing', caption: '• HYGIENIC & EASY TO CLEAN', subtext: 'WATERPROOF OUTER LAYER' },
|
||
{ scene: 'eating', caption: '• UNRESTRICTED EATING/DRINKING', subtext: 'SPECIALLY DESIGNED OPENING' },
|
||
{ scene: 'playing', caption: '• REVERSIBLE WEAR', subtext: 'FLIP-OVER DESIGN' },
|
||
{ scene: 'sleeping', caption: '• 360° COMFORT', subtext: 'FREE MOVEMENT' }
|
||
],
|
||
background: 'warm-beige'
|
||
}
|
||
},
|
||
|
||
// Main_05: 尺寸图
|
||
Main_05: {
|
||
type: 'size_chart',
|
||
name: '尺寸图',
|
||
aspectRatio: '1:1',
|
||
layout: {
|
||
product: 'top-center',
|
||
table: 'bottom'
|
||
},
|
||
config: {
|
||
title: 'PRODUCT SIZE',
|
||
measurements: ['NECK', 'WIDTH'],
|
||
sizeChart: {
|
||
XS: { neck: '5.6-6.8IN', depth: '3.2IN' },
|
||
S: { neck: '7.2-8.4IN', depth: '4IN' },
|
||
M: { neck: '8.8-10.4IN', depth: '5IN' },
|
||
L: { neck: '10.8-12.4IN', depth: '6IN' },
|
||
XL: { neck: '12.8-14.4IN', depth: '7IN' }
|
||
},
|
||
footer: 'NOTE: ALWAYS MEASURE YOUR PET\'S NECK BEFORE SELECTING A SIZE'
|
||
}
|
||
},
|
||
|
||
// Main_06: 多角度展示
|
||
Main_06: {
|
||
type: 'multiple_angles',
|
||
name: '多角度展示',
|
||
aspectRatio: '1:1',
|
||
layout: {
|
||
images: 'side-by-side',
|
||
divider: 'curved-line'
|
||
},
|
||
config: {
|
||
angles: [
|
||
{ view: 'front', petType: 'cat' },
|
||
{ view: 'side', petType: 'cat' }
|
||
],
|
||
background: 'warm-interior'
|
||
}
|
||
}
|
||
};
|
||
|
||
const DEFAULT_APLUS_TEMPLATES = {
|
||
// APlus_01: 品牌横幅
|
||
APlus_01: {
|
||
type: 'brand_banner',
|
||
name: '品牌横幅',
|
||
aspectRatio: '3:2',
|
||
config: {
|
||
brandName: 'TOUCHDOG',
|
||
productName: 'CAT SOFT CONE COLLAR',
|
||
brandStyle: 'playful-curved', // 品牌字体风格
|
||
brandColor: '#E8A87C', // 珊瑚色
|
||
scene: 'cat-on-furniture',
|
||
background: 'warm-home'
|
||
}
|
||
},
|
||
|
||
// APlus_02: 对比图(关键改进!)
|
||
APlus_02: {
|
||
type: 'comparison',
|
||
name: '对比图',
|
||
aspectRatio: '3:2',
|
||
layout: {
|
||
left: 'our-product',
|
||
right: 'competitor',
|
||
center: 'none' // 不要中间的产品图!
|
||
},
|
||
config: {
|
||
leftSide: {
|
||
label: 'OUR',
|
||
labelBg: '#E8876C',
|
||
checkmark: true,
|
||
colorful: true,
|
||
sellingPoints: [
|
||
'CLOUD-LIGHT COMFORT',
|
||
'WIDER & CLEARER',
|
||
'FOLDABLE & PORTABLE'
|
||
]
|
||
},
|
||
rightSide: {
|
||
label: 'OTHER',
|
||
labelBg: '#808080',
|
||
xmark: true,
|
||
grayscale: true,
|
||
weaknesses: [
|
||
'HEAVY & BULKY',
|
||
'BLOCKS VISION & MOVEMENT',
|
||
'HARD TO STORE'
|
||
]
|
||
},
|
||
background: 'warm-beige'
|
||
}
|
||
},
|
||
|
||
// APlus_03: 功能细节
|
||
APlus_03: {
|
||
type: 'feature_details',
|
||
name: '功能细节',
|
||
aspectRatio: '3:2',
|
||
config: {
|
||
title: 'ENGINEERED FOR UNCOMPROMISED COMFORT',
|
||
detailImages: [
|
||
{ focus: 'inner-lining', caption: 'STURDY AND BREATHABLE', subtext: 'DURABLE AND COMFORTABLE' },
|
||
{ focus: 'wearing-with-size', caption: 'EASY TO CLEAN, STYLISH', subtext: 'AND ATTRACTIVE' },
|
||
{ focus: 'stitching-detail', caption: 'REINFORCED STITCHING', subtext: 'AND DURABLE FABRIC' }
|
||
],
|
||
background: 'warm-beige'
|
||
}
|
||
},
|
||
|
||
// APlus_04: 多场景横版
|
||
APlus_04: {
|
||
type: 'multi_scenario_horizontal',
|
||
name: '多场景横版',
|
||
aspectRatio: '3:2',
|
||
config: {
|
||
scenarios: [
|
||
{ scene: 'standing', caption: '• HYGIENIC & EASY TO CLEAN' },
|
||
{ scene: 'eating', caption: '• UNRESTRICTED EATING/DRINKING' },
|
||
{ scene: 'playing', caption: '• REVERSIBLE WEAR' },
|
||
{ scene: 'sleeping', caption: '• 360° COMFORT' }
|
||
]
|
||
}
|
||
},
|
||
|
||
// APlus_05: 多角度横版
|
||
APlus_05: {
|
||
type: 'multiple_angles_horizontal',
|
||
name: '多角度横版',
|
||
aspectRatio: '3:2',
|
||
config: {
|
||
angles: ['front', 'side'],
|
||
dividerStyle: 'curved'
|
||
}
|
||
},
|
||
|
||
// APlus_06: 尺寸表横版
|
||
APlus_06: {
|
||
type: 'size_chart_horizontal',
|
||
name: '尺寸表横版',
|
||
aspectRatio: '3:2',
|
||
config: {
|
||
title: 'PRODUCT SIZE',
|
||
layout: 'product-left-table-right'
|
||
}
|
||
}
|
||
};
|
||
|
||
// ============================================================
|
||
// 从配置生成Prompt的函数
|
||
// ============================================================
|
||
|
||
function generatePromptFromConfig(templateConfig, product, skuInfo) {
|
||
const { type, config, layout } = templateConfig;
|
||
|
||
// 基础产品描述
|
||
const productDesc = product.goldenDescription || 'Pet recovery cone collar';
|
||
|
||
switch (type) {
|
||
case 'lifestyle_with_features':
|
||
return generateLifestyleWithFeatures(productDesc, config, skuInfo);
|
||
|
||
case 'product_with_callouts':
|
||
return generateProductWithCallouts(productDesc, config, skuInfo);
|
||
|
||
case 'feature_showcase':
|
||
return generateFeatureShowcase(productDesc, config, skuInfo);
|
||
|
||
case 'multi_scenario_grid':
|
||
return generateMultiScenarioGrid(productDesc, config, skuInfo);
|
||
|
||
case 'size_chart':
|
||
return generateSizeChart(productDesc, config, skuInfo);
|
||
|
||
case 'multiple_angles':
|
||
return generateMultipleAngles(productDesc, config, skuInfo);
|
||
|
||
case 'brand_banner':
|
||
return generateBrandBanner(productDesc, config, skuInfo);
|
||
|
||
case 'comparison':
|
||
return generateComparison(productDesc, config, skuInfo);
|
||
|
||
case 'feature_details':
|
||
return generateFeatureDetails(productDesc, config, skuInfo);
|
||
|
||
default:
|
||
return generateGenericPrompt(productDesc, config, skuInfo);
|
||
}
|
||
}
|
||
|
||
// ============================================================
|
||
// 各类型Prompt生成函数
|
||
// ============================================================
|
||
|
||
function generateLifestyleWithFeatures(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON MAIN IMAGE - LIFESTYLE WITH FEATURE TEXT]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
SCENE:
|
||
- Beautiful ${skuInfo.petType || 'cat'} wearing the product comfortably
|
||
- Warm, cozy home interior background (soft focus)
|
||
- Product clearly visible, occupies 50-60% of frame
|
||
- Pet looks comfortable and relaxed
|
||
|
||
TEXT OVERLAY REQUIREMENTS:
|
||
- ${config.titleStyle === 'curved-banner' ? 'CURVED BANNER in muted blue (#8BB8C4) across center' : 'SIMPLE TITLE at center-bottom'}
|
||
- TITLE TEXT: "${config.title}" in white, clean sans-serif font
|
||
- BOTTOM ROW: 3 feature boxes in rounded rectangles
|
||
${config.features.map((f, i) => ` - Box ${i+1}: "${f.text}" with ${f.icon} icon`).join('\n')}
|
||
|
||
STYLE:
|
||
- Professional Amazon product photography
|
||
- Warm color palette
|
||
- Clean, readable text
|
||
- Subtle paw print watermarks
|
||
- 8K quality, 1:1 aspect ratio
|
||
|
||
CRITICAL: Product must match reference image EXACTLY in shape, color, and material.
|
||
`.trim();
|
||
}
|
||
|
||
function generateProductWithCallouts(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON MAIN IMAGE - PRODUCT WITH DETAIL CALLOUTS]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT:
|
||
- TOP: Title "${config.title}" in dark green banner with white text
|
||
- CENTER: Product C-shape flat lay view on white/light background
|
||
- CALLOUT CIRCLES: Magnifying glass style detail views with arrows pointing to product
|
||
|
||
CALLOUT DETAILS:
|
||
${config.callouts.map(c => `- ${c.position.toUpperCase()}: Circular magnified view of ${c.target}
|
||
Label: "${c.label}"
|
||
Arrow pointing from circle to corresponding area on product`).join('\n')}
|
||
|
||
STYLE:
|
||
- Clean product photography with infographic elements
|
||
- Dark green (#2D4A3E) for title banner
|
||
- Thin lines/arrows connecting callouts to product
|
||
- Professional Amazon listing style
|
||
- 8K quality, 1:1 aspect ratio
|
||
|
||
CRITICAL: Product must show C-shaped opening clearly. Match reference image EXACTLY.
|
||
`.trim();
|
||
}
|
||
|
||
function generateFeatureShowcase(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON MAIN IMAGE - FEATURE SHOWCASE]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT:
|
||
- BACKGROUND: Solid color matching product main color (use product's primary color)
|
||
- TOP-LEFT: Large title "${config.title}" in dark text
|
||
- LEFT SIDE (60%): Main lifestyle scene - ${skuInfo.petType || 'cat'} wearing product, walking through doorway/arch
|
||
- RIGHT SIDE (40%): 2 feature detail circles stacked vertically
|
||
|
||
FEATURE CIRCLES:
|
||
${config.featureCircles.map((f, i) => `${i+1}. Circle showing: ${f.showDetail}
|
||
Button/label below: "${f.label}"`).join('\n')}
|
||
|
||
STYLE:
|
||
- Lifestyle photography meets infographic
|
||
- Rounded rectangle buttons for labels
|
||
- Paw print decorations scattered on background
|
||
- Modern, clean design
|
||
- 8K quality, 1:1 aspect ratio
|
||
|
||
CRITICAL: Product color and shape must match reference image EXACTLY.
|
||
`.trim();
|
||
}
|
||
|
||
function generateMultiScenarioGrid(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON MAIN IMAGE - MULTI-SCENARIO 2x2 GRID]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT: 2x2 grid of scenes, each in rounded rectangle frame
|
||
|
||
${config.scenarios.map((s, i) => `SCENE ${i+1} (${['TOP-LEFT', 'TOP-RIGHT', 'BOTTOM-LEFT', 'BOTTOM-RIGHT'][i]}):
|
||
- ${skuInfo.petType || 'Cat'} ${s.scene} while wearing product
|
||
- Caption below: "${s.caption}"
|
||
- Subtext: "${s.subtext}"`).join('\n\n')}
|
||
|
||
BACKGROUND: Warm beige (#F5EDE4) with subtle paw print watermarks
|
||
|
||
STYLE:
|
||
- Each scene in rounded rectangle with slight shadow
|
||
- Captions in dark text, clean sans-serif
|
||
- Professional lifestyle photography
|
||
- 8K quality, 1:1 aspect ratio
|
||
|
||
CRITICAL: Product in ALL 4 scenes must be identical and match reference image.
|
||
`.trim();
|
||
}
|
||
|
||
function generateSizeChart(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON MAIN IMAGE - SIZE CHART INFOGRAPHIC]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT:
|
||
- TOP: Title "${config.title}" in bold dark text
|
||
- CENTER: Product flat lay with measurement arrows and labels
|
||
- Arrow across neck opening: "NECK"
|
||
- Arrow across width: "WIDTH"
|
||
- BOTTOM: Size chart table
|
||
|
||
SIZE CHART TABLE (clean, rounded corners):
|
||
| SIZE | NECK CIRCUMFERENCE | DEPTH |
|
||
${Object.entries(config.sizeChart).map(([size, dims]) =>
|
||
`| ${size} | ${dims.neck} | ${dims.depth} |`).join('\n')}
|
||
|
||
FOOTER TEXT: "${config.footer}"
|
||
|
||
BACKGROUND: Warm beige with subtle paw prints
|
||
|
||
STYLE:
|
||
- Clean infographic design
|
||
- Table with alternating row colors
|
||
- Professional product photography
|
||
- 8K quality, 1:1 aspect ratio
|
||
`.trim();
|
||
}
|
||
|
||
function generateMultipleAngles(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON MAIN IMAGE - MULTIPLE ANGLES]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT:
|
||
- Split view with decorative curved divider in center
|
||
- LEFT: ${skuInfo.petType || 'Cat'} wearing product, ${config.angles[0].view} view
|
||
- RIGHT: Same ${skuInfo.petType || 'cat'} or similar, ${config.angles[1].view} view
|
||
|
||
SCENE:
|
||
- Warm home interior background
|
||
- Both pets look comfortable
|
||
- Product clearly visible from different angles
|
||
|
||
STYLE:
|
||
- Lifestyle photography
|
||
- Soft warm lighting
|
||
- Decorative curved line or wave between images
|
||
- NO text overlay
|
||
- 8K quality, 1:1 aspect ratio
|
||
|
||
CRITICAL: Product must be IDENTICAL in both views, matching reference image exactly.
|
||
`.trim();
|
||
}
|
||
|
||
function generateBrandBanner(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON A+ BRAND BANNER - HORIZONTAL]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT (970x600px aspect ratio):
|
||
- LEFT 40%: Brand text area with decorative elements
|
||
- RIGHT 60%: Lifestyle scene
|
||
|
||
LEFT SIDE:
|
||
- Brand name "${config.brandName}" in playful, slightly curved font
|
||
- Color: ${config.brandColor} (coral/salmon)
|
||
- Decorative paw prints around text
|
||
- Product name "${config.productName}" below in smaller gray text
|
||
|
||
RIGHT SIDE:
|
||
- ${skuInfo.petType || 'Cat'} wearing product on modern furniture
|
||
- Warm cozy interior background
|
||
|
||
STYLE:
|
||
- Professional Amazon A+ content
|
||
- Warm, inviting color palette
|
||
- 8K quality, ~1.6:1 aspect ratio
|
||
`.trim();
|
||
}
|
||
|
||
function generateComparison(productDesc, config, skuInfo) {
|
||
const { leftSide, rightSide } = config;
|
||
|
||
return `
|
||
[AMAZON A+ COMPARISON IMAGE - SPLIT SCREEN]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT: Two-column comparison, NO center product image
|
||
|
||
LEFT SIDE (OUR PRODUCT):
|
||
- GREEN CHECKMARK icon at top
|
||
- "${leftSide.label}" label on ${leftSide.labelBg} background
|
||
- ${skuInfo.petType || 'Cat'} wearing OUR PRODUCT (must match reference exactly!)
|
||
- Cat looks HAPPY and comfortable
|
||
- FULL COLOR, warm tones
|
||
- Selling points in white text on colored background:
|
||
${leftSide.sellingPoints.map(p => ` • ${p}`).join('\n')}
|
||
|
||
RIGHT SIDE (COMPETITOR):
|
||
- RED X-MARK icon at top
|
||
- "${rightSide.label}" label on ${rightSide.labelBg} background
|
||
- ${skuInfo.petType || 'Cat'} wearing HARD PLASTIC transparent cone
|
||
- Cat looks SAD/uncomfortable
|
||
- GRAYSCALE/desaturated
|
||
- Weaknesses in gray text:
|
||
${rightSide.weaknesses.map(p => ` • ${p}`).join('\n')}
|
||
|
||
BACKGROUND: Warm beige (#F5EDE4) with paw print watermarks
|
||
|
||
STYLE:
|
||
- Clear visual contrast between sides
|
||
- Professional comparison layout
|
||
- Clean readable text
|
||
- 8K quality, ~1.6:1 aspect ratio
|
||
|
||
CRITICAL:
|
||
- LEFT product must match reference image EXACTLY (our soft cone)
|
||
- RIGHT shows generic hard plastic cone (NOT our product)
|
||
- NO product image in the center
|
||
`.trim();
|
||
}
|
||
|
||
function generateFeatureDetails(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON A+ FEATURE DETAILS - HORIZONTAL]
|
||
|
||
PRODUCT (MUST MATCH REFERENCE IMAGE EXACTLY):
|
||
${productDesc}
|
||
|
||
LAYOUT:
|
||
- TOP: Large title "${config.title}" in bold dark font
|
||
- MIDDLE: 3 detail images in rounded rectangles, evenly spaced
|
||
|
||
${config.detailImages.map((d, i) => `DETAIL ${i+1}:
|
||
- Focus: ${d.focus}
|
||
- Caption: "${d.caption}"
|
||
- Subtext: "${d.subtext}"`).join('\n\n')}
|
||
|
||
BACKGROUND: Warm beige (#F5EDE4) with subtle paw print watermarks
|
||
|
||
STYLE:
|
||
- Professional product detail photography
|
||
- Clean modern typography
|
||
- Rounded rectangle frames for each detail
|
||
- 8K quality, ~1.6:1 aspect ratio
|
||
`.trim();
|
||
}
|
||
|
||
function generateGenericPrompt(productDesc, config, skuInfo) {
|
||
return `
|
||
[AMAZON PRODUCT IMAGE]
|
||
|
||
PRODUCT:
|
||
${productDesc}
|
||
|
||
REQUIREMENTS:
|
||
- Professional product photography
|
||
- Match reference image exactly
|
||
- High quality, clear details
|
||
- 8K resolution
|
||
`.trim();
|
||
}
|
||
|
||
// ============================================================
|
||
// 导出
|
||
// ============================================================
|
||
|
||
module.exports = {
|
||
DEFAULT_MAIN_TEMPLATES,
|
||
DEFAULT_APLUS_TEMPLATES,
|
||
generatePromptFromConfig,
|
||
|
||
// 生成所有12张图的Prompts
|
||
generateAllPrompts: (product, skuInfo, customConfig = {}) => {
|
||
const mainTemplates = { ...DEFAULT_MAIN_TEMPLATES, ...customConfig.main };
|
||
const aplusTemplates = { ...DEFAULT_APLUS_TEMPLATES, ...customConfig.aplus };
|
||
|
||
const prompts = [];
|
||
|
||
// 主图6张
|
||
for (const [id, template] of Object.entries(mainTemplates)) {
|
||
prompts.push({
|
||
id,
|
||
name: template.name,
|
||
aspectRatio: template.aspectRatio || '1:1',
|
||
type: template.type,
|
||
prompt: generatePromptFromConfig(template, product, skuInfo)
|
||
});
|
||
}
|
||
|
||
// A+图6张
|
||
for (const [id, template] of Object.entries(aplusTemplates)) {
|
||
prompts.push({
|
||
id,
|
||
name: template.name,
|
||
aspectRatio: template.aspectRatio || '3:2',
|
||
type: template.type,
|
||
prompt: generatePromptFromConfig(template, product, skuInfo)
|
||
});
|
||
}
|
||
|
||
return prompts;
|
||
}
|
||
};
|
||
|
||
|