Adicionar Fluxos End-to-End

Rafael Alves Lopes 2026-05-27 15:17:58 -03:00
parent 94bbff17a7
commit 198f8bb3d8

96
Fluxos End-to-End.-.md Normal file

@ -0,0 +1,96 @@
# Fluxos End-to-End
## Login LDAP/AD
```mermaid
sequenceDiagram
participant U as Usuario
participant F as Frontend
participant B as Backend
participant AD as LDAP/AD
participant DB as PostgreSQL
U->>F: informa usuario/senha
F->>B: POST /auth/login
B->>AD: bind LDAP
AD-->>B: autenticado
B->>DB: upsert usuario/provedor
B->>DB: consulta perfis/areas
B-->>F: token + user
F->>F: salva sessao
F->>F: redireciona por perfil
```
## Login Microsoft OAuth
```mermaid
sequenceDiagram
participant U as Usuario
participant F as Frontend
participant B as Backend
participant MS as Microsoft
participant DB as PostgreSQL
U->>F: clica login Microsoft
F->>B: GET /auth/oauth/microsoft/start
B->>MS: redireciona com state
MS->>U: autentica
MS->>B: callback code + state
B->>MS: troca code por token
B->>MS: Graph /me
B->>DB: sincroniza usuario/acesso
B-->>F: redirect com token/user
```
## Atendimento WhatsApp receptivo
```mermaid
sequenceDiagram
participant C as Cliente WhatsApp
participant W as WhatsApp Web
participant B as Backend
participant DB as PostgreSQL
participant F as Frontend
participant A as Agente
C->>W: envia mensagem
W->>B: evento message
B->>DB: consulta/cria atribuicao
B->>B: Agente Virtual classifica
B->>DB: queued por area
B->>F: socket atualiza fila
A->>F: assume atendimento
F->>B: POST /whatsapp/assign
B->>DB: status assigned
A->>F: responde
F->>B: POST /whatsapp/send
B->>W: envia mensagem
```
## Abertura ativa
1. Agente/admin/supervisor abre `Abrir Atendimento`.
2. Seleciona contato ou digita numero.
3. Seleciona template aprovado.
4. Frontend chama `POST /whatsapp/start-attendance`.
5. Backend envia template.
6. Atendimento fica bloqueado para mensagem livre ate o cliente responder.
7. Quando cliente responde, `awaiting_customer_reply` e removido.
## Transferencia
1. Agente assume atendimento.
2. Seleciona area ou atendente.
3. Informa observacao.
4. Backend grava nova area/usuario e `transfer_note`.
5. Proximo atendente ve a observacao.
6. Observacao e limpa depois que atendimento segue.
## Pausa do agente
1. Agente clica pausar.
2. Frontend chama `/agent/presence/pause`.
3. Backend marca agente como `paused`.
4. Atendimentos ativos voltam para fila com reserva temporaria.
5. Ao retomar, backend tenta recuperar atendimentos ainda livres.