Files
instrucoes_gerais/clube67/newwhats.local/md/diagnostico_area_mensagens.md
T

3.0 KiB

Diagnóstico da Área de Mensagens

Faltando no Frontend

Item Arquivo Função
Zustand + Immer store/chatStore.ts Store central — gerencia chats, mensagens, optimistic UI, socket listeners. É o cérebro do estado
Zustand store/instanceStore.ts Gerencia instâncias WhatsApp, QR codes, reconexão
Socket.IO Client services/socketService.ts Camada de comunicação real-time (rooms: tenant, instance, chat)
Axios services/chatApiService.ts Client HTTP com refresh automático de token, todas as APIs (chats, messages, instances, media, auth)
useChatFilter hooks/inbox/useChatFilter.ts Filtros da lista (busca, favoritos, arquivados, scopes)
useInstanceSelector hooks/inbox/useInstanceSelector.ts Seleção e troca de instância ativa
useMessageInput hooks/inbox/useMessageInput.ts Lógica do input de envio
Inbox Page pages/inbox/index.tsx Orquestrador — conecta todos os hooks e componentes

Faltando no Backend

Item Arquivo Função
Express + CORS + Helmet server.ts Server HTTP, rotas, middleware de auth
Socket.IO Server infra/socket/socketServer.ts Rooms (tenant/instance/chat), JWT auth no handshake
WhatsAppConnectionManager connection/WhatsAppConnectionManager.ts Core — gerencia conexão Baileys, reconexão com backoff exponencial, watchdog, sync pós-reconexão, emissão de baileys:log
Chat Routes modules/chats/chat.routes.ts REST API de chats — listagem, mensagens paginadas, archive, pin, mark read, search
Avatar Proxy whatsapp.send.routes.ts Proxy de foto de perfil via Baileys com cache em DB
Prisma Schema prisma/schema.prisma Modelos: User, Instance, Chat, Message, Contact, Protocol, AiBot, Broadcast
PostgreSQL via Prisma Banco principal
DragonflyDB infra/cache/dragonfly.ts Cache Redis-compatible (status de instâncias, QR codes)

Conceitos Arquiteturais Ausentes

  • Optimistic UI: sendMessage injeta mensagem no estado antes da resposta do server.
  • Modelo de rooms Socket.IO: tenant:{userId} (auto-join) → instance:{id}chat:{id}.
  • Fluxo de mensagem completo: Baileys event → MessageHandler → Prisma → Socket.IO emit → chatStore listener → useMemo bridge → MessageAreaMessageBubble.
  • Sync histórico: handleHistory() salva em batch com createMany + skipDuplicates.
  • Status de mensagem: messages.update do Baileys → DB update → message:status socket event.
  • JWT auth: access token + refresh token com renovação automática no interceptor Axios.

Correções Relevantes

  • Prisma ORM: Não é "provavelmente", é certeza. Está no package.json e o schema está definido.
  • Queries: message.repository.ts utiliza queries Prisma (ORM), e não SQL direto.
  • Reactions: Reactions das mensagens ainda não estão implementadas no backend (são stub).
  • Baileys: Dependência direta é @whiskeysockets/baileys, não um "WebSockets / Baileys" genérico.