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

163 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)**:
```typescript
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.
---
### Footer (atualizado)
Mudança pontual: adicionar `<Link to="/politica-de-privacidade">` no bloco `<nav>` existente.
**Estado atual do array `footerLinks`**:
```typescript
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:
```tsx
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 |