Skip to content

Ad tags e loaders: rotas do painel, do interno e a configuração pública - #250

Merged
PedroH3nri merged 2 commits into
pre-developfrom
claude/project-thread-z4s390
Nov 10, 2026
Merged

PedroH3nri merged 2 commits into
pre-developfrom
claude/project-thread-z4s390

Conversation

@PedroH3nri

Copy link
Copy Markdown
Owner

Closes #247. Closes #248. Refs #249: só a configuração. Os eventos de saúde e as visitas entram depois do core#310.

Decisão 13 (avant-core/docs/decisoes/13-ad-tag.md), com o avant-core na v0.88.0.

Rotas

  • Painel do cliente: GET|POST /api/v1/ad-tags, GET|PUT|PATCH|DELETE /api/v1/ad-tags/{id} (o PUT grava o nome e o rascunho, o PATCH pausa ou ativa), POST .../publish, GET .../versions, POST .../versions/{n}/restore e GET /api/v1/sites/{id}/ad-tag-units (os dias e os tipos de bloco). Ver pede ad_tags.view; mexer pede ad_tags.manage.
  • Loaders: GET|POST /api/v1/loaders, GET /api/v1/loaders/options, GET|PUT|DELETE /api/v1/loaders/{id}. Usam as mesmas permissões das ad tags.
  • Interno: as mesmas rotas em /api/v1/internal/ad-tags, /internal/sites/{id}/ad-tag-units e /internal/loaders (com company_id no filtro, nas opções e ao criar). Pedem internal.ad_tags.*.
  • Pública: GET /api/tag/config?key=&url=, com CORS aberto e limite por IP (TAG_CONFIG). O cache no Redis fica por chave (avant:tag:{chave}), com o domínio do site. O domínio da página é conferido em todo pedido, e uma chave usada em outro site recebe {"tag": null}.
  • Cache: publicar, voltar versão, pausar e apagar limpam a chave da tag. Salvar um loader limpa as chaves de todas as tags que o usam.
  • Erros: ad_tag_name_taken 409, ad_tag_ad_unit_day_missing 422, ad_tag_unit_missing 422, loader_name_taken 409 e loader_in_use 409.

Testes

tests/test_ad_tags.py roda contra o Postgres. Ele cobre o caso sem permissão, rascunho, bloco sem ad unit, publicar, o cache vazio e o cache limpo, a configuração pública com o loader e o outro domínio, o loader em uso, voltar versão, pausar, apagar e o painel interno. Localmente passaram ruff, mypy, clean_code e os 174 testes.


Generated by Claude Code

Painel do cliente (/api/v1/ad-tags, /api/v1/loaders, /sites/{id}/ad-tag-units),
painel interno (/internal/ad-tags, /internal/loaders) e a configuração pública
GET /api/tag/config com cache por chave (avant:tag:{chave}) e o domínio da
página conferido a cada pedido. Salvar um loader limpa o cache das tags que o
usam; publicar, voltar versão, pausar e apagar limpam o da tag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zjsQMB7TyFn9BJCfxzxG5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zjsQMB7TyFn9BJCfxzxG5
@PedroH3nri
PedroH3nri merged commit 5c34bb7 into pre-develop Nov 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants