From af62e3007cb2852021ed5eef0f430158d9cecb8c Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Mon, 1 Jun 2026 15:44:21 -0300 Subject: [PATCH] =?UTF-8?q?Novas=20atualiza=C3=A7=C3=B5es=20referente=20ao?= =?UTF-8?q?=20refactor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Admin.md | 2 ++ Contatos.md | 36 +++++++++++++++++++++++++++--------- Whatsapp.md | 42 +++++++++++++++++++++++++++++++++--------- 3 files changed, 62 insertions(+), 18 deletions(-) diff --git a/Admin.md b/Admin.md index eb7d33c..de07afc 100644 --- a/Admin.md +++ b/Admin.md @@ -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 diff --git a/Contatos.md b/Contatos.md index 84f8966..2641f71 100644 --- a/Contatos.md +++ b/Contatos.md @@ -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`. diff --git a/Whatsapp.md b/Whatsapp.md index 27eda01..c13c1a7 100644 --- a/Whatsapp.md +++ b/Whatsapp.md @@ -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.