diff --git a/src/lib/mcp/tools.ts b/src/lib/mcp/tools.ts index e7e8c5e..27a5392 100644 --- a/src/lib/mcp/tools.ts +++ b/src/lib/mcp/tools.ts @@ -698,38 +698,33 @@ export async function addAdToAdSet(client: Client, params: AddAdToAdSetParams) { let instagramDropped = false; let placementsDropped = false; - try { - creative = await buildCreative(params.instagram_actor_id, wantPlacements); - } catch (err) { - if (params.instagram_actor_id && isInstagramError(err)) { - // Problema no Instagram: refaz sem IG (mantendo a customização se houver). - instagramDropped = true; - try { - creative = await buildCreative(undefined, wantPlacements); - } catch (err2) { - if (wantPlacements) { - placementsDropped = true; - creative = await buildCreative(undefined, false); - } else { - throw err2; - } + // Imagem única + IG é o caminho comprovado. Só largamos o Instagram se o + // próprio criativo de imagem única falhar com erro específico de IG (id + // inválido / sem acesso). Prioridade: NUNCA trocar IG por "3 imagens". + const buildSingleWithIgFallback = async () => { + try { + return await buildCreative(params.instagram_actor_id, false); + } catch (err) { + if (params.instagram_actor_id && isInstagramError(err)) { + instagramDropped = true; + return await buildCreative(undefined, false); } - } else if (wantPlacements) { - // Erro provável da customização por posicionamento → cai pra imagem única. - placementsDropped = true; - try { - creative = await buildCreative(params.instagram_actor_id, false); - } catch (err2) { - if (params.instagram_actor_id && isInstagramError(err2)) { - instagramDropped = true; - creative = await buildCreative(undefined, false); - } else { - throw err2; - } - } - } else { throw err; } + }; + + if (wantPlacements) { + try { + // 1) Melhor caso: imagem específica por posicionamento, com IG. + creative = await buildCreative(params.instagram_actor_id, true); + } catch { + // 2) Customização por posicionamento falhou (ex: conflito com a + // identidade de IG) → cai pra imagem única mantendo o Instagram. + placementsDropped = true; + creative = await buildSingleWithIgFallback(); + } + } else { + creative = await buildSingleWithIgFallback(); } const creativeId = (creative as any)?.id;