From 8ebbe079ec5e3ed55af9d163068fa12656cb5979 Mon Sep 17 00:00:00 2001 From: Marcio Bevervanso Date: Tue, 16 Jun 2026 14:21:28 -0300 Subject: [PATCH] =?UTF-8?q?diag:=20revelar=20o=20motivo=20de=20a=20customi?= =?UTF-8?q?za=C3=A7=C3=A3o=20por=20posicionamento=20falhar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As 3 imagens sobem, mas a Meta recusa montar o criativo com elas e o app cai pra 1 imagem silenciosamente. Agora o erro real da Meta é logado ([Placement]) e devolvido na resposta (placement_error), aparecendo na tela final — pra diagnosticar e corrigir a estrutura do asset_feed_spec. Co-Authored-By: Claude Opus 4.8 --- src/app/dashboard/create/page.tsx | 18 ++++++++++++++++++ src/lib/mcp/tools.ts | 19 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/app/dashboard/create/page.tsx b/src/app/dashboard/create/page.tsx index 6977146..d3b8d2c 100644 --- a/src/app/dashboard/create/page.tsx +++ b/src/app/dashboard/create/page.tsx @@ -77,6 +77,9 @@ export default function CreateCampaignPage() { // Subir a campanha já ativa (no ar) em vez de pausada para revisão. const [startActive, setStartActive] = useState(false); + // Diagnóstico: motivo de a customização por posicionamento ter caído pra 1 imagem. + const [placementNote, setPlacementNote] = useState(null); + const [uploadedImageBytes, setUploadedImageBytes] = useState(null); @@ -608,6 +611,12 @@ export default function CreateCampaignPage() { approved_at: new Date().toISOString(), }); + setPlacementNote( + data.data?.placements_dropped + ? data.data?.placement_error || 'A Meta recusou a customização por posicionamento; subiu com 1 imagem.' + : null + ); + setStep('done'); } catch (err) { console.error('[Debug] Publish error:', err); @@ -1537,6 +1546,15 @@ export default function CreateCampaignPage() { ? 'Tudo enviado para o seu Gerenciador de Anúncios. A campanha subiu ATIVA e entra em análise da Meta agora — começa a entregar assim que for aprovada.' : 'Tudo enviado para o seu Gerenciador de Anúncios. A campanha subiu PAUSADA — revise no Gerenciador e dê play quando quiser colocar no ar.'}

+ + {placementNote && ( +
+

+ Subiu com 1 imagem (a Meta recusou usar as 3 por posicionamento). Motivo retornado pela Meta: +

+

{placementNote}

+
+ )}