Scraper
Coleta imóveis dos portais ZAP/VivaReal via API JSON pública. Implementa deduplicação por SHA256 e normalização de endereços para o contexto de Jundiaí.
LGPD: armazena apenas advertiser_type (owner/broker/agency) — nunca nome, telefone ou email do anunciante.
Orquestrador de scraping — entrada principal do componente.
run_scrape(session, source, tenant_id, city='Jundiaí', state='SP', limit=100)
async
Executa scraping de uma fonte e persiste resultados no banco.
Imóveis novos entram com status='new'. Imóveis com dedup_hash já existente entram com status='duplicate'.
CLI
uv run python scripts/run_scraper.py --source zap --city Jundiai --limit 100
Workflow de aprovação
ScrapedProperty.status
new → (admin aprova) → authorized → importado como Property
→ (admin rejeita) → discarded
Use o NocoDB em admin.viacorretor.com.br para aprovar/rejeitar imóveis scraped.