4.9 KiB
4.9 KiB
Quickstart: Área do Cliente (Feature 006)
Pré-requisito: Feature 005 (autenticação) implementada e funcionando.
1. Rodar o ambiente de desenvolvimento
# Na raiz do projeto
.\start.ps1
Isso inicia backend (Flask) na porta 5000 e frontend (Vite) na porta 5173 via Docker Compose.
2. Aplicar a migration
# Dentro do container backend ou com uv no host
docker compose exec backend flask db upgrade
Verifica que as tabelas saved_properties, visit_requests e boletos foram criadas:
docker compose exec db psql -U postgres -d imobiliaria -c "\dt"
3. Obter um token de ClientUser
# Registrar um cliente (se Feature 005 estiver implementada)
curl -X POST http://localhost:5000/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"name": "João Silva", "email": "joao@test.com", "password": "Senha123!"}'
# Login para obter token
curl -X POST http://localhost:5000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "joao@test.com", "password": "Senha123!"}'
# → {"access_token": "eyJ..."}
export TOKEN="eyJ..."
4. Testar rotas de favoritos
# Listar favoritos (deve retornar [])
curl http://localhost:5000/api/v1/me/favorites \
-H "Authorization: Bearer $TOKEN"
# Adicionar imóvel aos favoritos (usar UUID de um imóvel existente)
curl -X POST http://localhost:5000/api/v1/me/favorites \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"property_id": "<uuid-do-imovel>"}'
# → 201
# Tentar adicionar novamente (deve retornar 409)
curl -X POST http://localhost:5000/api/v1/me/favorites \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"property_id": "<uuid-do-imovel>"}'
# → 409
# Remover favorito
curl -X DELETE http://localhost:5000/api/v1/me/favorites/<uuid-do-imovel> \
-H "Authorization: Bearer $TOKEN"
# → 204
5. Testar criação de boleto (admin)
# Primeiro, obter o user_id do cliente criado
USER_ID="<uuid-do-client-user>"
curl -X POST http://localhost:5000/api/v1/admin/boletos \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"user_id\": \"$USER_ID\",
\"description\": \"Aluguel Maio/2026\",
\"amount\": 3500.00,
\"due_date\": \"2026-05-10\"
}"
# → 201
# Listar boletos do cliente
curl http://localhost:5000/api/v1/me/boletos \
-H "Authorization: Bearer $TOKEN"
6. Testar atualização de status de visita (admin)
# Listar visitas (deve retornar [] inicialmente)
curl http://localhost:5000/api/v1/me/visits \
-H "Authorization: Bearer $TOKEN"
# Criar visita via formulário de contato (com token JWT no header)
curl -X POST http://localhost:5000/api/v1/properties/<slug>/contact \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "João Silva", "email": "joao@test.com", "message": "Quero visitar."}'
# Obter ID da visita criada e atualizar status
VISIT_ID="<uuid-da-visita>"
curl -X PUT http://localhost:5000/api/v1/admin/visits/$VISIT_ID/status \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "confirmed", "scheduled_at": "2026-05-01T10:00:00"}'
# → 200
7. Rodar testes de backend
docker compose exec backend uv run pytest tests/test_client_area.py -v
Ou localmente (se Python 3.12 instalado):
cd backend
uv run pytest tests/test_client_area.py -v
8. Acessar a área do cliente no navegador
- Abrir http://localhost:5173
- Fazer login com as credenciais criadas no passo 3
- Navegar para http://localhost:5173/area-do-cliente
- Testar favoritar um imóvel do catálogo (coração no card)
- Acessar http://localhost:5173/area-do-cliente/favoritos e verificar o imóvel favoritado
- Adicionar imóveis à comparação (botão "Comparar" nos cards), acessar http://localhost:5173/area-do-cliente/comparar
9. UUID de imóveis existentes
Para obter UUIDs de imóveis para testar:
curl http://localhost:5000/api/v1/properties?per_page=3 | python -m json.tool
Solução de Problemas
| Problema | Causa Provável | Solução |
|---|---|---|
401 em todas as rotas /me |
Feature 005 não implementada ou require_auth não disponível |
Verificar se ClientUser model e require_auth decorator existem |
relation "client_users" does not exist |
Migration da Feature 005 não aplicada | flask db upgrade para aplicar todas as migrations pendentes |
relation "saved_properties" does not exist |
Migration desta feature não aplicada | flask db upgrade |
| HeartButton não aparece nos cards | FavoritesContext não injetado no App.tsx |
Verificar providers em App.tsx |
Rotas /area-do-cliente/* não redirecionam para login |
ProtectedRoute não configurado |
Verificar App.tsx e componente ProtectedRoute de Feature 005 |