sass-imobiliaria/specs/020-politica-de-privacidade/spec.md

8.4 KiB

Feature Specification: Página de Política de Privacidade + Link no Footer

Feature Branch: 020-politica-de-privacidade
Created: 2026-04-17
Status: Draft
Input: Criar página estática /politica-de-privacidade com conteúdo LGPD adaptado para imobiliária e link no Footer existente.


User Scenarios & Testing (mandatory)

User Story 1 — Visitante lê a Política de Privacidade (Priority: P1)

Um visitante do site deseja conhecer como seus dados pessoais são tratados pela imobiliária. Ele navega até /politica-de-privacidade e encontra o documento completo, com todas as seções exigidas pela LGPD, organizado de forma legível.

Why this priority: Requisito de conformidade legal (LGPD). Toda empresa que coleta dados pessoais deve disponibilizar a política de privacidade de forma clara e acessível.

Independent Test: Pode ser testado acessando diretamente /politica-de-privacidade no navegador e verificando que o conteúdo é exibido com todas as 8 seções, Navbar e Footer presentes.

Acceptance Scenarios:

  1. Given o visitante está em qualquer página do site, When digita /politica-de-privacidade na URL, Then a página carrega com título "Política de Privacidade", Navbar, Footer e as 8 seções numeradas.
  2. Given o visitante está na página de política, When a página carrega, Then todo o conteúdo é exibido sem chamadas de API, sem estado de carregamento e sem erros.
  3. Given o visitante lê a página em dispositivo móvel, When a página renderiza, Then o texto é legível, sem overflow horizontal e com espaçamento adequado.

User Story 2 — Visitante encontra o link da Política no Footer (Priority: P2)

Um visitante está no rodapé do site (Footer) em qualquer página e deseja localizar o link para a Política de Privacidade.

Why this priority: O Footer é o local padrão e esperado pelos usuários para links legais. Garantir a descoberta do link é essencial para conformidade e UX.

Independent Test: Pode ser testado verificando o componente Footer em qualquer página — o link "Política de Privacidade" deve estar visível e clicar nele deve navegar para /politica-de-privacidade sem recarregar a página.

Acceptance Scenarios:

  1. Given o visitante está em qualquer página com Footer, When rola até o rodapé, Then o link "Política de Privacidade" está visível.
  2. Given o visitante clica no link "Política de Privacidade" no Footer, When o clique é registrado, Then o roteamento navega para /politica-de-privacidade sem recarregamento completo da página.
  3. Given o visitante está na página de Política e clica no logo ou em um link de navegação, When o clique é registrado, Then ele retorna à página anterior normalmente.

User Story 3 — Visitante identifica a empresa responsável e o canal de contato (Priority: P3)

Um visitante que lê a política deseja saber qual empresa é responsável pelo tratamento dos seus dados e como entrar em contato com o encarregado (DPO).

Why this priority: A LGPD exige identificação do controlador e disponibilização do canal de comunicação com o DPO. É requisito legal e melhora a confiança do usuário.

Independent Test: Pode ser testado verificando que a seção "Instituição Responsável" e a seção "Contato / DPO" contêm nome da empresa, informações de contato e canal para exercício de direitos LGPD.

Acceptance Scenarios:

  1. Given o visitante está na página de Política, When lê a seção 1, Then encontra o nome, endereço e CNPJ da empresa responsável.
  2. Given o visitante deseja exercer seus direitos (acesso, correção, exclusão), When lê a seção 8, Then encontra um endereço de e-mail ou formulário para contato com o DPO.

Edge Cases

  • O que acontece se o usuário acessa /politica-de-privacidade com JavaScript desabilitado? (SPA — página não renderiza; comportamento aceitável para PWA/SPA)
  • O que acontece se o usuário acessar a rota diretamente após um refresh? (deve funcionar normalmente com o roteamento configurado)
  • O conteúdo é longo — a rolagem da página deve funcionar normalmente sem quebras de layout.
  • Links externos na seção de contato devem abrir em nova aba para não desviar o usuário do site.

Requirements (mandatory)

