Novas atualizações referente ao refactor

Rafael Alves Lopes 2026-06-01 15:44:21 -03:00
parent ef85a99ea6
commit af62e3007c
3 changed files with 62 additions and 18 deletions

@ -21,6 +21,8 @@ Sustenta o painel administrativo e parte do painel supervisor:
- conteudos da IA.
O fluxo do agente virtual e a configuracao de triagem ficam no modulo `knowledge-base`, mantendo o prefixo `/admin/knowledge` por compatibilidade.
A agenda de contatos fica no modulo `contacts`, mantendo o prefixo `/contacts` por compatibilidade.
## Endpoints principais

@ -1,14 +1,19 @@
# Contatos e Agenda
Base tecnica:
- Controller: `src/modules/admin/customer-contacts.controller.ts`
- Service: `src/modules/admin/customer-contacts.service.ts`
- Prefixo: `/contacts`
Base tecnica:
- Module: `src/modules/contacts/contacts.module.ts`
- Controller: `src/modules/contacts/contacts.controller.ts`
- Service: `src/modules/contacts/contacts.service.ts`
- Repository: `src/modules/contacts/repositories/contacts.repository.ts`
- DTOs: `src/modules/contacts/dto/contact.dto.ts`
- Prefixo: `/contacts`
## Responsabilidade
Gerencia agenda e perfil de contatos usados no chat e na abertura ativa.
Gerencia agenda e perfil de contatos usados no chat e na abertura ativa.
O modulo fica separado de `admin` porque contato e um dominio operacional usado por chat, atendimento ativo e canais futuros. O prefixo `/contacts` foi mantido para preservar compatibilidade com o frontend.
## Endpoints
@ -29,6 +34,19 @@ Gerencia agenda e perfil de contatos usados no chat e na abertura ativa.
- `note`: observacao.
- `user_id`: usuario que salvou/atualizou.
## Code review
O nome tecnico `company` permaneceu por compatibilidade, mas na interface o conceito virou `Etiqueta de identificacao`.
## Code review
O nome tecnico `company` permaneceu por compatibilidade, mas na interface o conceito virou `Etiqueta de identificacao`.
O modulo segue:
```text
Controller -> Service -> Repository -> DatabaseService
```
- Controller: rotas, Swagger e DTO.
- Service: normalizacao de telefone, email e textos.
- Repository: SQL da tabela `agenda_contatos`.
- DatabaseService: pool PostgreSQL.
O schema nao e criado em runtime. A tabela `agenda_contatos` deve existir via migrations `010_agenda_contatos.sql` e `023_agenda_contact_channels.sql`.

@ -4,7 +4,11 @@ Base tecnica:
- Controller: `src/modules/whatsapp/whatsapp.controller.ts`
- Service: `src/modules/whatsapp/whatsapp.service.ts`
- Template Service: `src/modules/whatsapp/whatsapp-template.service.ts`
- Template Repository: `src/modules/whatsapp/repositories/whatsapp-template.repository.ts`
- Contacts Service: `src/modules/contacts/contacts.service.ts`
- Attendance Assignment: `src/modules/attendance/attendance-assignment.service.ts`
- Attendance Repository: `src/modules/attendance/repositories/attendance-assignment.repository.ts`
- Gateway: `src/modules/whatsapp/whatsapp.gateway.ts`
- Prefixo: `/whatsapp`
@ -38,21 +42,40 @@ Fila, atribuicao, transferencia, fechamento e triagem do atendimento ficam no mo
## Funcoes importantes
### `whatsapp.service.ts`
- Inicializa cliente WhatsApp Web.
- Emite QR/status.
- Lista chats e mensagens.
- Envia mensagens e midias.
- Dispara roteamento do bot ao receber mensagem.
- Executa abertura ativa com template.
### `whatsapp.service.ts`
- Inicializa cliente WhatsApp Web.
- Emite QR/status.
- Lista chats e mensagens.
- Envia mensagens e midias.
- Dispara roteamento do bot ao receber mensagem.
- Executa abertura ativa com template.
- Nao cria schema de templates em runtime; `whatsapp_templates` deve existir via migrations.
- Usa `ContactsService` para enriquecer chats com nome, telefone, email, etiqueta e observacao.
### `whatsapp-template.service.ts`
- Lista, cria, edita, aprova, reprova e remove templates.
- Simula aprovacao Meta por tempo para o fluxo de demo.
- Mantem regra de negocio de template fora do adaptador WhatsApp.
### `whatsapp-template.repository.ts`
- Concentra SQL da tabela `whatsapp_templates`.
- Usa migrations como fonte do schema.
### `attendance-assignment.service.ts`
- Controla fila e atribuicao em `whatsapp_chat_atribuicoes`.
- Impede envio quando atendimento ativo aguarda resposta do cliente.
- Roteia conversas por area, fluxo configurado ou arvore do bot.
- Monta observacao de transferencia do Agente Virtual.
- Nao cria/altera schema em runtime; `whatsapp_chat_atribuicoes` deve ser mantida pelas migrations.
### `attendance-assignment.repository.ts`
- Concentra SQL de atribuicao, fila, transferencia, triagem e leitura do fluxo do bot.
- Mantem o service focado em regra de negocio e orquestracao.
## Eventos em tempo real
@ -65,6 +88,7 @@ O `whatsapp.gateway.ts` usa Socket.IO para notificar o frontend sobre:
## Code review
- `attendance-assignment.service.ts` concentra regra critica e deve receber testes.
- `whatsapp.controller.ts` usa DTOs para validar payloads de envio, atendimento, transferencia e templates.
- Permissao de agente/admin ainda precisa ser validada no backend.
- `whatsapp-web.js` e bom para demo/MVP controlado, mas para producao robusta avaliar WhatsApp Cloud API.