- Adiciona waba_id ao WhatsappConfigService/Repository/DTO
- Reescreve WhatsappTemplateRepository com colunas HSM (language,
meta_template_name, header, footer, buttons, body_variables)
- Reescreve WhatsappTemplateService: submitToMeta(), syncFromMeta(),
handleTemplateStatusUpdate() para webhook automático
- Adiciona endpoints POST /whatsapp/templates/:id/submit-meta e
POST /whatsapp/templates/sync-meta no controller
- WhatsappService.startAttendance() envia como type=template quando
meta_status=APPROVED; sendTemplateMessage() com body parameters
- Webhook message_template_status_update atualiza status no banco
automaticamente sem precisar sincronizar manualmente
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
O frontend exige IDs no formato 5511999@c.us (verifica includes('@')
antes de carregar mensagens e usa split('@')[0] para exibir o nome).
Adicionados helpers cleanPhone/toWaId: DB continua com números limpos,
interface pública expõe @c.us. Corrige mensagens não carregando ao
abrir um chat e socket real-time mapeando o contato correto.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
O frontend bloqueia loadChats() quando whatsappStatus !== 'CONNECTED'.
Com a Meta API, getStatus() retornava 'META_API', zerando a lista de
conversas a cada refresh. Corrigido para retornar 'CONNECTED' e o gateway
agora emite o status ao conectar para atualizar o frontend via socket.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Implementação do método sendMessage para enviar mensagens via Meta Graph API.
- Atualização do método reply para utilizar o sendMessage ao invés de apenas logar a mensagem
- Criado módulo agent para presença e notas do atendente
- Removidas responsabilidades de agente do módulo admin
- Movido SQL de presença e notas para repositories
- Adicionados DTOs para rotas de agente
- Presença e notas passam a usar usuário autenticado via JWT
- Mantida compatibilidade com userId legado do frontend
- Atualizada wiki backend de Admin, Agent e WhatsApp
- Criado módulo de contatos para centralizar a gestão dos contatos dos clientes.
- Movidos arquivos relacionados a contatos do módulo admin para o novo módulo de contatos.
- Atualizadas as importações e dependências para refletir a nova estrutura do módulo.
- Criado DTO para contato e repositório para gerenciar as operações de banco de dados relacionadas a contatos.
- Templates de WhatsApp agora são gerenciados por um repositório e serviçodedicado.
- DTOS para WhatsApp foram criados para melhor estruturação dos dados.
- AtteandanceAssigmentRepository foi criado para gerenciar as atribuições de atendimento.
- Db Query focados apenas em repositorios, deixando os serviços mais limpos e focados na lógica de negócio.
- Encodings corrigidos.
- Movido fluxo do bot para módulo próprio knowledge-base
- Mantido contrato HTTP em /admin/knowledge por compatibilidade
- Criado KnowledgeBaseRepository para concentrar SQL
- Service agora fica responsável por regra de negócio e orquestração
- Removida criação de schema em runtime do fluxo do bot
- Atualizada documentação do módulo e wiki backend
- Liberado /admin/access/options para Agente, Supervisor e Admin
- Criados DTOs para validação dos payloads administrativos
- Extraído SQL do AdminAccessService para AdminAccessRepository
- Removida criação de schema em runtime do módulo Admin
- Auditoria passa a usar usuário autenticado via JWT
- Substituídos erros genéricos por exceptions HTTP
- Atualizada documentação do módulo Admin/access
- Adicionado JwtAuthGuard global para validar tokens nas rotas privadas
- Adicionados decorators Public e Roles para separar rotas públicas e permissões
- Adicionado RolesGuard para proteger rotas administrativas por perfil
- Rotas privadas passam a exigir Authorization Bearer Token
- WebSocket do WhatsApp passa a exigir JWT no handshake
- Adicionado rate limit global com @nestjs/throttler
- Adicionado LoginDto e ValidationPipe para validar payload de login
- Extraído SQL de acesso do usuário para UserAccessRepository
- Melhorados logs de login LDAP/Microsoft sem expor dados sensíveis
- cria endpoints administrativos para fluxo do bot, conteúdos da IA, auditoria e ranking de atendentes
- substitui triagem fixa por interpretação de árvore configurável
- adiciona encerramento de atendimento, categorias de template e variáveis de mensagem
- corrige abertura ativa para usar o chatId real retornado pelo WhatsApp
- cria endpoint de overview com métricas reais do mês
- adiciona listagem de áreas com responsável e total de usuários
- permite criar novas áreas
- permite alterar responsável de uma área
- promove responsável a supervisor da área automaticamente
- Aumento do limite de payload no NestJS para 50MB (json/urlencoded) permitindo upload de mídias em base64 sem erros de 'PayloadTooLarge'.
- Criação de mecanismo de 'Smart Name Resolution' e 'Auto-Reparação' reativa para evitar que nomes de contatos sejam sobrescritos por JIDs numéricos, consultando o Puppeteer em segundo plano.
- Correção de erro na atribuição de chats (/whatsapp/assign) onde 'area_id' nulo violava restrição 'NOT NULL' do PostgreSQL, agora exigindo o ID inteiro correspondente.
* Bootstrap da aplicação com NestJS + TypeScript
* Migração de Node.js puro + JavaScript para NestJS como framework
* Estrutura base: AppModule, AppController, health check em /health
* loadEnv com busca hierárquica de .env por ambiente
* Módulo auth completo com arquitetura em camadas:
- AuthController: rotas HTTP de autenticação
- AuthService: fachada de negócio
- AuthConfigService: leitura centralizada de variáveis de ambiente
- AuthTokenService: emissão de JWT próprio da aplicação
* Autenticação via LDAP/Active Directory com ldapts
* Autenticação via Microsoft OAuth 2.0 (Entra ID)
* Proteção CSRF no fluxo OAuth com HMAC state assinado
* Endpoint /auth/config para o frontend descobrir provedores ativos
* Documentação do módulo em docs/auth.md