14-16 Mar 2026
Logica do Sistema

WhatsApp

Secao 6

WhatsAppContact

Arquivo: cargo_fleet.Domain/WhatsAppContacts/WhatsAppContact.cs

Entidade com ate 5 numeros de telefone por tenant (Contato1 a Contato5). O sistema espera apenas um registro por tenant (busca com FirstOrDefault()).


WhatsAppMessageService

Arquivo: cargo_fleet.Application/WhatsAppMessage/WhatsAppMessageService.cs

Configuracao carregada do appsettings:

  • WhatsAppApi:BaseUrl — URL da Meta Graph API.
  • WhatsAppApi:BusinessNumberId — ID do numero de negocio.
  • WhatsAppApi:AccessToken — token de acesso permanente da Meta (exposto no repositorio — CRIT-01).

SendMessageAllAsync(templateName, data) (metodo legado):

  1. Carrega WhatsAppContact do tenant atual (primeiro registro).
  2. Extrai numeros validos (1-5), filtra nulos/vazios.
  3. Para cada numero: chama SendMessageAsync.

SendMessageAsync(number, templateName, templateData):

  • Monta payload para POST {BaseUrl}/{businessNumberId}/messages.
  • Tipo: "template", linguagem "pt_BR".

PublishWhatsAppNotificationAsync(WhatsAppTemplateMessage) (metodo novo, pipeline de atualizacao):

  • Mesma logica via WhatsAppMessageMapper.Map(message).

Templates Ativos

TemplateQuando disparadoParametros
util_carga_aceitaOferta aceita (legado)tipo_oferta, origem, destino, veiculo, data, codigo
util_carga_adicional_aceitaCarga adicional aceita (legado)mesmo que acima
alteracao_data_coletaData de coleta mudouoriginal_data, nova_data, origem, destino, codigo
alteracao_status_cargaStatus CANCELADO ou DECLINADAstatus, origem, destino, veiculo, data, codigo_b100
util_credencial_galileu_limpaCredencial Galileu deletada/invalida(nenhum parametro)

Incoerencias Identificadas

Nenhuma incoerencia critica. Observacao: o fluxo legado de notificacao WhatsApp de aceite (templates util_carga_aceita e util_carga_adicional_aceita) e acionado pelo RegistrarOfertasWorker, que esta com bug de autenticacao. Se o worker for desativado, esses templates deixam de ser enviados.