Visão UML (atividades): ações, decisões, bifurcações e conclusões. Complementa wireflow.md (rotas) e user-flow.md (jornadas). Estados e transições: state-transition-diagram.md.
Nota: os diagramas usam sintaxe Mermaid (flowchart). Em ferramentas UML puras, podes redesenhar a partir destes nós e decisões.
Participante: utilizador registado. Objetivo: obter sessão e entrar na área autenticada.
flowchart TD
Start([Início]) --> A[Abrir /login]
A --> B[Preencher email e senha]
B --> C[Submeter formulário]
C --> D{Credenciais válidas?}
D -->|Não| E[Mostrar erros de validação]
E --> B
D -->|Sim| F[Registar sessão]
F --> G[Resolver actor_context]
G --> H[Redirecionar para /dashboard]
H --> End([Fim — sessão ativa])
Participante: visitante. Objetivo: criar conta com dados pessoais e endereço (CEP opcional via API).
flowchart TD
Start([Início]) --> A[Abrir /cadastro]
A --> B[Preencher identidade e senha]
B --> C[Preencher CEP — opcional]
C --> D{Consultar CEP?}
D -->|Sim| E[GET /api/cep/{cep}]
E --> F{CEP encontrado?}
F -->|Sim| G[Preencher rua, bairro, cidade, UF]
F -->|Não| H[Manter campos manuais / mensagem]
D -->|Não| I[Validar formulário]
G --> I
H --> I
I --> J{Dados válidos?}
J -->|Não| K[Exibir erros]
K --> B
J -->|Sim| L[Persistir utilizador + perfil]
L --> M[Autenticar ou redirecionar login]
M --> End([Fim — conta criada])
Participante: utilizador com mais de um perfil. Objetivo: definir ator ativo (player vs venue_owner).
flowchart TD
Start([Início]) --> A[Abrir menu do utilizador]
A --> B{Existem vários atores?}
B -->|Não| C[Usar ator por defeito]
B -->|Sim| D[Mostrar Actor Switcher]
D --> E[Utilizador escolhe ator]
E --> F[Persistir contexto de ator]
C --> G[Atualizar navegação visível]
F --> G
G --> End([Fim — UI alinhada ao ator])
Pré-condição: sessão autenticada, role:player, ator player. Objetivo: consultar e interagir com o fluxo de jogos.
flowchart TD
Start([Início]) --> A{Navegação permitida\nplayer + ator player?}
A -->|Não| X([Fim — 403 ou item oculto])
A -->|Sim| B[Carregar /booking]
B --> C[Exibir listas / placeholders UI]
C --> D{Ação do utilizador}
D -->|Explorar| C
D -->|Ir a torneios| E[/tournaments/]
D -->|Sair| End([Fim])
Pré-condição: role:venue_owner|super_admin, ator venue_owner, permissões de arena.
flowchart TD
Start([Início]) --> A{Acesso a Arenas?}
A -->|Não| X([Fim — 403])
A -->|Sim| B[Carregar /venues]
B --> C[Listar arenas]
C --> D[Selecionar arena]
D --> E[Abrir /venues/{id}/courts]
E --> F[Listar / editar quadras]
F --> G{Guardar alterações?}
G -->|Sim| H[Persistir + feedback]
H --> F
G -->|Voltar| C
flowchart TD
Start([Início]) --> A[Em /venues — selecionar arena]
A --> B[Abrir /venues/{id}/maintenance]
B --> C[Preencher dados de manutenção]
C --> D[Submeter]
D --> E{Sucesso?}
E -->|Não| F[Mostrar erros]
F --> C
E -->|Sim| G[Confirmar registo]
G --> End([Fim])
Participante: qualquer visitante autenticado ou não (rotas públicas).
flowchart TD
Start([Início]) --> A[Abrir /docs]
A --> B{Destino?}
B -->|Arquitetura| C[/docs/architecture/]
B -->|Mudanças| D[/docs/changes/]
B -->|Ficheiro .md| E[/docs/read/{path}/]
C --> F[Renderizar Markdown]
D --> F
E --> F
F --> G[Seguir links internos — se existirem]
G --> End([Fim])
flowchart TD
Start([Início]) --> A[Menu do utilizador]
A --> B[Clicar Sair]
B --> C[POST /logout + CSRF]
C --> D[Invalidar sessão]
D --> E[Redirecionar — home ou login]
E --> End([Fim — sessão terminada])
Fluxo conceitual do ambiente de desenvolvimento (não é uma rota única).
flowchart LR
subgraph dev["Ambiente dev"]
V[Vite — HMR]
P[PHP / Sail — app]
R[Reverb — WS :8080]
end
U[Browser] --> V
U --> P
U --> R
| Documento | Conteúdo |
|---|---|
wireflow.md |
Rotas, middlewares, mapa de ecrãs |
user-flow.md |
Personas e jornadas de UX |
state-transition-diagram.md |
Estados e máquinas de estado |
| Este ficheiro | Atividades, decisões e fluxos operacionais |
Atualizar quando novas ações (pagamentos, notificações push, etc.) forem implementadas.