Commit graph

8 commits

Author SHA1 Message Date
19004d0cc5 feat: automação autônoma do engine (n8n) — métricas de compra, persistência e alertas
Torna o engine de automação realmente autônomo e seguro:

- métricas: lê COMPRA de verdade (actions/purchase_roas) e calcula CPA;
  novas métricas 'cpa' e 'purchases'; regras padrão afinadas p/ low-ticket
- orçamento: ações de budget agora agem no CONJUNTO (não na campanha, que
  lançava erro); usa listAdSets + updateAdSetBudget
- segurança: "substituir via IA" desativado (criava campanha com page_id/
  link inválidos) — agora só pausa e recomenda
- modo de autonomia 'mixed': pausar/notificar executa; orçamento/IA viram
  só recomendação (com cooldown que evita re-notificar)
- persistência (Supabase): regras, logs e token (app_config) — store.ts
  com fallback gracioso; SQL em docs/automation.sql
- endpoint /api/engine/cron p/ o n8n acionar (CRON_SECRET), avalia, grava
  logs e dispara webhook (N8N_WEBHOOK_URL); modo summary p/ resumo diário
- token de login persistido no callback p/ rodar sem cookie
- aba Atividade agora lê logs reais via /api/engine/logs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:43:45 -03:00
77f4dba1b2 fix: resolver instagram_actor_id válido p/ Ads + modal largo com scroll
IG: o id que vem da Página (instagram_business_account) é recusado pela
API de Ads (1815199) mesmo com a conta autorizada. Agora resolvemos o
"ator" correto via /act_X/instagram_accounts, casando pelo @username, nos
fluxos de criar campanha e adicionar anúncio.

Modal: .modal-content ganha max-height 90vh + overflow para não quebrar a
tela ao gerar copy/imagem, e tamanho 'lg' (680px) usado no Adicionar
Anúncio, que estava estreito demais.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:04:27 -03:00
8ebbe079ec diag: revelar o motivo de a customização por posicionamento falhar
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 <noreply@anthropic.com>
2026-06-16 14:21:28 -03:00
5dd4c675c4 fix: republicar do histórico mantém público, lance, página e pixel
Ao republicar um rascunho, o retry perdia configurações: público virava
Brasil amplo, Cost/Bid Cap virava Volume Máximo e a página/IG caíam na
primeira da conta.

- rascunho passa a salvar page_id, instagram_actor_id e conversion_event
- retry envia bid_strategy cru (suporta COST_CAP) + bid_amount em centavos
- retry resolve o targeting_template para o objeto de público real
- retry repassa page_id/instagram_actor_id/conversion_event/pixel

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:51:55 -03:00
349203b761 feat: opção de subir a campanha já ativa (no ar)
Antes tudo subia PAUSED por padrão. Agora o pipeline propaga um status
comum para campanha, conjunto e anúncio (os 3 precisam estar ACTIVE para
entregar). A rota aceita activate=true e o Preview ganha um toggle
"Iniciar a campanha já ativa" (default desmarcado = pausada para revisão).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:47:18 -03:00
a995424725 feat: otimizar app para campanhas de conversão low-ticket
Refina o pipeline de criação de campanhas para produtos de entrada
(ticket baixo, Pix/cartão) com foco em otimização por compra e controle
de custo, evitando prejuízo.

- scraper: lê sites SPA/JS (og tags, JSON-LD com preço/oferta, fallback
  de renderização via r.jina.ai) — antes só lia o <title>
- skins: nova skin "Festa Infantil / Produto de Entrada" com copy-rules
  de tripwire (Pix = acesso imediato, preço-âncora) e default em Vendas
- create: campanha de Vendas exige Pixel/Dataset e otimiza por
  OFFSITE_CONVERSIONS (antes caía para LINK_CLICKS), evento de conversão
  selecionável e estratégia Cost Cap (teto de custo por compra)
- corrige bid_strategy pré-mapeado errado no cliente que anulava o Bid Cap
- settings: persiste Pixel/Dataset ID e pré-preenche no formulário
- copy/analyzer: usam oferta, preço e formas de pagamento; variações A/B
  (preço / benefício / dor) para resposta direta
- creative: opção de estampar preço/oferta no criativo

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:27:58 -03:00
d2406f0152 feat: permite adicionar novos anuncios a campanhas ja ativas
Adiciona modal "+ Anuncio" na tabela de campanhas que reaproveita o
fluxo de geracao de copy/imagem por IA para publicar novos criativos
no mesmo ad set existente, mantendo orcamento e segmentacao.

- Extrai pipeline de upload+criativo+anuncio (addAdToAdSet) do
  createFullCampaign para reuso
- Adiciona get_adset_default_creative para pre-preencher pagina,
  link, instagram e CTA com base em anuncio ja existente no ad set
- Novas rotas POST /api/adsets/[id]/ads e
  GET /api/adsets/[id]/creative-defaults
- Novo componente AddAdModal com geracao de copy/imagem via IA ou
  upload manual

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 12:54:00 -03:00
Marcio Bevervanso
234314d1c6 Publish MetaAds Pro: AI-driven Meta Ads campaign management dashboard
Full app with AI campaign creation/copy/creative generation, dashboard,
campaign automation engine, Meta OAuth login, and a redesigned landing page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:30:33 -03:00