feat: features 025-032 - favoritos, contatos, trabalhe-conosco, area-cliente, navbar, hero-light-dark, performance-homepage
Some checks failed
CI/CD → Deploy via SSH / Build & Push Docker Images (push) Successful in 1m0s
CI/CD → Deploy via SSH / Deploy via SSH (push) Successful in 4m35s
CI/CD → Deploy via SSH / Validate HTTPS & Endpoints (push) Failing after 46s

- 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:
MatheusAlves96 2026-04-22 22:35:17 -03:00
parent 6ef5a7a17e
commit cf5603243c
106 changed files with 11927 additions and 1367 deletions

View 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.