219 lines
7.1 KiB
Markdown
219 lines
7.1 KiB
Markdown
# 5. Fluxos de Utilizador
|
|
|
|
## 5.1 User Stories
|
|
|
|
| ID | Como... | Quero... | Para... |
|
|
|---|---|---|---|
|
|
| US-01 | Visitante | Ver animais disponíveis sem criar conta | Descobrir se há animais que me interessem antes de me registar |
|
|
| US-02 | Visitante | Filtrar animais por distrito e espécie | Encontrar animais próximos de mim rapidamente |
|
|
| US-03 | Visitante | Ver o perfil de um canil com horários | Saber quando posso visitar antes de reservar |
|
|
| US-04 | Utilizador | Criar conta com os meus dados | Poder adoptar animais e fazer doações |
|
|
| US-05 | Utilizador | Reservar um animal para adopção | Garantir o animal antes de me deslocar ao canil |
|
|
| US-06 | Utilizador | Receber email de confirmação da reserva | Ter prova escrita e recordar a data marcada |
|
|
| US-07 | Utilizador | Fazer uma doação monetária a um canil | Apoiar financeiramente um canil próximo de mim |
|
|
| US-08 | Utilizador | Doar ração ou brinquedos | Contribuir com bens essenciais sem precisar de dinheiro |
|
|
| US-09 | Utilizador | Escolher se entrego ou peço recolha | Ter flexibilidade na logística da doação |
|
|
| US-10 | Utilizador | Ver o meu histórico de adopções e doações | Acompanhar o meu impacto ao longo do tempo |
|
|
| US-11 | Utilizador | Activar o modo escuro | Reduzir cansaço visual ao usar a plataforma |
|
|
| US-12 | Utilizador | Alterar a minha palavra-passe | Manter a minha conta segura |
|
|
| US-13 | Canil | Gerir os meus animais registados | Ter controlo sobre quais animais estão disponíveis |
|
|
| US-14 | Canil | Ver e confirmar reservas recebidas | Preparar o animal para o dia do levantamento |
|
|
| US-15 | Canil | Indicar as minhas necessidades actuais | Receber doações específicas do que me faz falta |
|
|
| US-16 | Admin | Supervisionar canis e utilizadores | Garantir qualidade e segurança da plataforma |
|
|
|
|
---
|
|
|
|
## 5.2 Fluxo de Registo
|
|
|
|
```
|
|
Visitante clica "Criar Conta" (menu — 3 traços, canto superior direito)
|
|
│
|
|
▼
|
|
Preenche formulário:
|
|
• Nome completo
|
|
• Email
|
|
• Palavra-passe (mínimo 8 caracteres, 1 maiúscula, 1 número)
|
|
• Confirmação de palavra-passe
|
|
• Data de nascimento
|
|
• Distrito
|
|
• Checkbox: Concordo com os Termos e Política de Privacidade
|
|
│
|
|
▼
|
|
[Servidor] Valida se idade ≥ 18 anos
|
|
├── Não → Mostra erro: "É necessário ter 18 ou mais anos para criar conta"
|
|
└── Sim → Continua
|
|
│
|
|
▼
|
|
[Servidor] Verifica se email já existe
|
|
├── Sim → Mostra erro: "Este email já está registado"
|
|
└── Não → Cria conta com palavra-passe em bcrypt hash
|
|
│
|
|
▼
|
|
Envia email de verificação (Resend)
|
|
│
|
|
▼
|
|
Utilizador confirma email → Redirecionado para página inicial com sessão activa
|
|
```
|
|
|
|
---
|
|
|
|
## 5.3 Fluxo de Login
|
|
|
|
```
|
|
Utilizador clica "Iniciar Sessão" no menu
|
|
│
|
|
▼
|
|
Preenche email e palavra-passe
|
|
│
|
|
▼
|
|
[Servidor] NextAuth verifica credenciais
|
|
├── Inválidas → Mostra erro genérico (não especificar qual campo falhou — segurança)
|
|
└── Válidas → Cria sessão JWT
|
|
│
|
|
▼
|
|
Redirecionado para a página onde estava (ou página inicial)
|
|
```
|
|
|
|
---
|
|
|
|
## 5.4 Fluxo Completo de Adopção
|
|
|
|
```
|
|
1. DESCOBERTA
|
|
├── Página inicial → lista todos os animais disponíveis (SSR)
|
|
├── Filtros disponíveis: distrito, espécie, raça, sexo, esterilizado, faixa etária
|
|
└── Animais urgentes têm badge "Urgente" destacado
|
|
|
|
2. DETALHES DO ANIMAL
|
|
├── Clica no animal → abre ficha completa
|
|
├── Galeria de fotos
|
|
├── Informações: nome, espécie, raça, idade, sexo, esterilizado, descrição
|
|
└── Secção do canil → nome, distrito
|
|
└── Clica no canil → modal/página com:
|
|
• Morada completa
|
|
• Horário de funcionamento (dia a dia)
|
|
• Telefone e email
|
|
|
|
3. RESERVA
|
|
├── Clica "Adoptar"
|
|
├── [Sem sessão] → Redirect para login/registo com mensagem explicativa
|
|
├── [Com sessão] → Abre calendário de reservas
|
|
├── Dias disponíveis: dias em que o canil está aberto e sem reservas em excesso
|
|
├── Selecciona data → formulário de confirmação
|
|
│ • Nome do utilizador (pré-preenchido)
|
|
│ • Data seleccionada
|
|
│ • Nome do animal e canil
|
|
│ • Nota opcional para o canil
|
|
└── Confirma
|
|
|
|
4. PÓS-RESERVA
|
|
├── Animal muda para status RESERVED
|
|
├── Email de confirmação enviado (Resend):
|
|
│ • Assunto: "Reserva confirmada — [Nome do Animal] no [Nome do Canil]"
|
|
│ • Data e hora de levantamento
|
|
│ • Morada do canil
|
|
│ • Horário de funcionamento
|
|
│ • Instruções para cancelamento
|
|
└── Reserva visível em "Conta → As Minhas Adopções"
|
|
|
|
5. DIA DO LEVANTAMENTO
|
|
├── Utilizador dirige-se ao canil na data marcada
|
|
├── Canil confirma levantamento → status muda para COMPLETED
|
|
└── Animal muda para status ADOPTED
|
|
```
|
|
|
|
---
|
|
|
|
## 5.5 Fluxo de Doação — Monetária
|
|
|
|
```
|
|
Clica "Fazer Doação"
|
|
│
|
|
▼
|
|
[Sem sessão] → Redirect para login com mensagem: "Para doar é necessário ter conta"
|
|
[Com sessão, <18 anos] → Confirmação extra de data de nascimento
|
|
│
|
|
▼
|
|
Escolhe tipo: MONETÁRIA
|
|
│
|
|
▼
|
|
Escolhe canil:
|
|
┌── "Da minha localidade" → lista canis no distrito do utilizador
|
|
└── "Outra localidade" → pesquisa por distrito/nome do canil
|
|
│
|
|
▼
|
|
Insere montante (mínimo: 1€)
|
|
│
|
|
▼
|
|
Escolhe método de pagamento:
|
|
┌── Cartão de Crédito/Débito
|
|
└── MBWay (introduz número de telemóvel)
|
|
│
|
|
▼
|
|
Stripe processa pagamento (dados nunca passam nos nossos servidores)
|
|
│
|
|
▼
|
|
Confirmação:
|
|
• Página de sucesso com animação
|
|
• Email com recibo de doação
|
|
• Visível em "Conta → Histórico de Doações"
|
|
```
|
|
|
|
---
|
|
|
|
## 5.6 Fluxo de Doação — Ração / Brinquedos
|
|
|
|
```
|
|
Escolhe tipo: RAÇÃO ou BRINQUEDOS
|
|
│
|
|
▼
|
|
Lista de canis que necessitam e aceitam este tipo de donativo
|
|
(baseada nas ShelterNeeds activas)
|
|
│
|
|
▼
|
|
Selecciona canil
|
|
│
|
|
▼
|
|
[RAÇÃO] Especifica:
|
|
• Tipo: Seca / Húmida
|
|
• Para: Cão / Gato
|
|
• Faixa etária: Adulto / Filhote / Sénior
|
|
|
|
[BRINQUEDOS] Especifica:
|
|
• Categoria: Mordedor / Pelúcia / Interactivo / Corda
|
|
│
|
|
▼
|
|
Escolhe modalidade de entrega:
|
|
┌── "Levo eu ao canil"
|
|
│ └── Mostra horários e morada do canil seleccionado
|
|
└── "Quero recolha em casa"
|
|
├── Confirma/edita morada de recolha
|
|
└── Selecciona data e período preferencial (manhã/tarde)
|
|
│
|
|
▼
|
|
Confirmação:
|
|
• Canil recebe notificação com todos os detalhes
|
|
• Utilizador recebe email de confirmação
|
|
• Visível em "Conta → Histórico de Doações"
|
|
```
|
|
|
|
---
|
|
|
|
## 5.7 Navegação e Menu
|
|
|
|
O menu é acedido pelos **3 traços no canto superior direito** e contém:
|
|
|
|
**Sem sessão:**
|
|
- Iniciar Sessão
|
|
- Criar Conta
|
|
|
|
**Com sessão:**
|
|
- A Minha Conta (nome do utilizador)
|
|
- As Minhas Adopções
|
|
- Histórico de Doações
|
|
- Definições
|
|
- Dados da Conta
|
|
- Alterar Palavra-passe
|
|
- Modo Escuro / Claro (toggle)
|
|
- Terminar Sessão
|