ACCEPTANCE CRITERIA (19/19)
☑ Script `squads/traffic-ads/scripts/weekly-ai-analysis.js` criado
☑ Executa 1x por semana (cron via GitHub Actions — domingo 20h BRT = 23h UTC)
☑ Carrega 7 dias de arquivos `data/metrics-YYYY-MM-DD.json`
☑ Carrega `data/optimization-state.json` (decisões tomadas na semana)
☑ Carrega dados do bot / nCAC real se disponível (Story 20.3 — opcional se não implementado)
☑ Carrega spy de concorrentes da semana se disponível (Story 20.7 — opcional)
☑ Chama Claude API usando modelo Sonnet (não Opus — custo controlado para análise automatizada)
☑ Prompt inclui: métricas consolidadas da semana, tendências calculadas, criativos ativos, decisões do sistema, dados do bot (se disponível), spy (se disponível)
☑ Prompt incorpora estilo analítico do clone Ralph Burns e framework de Hormozi (ALAN — Ask, Listen, Agree, Now)
☑ `CLAUDE_API_KEY` lida de `.env` (nunca hardcoded)
☑ Relatório salvo em `squads/traffic-ads/reports/weekly-YYYY-MM-DD.md`
☑ Seções obrigatórias:
☑ Workflow `.github/workflows/traffic-weekly-analysis.yml` criado (root, onde GH Actions executa)
☑ Cron: `0 23 * * 0` (domingo 23h UTC = 20h BRT)
☑ `CLAUDE_API_KEY` injetada como GitHub Secret
☑ @cyber-chief security review PASS_WITH_CONDITIONS (2026-03-31)
☑ `CLAUDE_API_KEY` nunca logada ou incluída no output
☑ Dados de clientes (PII) não incluídos no prompt enviado à API Claude
☑ Relatório final não contém PII
ARQUIVOS (6)
squads/traffic-ads/scripts/weekly-ai-analysis.js Created
squads/traffic-ads/tests/weekly-ai-analysis.test.js Created
squads/traffic-ads/data/contracts/weekly-analysis-prompt-contract.md Created
.github/workflows/traffic-weekly-analysis.yml Created
squads/traffic-ads/.env.example Modified
docs/stories/active/story-20.6-analise-semanal-ia-clones.md Modified