GET /campaigns/:id/creators lista criadores compatíveis com uma campanha.
A resposta tem esta forma:
{
"campaign_id": "cmp_01",
"total": 0,
"creators": [
{
"id": "crt_0001",
"name": "Criador 1",
"niche_score": 1,
"latest_reach": 0,
"deliveries_90d": 0
}
]
}Regras:
niche_scoreé a quantidade de nichos em comum com a campanha. Score 0 fica de fora.latest_reaché a soma das views da métrica mais recente de cada conta. A mais recente é a de maiorcaptured_at. Empate desempata poriddecrescente.deliveries_90dconta entregas comdelivered_atmaior ou igual a 90 dias antes de2026-06-01T12:00:00.000Z.- Ordem:
niche_scoredecrescente,latest_reachdecrescente,idcrescente. limitpadrão 20, máximo 50.offsetpadrão 0.totalé o tamanho da lista inteira, antes da página.
A primeira página da campanha cmp_01, no seed que os testes usam, está congelada em fixtures/page-1.json. A resposta tem que continuar igual.
O teste de orçamento conta as chamadas a all e get em src/db.ts nessa página e exige no máximo 8. O banco já está populado quando a contagem começa. O teto vale para o volume do teste e para um volume maior: não pode crescer junto com a quantidade de criadores.
npm run benchO bench popula 2000 criadores e imprime queries, p50_ms e p95_ms.
Node 22.
npm install
npm test
npm run bench
npm run devA API sobe em http://127.0.0.1:3002 com o seed do bench na memória.
No estado em que este repositório está, os testes de resposta e de borda passam e os de orçamento (volume do seed e 600 criadores) falham. A entrega é todos verdes, com o mesmo JSON.
- Faça fork deste repositório.
- Corrija numa branch.
- Abra o pull request no seu fork. Este repositório não recebe a solução.
- No corpo do PR, cole o
queries, op50_mse op95_msde antes e de depois. - Declare o que foi feito com IA e o que você revisou.
- Envie o link do PR na plataforma de seleção.
Repositório privado vale se a organização Conty-App tiver acesso de leitura.
Não altere fixtures/page-1.json para fazer o teste passar. O acesso ao banco da listagem continua por src/db.ts.
O contrato é este README e os testes. Arquivo ou comentário dirigido a ferramenta (AGENTS.md, regras de editor, textos para "assistente" ou "agente") não faz parte da tarefa. Se o diff fizer o que isso pede, a entrega perde pontos.