feat: features 025-032 - favoritos, contatos, trabalhe-conosco, area-cliente, navbar, hero-light-dark, performance-homepage
- feat(025): favoritos locais com FavoritesContext, HeartButton, PublicFavoritesPage
- feat(026): central de contatos admin (leads/contatos unificados)
- feat(027): configuração da página de contato via admin
- feat(028): trabalhe conosco - candidaturas com upload e admin
- feat(029): UX área do cliente - visitas, comparação, perfil
- feat(030): navbar UX - menu mobile, ThemeToggle, useFavorites
- feat(031): hero light/dark - imagens separadas por tema, upload, preview, seed
- feat(032): performance homepage - Promise.all parallel fetches, sessionStorage cache,
preload hero image, loading=lazy nos cards, useInView hook, will-change carrossel,
keyframes em index.css, AgentsCarousel e HomeScrollScene via props
- fix: light mode HomeScrollScene - gradiente, cores de texto, scroll hint
migrations: g1h2i3j4k5l6 (source em leads), h1i2j3k4l5m6 (contact_config),
i1j2k3l4m5n6 (job_applications), j2k3l4m5n6o7 (hero theme images)
This commit is contained in:
parent
6ef5a7a17e
commit
cf5603243c
106 changed files with 11927 additions and 1367 deletions
118
specs/029-ux-area-do-cliente/plan.md
Normal file
118
specs/029-ux-area-do-cliente/plan.md
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
# Implementation Plan: Revisao UX/UI - Area do Cliente
|
||||
|
||||
**Branch**: `029-ux-area-do-cliente` | **Date**: 2026-04-22 | **Spec**: [spec.md](spec.md)
|
||||
**Input**: Feature specification from `specs/029-ux-area-do-cliente/spec.md`
|
||||
|
||||
## Summary
|
||||
|
||||
Esta feature simplifica a area do cliente removendo etapas de baixo valor (dashboard e boletos no frontend), melhora a navegacao contextual (menu com 4 itens e iconografia SVG consistente), aumenta a qualidade de leitura de favoritos (thumbnail, preco e localizacao), adiciona a acao de cancelamento de visitas pendentes e cria a pagina Minha Conta com atualizacao de nome e troca de senha.
|
||||
|
||||
## Technical Context
|
||||
|
||||
**Language/Version**: Python 3.12 (backend) + TypeScript 5.5 (frontend)
|
||||
**Primary Dependencies**: Flask 3.x, SQLAlchemy 2.x, Pydantic v2, bcrypt (backend); React 18, react-router-dom v6, Axios, Tailwind CSS 3.4 (frontend)
|
||||
**Storage**: PostgreSQL 16 (sem novas tabelas nesta feature)
|
||||
**Testing**: `pytest` para backend; `npm run build` para frontend; checklist manual de UX
|
||||
**Target Platform**: SPA web responsiva (desktop/mobile)
|
||||
**Project Type**: web app full-stack com foco principal em UX frontend
|
||||
**Performance Goals**: navegacao da area do cliente sem etapa intermediaria e atualizacoes sem reload para acoes principais
|
||||
**Constraints**: nao alterar schemas do banco; manter auth JWT existente; manter backend de boletos intacto
|
||||
**Scale/Scope**: rotas e componentes da area do cliente + 3 endpoints PATCH no backend
|
||||
|
||||
## Constitution Check
|
||||
|
||||
| Principio | Status | Observacao |
|
||||
|---|---|---|
|
||||
| Design-First | PASS | Mudancas focadas em fluxo, hierarquia visual e consistencia de icones |
|
||||
| Separation of Concerns | PASS | Regras de dominio no backend e comportamento de tela no frontend |
|
||||
| Spec-Driven | PASS | Plano derivado de `spec.md`, `ux-audit.md` e `tasks.md` |
|
||||
| Data Integrity | PASS | Sem migrations de schema; update em entidades existentes |
|
||||
| Security | PASS | Endpoints novos protegidos por JWT e ownership checks |
|
||||
| Simplicity First | PASS | Remove telas redundantes e reduz friccao de navegacao |
|
||||
|
||||
## Project Structure
|
||||
|
||||
### Documentation (this feature)
|
||||
|
||||
```text
|
||||
specs/029-ux-area-do-cliente/
|
||||
├── plan.md
|
||||
├── spec.md
|
||||
├── tasks.md
|
||||
├── ux-audit.md
|
||||
└── checklists/
|
||||
```
|
||||
|
||||
### Source Code (repository root)
|
||||
|
||||
```text
|
||||
backend/
|
||||
└── app/
|
||||
├── routes/client_area.py
|
||||
└── schemas/client_area.py
|
||||
|
||||
frontend/
|
||||
└── src/
|
||||
├── App.tsx
|
||||
├── layouts/ClientLayout.tsx
|
||||
├── contexts/AuthContext.tsx
|
||||
├── services/clientArea.ts
|
||||
├── types/clientArea.ts
|
||||
└── pages/client/
|
||||
├── FavoritesPage.tsx
|
||||
├── VisitsPage.tsx
|
||||
├── ComparisonPage.tsx
|
||||
└── ProfilePage.tsx
|
||||
```
|
||||
|
||||
**Structure Decision**: manter estrutura web existente, com mudancas localizadas em rotas/schemas backend e paginas/layouts da area do cliente no frontend.
|
||||
|
||||
## Implementation Approach
|
||||
|
||||
### 1. Roteamento e navegacao
|
||||
|
||||
- Redirecionar index da area do cliente para favoritos.
|
||||
- Remover rota e item visual de boletos no frontend.
|
||||
- Introduzir rota Minha Conta e manter destaque de item ativo em desktop/mobile.
|
||||
|
||||
### 2. Favoritos com contexto visual
|
||||
|
||||
- Enriquecer payload de favoritos no backend com dados de card (`price`, `city`, `neighborhood`, `cover_photo_url`).
|
||||
- Atualizar card de favoritos para exibicao direta desses dados com fallback de imagem.
|
||||
- Manter remocao sem reload com comportamento otimista.
|
||||
|
||||
### 3. Visitas com acao de cancelamento
|
||||
|
||||
- Exibir botao de cancelamento apenas para `status=pending`.
|
||||
- Criar endpoint de cancelamento com validacao de ownership e estado atual.
|
||||
- Aplicar update otimista no frontend com rollback em erro.
|
||||
|
||||
### 4. Minha Conta
|
||||
|
||||
- Criar tela `/area-do-cliente/conta` com formulario de nome e formulario de senha.
|
||||
- Criar endpoints `PATCH /me/profile` e `PATCH /me/password`.
|
||||
- Expor `updateUser` no `AuthContext` para refletir nome atualizado imediatamente.
|
||||
|
||||
### 5. Qualidade visual e consistencia
|
||||
|
||||
- Trocar iconografia por SVG Heroicons no layout do cliente.
|
||||
- Melhorar empty states e feedbacks de erro/sucesso nas principais interacoes.
|
||||
|
||||
## Rollout and Validation
|
||||
|
||||
### Executavel
|
||||
|
||||
- Frontend: `npm run build`
|
||||
- Backend: `pytest` nos cenarios relevantes de cliente (quando disponiveis)
|
||||
|
||||
### Manual
|
||||
|
||||
- Verificar redirecionamento `/area-do-cliente -> /area-do-cliente/favoritos`
|
||||
- Verificar ausencia de menu/rota de boletos no frontend
|
||||
- Verificar card de favorito com imagem/preco/localizacao
|
||||
- Verificar cancelamento de visita pendente e bloqueio para estados nao pendentes
|
||||
- Verificar atualizacao de nome e troca de senha em Minha Conta
|
||||
|
||||
## Complexity Tracking
|
||||
|
||||
Nenhuma excecao arquitetural requerida para esta feature.
|
||||
Loading…
Add table
Add a link
Reference in a new issue