7.1 KiB
Avaliação do banco de dados
Data da avaliação: 21 de julho de 2026
Banco: dfimoveis_data/dfimoveis.sqlite3
Modo: mode=ro, PRAGMA query_only = ON
SHA-256 do arquivo principal: bfbbdd09e88f76afd917ebd981b848b9321aeb5fc0602f712645d33e1a5ea76c
1. Pergunta
O snapshot atualizado sustenta a revisão dos rankings e já permite conclusões de histórico, disponibilidade e liquidez?
Resposta curta: sustenta a revisão operacional dos rankings, mas ainda não sustenta inferência de liquidez ou preço de transação. O banco contém quatro dias efetivos de observação entre 13 e 21/07/2026, e a maior parte dos novos snapshots é causada por campos textuais contaminados, não por mudança imobiliária real.
2. Integridade e esquema
- tamanho do arquivo principal: 9.478.144 bytes;
PRAGMA quick_check:ok;PRAGMA foreign_key_check: nenhuma violação;- codificação: UTF-8;
journal_mode: WAL;- 2.314 páginas de 4.096 bytes;
- cinco tabelas da aplicação e
sqlite_sequence; - quatro autoíndices; nenhuma view ou trigger;
- esquema físico sem mudança material em relação a
docs/ACTUAL_SCHEMA.md.
O banco foi consultado em transação somente leitura. Não foi usado immutable=1, pois este é o arquivo atualizado pelo scraper.
3. Universo e cobertura
| Unidade | Total |
|---|---|
| Execuções registradas | 20 |
Execuções ok |
12 |
Execuções failed |
8 |
| Anúncios acumulados | 161 |
| Observações históricas | 562 |
| Vínculos anúncio–busca | 161 |
| Fotos registradas | 7.363 |
| Hashes de foto distintos | 3.455 |
| Anúncios inativos | 20 |
Cobertura técnica: 13–21/07/2026. Há observações de anúncios em quatro datas, janela insuficiente para sazonalidade ou liquidez.
| Região | Acumulados | Ativos | Inativos |
|---|---|---|---|
| Jardins Mangueiral | 94 | 78 | 16 |
| Cruzeiro Novo | 67 | 63 | 4 |
A execução 20, em 21/07, processou oito páginas, encontrou 141 URLs, concluiu 141 detalhes sem falha, baixou 572 fotos novas, reutilizou 4.404 e marcou 20 anúncios como inativos. Ausência da busca não comprova venda.
4. O que os dados representam
listings: identidade de anúncio e estado corrente;listing_history: estados distintos porcontent_hash, não cada observação;listing_searches: vínculo entre anúncio e busca;photos: mídia associada ao anúncio, sem vínculo a um snapshot específico;crawl_runs: execução técnica sem chave direta para os anúncios observados;- imóvel físico provável: não existe como entidade persistida e depende de deduplicação derivada.
Há 21 anúncios com um snapshot, 6 com dois, 7 com três e 127 com quatro. Essa distribuição não deve ser interpretada como número de mudanças reais.
5. Auditoria das mudanças históricas
Foram comparadas as transições consecutivas de data_json:
| Campo alterado | Transições |
|---|---|
content_hash |
401 |
creci |
398 |
advertiser_code |
66 |
neighborhood |
25 |
description |
11 |
price_brl |
3 |
address |
3 |
Em 305 transições, somente creci e o hash mudaram. Isso indica instabilidade do parser ou conteúdo variável da página. Não há base para tratar 401 transições como mudanças de mercado.
Mudanças reais de preço identificadas:
1173275: R$ 550.000 para R$ 549.000 em 21/07;1348535: R$ 950.000 para R$ 880.000 em 20/07, mantido em 21/07;1372539: R$ 572.500 para R$ 569.000 em 17/07, mantido depois.
Esses valores são preços anunciados, não negociados.
6. Qualidade dos campos
Nos 161 anúncios:
- preço, área e quartos estão preenchidos em todos;
- cidade, UF, latitude e longitude estão ausentes em todos;
- 150 endereços têm mais de 300 caracteres;
- 159 bairros têm mais de 100 caracteres;
- permanece um preço de R$ 570 milhões (
1351663); - permanece uma área de 0,11 m² (
1370918); - nenhum registro de foto está sem hash ou caminho local no snapshot atual.
- a triagem perceptual com Pillow 12.3.0 foi reexecutada nos dois recortes; recuperou os grupos já documentados e não identificou nova duplicação suficientemente sustentada entre os 30 finalistas.
O preenchimento não garante validade. Localização e anunciante continuam contaminados. Área não distingue privativa, útil, construída, total, terreno ou ampliação.
7. Disponibilidade e quarentena visual
Vinte anúncios estão inativos no banco, mas retirada não prova venda. Além disso, dez anúncios ainda ativos exibem indicação explícita na primeira foto:
- Cruzeiro:
1263868; - Mangueiral:
1301400,1346017,1346231,1349519,1351729,1352943,1356197,1362968e1366801.
Esses registros ficam em quarentena histórica como “vendido visualmente indicado”. O selo é evidência operacional, não prova registral.
8. Atualização dos rankings
O Mangueiral não recebeu anúncio novo em 21/07. 1356197, antes em 9º, passou a exibir VENDIDO na primeira foto. Depois do feedback pessoal, o funil foi refeito sobre os 78 ativos; 1377683, 1371718 e 1140317 entraram no Top 5 por aderência inferida. A auditoria integral também identificou 1301400 com selo de vendido na primeira foto e 1369473 como solicitação de compra, não oferta.
O Cruzeiro recebeu:
1381514: SHCES 301, R$ 690 mil, 4º andar, reforma aparente forte, sem confirmação de elevador ou vaga e com divergência entre 63 e 93 m²;1400223: SHCES 609 D, R$ 495 mil, 2º andar, boa luz e necessidade de reforma ampla.
Os dois entraram no Top 15 condicionado. 1375199 saiu por inatividade; 1370891 passou para “quase entrou” pela nova evidência, não por piora comprovada.
9. Limitações
- um único portal e duas buscas;
- janela histórica curta;
- 20 inativos sem causa confirmada;
- snapshots inflados por campos textuais instáveis;
- ausência de entidade de imóvel físico;
- localização estruturada não confiável;
- área semanticamente inconsistente;
- fotos podem conter material genérico e republicações;
- planta original, sistemas, ruído e documentação exigem validação externa.
Não calcular preço por m² amplo, liquidez ou tendência com este snapshot.
10. Reprodução
Consultas essenciais, sempre em leitura:
PRAGMA query_only = ON;
PRAGMA quick_check;
PRAGMA foreign_key_check;
SELECT type, name, tbl_name, sql
FROM sqlite_master
ORDER BY type, name
LIMIT 50;
SELECT COUNT(*) FROM listings;
SELECT COUNT(*) FROM listing_history;
SELECT COUNT(*) FROM listing_searches;
SELECT COUNT(*) FROM photos;
SELECT COUNT(*) FROM crawl_runs;
SELECT s.search_url,
COUNT(*) AS accumulated,
SUM(l.inactive_at IS NULL) AS active,
SUM(l.inactive_at IS NOT NULL) AS inactive
FROM listing_searches AS s
JOIN listings AS l USING (listing_id)
GROUP BY s.search_url
LIMIT 10;
11. Implicação prática
O snapshot melhora a triagem operacional, sobretudo ao revelar inativos e dois apartamentos novos. Ele ainda não justifica pressa nem conclusões de mercado. O ganho imediato vem de manter quarentenas visuais, corrigir a geração excessiva de snapshots e validar documentalmente os candidatos antes de visita ou negociação.