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

5.9 KiB

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

Input: Design documents from specs/020-politica-de-privacidade/ Prerequisites: plan.md , spec.md , data-model.md , quickstart.md , research.md

Tests: Não solicitados — verificação por npm run build e inspeção visual (conforme plan.md).

Escopo: 1 arquivo criado, 2 arquivos modificados — 100% frontend, sem backend, sem dependências novas.

Format: [ID] [P?] [Story] Description

  • [P]: Pode rodar em paralelo (arquivos diferentes, sem dependências entre si)
  • [Story]: User story a que a task pertence (US1, US2, US3)
  • Todos os caminhos são relativos à raiz do repositório

Phase 1: Setup & Foundational

Não aplicável — projeto já inicializado, sem novas dependências, sem infraestrutura nova. Pode avançar diretamente para as user stories.


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

Goal: Criar o componente PrivacyPolicyPage e registrá-lo no roteador para que a rota /politica-de-privacidade funcione.

Independent Test: Acessar http://localhost:5173/politica-de-privacidade no navegador após npm run dev. A página deve renderizar com Navbar, 8 seções numeradas e Footer, sem erros no console e sem chamadas de rede.

  • T001 [P] [US1] Criar componente PrivacyPolicyPage stateless com Navbar, <main> centralizado (max-width 800 px), 8 seções LGPD numeradas e Footer, usando tokens bg-canvas, text-text-primary, text-text-secondary, text-text-tertiary e fontFeatureSettings: '"cv01","ss03"' em frontend/src/pages/PrivacyPolicyPage.tsx
  • T002 [US1] Importar PrivacyPolicyPage e adicionar <Route path="/politica-de-privacidade" element={<PrivacyPolicyPage />} /> após a rota /corretores em frontend/src/App.tsx

Checkpoint: Rota /politica-de-privacidade acessível no browser com as 8 seções visíveis. User Story 1 completa e testável de forma independente.


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

Goal: Adicionar link "Política de Privacidade" no Footer usando roteamento client-side (sem reload da página).

Independent Test: Em qualquer página do site com Footer visível, verificar que o link "Política de Privacidade" está presente no rodapé e que clicar nele navega para /politica-de-privacidade sem recarregar a página (SPA navigation).

  • T003 [P] [US2] Importar Link de react-router-dom e adicionar <li><Link to="/politica-de-privacidade" ...>Política de Privacidade</Link></li> no <ul> de navegação, após o map de footerLinks existente, com classes text-xs text-text-tertiary hover:text-text-secondary transition-colors duration-150 em frontend/src/components/Footer.tsx

Checkpoint: Link visível no Footer de qualquer página; clique navega via SPA sem recarregamento. User Story 2 completa e testável de forma independente.


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

Goal: Substituir os placeholders [NOME DA EMPRESA], [CNPJ], [ENDEREÇO COMPLETO] e [E-MAIL DO DPO] nas seções 1 e 8 pelos dados reais da imobiliária.

Independent Test: Na página /politica-de-privacidade, seção 1 deve conter nome completo, CNPJ e endereço da empresa. Seção 8 deve conter endereço de e-mail válido para contato com o DPO.

  • T004 [US3] Substituir placeholders na seção 1 (nome, CNPJ, endereço) e na seção 8 (e-mail do DPO) pelos dados reais da empresa em frontend/src/pages/PrivacyPolicyPage.tsx

Checkpoint: Seções 1 e 8 sem placeholders; conformidade LGPD com identificação do controlador e canal de comunicação com DPO. User Story 3 completa.


Phase Final: Polish & Verificação

Purpose: Validação de tipos, build e verificação final de responsividade.

  • T005 Executar npm run build no diretório frontend/ e confirmar que não há erros de TypeScript nem de compilação
  • T006 [P] Verificar responsividade da PrivacyPolicyPage em larguras ≥ 320 px (mobile) e ≥ 1280 px (desktop) — sem overflow horizontal, texto legível, espaçamento adequado

Dependencies & Execution Order

Dependências entre tasks

Task Depende de Motivo
T002 T001 Importa PrivacyPolicyPage criado em T001
T004 T001 Edita o arquivo criado em T001
T005 T001, T002, T003, T004 Build final após todas as mudanças
T006 T001, T002 Requer a página funcional para testar responsividade

Tasks independentes (sem dependências entre si)

  • T001 e T003 podem ser executadas em paralelo por devs diferentes — arquivos distintos, zero conflito.

Ordem sugerida (desenvolvedor solo)

T001 → T002 → T003 → T004 → T005 → T006

Ordem sugerida (dois devs em paralelo)

Dev A: T001 → T002 → T004 → T005
Dev B:         T003              → T006

Parallel Example: User Story 1 (MVP solo)

# 1. Criar o componente
# frontend/src/pages/PrivacyPolicyPage.tsx — novo arquivo

# 2. Adicionar rota
# frontend/src/App.tsx — adicionar Route após /corretores

# 3. Verificar
cd frontend && npm run dev
# Abrir http://localhost:5173/politica-de-privacidade

Implementation Strategy

MVP (apenas US1 — T001 + T002)

Entrega mínima: a página existe e é acessível via URL. Footer sem link ainda. Dados reais preenchidos depois.

Incremental delivery

  1. Sprint 1 — T001 + T002: Página acessível (US1 )
  2. Sprint 1 — T003: Link no Footer (US2 )
  3. Sprint 2 — T004: Dados reais da empresa (US3 )
  4. Sprint 2 — T005 + T006: Build limpo + verificação visual (Polish )

Sem testes automatizados

Conforme plan.md ("Testing: npm run build (TypeScript type-check via tsc); verificação visual manual"), não foram geradas tasks de teste automatizado para esta feature.