/*
GESTORWEBZAP — DOCUMENTAÇÃO DO PROJETO

CAMADA 1 — VISÃO GERAL E ESCOPO
	1.1 Propósito
	   * Integração do GestorWeb com WhatsApp Business para automação de atendimento, agendamento e solicitações via Chatbot e ou Inteligência Artificial.

	1.2 Fundamentos Técnicos
	   * Framework utilizado MadBuilder PHP (Fork Adianti 7.4)
	   * Banco de Dados MySQL
	   * Arquitetura Multiempresa
	   * O modelo de Log das tabelas são separadas utilizando o mesmo formato do MadBuilder no schema LOG

	1.3 Premissas do Projeto
	   * Acesso universal via atalho F9 em qualquer parte do GestorWeb.
	   * Tela única por operador com formulário flutuante.
	   * Sincronização automática de mensagens ao abrir o módulo.
	   * Atualização em tempo real via WebSocket.
	   * Todo atendimento gera ID único, com rastreamento de origem (web, celular, facebook, instagram, GestorWebZap), histórico completo, IP de conexão, usuário, data/hora de início e fim.

CAMADA 2 — ARQUITETURA E SEGURANÇA
	2.1 Arquitetura Recomendada
	   *Frontend (GestorWeb) <--> Websockt (Tempo real) <--> API REST
                          						^		                  |
						                          |		     
				                      Redis (Cache + Fila)  <-- Worker assíncronos 

	2.2 Estratégias de Performance
	   * Índices compostos otimizados em todas as tabelas de alta rotatividade.
	   * Cache Redis para fila de notificações por operador, sessões ativas, contadores em tempo real.
	   * Queries otimizadas com TCriteria e filtros específicos; paginação em todas as listagens.
	   * Debounce de eventos, compressão de payload e lazy loading agressivo.

	2.3 Segurança — Camadas de Proteção
	   * Criptografia de dados 	-> AES-256 para mensagens sensíveis, tokens de API, dados pessoais (CPF, telefone)
	   * Credenciais 		-> Hash bcrypt/argon2
	   * Isolamento multiempresa 	-> Criptografia por tenant
	   * Rate limiting 		-> Por IP
	   * Detecção de anomalias	-> Comportamento suspeito e tentativas de acesso indevido
	   * Sessões			-> Expiração automática
	   * Autenticação de operadores -> 2FA (Two-Factor Authentication) obrigatório
	   * Tokenização		-> Dados sensíveis tokenizados em repouso

	2.4 Auditoria e Logs (Schema LOG)
	Todas as tabelas de log seguem o padrão MadBuilder schema separado.
	   * log_whatsapp_leitura	-> Quem visualizou cada mensagem (usuário, data, hora)
	   * log_whatsapp_exportacao	-> Exportação de dados do módulo
	   * log_whatsapp_acesso	-> Tentativas de acesso indevido

CAMADA 3 — MODELO DE DADOS
	3.1 Tabelas Legadas do GestorWeb integração
	   * system_unit		-> Cadastro de empresas/filiais
	   * system_users		-> Operadores e profissionais de saúde
	   * pessoa			-> Pacientes e profissionais
	   * agendamento		-> Agendamentos clínicos
	   * pessoa_horarios		-> Horários de atendimento dos profissionais
	   * pessoa_lgpd_terceiros	-> Controle LGPD de terceiros
	   * pessoa_lgpd_terceiros_doc	-> Documentos LGPD anexados

	3.2 Tabelas Novas do GestorWebZap
	Padrão de nomenclatura: prefixo whatsapp_ + nome descritivo.
	   * whatsapp_parametrizacao		-> Configurações globais e por empresa do módulo.
	   * whatsapp_atendimento		-> Controle de atendimentos (ID único, origem, status, operador responsável, timestamps).
	   * whatsapp_mensagem			-> Armazenamento das mensagens trocadas (com criptografia AES-256 para conteúdo sensível).
	   * whatsapp_contato			-> Catálogo de contatos sincronizados do WhatsApp vinculados à tabela pessoa.
	   * whatsapp_etiqueta			-> Cadastro de etiquetas/labels configuráveis por empresa.
	   * whatsapp_atendimento_etiqueta	-> Relacionamento N:N entre atendimentos e etiquetas.
	   * whatsapp_template			-> Templates de mensagem com variáveis inteligentes ({nome}, {data_aniversario}, etc.).
	   * whatsapp_gateway_pagamento		-> Configuração de gateways por empresa (MercadoPago, Stripe, PagarMe, etc.).
	   * whatsapp_ia_config			-> Configuração de provedores de IA (OpenAI, Claude, Gemini, Ollama, Kimi, etc.).
	   * whatsapp_chatbot_fluxo		-> Fluxos conversacionais (estrutura de árvore + fallback IA).
	   * whatsapp_transferencia		-> Registro de transferências entre operadores (data, hora, motivo, operador origem/destino).
	   * whatsapp_avaliacao			-> Questionários de avaliação pós-atendimento configuráveis.
	   * whatsapp_sessao_operador		-> Controle de sessões ativas dos operadores no módulo.
	   * whatsapp_fila_atendimento		-> Fila de espera com priorização e classificação de intenção.

	    Scripts de criação: devem conter o nome, tipo, tamanho, índices, relacionamentos, constraints e inserts de exemplos a serem inseridos no banco de dados para simular um ambiente de desenvolvimento e testes.

CAMADA 4 — MÓDULOS FUNCIONAIS
	4.1 Módulo de Interface
	Layout
	   * A interface deve ser igual a WhatsApp com as cores do GestorWeb.
	   * Inbox profissional com múltiplos atendimentos simultâneos e preview de mensagens.
	   * Indicadores visuais cor vermelho Atraso | cor amarela Aguardando | cor azul Resolvido.
	   * Timeline do atendimento: mensagens, transferências, pagamentos e ações do sistema em linha do tempo única.
	   * Busca inteligente por nome, telefone ou conteúdo da conversa.
	   * Modo Supervisor visão em tempo real de todos os atendimentos com capacidade de intervenção.

	Filtros do Inbox
	   * Não respondidos
	   * Novos contatos
	   * Urgentes
	   * Por etiqueta
	   * Por operador

	Identificação de Novos Contatos
	   * Contatos não cadastrados são destacados com cor específica (parametrizável).
	   * Alerta automático aos operadores "Novo contato detectado — acompanhamento recomendado".
	   * Atendimento inicial obrigatoriamente via Chatbot/IA até triagem.

	4.2 Módulo de Notificações e Alertas
	   * Notificações push no navegador.
	   * Sons de alerta configuráveis por tipo de evento.
	   * Alerta no GestorWeb quando GestorWebZap está fechado e há interações pendentes.
	   * Gravação auditada de quem acessou/visualizou mensagens (log_whatsapp_leitura).

	4.3 Módulo de Atendimento Operacional
	Regras de Acesso
	   * Um atendimento só pode ser editado por um operador por vez.
	   * Se operador tentar acessar atendimento em andamento: aviso com nome do operador atual.
	   * Sem permissão de intervenção modo somente visualização (acompanhamento).

	Etiquetas
	   * Funcionalidade equivalente ao WhatsApp Business.
	   * Etiquetas parametrizáveis por empresa.
	   * Aplicação em atendimentos para organização e filtros.

	Transferência
	   * Transferência entre operadores com registro obrigatório de: data, hora, motivo, operador origem e destino.
	   * Histórico visível na timeline do atendimento.

	Timeout e Inatividade
	   * Encerramento automático por inatividade do paciente (tempo X parametrizável em minutos).
	   * Mensagem inicial ao paciente informando sobre a regra de timeout.
	   * Mensagem de encerramento: "Atendimento finalizado por falta de interação."
	   * Ao encerrar disparo automático de questionário de avaliação (configurável).

	Monitor de Interações
	   * Dashboard para operadores e gestão visualizar atendimentos sem resposta.
	   * Fila de espera com tempo de permanência em tempo real.

	4.4 Módulo de Templates e Respostas Rápidas
	   * Cadastro de templates de mensagem com atalhos e variáveis dinâmicas.
	   * Variáveis integradas às tabelas do GestorWeb ({nome}, {data_aniversario}, {ultima_consulta}, {profissional_preferido}, {status_pagamento}, etc.).
	   * Atalhos por tecla ou comando rápido durante o atendimento.

CAMADA 5 — INTELIGÊNCIA ARTIFICIAL E AUTOMAÇÃO
	5.1 Motor de Inteligência Conversacional
	Provedores Suportados
	   * Pagas: GPT (OpenAI), Claude (Anthropic), Gemini (Google).
	   * Open Source: Ollama (local), Kimi, Llama, etc.
	   * NLP: Processamento de linguagem natural preferencialmente open source (spaCy, Rasa).

	Perfil Inteligente do Paciente
	Construção automática de perfil com:
	   * Histórico de conversas
	   * Preferências de horário
	   * Tipo de atendimento recorrente
	   * Comportamento e padrões

	Funcionalidades da IA
	   * Triagem Automática 		-> Classifica intenção (agendamento, dúvida, urgência) e prioriza fila antes de encaminhar ao humano
	   * Sugestão de Respostas 		-> Modo "Copiloto": sugere respostas ao operador baseado em contexto e histórico
	   * Auto-agendamento Inteligente 	-> Sugere horários com maior chance de comparecimento; evita no-show baseado em histórico
	   * Análise de Sentimento 		-> Detecta irritação, satisfação e risco de abandono; dispara alerta para supervisor e operador (NPS automático)
	   * Assistente Virtual da Clínica 	-> Responde a gestores sobre: horários ociosos, ranking de profissionais, pacientes com mais faltas, montagem de agenda ideal
	   * Score do Paciente  		-> Calcula: risco de faltar, probabilidade de pagar, nível de engajamento

	IA Offline (Diferencial)
	   * Execução local via Ollama para clínicas que não desejam depender de APIs externas.
	   * Total privacidade dos dados (LGPD reforçado).

	5.2 Módulo de Chatbot (Editor Visual)
	Editor de Fluxo Visual
	   * Interface drag-and-drop para usuário final criar fluxos sem programar.
	   * Blocos de decisão, mensagem, integração, agendamento e pagamento.

	Fluxo Híbrido (Regra + IA)
	   * Fluxo fixo (árvore) : caminhos pré-definidos.
	   * Fallback com IA	 : quando o bot não entende, a IA assume (evita travamento).
	   * Escalonamento humano: transferência automática com contexto preservado.

	Variáveis Inteligentes do Chatbot
	   * {ultima_consulta}, {profissional_preferido}, {status_pagamento}, {nome}, {data_aniversario}.

	5.3 Regras Automáticas (Gatilhos)
	Configuráveis por empresa:
	   Gatilho -> Paciente não responde      -> Ação -> Enviar lembrete automático
	   Gatilho -> Pagamento pendente         -> Ação -> Cobrança automática
	   Gatilho -> Novo contato 	         -> Ação -> Enviar mensagem de boas-vindas
	   Gatilho -> Agendamento não finalizado -> Ação -> Retomada automática do fluxo (recuperação de abandono)

	5.4 Campanhas Automáticas
	   * Lembrete de consulta.
	   * Retorno pós-atendimento.
	   * Campanhas de marketing.

CAMADA 6 — AGENDAMENTO E CADASTRO
	6.1 Auto-cadastro via WhatsApp
	   * Paciente realiza pré-cadastro pelo WhatsApp (dados temporários no dispositivo do usuário por segurança).
	   * Após aprovação (validação humana ou automática), dados são migrados para tabela pessoa.
	   * Integração com LGPD: consentimento explícito registrado.

	6.2 Auto-agendamento
	   * Disponível apenas para pacientes cadastrados e aprovados.
	   * Consulta às tabelas agendamento e pessoa_horarios em tempo real.
	   * Para especialidades sensíveis (ex: psicologia), parametrizável: encaminhar direto a operador humano ou fluxo de IA.

CAMADA 7 — PAGAMENTOS E GATEWAYS
	7.1 Módulo de Configuração de Gateways
	Interface intuitiva para gestor da clínica configurar:
	   Gateway -> MercadoPago  -> Recursos -> Pix, Cartão, Boleto 
	   Gateway -> Stripe 	   -> Recursos -> Cartão (internacional), Pix
	   Gateway -> PagarMe 	   -> Recursos -> Pix, Cartão, Split
	   Gateway -> Outros 	   -> Recursos -> Estrutura extensível por JSON/configuração

	Funcionalidades Financeiras
	   * Cartão de crédito		: exibição da taxa de juros por bandeira antes da confirmação.
	   * Pix / QR Code		: geração no momento do pagamento com tempo de validade parametrizável.
	   * Confirmação automática	: webhook unificado processa confirmação e atualiza status em tempo real.
	   * Tokenização segura		: salvamento de token de cartão (criptografado).
	   * Cobrança recorrente	: agendamento de cobranças automáticas.
	   * Split de pagamento		: divisão automática entre profissional e clínica.
	   * Retry automático		: tentativas de reprocessamento em caso de falha.

	7.2 Integração Financeira
	   * Todo pagamento efetuado gera comprovante anexado automaticamente no Contas a Receber do GestorWeb.
	   * Vinculação ao atendimento e ao paciente para conciliação.

CAMADA 8 — LGPD E COMPLIANCE
	8.1 Consentimento e Controle
	   * Registro de aceite do paciente para uso de dados via WhatsApp.
	   * Flag de consentimento vinculada ao cadastro.

	8.2 Anonimização e Mascaramento
	   * Dados sensíveis mascarados em relatórios operacionais (visíveis apenas para perfis autorizados).
	   * Tokenização de CPF, telefone e dados bancários em logs.

	8.3 Direito ao Esquecimento
	   * Campo anonimizado (flag) na tabela pessoa.
	   * Quando ativada: dados não aparecem em nenhuma interface, exceto para administrador LGPD.
	   * Processo de exclusão lógica completa preservando integridade referencial.

CAMADA 9 — SLA, MÉTRICAS E RELATÓRIOS
	9.1 Configuração de SLA (Parametrizável)
	   * Tempo máximo para primeira resposta.
	   * Tempo máximo entre respostas.
	   * Meta de NPS.
	   * Tempo de timeout de inatividade.

	9.2 Métricas por Operador
	   * Total de atendimentos.
	   * Tempo médio de resposta.
	   * Tempo médio de atendimento.
	   * Taxa de satisfação (NPS).
	   * Atendimentos transferidos.

	9.3 Métricas Gerais
	   * Volume de atendimentos por período.
	   * Tempo médio na fila.
	   * Taxa de timeout.
	   * Distribuição por categoria/intenção.
	   * Horários de pico.

	9.4 Dashboard com IA
	   * Previsão de demanda por período.
	   * Identificação de horários de pico.
	   * Detecção de gargalos operacionais.
	   * Ranking de operadores (produtividade, qualidade, tempo de resposta).

CAMADA 10 — INTEGRAÇÕES EXTERNAS
	10.1 Provedores WhatsApp
	   * WhatsApp Business API (oficial).
	   * Evolution API.
	   * WPP Connect.
	   * WABA (WhatsApp Business Account).
	10.2 APIs de IA
	   * GPT, Claude, Gemini (APIs pagas).
	   * Ollama, Kimi (open source/local).
   
11 MELHORIAS
Fixar o usuario na tela de conversa deve ser limitado em parametros quantos o usuario pode colocar

12 BANCO DE DADOS
--
-- Table structure for table `whatsapp_atendimento`
--

CREATE TABLE `whatsapp_atendimento` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `contato_id` int DEFAULT NULL,
  `operador_id` int DEFAULT NULL,
  `status` int DEFAULT NULL,
  `origem` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ip_origem` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `protocolo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `assunto` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `prioridade` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_abertura` datetime DEFAULT NULL,
  `data_ultima_interacao` datetime DEFAULT NULL,
  `hora_encerramento` time DEFAULT NULL,
  `data_encerramento` date DEFAULT NULL,
  `usuario_encerramento` int DEFAULT NULL,
  `motivo_encerramento` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `avaliacao_nps` int DEFAULT NULL,
  `comentario_avaliacao` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `timeout_minutos` int DEFAULT NULL,
  `transferencia_id` int DEFAULT NULL,
  `chatbot_ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ia_ativa` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL,
  `data_alteracao` date DEFAULT NULL,
  `hora_alteracao` time DEFAULT NULL,
  `usuario_alteracao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_atendimento_etiqueta`
--

CREATE TABLE `whatsapp_atendimento_etiqueta` (
  `id` int NOT NULL,
  `atendimento_id` int DEFAULT NULL,
  `etiqueta_id` int DEFAULT NULL,
  `data_aplicacao` int DEFAULT NULL,
  `usuario_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_avaliacao`
--

CREATE TABLE `whatsapp_avaliacao` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `atendimento_id` int DEFAULT NULL,
  `pergunta` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `tipo_resposta` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `resposta` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `nota` int DEFAULT NULL,
  `comentario` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `data_resposta` datetime DEFAULT NULL,
  `data_envio` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_campanha`
--

CREATE TABLE `whatsapp_campanha` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `tipo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `conteudo` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `template_id` int DEFAULT NULL,
  `data_agendamento` datetime DEFAULT NULL,
  `data_envio` datetime DEFAULT NULL,
  `status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `total_envios` int DEFAULT NULL,
  `total_sucesso` int DEFAULT NULL,
  `total_falhas` int DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_chatbot_fluxo`
--

CREATE TABLE `whatsapp_chatbot_fluxo` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `descricao` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `estrutura` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `tipo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ia_fallback` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ia_config_id` int DEFAULT NULL,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_consentimento_lgpd`
--

CREATE TABLE `whatsapp_consentimento_lgpd` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `pessoa_id` int DEFAULT NULL,
  `canal` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `consentimento_dados` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `consentimento_marketing` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `termo_aceito` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `ip_aceite` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_aceite` datetime DEFAULT NULL,
  `data_revogacao` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_contato`
--

CREATE TABLE `whatsapp_contato` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `pessoa_id` int DEFAULT NULL,
  `numero_whatsapp` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `nome_exibicao` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `foto_perfil` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `is_novo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `origem` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_criacao` datetime DEFAULT NULL,
  `data_atualizacao` datetime DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_contato`
--

INSERT INTO `whatsapp_contato` (`id`, `empresa_id`, `pessoa_id`, `numero_whatsapp`, `nome_exibicao`, `foto_perfil`, `status`, `is_novo`, `origem`, `data_criacao`, `data_atualizacao`, `usuario_inclusao`) VALUES
(1, 1, 1, '5511999999999', 'Joao Silva', NULL, 'ativo', 'N', 'whatsapp', NULL, NULL, NULL),
(2, 1, 2, '5511988888888', 'Maria Souza', NULL, 'ativo', 'S', 'instagram', NULL, NULL, NULL),
(3, 1, NULL, '5511977777777', 'Novo Contato', NULL, 'ativo', 'S', 'facebook', NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_etiqueta`
--

CREATE TABLE `whatsapp_etiqueta` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `cor` varchar(7) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `descricao` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_etiqueta`
--

INSERT INTO `whatsapp_etiqueta` (`id`, `empresa_id`, `nome`, `cor`, `descricao`, `ativo`, `data_inclusao`, `hora_inclusao`) VALUES
(1, 1, 'Urgente', '#FF4444', 'Atendimento prioritario', NULL, NULL, NULL),
(2, 1, 'Aguardando Pagamento', '#FFAA00', 'Paciente com pendencia financeira', NULL, NULL, NULL),
(3, 1, 'Retorno', '#44AA44', 'Paciente em retorno medico', NULL, NULL, NULL),
(4, 1, 'Novo', '#4488FF', 'Novo contato na base', NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_fila_atendimento`
--

CREATE TABLE `whatsapp_fila_atendimento` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `atendimento_id` int DEFAULT NULL,
  `posicao` int DEFAULT NULL,
  `prioridade` int DEFAULT NULL,
  `intencao` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `tempo_espera_segundos` int DEFAULT NULL,
  `data_entrada` datetime DEFAULT NULL,
  `data_saida` datetime DEFAULT NULL,
  `operador_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_gateway_pagamento`
--

CREATE TABLE `whatsapp_gateway_pagamento` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `provedor` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ambiente` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `api_key` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `api_secret` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `public_key` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `webhook_url` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `webhook_secret` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `taxa_juros_visa` double DEFAULT NULL,
  `taxa_juros_master` double DEFAULT NULL,
  `taxa_juros_amex` double DEFAULT NULL,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_gateway_pagamento`
--

INSERT INTO `whatsapp_gateway_pagamento` (`id`, `empresa_id`, `nome`, `provedor`, `ambiente`, `api_key`, `api_secret`, `public_key`, `webhook_url`, `webhook_secret`, `taxa_juros_visa`, `taxa_juros_master`, `taxa_juros_amex`, `ativo`, `data_inclusao`, `hora_inclusao`, `usuario_inclusao`) VALUES
(1, 1, 'MercadoPago Principal', 'mercadopago', 'production', NULL, NULL, NULL, 'https://api.clinica.com.br/webhook/mp', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(2, 1, 'Stripe Backup', 'stripe', 'sandbox', NULL, NULL, NULL, 'https://api.clinica.com.br/webhook/stripe', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_ia_config`
--

CREATE TABLE `whatsapp_ia_config` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `provedor` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `modelo` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `api_key` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `api_url` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `temperatura` double DEFAULT NULL,
  `max_tokens` int DEFAULT NULL,
  `contexto_sistema` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `is_local` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_ia_config`
--

INSERT INTO `whatsapp_ia_config` (`id`, `empresa_id`, `nome`, `provedor`, `modelo`, `api_key`, `api_url`, `temperatura`, `max_tokens`, `contexto_sistema`, `ativo`, `is_local`, `data_inclusao`, `hora_inclusao`, `usuario_inclusao`) VALUES
(1, 1, 'Ollama Local', 'ollama', 'llama3.2', NULL, 'http://localhost:11434', NULL, NULL, 'Voce e um assistente virtual de uma clinica medica. Seja gentil e profissional.', NULL, 'S', NULL, NULL, NULL),
(2, 1, 'GPT-4 Backup', 'openai', 'gpt-4', NULL, 'https://api.openai.com/v1', NULL, NULL, 'Assistente virtual de clinica. Ajude com agendamentos e tirar duvidas.', NULL, 'N', NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_mensagem`
--

CREATE TABLE `whatsapp_mensagem` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `atendimento_id` int DEFAULT NULL,
  `remetente_tipo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `tipo_mensagem` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `conteudo` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `conteudo_criptografado` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `midia_url` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `midia_tipo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `arquivo_nome` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `arquivo_tamanho` int DEFAULT NULL,
  `status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_envio` datetime DEFAULT NULL,
  `data_leitura` datetime DEFAULT NULL,
  `operador_leitura_id` int DEFAULT NULL,
  `ip_envio` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `whatsapp_msg_id` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `remetente_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_mensagem`
--

INSERT INTO `whatsapp_mensagem` (`id`, `empresa_id`, `atendimento_id`, `remetente_tipo`, `tipo_mensagem`, `conteudo`, `conteudo_criptografado`, `midia_url`, `midia_tipo`, `arquivo_nome`, `arquivo_tamanho`, `status`, `data_envio`, `data_leitura`, `operador_leitura_id`, `ip_envio`, `whatsapp_msg_id`, `remetente_id`) VALUES
(1, 1, 1, 'paciente', 'texto', 'Ola, gostaria de agendar uma consulta', NULL, NULL, NULL, NULL, NULL, 'lida', NULL, NULL, NULL, NULL, NULL, 1),
(2, 1, 1, 'operador', 'texto', 'Claro! Qual especialidade voce precisa?', NULL, NULL, NULL, NULL, NULL, 'lida', NULL, NULL, NULL, NULL, NULL, 1),
(3, 1, 2, 'paciente', 'texto', 'Bom dia, nao consigo acessar meu resultado', NULL, NULL, NULL, NULL, NULL, 'entregue', NULL, NULL, NULL, NULL, NULL, 2);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_pagamento`
--

CREATE TABLE `whatsapp_pagamento` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `atendimento_id` int DEFAULT NULL,
  `gateway_id` int DEFAULT NULL,
  `pessoa_id` int DEFAULT NULL,
  `descricao` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `valor` double DEFAULT NULL,
  `valor_juros` double DEFAULT NULL,
  `valor_total` double DEFAULT NULL,
  `metodo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `bandeira` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `transacao_id` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `pix_qrcode` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `pix_codigo` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `pix_expiracao` datetime DEFAULT NULL,
  `boleto_url` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `comprovante_url` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `token_cartao` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `cobranca_recorrente` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `split_profissional_id` int DEFAULT NULL,
  `split_percentual` double DEFAULT NULL,
  `data_criacao` datetime DEFAULT NULL,
  `data_confirmacao` datetime DEFAULT NULL,
  `data_cancelamento` datetime DEFAULT NULL,
  `motivo_cancelamento` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `tentativas` int DEFAULT NULL,
  `ultima_tentativa` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_parametrizacao`
--

CREATE TABLE `whatsapp_parametrizacao` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome_parametro` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `valor_parametro` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `descricao` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `tipo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL,
  `data_alteracao` date DEFAULT NULL,
  `hora_alteracao` time DEFAULT NULL,
  `usuario_alteracao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_parametrizacao`
--

INSERT INTO `whatsapp_parametrizacao` (`id`, `empresa_id`, `nome_parametro`, `valor_parametro`, `descricao`, `tipo`, `ativo`, `data_inclusao`, `hora_inclusao`, `usuario_inclusao`, `data_alteracao`, `hora_alteracao`, `usuario_alteracao`) VALUES
(1, 1, 'TIMEOUT_INATIVIDADE_MINUTOS', '30', 'Tempo em minutos para encerrar atendimento por inatividade', 'inteiro', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(2, 1, 'COR_NOVO_CONTATO', '#FF6B35', 'Cor de destaque para novos contatos na interface', 'cor', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(3, 1, 'NOTIFICACAO_SOM', 'S', 'Habilitar sons de alerta no navegador', 'booleano', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(4, 1, 'SLA_PRIMEIRA_RESPOSTA_MIN', '5', 'SLA maximo em minutos para primeira resposta', 'inteiro', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(5, 1, 'SLA_RESPOSTA_ENTRE_MIN', '10', 'SLA maximo em minutos entre respostas', 'inteiro', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(6, 1, 'PIX_TEMPO_VALIDADE_MIN', '30', 'Tempo de validade do QR Code Pix em minutos', 'inteiro', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(7, 1, 'IA_PROVEDOR_PADRAO', 'ollama', 'Provedor de IA padrao (gpt, claude, gemini, ollama, kimi)', 'texto', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(8, 1, 'CHATBOT_HIBRIDO', 'S', 'Ativar fluxo hibrido (regra + IA fallback)', 'booleano', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(9, 1, 'LGPD_ANONIMIZAR_RELATORIOS', 'S', 'Mascarar dados sensiveis em relatorios', 'booleano', NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(10, 1, 'WHATSAPP_PROVEDOR', 'evolution', 'Provedor WhatsApp (oficial, evolution, wppconnect, waba)', 'texto', NULL, NULL, NULL, NULL, NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_regra_automatica`
--

CREATE TABLE `whatsapp_regra_automatica` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `nome` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `gatilho` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `condicao` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL,
  `acao` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `acao_parametros` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_regra_automatica`
--

INSERT INTO `whatsapp_regra_automatica` (`id`, `empresa_id`, `nome`, `gatilho`, `condicao`, `ativo`, `data_inclusao`, `hora_inclusao`, `usuario_inclusao`, `acao`, `acao_parametros`) VALUES
(1, 1, 'Lembrete Inatividade', 'nao_responde', NULL, NULL, NULL, NULL, NULL, 'enviar_mensagem', '{\"template_id\": 1, \"tempo_minutos\": 30}'),
(2, 1, 'Cobranca Pendente', 'pagamento_pendente', NULL, NULL, NULL, NULL, NULL, 'enviar_cobranca', '{\"template_id\": 3}'),
(3, 1, 'Boas-vindas Novo', 'novo_contato', NULL, NULL, NULL, NULL, NULL, 'enviar_mensagem', '{\"template_id\": 1}'),
(4, 1, 'Recuperacao Abandono', 'abandono_agendamento', NULL, NULL, NULL, NULL, NULL, 'retomar_fluxo', '{\"fluxo_id\": 1}');

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_sessao_operador`
--

CREATE TABLE `whatsapp_sessao_operador` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `operador_id` int DEFAULT NULL,
  `socket_id` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ip` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `user_agent` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `atendimento_atual_id` int DEFAULT NULL,
  `data_login` datetime DEFAULT NULL,
  `data_ultima_atividade` datetime DEFAULT NULL,
  `data_logout` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_template`
--

CREATE TABLE `whatsapp_template` (
  `id` int NOT NULL,
  `empresa_id` int DEFAULT NULL,
  `titulo` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `atalho` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `conteudo` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `variaveis` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
  `tipo` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `categoria` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `ativo` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_inclusao` date DEFAULT NULL,
  `hora_inclusao` time DEFAULT NULL,
  `usuario_inclusao` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Dumping data for table `whatsapp_template`
--

INSERT INTO `whatsapp_template` (`id`, `empresa_id`, `titulo`, `atalho`, `conteudo`, `variaveis`, `tipo`, `categoria`, `ativo`, `data_inclusao`, `hora_inclusao`, `usuario_inclusao`) VALUES
(1, 1, 'Boas-vindas', '/ola', 'Ola {nome}! Bem-vindo a nossa clinica. Como posso ajudar?', '[\"nome\"]', 'rapida', NULL, NULL, NULL, NULL, NULL),
(2, 1, 'Confirmacao Consulta', '/conf', 'Ola {nome}, confirmamos sua consulta para {data_consulta} as {hora_consulta} com Dr. {profissional}.', '[\"nome\",\"data_consulta\",\"hora_consulta\",\"profissional\"]', 'agendamento', NULL, NULL, NULL, NULL, NULL),
(3, 1, 'Lembrete Pagamento', '/cob', 'Ola {nome}, identificamos um pagamento pendente no valor de {valor}. Pode regularizar?', '[\"nome\",\"valor\"]', 'cobranca', NULL, NULL, NULL, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `whatsapp_transferencia`
--

CREATE TABLE `whatsapp_transferencia` (
  `id` int NOT NULL,
  `atendimento_id` int DEFAULT NULL,
  `operador_origem_id` int DEFAULT NULL,
  `operador_destino_id` int DEFAULT NULL,
  `motivo` varchar(150) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `data_transferencia` datetime DEFAULT NULL,
  `usuario_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `whatsapp_atendimento`
--
ALTER TABLE `whatsapp_atendimento`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `protocolo` (`protocolo`),
  ADD KEY `fk_whatsapp_atendimento_1_1` (`empresa_id`);

--
-- Indexes for table `whatsapp_atendimento_etiqueta`
--
ALTER TABLE `whatsapp_atendimento_etiqueta`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_avaliacao`
--
ALTER TABLE `whatsapp_avaliacao`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_campanha`
--
ALTER TABLE `whatsapp_campanha`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_chatbot_fluxo`
--
ALTER TABLE `whatsapp_chatbot_fluxo`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_consentimento_lgpd`
--
ALTER TABLE `whatsapp_consentimento_lgpd`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_contato`
--
ALTER TABLE `whatsapp_contato`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_whatsapp_contato_1_1` (`empresa_id`),
  ADD KEY `fk_whatsapp_contato_2_2` (`pessoa_id`),
  ADD KEY `fk_whatsapp_contato_3_3` (`usuario_inclusao`);

--
-- Indexes for table `whatsapp_etiqueta`
--
ALTER TABLE `whatsapp_etiqueta`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_fila_atendimento`
--
ALTER TABLE `whatsapp_fila_atendimento`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_gateway_pagamento`
--
ALTER TABLE `whatsapp_gateway_pagamento`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_ia_config`
--
ALTER TABLE `whatsapp_ia_config`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_mensagem`
--
ALTER TABLE `whatsapp_mensagem`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_whatsapp_mensagem_1_1` (`empresa_id`);

--
-- Indexes for table `whatsapp_pagamento`
--
ALTER TABLE `whatsapp_pagamento`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_parametrizacao`
--
ALTER TABLE `whatsapp_parametrizacao`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_whatsapp_parametrizacao_1_1` (`empresa_id`),
  ADD KEY `fk_whatsapp_parametrizacao_2_2` (`usuario_inclusao`),
  ADD KEY `fk_whatsapp_parametrizacao_3_3` (`usuario_alteracao`);

--
-- Indexes for table `whatsapp_regra_automatica`
--
ALTER TABLE `whatsapp_regra_automatica`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_sessao_operador`
--
ALTER TABLE `whatsapp_sessao_operador`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_template`
--
ALTER TABLE `whatsapp_template`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `whatsapp_transferencia`
--
ALTER TABLE `whatsapp_transferencia`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `whatsapp_atendimento`
--
ALTER TABLE `whatsapp_atendimento`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_atendimento_etiqueta`
--
ALTER TABLE `whatsapp_atendimento_etiqueta`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_avaliacao`
--
ALTER TABLE `whatsapp_avaliacao`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_campanha`
--
ALTER TABLE `whatsapp_campanha`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_chatbot_fluxo`
--
ALTER TABLE `whatsapp_chatbot_fluxo`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_consentimento_lgpd`
--
ALTER TABLE `whatsapp_consentimento_lgpd`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_contato`
--
ALTER TABLE `whatsapp_contato`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `whatsapp_etiqueta`
--
ALTER TABLE `whatsapp_etiqueta`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `whatsapp_fila_atendimento`
--
ALTER TABLE `whatsapp_fila_atendimento`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_gateway_pagamento`
--
ALTER TABLE `whatsapp_gateway_pagamento`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `whatsapp_ia_config`
--
ALTER TABLE `whatsapp_ia_config`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `whatsapp_mensagem`
--
ALTER TABLE `whatsapp_mensagem`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `whatsapp_pagamento`
--
ALTER TABLE `whatsapp_pagamento`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_parametrizacao`
--
ALTER TABLE `whatsapp_parametrizacao`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT for table `whatsapp_regra_automatica`
--
ALTER TABLE `whatsapp_regra_automatica`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `whatsapp_sessao_operador`
--
ALTER TABLE `whatsapp_sessao_operador`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `whatsapp_template`
--
ALTER TABLE `whatsapp_template`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `whatsapp_transferencia`
--
ALTER TABLE `whatsapp_transferencia`
  MODIFY `id` int NOT NULL AUTO_INCREMENT;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `whatsapp_atendimento`
--
ALTER TABLE `whatsapp_atendimento`
  ADD CONSTRAINT `fk_whatsapp_atendimento_empresa_id` FOREIGN KEY (`empresa_id`) REFERENCES `system_unit` (`id`);

--
-- Constraints for table `whatsapp_contato`
--
ALTER TABLE `whatsapp_contato`
  ADD CONSTRAINT `fk_whatsapp_contato_empresa_id` FOREIGN KEY (`empresa_id`) REFERENCES `system_unit` (`id`),
  ADD CONSTRAINT `fk_whatsapp_contato_pessoa_id` FOREIGN KEY (`pessoa_id`) REFERENCES `pessoa` (`id`),
  ADD CONSTRAINT `fk_whatsapp_contato_usuario_inclusao` FOREIGN KEY (`usuario_inclusao`) REFERENCES `system_users` (`id`);

--
-- Constraints for table `whatsapp_mensagem`
--
ALTER TABLE `whatsapp_mensagem`
  ADD CONSTRAINT `fk_whatsapp_mensagem_empresa_id` FOREIGN KEY (`empresa_id`) REFERENCES `system_unit` (`id`);

--
-- Constraints for table `whatsapp_parametrizacao`
--
ALTER TABLE `whatsapp_parametrizacao`
  ADD CONSTRAINT `fk_whatsapp_parametrizacao_empresa_id` FOREIGN KEY (`empresa_id`) REFERENCES `system_unit` (`id`),
  ADD CONSTRAINT `fk_whatsapp_parametrizacao_usuario_alteracao` FOREIGN KEY (`usuario_alteracao`) REFERENCES `system_users` (`id`),
  ADD CONSTRAINT `fk_whatsapp_parametrizacao_usuario_inclusao` FOREIGN KEY (`usuario_inclusao`) REFERENCES `system_users` (`id`);
COMMIT;

O que costuma dar problema no Adianti/MadBuilder
1. Webhook
Nunca processe tudo direto no endpoint.

Faça:
Webhook recebe -> grava fila -> worker processa

2. Envio síncrono
Nunca envie WhatsApp dentro:
onSave pesado
transaction crítica
geração financeira
Use fila.

3. Multiempresa
Separe instância por empresa.
Nunca compartilhe sessão WhatsApp entre filiais/clientes.
//-------------------------------------------------------------------
-- ============================================
-- PASSO 1: Cadastra ou atualiza o programa
-- ============================================
INSERT INTO system_program (name, controller)
VALUES ('GestorWebZap - Chat WhatsApp', 'WhatsAppChatView')
ON DUPLICATE KEY UPDATE 
    name = VALUES(name);

-- ============================================
-- PASSO 2: Pega o ID do programa
-- ============================================
SET @prog_id = (SELECT id FROM system_program WHERE controller = 'WhatsAppChatView' LIMIT 1);

-- ============================================
-- PASSO 3: Vincula ao grupo ADMIN (ID 1)
-- ============================================
INSERT IGNORE INTO system_group_program (system_program_id, system_group_id)
VALUES (@prog_id, 1);

-- ============================================
-- PASSO 4: Vincula ao grupo USERS (ID 2) se existir
-- ============================================
INSERT IGNORE INTO system_group_program (system_program_id, system_group_id)
SELECT @prog_id, 2 
FROM system_group 
WHERE id = 2;

-- ============================================
-- PASSO 5: Cadastra também a tela de configuração
-- ============================================
INSERT INTO system_program (name, controller)
VALUES ('GestorWebZap - Configuração', 'WhatsAppConfigView')
ON DUPLICATE KEY UPDATE 
    name = VALUES(name);

SET @config_id = (SELECT id FROM system_program WHERE controller = 'WhatsAppConfigView' LIMIT 1);

INSERT IGNORE INTO system_group_program (system_program_id, system_group_id)
VALUES (@config_id, 1);

INSERT IGNORE INTO system_group_program (system_program_id, system_group_id)
SELECT @config_id, 2 
FROM system_group 
WHERE id = 2;

-- ============================================
-- VERIFICAÇÃO: Confirma se deu certo
-- ============================================
SELECT 
    sp.id AS programa_id,
    sp.name AS programa_nome,
    sp.controller,
    sg.id AS grupo_id,
    sg.name AS grupo_nome
FROM system_program sp
LEFT JOIN system_group_program sgp ON sgp.system_program_id = sp.id
LEFT JOIN system_group sg ON sg.id = sgp.system_group_id
WHERE sp.controller IN ('WhatsAppChatView', 'WhatsAppConfigView');
*/