feat(creatives): Canva Agua Miia post / story / LinkedIn
Mapea EAHYK-l1SFM, EAHYK9p_MlY y EAHYK_ylNJo por formato y plataforma en RRSS. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,11 +14,18 @@ export type RrssPlacement = {
|
||||
};
|
||||
|
||||
/** Placements per RRSS format (not the Ads triple 4:5+9:16+1.91:1). */
|
||||
export function rrssBriefAspectFields(format: RrssPipelineFormat): {
|
||||
export function rrssBriefAspectFields(
|
||||
format: RrssPipelineFormat,
|
||||
platform?: string | null
|
||||
): {
|
||||
aspect_ratio: string;
|
||||
aspect_ratios: string[];
|
||||
required_placements: RrssPlacement[];
|
||||
} {
|
||||
const isLinkedIn = String(platform || '')
|
||||
.toLowerCase()
|
||||
.includes('linkedin');
|
||||
|
||||
if (format === 'story') {
|
||||
const p: RrssPlacement = {
|
||||
aspect_ratio: '9:16',
|
||||
@@ -39,13 +46,23 @@ export function rrssBriefAspectFields(format: RrssPipelineFormat): {
|
||||
};
|
||||
return { aspect_ratio: '9:16', aspect_ratios: ['9:16'], required_placements: [p] };
|
||||
}
|
||||
if (isLinkedIn) {
|
||||
const p: RrssPlacement = {
|
||||
aspect_ratio: '1:1',
|
||||
role: 'linkedin',
|
||||
size: '1080x1080',
|
||||
meta_key: 'asset_url',
|
||||
canva_template_key: 'linkedin',
|
||||
};
|
||||
return { aspect_ratio: '1:1', aspect_ratios: ['1:1'], required_placements: [p] };
|
||||
}
|
||||
if (format === 'carrusel') {
|
||||
const p: RrssPlacement = {
|
||||
aspect_ratio: '4:5',
|
||||
role: 'carousel_slide',
|
||||
size: '1080x1350',
|
||||
meta_key: 'asset_url',
|
||||
canva_template_key: 'foto-con-franja',
|
||||
canva_template_key: 'post',
|
||||
};
|
||||
return {
|
||||
aspect_ratio: '4:5',
|
||||
@@ -53,13 +70,13 @@ export function rrssBriefAspectFields(format: RrssPipelineFormat): {
|
||||
required_placements: [p],
|
||||
};
|
||||
}
|
||||
// post feed
|
||||
// post feed (IG/FB)
|
||||
const p: RrssPlacement = {
|
||||
aspect_ratio: '4:5',
|
||||
role: 'feed',
|
||||
size: '1080x1350',
|
||||
meta_key: 'asset_url',
|
||||
canva_template_key: 'foto-con-franja',
|
||||
canva_template_key: 'post',
|
||||
};
|
||||
return { aspect_ratio: '4:5', aspect_ratios: ['4:5'], required_placements: [p] };
|
||||
}
|
||||
@@ -99,6 +116,7 @@ export type RrssGenerationBriefInput = {
|
||||
pillar?: string | null;
|
||||
month?: string | null;
|
||||
scheduledAt?: string | null;
|
||||
platform?: string | null;
|
||||
calendarPiece?: RrssCalendarPieceBrief | null;
|
||||
/** Recent pipeline captions/titles for style continuity */
|
||||
recentPipeline?: Array<{ title: string; format: string; caption?: string | null }>;
|
||||
@@ -113,8 +131,12 @@ export type RrssGenerationBriefInput = {
|
||||
};
|
||||
|
||||
export function buildRrssGenerationBrief(input: RrssGenerationBriefInput) {
|
||||
const aspects = rrssBriefAspectFields(input.format);
|
||||
const cal = input.calendarPiece || {};
|
||||
const platform =
|
||||
input.platform ||
|
||||
(typeof cal.platform === 'string' ? cal.platform : null) ||
|
||||
null;
|
||||
const aspects = rrssBriefAspectFields(input.format, platform);
|
||||
return {
|
||||
channel: 'rrss' as const,
|
||||
tenant_id: input.tenantId,
|
||||
@@ -127,6 +149,7 @@ export function buildRrssGenerationBrief(input: RrssGenerationBriefInput) {
|
||||
source_pipeline_id: input.pipelineId,
|
||||
calendar_piece_id: input.calendarPieceId || cal.id || null,
|
||||
format: input.format,
|
||||
platform,
|
||||
skill_format: mapRrssFormatToSkillFormat(input.format),
|
||||
...aspects,
|
||||
variants_requested: Number(input.variantsRequested || 2),
|
||||
|
||||
Reference in New Issue
Block a user