132 lines
5.9 KiB
Markdown
132 lines
5.9 KiB
Markdown
# 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)
|
|
|
|
```bash
|
|
# 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.
|