Atualizado em 8 de setembro de 2026. As migrações foram aplicadas após autorização explícita do proprietário e o Raio-X está implantado. Este código está pronto para a sequência de publicação. Os limites de validação abaixo continuam válidos após publicar.
| Etapa | Entrega | Validação |
|---|---|---|
| 0 — Base | Terra consolidado no GitHub, sem dados demonstrativos nem salvamento em memória; módulos separados; fotos em bucket privado | Publicado anteriormente; assinatura de fotos reconferida na API |
| 1 — Marketplace | URL individual, favoritos, compartilhamento, WhatsApp com registro do contato, visualizações, situações, denúncias e perfil do anunciante | Migração aplicada; testes de isolamento, métricas, favoritos e visibilidade passaram |
| 2 — Busca e conta | Filtros avançados, m²/ha, buscas salvas, alertas internos, similares, comparação de 2 a 4 terrenos e painel da conta | Migração aplicada; geração de alertas e pesquisa real verificadas |
| 3 — Mapa e cadastro | Busca pela área visível ou polígono; coordenadas; GeoJSON/KML/KMZ; distâncias dos vértices; campos urbanos/rurais | Interseção PostGIS testada na API; importadores cobertos por testes automatizados |
| 4 — Raio-X | Referência central da cidade e amostras de altitude reais, com indicação de indisponibilidade | Função implantada e chamada pela API; limitada a anúncios públicos |
TerraScore e inteligência de preço regional continuam fora da entrega. Existem apenas três anúncios públicos de teste, sem volume representativo para comparar o mercado. Preço por m² é a divisão do preço anunciado pela área calculada.
| Situação | Busca padrão | Link individual e fotos | Edição |
|---|---|---|---|
| Rascunho | Apenas Meus terrenos | Proprietário | Proprietário |
| Ativo | Público | Público | Proprietário |
| Reservado | Público, identificado | Público | Proprietário |
| Vendido | Fora da busca padrão | Público, identificado | Proprietário |
| Pausado | Apenas Meus terrenos | Proprietário | Proprietário |
O perfil público inclui nome, foto, cidade, tipo de anunciante e número de anúncios ativos. Avatares usam um bucket público separado. O WhatsApp fica em tabela privada e só é fornecido no fluxo de contato quando habilitado; não existe verificação automática do telefone. Favoritos, buscas e notificações pertencem à conta. O anunciante recebe métricas agregadas; identificadores brutos de visitantes não ficam disponíveis na API. Denúncias ficam pendentes de revisão administrativa.
O Raio-X lê o anúncio como visitante anônimo, com filtro público, antes de qualquer cache ou consulta externa. O JWT do proprietário não é encaminhado nem pode liberar rascunhos ou pausados. Essa restrição resolveu a rejeição automática da implementação inicial, que poderia encaminhar coordenadas privadas aos provedores.
tests/verify-marketplace.sql passou no banco existente em transação com duas contas temporárias e ROLLBACK. Confere terreno alheio, rascunhos, telefone verificado, contatos privados, métricas, favoritos únicos, denúncias, alerta correspondente e situação vendido.municipality retornada pelo Photon para Juiz de Fora foi incorporada ao reconhecimento de cidades.Os testes JavaScript usam respostas controladas; os testes KML adaptam o parser XML no Node. Não houve teste visual/funcional em navegador desktop ou mobile, nem login social real. O ambiente Sites desta sessão não oferece preview compatível com o projeto estático. A validação com duas contas ocorreu no SQL, não no formulário do site. Não descrever esses testes como cobertura completa de ponta a ponta.
As migrações em supabase/migrations usam versões retornadas pelo serviço do Supabase. O teste real identificou e corrigiu o operador PostGIS &&, agora qualificado como operator(public.&&) para manter search_path vazio. Não foi criada uma segunda base nem apagado o esquema existente. Detalhes em DATABASE.md.
OVERPASS_URL de fonte própria/contratada para serviços próximos e vias. Sem isso, a interface informa a ausência da fonte.RLS sem políticas nas tabelas de eventos, contatos recebidos e visualizações é intencional: não há acesso direto de anon/authenticated; funções restritas registram e agregam esses dados.
Permanecem apontamentos anteriores: spatial_ref_sys sem RLS, PostGIS em public, st_estimatedextent acessível pela API e proteção contra senhas vazadas desativada. Não mover a extensão sem uma migração específica de compatibilidade. A execução pública de rls_auto_enable foi revogada nesta entrega.
A versão anterior do site permanece disponível para recuperação. Um retorno do front-end não desfaz a visibilidade autorizada de reservados/vendidos e perfis. Não apagar tabelas nem executar scripts históricos novamente como reversão.
Fontes: Photon, ViaCEP, Open Topo Data / SRTM, OpenStreetMap.