sass-imobiliaria/specs/020-politica-de-privacidade/data-model.md

5.4 KiB
Raw Blame History

Data Model: Página de Política de Privacidade

Feature: 020-politica-de-privacidade
Phase: 1 — Design & Contracts
Status: Complete


Nota sobre "Data Model" para feature 100% frontend

Esta feature não envolve entidades de banco de dados nem estado gerenciado em store. O "modelo de dados" aqui descreve a estrutura lógica do conteúdo estático e o contrato de componentes React.


Entidades de Componente

PrivacyPolicyPage

Propriedade Tipo Descrição
Componente sem props (stateless, sem hooks)

Estrutura JSX:

PrivacyPolicyPage
├── <Navbar />
├── <main id="main-content" className="min-h-screen bg-canvas">
│   └── <div className="max-w-[800px] mx-auto px-6 pt-16 pb-20">
│       ├── Header (label + título + data de atualização)
│       └── Seções (18)
│           └── <section> com <h2> numerado + <p>/<ul> de conteúdo
└── <Footer />

Seções (hardcoded):

type PolicySection = {
  id: number           // 18
  title: string        // "1. Instituição Responsável" etc.
  content: ReactNode   // JSX com paragrafos / listas
}

Observação: O tipo PolicySection NÃO precisa ser exportado nem criado como shared type — é usado somente internamente no componente. Principle VI: sem abstração prematura.


Mudança pontual: adicionar <Link to="/politica-de-privacidade"> no bloco <nav> existente.

Estado atual do array footerLinks:

const footerLinks = [
  { label: 'Imóveis',  href: '/imoveis' },
  { label: 'Sobre',    href: '#sobre' },
  { label: 'Contato',  href: '#contato' },
]

Após a mudança — o array footerLinks não é alterado. Um novo link <Link> do react-router-dom é adicionado manualmente no <ul> após os links existentes:

import { Link } from 'react-router-dom'

// no <ul> dos footerLinks, após o map existente:
<li>
  <Link
    to="/politica-de-privacidade"
    className="text-xs text-text-tertiary hover:text-text-secondary transition-colors duration-150"
  >
    Política de Privacidade
  </Link>
</li>

Rationale: Adicionar ao array seria inconsistente (o array usa href para <a>, mas esse precisa de <Link>). Manter separado é mais claro e não requer refatorar o loop existente.


Rota (App.tsx)

Campo Valor
path /politica-de-privacidade
element <PrivacyPolicyPage />
Posição no arquivo Após a rota /corretores, antes da rota /login
Guards Nenhum — rota pública

Conteúdo estático das seções

Seção 1 — Instituição Responsável

Nome: [NOME DA EMPRESA]
CNPJ: [CNPJ]
Endereço: [ENDEREÇO COMPLETO]
Esta empresa é a controladora dos dados pessoais tratados neste site.

Seção 2 — Coleta e Uso de Dados Pessoais

Dados coletados:

  • Nome completo, e-mail e telefone ao preencher formulários de contato
  • Dados de navegação (páginas visitadas, tempo de sessão) via cookies analíticos
  • Dados fornecidos voluntariamente ao solicitar visitas a imóveis

Finalidades:

  • Responder solicitações de contato e agendamento de visitas
  • Melhorar a experiência de uso do site
  • Enviar comunicações sobre imóveis compatíveis com o perfil do usuário (com consentimento)

Seção 3 — Transferência de Dados Pessoais

Compartilhamento com:

  • Corretores parceiros, apenas dados necessários para conduzir visitas
  • Plataformas de análise de tráfego (ex.: Google Analytics) — dados anonimizados
  • Não vendemos ou alugamos dados pessoais a terceiros

Seção 4 — Uso de Cookies

Tipos de cookies utilizados:

  • Essenciais: necessários para o funcionamento do site (autenticação, preferências)
  • Analíticos: medem o uso do site para melhoria contínua
  • O usuário pode desativar cookies analíticos nas configurações do navegador

Seção 5 — Direitos do Usuário (LGPD)

Conforme a Lei 13.709/2018 (LGPD), o titular dos dados tem direito a:

  • Acesso: confirmar a existência e solicitar cópia dos dados tratados
  • Correção: atualizar dados incompletos, inexatos ou desatualizados
  • Exclusão: solicitar a eliminação de dados desnecessários ou tratados com consentimento
  • Portabilidade: receber seus dados em formato estruturado
  • Revogação de consentimento: retirar o consentimento a qualquer momento

Seção 6 — Segurança dos Dados

  • Utilizamos conexões HTTPS em todo o site
  • Dados sensíveis são armazenados com criptografia
  • Acesso interno limitado ao pessoal autorizado
  • Revisamos regularmente nossas práticas de segurança

Seção 7 — Alterações nesta Política

Podemos atualizar esta Política periodicamente. A data de "última atualização" é exibida no topo da página. Recomendamos revisão periódica.

Seção 8 — Contato / DPO

Para exercer seus direitos ou esclarecer dúvidas sobre o tratamento de seus dados:
E-mail do Encarregado (DPO): [EMAIL DO DPO]
Link exibido como <a href="mailto:[EMAIL DO DPO]"> abrindo cliente de e-mail.


Validações e regras de estado

Regra Implementação
Sem chamadas de API Componente não usa useEffect, useState, nem imports de services/
Sem estado de loading Nenhum skeleton, spinner ou estado condicional
Links externos abrem em nova aba target="_blank" rel="noopener noreferrer" no link do e-mail DPO