Lifecycle de uma URL
Dedup duplo
1. Por URL normalizada
A mesma URL usada em N produtos = 1 download, 1 asset, N referências. Antes de hashear, a URL é normalizada:- Host em lowercase
- Fragment removido (
#section) - Query params ordenados alfabeticamente
- Tracking params removidos (
utm_*,v,t,ref,fbclid,gclid)
https://CDN.X.com/img.jpg?utm=x&keep=y e https://cdn.x.com/img.jpg?keep=y são tratadas como a mesma fonte.
2. Por ETag (HTTP)
Antes de re-baixar, a Voop fazHEAD com If-None-Match:
304 Not Modified→ statusskipped_unchanged, zero custo200 OK→ re-baixa apenas se conteúdo mudou
Validação automática
Antes do download, a Voop verifica:
SVG é bloqueado por risco de XSS quando renderizado em navegadores.
Per-domain rate limit
Para não sobrecarregar o servidor de origem do cliente, a Voop limita a 10 downloads simultâneos por domínio. Subdomínios são pools separados:cdn.example.com e assets.example.com têm 10 slots cada.
Status de uma source
GET /items/{externalSystem}/{externalId} —
o array media retorna o estado atual.
Webhooks de mídia
Re-tentativa manual
Se uma source ficoufailed por motivo transitório (CDN do cliente caiu por 1h),
o worker tenta automaticamente até 5 vezes com backoff exponencial (30s, 60s, 2min, 4min, 8min).
Após esgotado, você pode disparar re-ingest fazendo um upsert do mesmo item com
a mesma URL — o backend re-enfileira automaticamente se o status for não-terminal.