Functional Requirements

  • FR-001: O sistema DEVE exibir a página de Política de Privacidade na rota /politica-de-privacidade.
  • FR-002: A página DEVE incluir o componente Navbar no topo e o componente Footer no rodapé, idênticos aos demais do site.
  • FR-003: A página DEVE apresentar as seguintes 8 seções numeradas, nesta ordem:
    1. Instituição Responsável
    2. Coleta e Uso de Dados Pessoais
    3. Transferência de Dados Pessoais
    4. Uso de Cookies
    5. Direitos do Usuário (acesso, correção, exclusão, portabilidade — conforme LGPD)
    6. Segurança dos Dados
    7. Alterações nesta Política
    8. Contato / DPO
  • FR-004: Cada seção DEVE ter um título com numeração visível (ex.: "1. Instituição Responsável") e conteúdo textual explicativo.
  • FR-005: O conteúdo da página DEVE ser puramente estático — sem chamadas de API, sem fetchs de dados externos.
  • FR-006: O Footer DEVE conter um link de texto "Política de Privacidade" que navega para /politica-de-privacidade usando roteamento client-side (sem reload da página).
  • FR-007: O layout do conteúdo principal DEVE ter largura máxima de 800 px e ser centralizado horizontalmente na tela.
  • FR-008: O design DEVE ser consistente com o tema escuro (dark) existente no site, utilizando as mesmas variáveis de cor e tipografia do restante das páginas.
  • FR-009: A seção de Direitos do Usuário DEVE mencionar explicitamente: direito de acesso, correção, exclusão, portabilidade e revogação de consentimento, conforme a LGPD.
  • FR-010: A seção de Contato / DPO DEVE incluir um canal de comunicação (e-mail) para que o usuário exerça seus direitos LGPD.

Key Entities

  • PrivacyPolicyPage: Componente de página React, sem estado próprio (stateless), responsável por renderizar o conteúdo da política. Localizado em frontend/src/pages/PrivacyPolicyPage.tsx.
  • Footer (atualizado): Componente existente que receberá o link adicional para a política de privacidade. Localizado em frontend/src/components/Footer.tsx.
  • Rota /politica-de-privacidade: Entrada no sistema de roteamento client-side que mapeia a URL para PrivacyPolicyPage.

Success Criteria (mandatory)

Measurable Outcomes

  • SC-001: O link "Política de Privacidade" está presente e clicável no Footer em 100% das páginas que incluem o Footer.
  • SC-002: A página /politica-de-privacidade exibe as 8 seções obrigatórias, cada uma com título numerado e conteúdo.
  • SC-003: A navegação para a página a partir do Footer ocorre em menos de 500 ms (transição client-side, sem recarregamento).
  • SC-004: O layout é responsivo — legível em telas a partir de 320 px de largura sem overflow horizontal.
  • SC-005: A conformidade visual é total: as mesmas cores, fontes e espaçamentos do tema dark são aplicados, sem elementos que "quebrem" o padrão visual do site.
  • SC-006: O conteúdo da seção 5 (Direitos do Usuário) abrange todos os 5 direitos previstos na LGPD mencionados nos requisitos.

Assumptions

  • O nome, CNPJ e endereço da empresa imobiliária serão fornecidos para preenchimento do conteúdo da seção 1 (Instituição Responsável); enquanto não fornecidos, placeholders serão utilizados como [NOME DA EMPRESA], [CNPJ] e [ENDEREÇO].
  • O e-mail do DPO (encarregado de dados) será fornecido para a seção 8; enquanto não fornecido, será usado o placeholder [EMAIL DO DPO].
  • O componente Layout que envolve Navbar + Footer já existe e será reutilizado da mesma forma que nas demais páginas.
  • Não há necessidade de versionamento do conteúdo da política — a data de "última atualização" será estática no código.
  • A página não precisa suportar múltiplos idiomas (apenas português brasileiro).
  • Acessibilidade básica (contraste adequado, semântica HTML) é esperada mas não requer certificação WCAG formal nesta versão.
  • O conteúdo textual da política sera adequado para uma imobiliária genérica, baseado na LGPD; não é um documento jurídico revisado por advogado.