163 lines
5.4 KiB
Markdown
163 lines
5.4 KiB
Markdown
# 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 (1–8)
|
||
│ └── <section> com <h2> numerado + <p>/<ul> de conteúdo
|
||
└── <Footer />
|
||
```
|
||
|
||
**Seções (hardcoded)**:
|
||
|
||
```typescript
|
||
type PolicySection = {
|
||
id: number // 1–8
|
||
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 |
|