2
Agent
Rafael Lopes edited this page 2026-06-02 09:07:02 -03:00
Modulo Agente
Modulo responsavel por presenca operacional do agente e notas pessoais do atendente.
Base tecnica
- Module:
src/modules/agent/agent.module.ts - Presence Controller:
src/modules/agent/agent-presence.controller.ts - Presence Service:
src/modules/agent/agent-presence.service.ts - Presence Repository:
src/modules/agent/repositories/agent-presence.repository.ts - Notes Controller:
src/modules/agent/agent-notes.controller.ts - Notes Service:
src/modules/agent/agent-notes.service.ts - Notes Repository:
src/modules/agent/repositories/agent-notes.repository.ts - DTOs:
src/modules/agent/dto/agent.dto.ts
Responsabilidades
- Controlar status do agente:
available,paused,offline. - Liberar atendimentos do agente quando ele pausa.
- Restaurar atendimentos reservados quando ele retoma.
- Marcar agente offline e devolver atendimentos para fila.
- Gerenciar notas pessoais do agente.
Presenca do agente
Prefixo:
/agent/presence
| Metodo | Rota | Perfis | Descricao |
|---|---|---|---|
| GET | /agent/presence |
Admin, Supervisor | Lista presenca dos agentes |
| GET | /agent/presence/me |
Admin, Supervisor, Agente | Retorna presenca do usuario autenticado |
| POST | /agent/presence/pause |
Admin, Supervisor, Agente | Pausa o usuario autenticado |
| POST | /agent/presence/resume |
Admin, Supervisor, Agente | Retoma o usuario autenticado |
| POST | /agent/presence/offline |
Admin, Supervisor, Agente | Marca o usuario autenticado como offline |
O parametro/body userId pode continuar vindo do frontend por compatibilidade, mas o backend usa o usuario autenticado no JWT.
Notas do agente
Prefixo:
/agent/notes
| Metodo | Rota | Perfis | Descricao |
|---|---|---|---|
| GET | /agent/notes |
Admin, Supervisor, Agente | Lista notas do usuario autenticado |
| POST | /agent/notes |
Admin, Supervisor, Agente | Cria nota para o usuario autenticado |
| DELETE | /agent/notes/:id |
Admin, Supervisor, Agente | Remove nota do usuario autenticado |
O parametro/body userId pode continuar vindo do frontend por compatibilidade, mas o backend usa o usuario autenticado no JWT.
Arquitetura interna
Controller -> Service -> Repository -> DatabaseService
- Controller: rotas, roles, Swagger, DTOs e usuario autenticado.
- Service: regra de negocio e validacao de usuario.
- Repository: SQL de
agent_presence,agent_notese reserva/liberacao de atendimentos. - DatabaseService: pool PostgreSQL e transacoes.
Banco
O modulo nao cria schema em runtime.
As tabelas/colunas devem existir via migrations:
008_agent_notes.sql015_agent_presence_pause.sql
Code review
- Presenca e notas sairam de
adminporque sao dominio operacional do agente. - Acoes pessoais usam
@CurrentUser()e JWT, naouserIdvindo do cliente. AgentPresenceServicee usado peloAttendanceAssignmentServicepara impedir atribuicao a usuario indisponivel.