sass-imobiliaria/specs/029-ux-area-do-cliente/ux-audit.md
MatheusAlves96 cf5603243c
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: 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)
2026-04-22 22:35:17 -03:00

173 lines
8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# UX/UI Audit — Área do Cliente (`/area-do-cliente`)
**Data:** 2026-04-22
**Auditor:** GitHub Copilot (UX/UI Review)
**Escopo:** Todas as páginas e componentes sob `/area-do-cliente`
---
## 1. Inventário de Telas Atuais
| Rota | Componente | Status |
|------|-----------|--------|
| `/area-do-cliente` | `ClientDashboardPage` | ❌ Remover |
| `/area-do-cliente/favoritos` | `FavoritesPage` | 🔧 Melhorar |
| `/area-do-cliente/comparar` | `ComparisonPage` | 🔧 Melhorar |
| `/area-do-cliente/visitas` | `VisitsPage` | 🔧 Melhorar |
| `/area-do-cliente/boletos` | `BoletosPage` | ❌ Remover |
---
## 2. Problemas Identificados
### 2.1 Dashboard (Painel) — REMOVER
- **Problema:** 3 cards com números (favoritos, visitas, boletos). Não agrega valor real ao usuário — ele precisa clicar de qualquer forma para ver os detalhes.
- **Impacto:** UX: Alto. Adiciona um clique desnecessário para chegar ao conteúdo real.
- **Decisão:** Remover o dashboard. Redirecionar `/area-do-cliente``/area-do-cliente/favoritos`.
### 2.2 Boletos — REMOVER
- **Problema:** Funcionalidade de boletos é uma feature de gestão imobiliária avançada raramente usada. A tabela existe mas os dados dependem de inserção manual pelo admin. Gera confusão para usuários sem boletos.
- **Impacto:** UX: Médio. Ruído visual no menu, expectativa não cumprida.
- **Decisão:** Remover a rota, o componente e o item do menu. Manter o backend (não excluir o model/API).
### 2.3 Navegação (Sidebar) — Ícones
- **Problema:** Ícones usam caracteres Unicode/emoji (`⊞`, `♡`, `⇄`, `📅`, `📄`) que rendem de forma inconsistente entre sistemas operacionais e navegadores. Look não-profissional em temas dark/light.
- **Impacto:** Visual: Alto. Inconsistência de rendering cross-platform.
- **Decisão:** Substituir por SVG inline (Heroicons 2.0 outline) para cada item de nav.
### 2.4 FavoritesPage — Cards sem imagem/preço
- **Problema:** Cards de favoritos mostram apenas título e link "Ver detalhes →". O usuário não consegue lembrar qual imóvel é qual sem clicar.
- **Impacto:** UX: Alto. Experiência frustrante para quem tem múltiplos favoritos.
- **Decisão:** Mostrar thumbnail da primeira foto, preço e cidade/bairro no card.
### 2.5 FavoritesPage — Layout de grid muito esparso
- **Problema:** Grid `1 → 2 → 3 colunas` com cards muito altos (h-48 skeleton) para conteúdo mínimo.
- **Decisão:** Cards com imagem real + info resumida, altura proporcional.
### 2.6 VisitsPage — Sem ação do usuário
- **Problema:** O usuário só visualiza visitas. Não há como cancelar, nem há indicação clara de próximos passos.
- **Impacto:** UX: Médio. Usuário precisa entrar em contato por outro canal para cancelar.
- **Decisão:** Adicionar botão "Solicitar cancelamento" para visitas com status `pending`.
### 2.7 VisitsPage — Layout de lista plana
- **Problema:** Cards de visita não têm hierarquia visual clara. Data e status competem com o título.
- **Decisão:** Refatorar card de visita com: título em destaque, data em destaque, status badge alinhado à direita, mensagem como texto secundário colapsável.
### 2.8 ComparisonPage — Empty state sem call-to-action útil
- **Problema:** Empty state tem apenas "Nenhum imóvel selecionado" e link para `/imoveis`. Usuário não sabe como adicionar imóveis à comparação.
- **Decisão:** Empty state explicativo com instrução de como usar a feature (tooltip/hint).
### 2.9 ClientLayout — Sidebar sem perfil editável
- **Problema:** Sidebar mostra avatar + nome + email mas sem link para perfil/configurações.
- **Impacto:** UX: Médio. Usuário não consegue alterar dados cadastrais pela área do cliente.
- **Decisão:** Adicionar link "Minha conta" apontando para nova rota `/area-do-cliente/conta`.
### 2.10 ClientLayout — Botão "Sair" sem ícone próprio
- **Problema:** Usa `→` como ícone de logout. Semântica errada (parece "ir para").
- **Decisão:** Substituir por ícone ArrowRightOnRectangle (Heroicons logout).
### 2.11 Mobile Nav — Scroll horizontal fraco
- **Problema:** Em mobile, a navegação é uma barra horizontal com scroll. Após remover boletos e painel, teremos 3 itens — cabe bem. Mas ainda carece de indicador visual claro de ativo.
- **Decisão:** Melhorar o indicador ativo com underline/pill e alinhar os 3 itens centralizados.
### 2.12 Ausência de página de perfil/conta
- **Problema:** Não existe `/area-do-cliente/conta`. Usuário não pode ver/editar nome, email ou senha.
- **Decisão:** Criar `ProfilePage` com form de atualização de nome e alteração de senha.
---
## 3. Resumo das Decisões
### ❌ Remover
- `ClientDashboardPage` (`/area-do-cliente`) — redirecionar para `/area-do-cliente/favoritos`
- `BoletosPage` (`/area-do-cliente/boletos`) — remover rota, nav item e componente
- Item "Boletos" e item "Painel" do nav
### ✅ Manter (com melhorias)
- `FavoritesPage` — melhorar cards com thumbnail + preço + localização
- `VisitsPage` — adicionar cancelamento + melhorar layout do card
- `ComparisonPage` — melhorar empty state
- `ClientLayout` — trocar ícones por SVG, adicionar link "Minha conta", melhorar logout
### Criar
- `ProfilePage` (`/area-do-cliente/conta`) — formulário de edição de perfil
---
## 4. Nova Estrutura de Navegação
**Antes (5 itens + Painel):**
```
⊞ Painel
♡ Favoritos
⇄ Comparar
📅 Visitas
📄 Boletos
```
**Depois (4 itens, sem Painel como item separado — é o redirect):**
```
[heart-icon] Favoritos
[scale-icon] Comparar
[calendar-icon] Visitas
[user-icon] Minha conta
```
---
## 5. Fluxo UX Revisado
```
/area-do-cliente → redirect 302 → /area-do-cliente/favoritos
/area-do-cliente/favoritos
Cards: thumbnail | título | preço | cidade
Ação: [Remover dos favoritos] [Ver imóvel →]
/area-do-cliente/visitas
Cards: título imóvel | data | status badge
Ação: [Solicitar cancelamento] (só para status=pending)
/area-do-cliente/comparar
Tabela: até 3 imóveis lado a lado
Empty state: instrução de como adicionar imóvel à comparação
/area-do-cliente/conta
Form: Nome | Email (readonly) | Senha atual | Nova senha | Confirmar senha
Ação: [Salvar alterações]
```
---
## 6. Componentes Afetados
| Arquivo | Ação |
|---------|------|
| `frontend/src/layouts/ClientLayout.tsx` | Refatorar nav (SVG icons, remover Boletos/Painel, adicionar Conta) |
| `frontend/src/pages/client/ClientDashboardPage.tsx` | Deletar ou converter em redirect |
| `frontend/src/pages/client/BoletosPage.tsx` | Deletar |
| `frontend/src/pages/client/FavoritesPage.tsx` | Melhorar cards |
| `frontend/src/pages/client/VisitsPage.tsx` | Melhorar card + adicionar cancelamento |
| `frontend/src/pages/client/ComparisonPage.tsx` | Melhorar empty state |
| `frontend/src/pages/client/ProfilePage.tsx` | Criar (novo) |
| `frontend/src/services/clientArea.ts` | Adicionar `updateProfile`, `changePassword`, `cancelVisit` |
| `frontend/src/App.tsx` | Atualizar rotas (remover boletos, adicionar conta, redirect) |
| `backend/app/routes/client.py` | Adicionar PATCH `/me/profile`, PATCH `/me/password`, PATCH `/me/visits/:id/cancel` |
| `backend/app/schemas/client.py` | Adicionar schemas de update |
---
## 7. Critérios de Aceite
- [ ] `/area-do-cliente` redireciona para `/area-do-cliente/favoritos`
- [ ] "Boletos" não aparece no menu e a rota 404
- [ ] "Painel" não aparece no menu
- [ ] Ícones do menu são SVG Heroicons consistentes em dark e light
- [ ] Card de favorito mostra: imagem (ou placeholder), título, preço, cidade
- [ ] Card de visita mostra: título, data agendada (ou solicitada), status badge
- [ ] Visita com `status=pending` exibe botão "Cancelar" que muda para `cancelled`
- [ ] Empty state do comparar explica como usar a feature
- [ ] `/area-do-cliente/conta` exibe form com nome e troca de senha
- [ ] Form de conta valida: nome obrigatório, senhas com mínimo 8 chars, confirmação igual
- [ ] Mobile nav centraliza os 4 itens sem scroll (ou scroll suave se necessário)
- [ ] Botão "Sair" usa ícone de logout correto