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_notes e 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.sql
  • 015_agent_presence_pause.sql

Code review

  • Presenca e notas sairam de admin porque sao dominio operacional do agente.
  • Acoes pessoais usam @CurrentUser() e JWT, nao userId vindo do cliente.
  • AgentPresenceService e usado pelo AttendanceAssignmentService para impedir atribuicao a usuario indisponivel.