Regras de negócio
Regras que valem independentemente de tecnologia. Vivem no domínio do backend (arquitetura hexagonal) e são cobertas por testes unitários.
RN-01 — Identidade e deduplicação
- O N° do imóvel (da Caixa) é a chave natural. Imóveis são deduplicados por ele.
- A coleta é idempotente: sempre faz upsert por
codigo— nunca insere duplicado nem cria um registro novo para um imóvel já conhecido. - O ciclo de vida (disponível → vendido/removido → eventual reaparecimento) é tratado pela RN-09.
RN-02 — Histórico de preço/status
- Toda mudança de preço, desconto ou status gera um registro em
historico_preco. - Isso permite mostrar tendência, detectar reduções e auditar quando o imóvel foi vendido.
RN-03 — Normalização
- Endereço, cidade, bairro e tipo são normalizados (trim, capitalização, remoção de ruído).
- A descrição semiestruturada da Caixa é parseada para extrair tipo e áreas (total/privativa/terreno). Ver Fonte Caixa (CSV).
RN-04 — Modalidade de venda
- A modalidade (ex.: Leilão SFI, Venda Direta, Licitação) é preservada e vira filtro.
- Regras de custo podem variar por modalidade (ex.: comissão do leiloeiro só em leilão).
RN-05 — Custo total e desconto real
- O sistema sempre calcula o custo total (ver Cálculo de custos) e o desconto real — nunca exibe só o desconto anunciado como se fosse o ganho.
RN-06 — Pré-análise de viabilidade
- Cada imóvel recebe um score de viabilidade. Ver Pré-análise.
- O score é apoio à decisão, não recomendação de investimento.
RN-07 — Riscos do edital
- Riscos como ocupação, dívidas (IPTU/condomínio) e desocupação por conta do comprador devem ser sinalizados e impactar o score.
RN-08 — Privacidade (LGPD)
- Só tratamos dados do imóvel (públicos). Nunca dados pessoais de terceiros. Ver Legal & LGPD.
- Proibido perfilar pessoas. Não coletamos, armazenamos nem analisamos a situação do antigo comprador/proprietário/devedor (nomes citados em edital/matrícula). Isso é dado pessoal de terceiro e está fora do escopo.
- Só fatos do imóvel. Da leitura de edital/matrícula extraímos apenas atributos do bem (ex.: existe penhora, usufruto, fração ideal, ônus), redigindo/omitindo nomes e identificadores pessoais antes de persistir. Qualquer dado que sobrar deve ser público e vinculado ao imóvel, nunca um perfil de indivíduo.
- Sem PII em logs, telemetria e prompts de IA que sejam registrados. Ver Análise jurídica com IA e ADR-0014.
RN-09 — Ciclo de vida do imóvel (vendido / removido / reaparecimento)
A Caixa não marca "vendido" no CSV: o imóvel simplesmente desaparece da lista quando é arrematado/retirado. O sistema infere o estado e nunca apaga o registro.
Estados (status = status_imovel): disponivel · vendido · suspenso · removido.
- Presente no CSV/detalhe →
disponivel(faz upsert dos campos). - Sumiu do CSV → não marcar na hora (pode ser falha transitória de download). Só transiciona após período de carência (ausente por N coletas consecutivas, ex.: 2–3) ou confirmação pelo detalhe:
- detalhe indica venda concluída / arrematado →
vendido; - detalhe retorna 404 / "imóvel não disponível" ou ausência sem causa clara →
removido; - retirada temporária / sub judice conhecida →
suspenso.
- detalhe indica venda concluída / arrematado →
- Reaparecimento (re-leilão): se um imóvel
vendido/removidovolta a aparecer no CSV, reativa paradisponivel, iniciando um novo ciclo — o histórico anterior é preservado emhistorico_preco. - Toda transição de status registra linha em
historico_preco(RN-02) comcapturado_em. - Exclusão lógica ≠ venda:
vendido/removidosão estados de negócio (colunastatus), não usamexcluido_em. O soft delete é reservado a dado inválido/duplicado, não a imóvel que saiu do catálogo. Ver Modelo de dados.
RN-10 — Efeitos de "vendido" (enriquecimento, busca, alertas)
- Enriquecimento: imóveis
vendido/removidonão são re-enfileirados para scraping do detalhe (economia e respeito ao site); se já estavam na fila, o worker descarta o evento. Ver Enriquecimento (ADR-0010). - Cálculo/score: ao virar
vendido, o cálculo é congelado e a oferta é marcada como encerrada — não é reapresentada como oportunidade. - Busca: por padrão lista só
disponivel;vendido/removidoficam acessíveis via filtro "incluir encerrados" e nas páginas de histórico. - Favoritos/alertas: se um imóvel favoritado muda para
vendido, o usuário é notificado ("este imóvel foi vendido"); ele continua visível no favorito com selo Vendido.