--
-- Host: localhost    Database: whatsapp_atendimento_hibrido
-- ------------------------------------------------------


--
-- Table structure for table `agente_setor`
--

CREATE TABLE `agente_setor` (
  `agente_id` int(11) NOT NULL,
  `setor_id` int(11) NOT NULL,
  PRIMARY KEY (`agente_id`,`setor_id`),
  KEY `setor_id` (`setor_id`),
  CONSTRAINT `agente_setor_ibfk_1` FOREIGN KEY (`agente_id`) REFERENCES `agentes` (`id`) ON DELETE CASCADE,
  CONSTRAINT `agente_setor_ibfk_2` FOREIGN KEY (`setor_id`) REFERENCES `setores` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `agente_setor`
--

INSERT INTO `agente_setor` VALUES (1,1),(1,2),(1,3),(1,4),(2,4);

--
-- Table structure for table `atendimentos`
--

CREATE TABLE `atendimentos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `protocolo` varchar(30) NOT NULL,
  `cliente_numero` varchar(20) NOT NULL,
  `cliente_nome` varchar(100) DEFAULT NULL,
  `cliente_cpf` varchar(14) DEFAULT NULL,
  `fluxo_atual` varchar(50) DEFAULT 'SAUDACAO',
  `estado_atual` varchar(50) DEFAULT 'INICIO',
  `contexto_json` longtext DEFAULT NULL,
  `setor_id` int(11) DEFAULT NULL,
  `agente_id` int(11) DEFAULT NULL,
  `status` enum('robo','fila','humano','encerrado') DEFAULT 'robo',
  `criado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  `atualizado_em` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `protocolo` (`protocolo`),
  KEY `setor_id` (`setor_id`),
  KEY `agente_id` (`agente_id`),
  KEY `cliente_numero` (`cliente_numero`),
  KEY `cliente_cpf` (`cliente_cpf`),
  KEY `status` (`status`),
  CONSTRAINT `atendimentos_ibfk_1` FOREIGN KEY (`setor_id`) REFERENCES `setores` (`id`) ON DELETE SET NULL,
  CONSTRAINT `atendimentos_ibfk_2` FOREIGN KEY (`agente_id`) REFERENCES `agentes` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `atendimentos`
--

INSERT INTO `atendimentos` VALUES (1,'202606132587','553298471923','Rafael Dalboni',NULL,'ROTEADOR','AGUARDANDO_TRIAGEM','{\"erros_triagem\": 2}',NULL,NULL,'encerrado','2026-06-13 20:53:23','2026-06-13 21:01:51'),(2,'202606133710','553298471923','Rafael Dalboni','04078367640','ENCERRADO','FINALIZADO','{\"cpf\": \"04078367640\", \"tentativas_cpf\": 1}',2,NULL,'encerrado','2026-06-13 21:10:47','2026-06-13 21:22:15'),(3,'202606132631','553298471923','Rafael Dalboni','04078367640','ENCERRADO','FINALIZADO','{\"cpf\": \"04078367640\"}',NULL,NULL,'encerrado','2026-06-13 21:23:22','2026-06-13 21:25:10'),(4,'202606137176','553298471923','Rafael Dalboni','04078367640','ENCERRADO','FINALIZADO','{\"cpf\": \"04078367640\"}',NULL,NULL,'encerrado','2026-06-13 21:25:28','2026-06-13 21:30:15'),(5,'202606133860','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:30:31','2026-06-13 21:32:53'),(6,'202606133165','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:33:03','2026-06-13 21:36:18'),(7,'202606139243','553298471923','Rafael Dalboni','04078367640','ENCERRADO','FINALIZADO','{\"cpf\": \"04078367640\", \"tentativas_cpf\": 1}',2,NULL,'encerrado','2026-06-13 21:36:28','2026-06-13 21:37:34'),(8,'202606139915','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:37:43','2026-06-13 21:39:29'),(9,'202606135950','553298471923','Rafael Dalboni','04078367640','ENCERRADO','FINALIZADO','{\"cpf\": \"04078367640\", \"tentativas_cpf\": 1}',NULL,NULL,'encerrado','2026-06-13 21:39:41','2026-06-13 21:48:56'),(10,'202606138534','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:49:08','2026-06-13 21:49:39'),(11,'202606136203','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:49:55','2026-06-13 21:51:47'),(12,'202606137451','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:52:16','2026-06-13 21:54:25'),(13,'202606139139','553298471923','Rafael Dalboni',NULL,'ENCERRADO','FINALIZADO',NULL,NULL,NULL,'encerrado','2026-06-13 21:54:35','2026-06-13 21:55:56'),(14,'202606138064','553298471923','Rafael Dalboni',NULL,'IDENTIFICACAO','SOLICITAR_CPF',NULL,NULL,NULL,'robo','2026-06-13 21:56:06','2026-06-13 21:56:08');

--
-- Table structure for table `config_sistema`
--

CREATE TABLE `config_sistema` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chave` varchar(100) NOT NULL,
  `valor` text NOT NULL,
  `descricao` varchar(255) DEFAULT NULL,
  `atualizado_em` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `chave` (`chave`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `config_sistema`
--

INSERT INTO `config_sistema` VALUES (1,'WHATSAPP_TOKEN','EAAXtvZCTwTsEBRAcxn8j4OavARJfn6gyD6PYloapyxbvaSijZCrbCDnoaamQnFFWwqU2ZBskZBqxhkGLN1SJYfzYFtfUhNjTrL49BzoBl6Kc9avvPfCx31WqKwQy2tqnKlQsFZAySATLbCZAhXmG4fHnX2KMPxtN7qSU13JRHWzR09wZBrAZAYY8YT7etmMiVk5OEgZDZD','Token permanente da API Cloud do WhatsApp','2026-06-13 16:03:08'),(2,'PHONE_NUMBER_ID','1060627127132325','ID do número de telefone no Facebook Developers','2026-06-13 16:03:08'),(3,'WABA_ID','26058222790510996','ID da conta do WhatsApp Business','2026-06-13 16:03:08'),(4,'WEBHOOK_VERIFY_TOKEN','ALT@VIST@_WH@TS@PP_2024','Token de validação para assinatura do webhook','2026-06-13 16:03:08'),(5,'DEEPSEEK_API_KEY','sk-c8cf0f0276c64266baee49dd07b33ac7','Chave secreta de produção do DeepSeek','2026-06-13 16:03:08'),(6,'DEEPSEEK_API_URL','https://api.deepseek.com/v1/chat/completions','Endpoint padrão para chamadas de Chat Completion','2026-06-13 16:03:08'),(7,'RADIUSNET_API_URL','https://central2.altavistatelecom.com.br/radiusnet/index.php/api/v1','URL base de comunicação da API v4 RadiusNet','2026-06-13 16:03:08'),(8,'RADIUSNET_API_KEY','84974796b640afd282db77b0558fdbd4fdbe1df01760cfd2781f45b2b577f00ce','Token de autenticação interno fornecido pela RadiusNet','2026-06-13 16:03:08'),(9,'HORARIO_INICIO_SEMANA','08:00','Horário de início de atendimento humano de Seg a Sex','2026-06-13 16:03:08'),(10,'HORARIO_FIM_SEMANA','18:00','Horário de término de atendimento humano de Seg a Sex','2026-06-13 16:03:08'),(11,'ROBOT_TIMEOUT_MINUTOS','15','Minutos de tolerância antes de expirar a sessão do cliente','2026-06-13 16:03:08');

--
-- Table structure for table `fila_robot`
--

CREATE TABLE `fila_robot` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `atendimento_id` int(11) NOT NULL,
  `payload` longtext NOT NULL,
  `processado` tinyint(1) DEFAULT 0,
  `criado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `atendimento_id` (`atendimento_id`),
  KEY `processado` (`processado`),
  CONSTRAINT `fila_robot_ibfk_1` FOREIGN KEY (`atendimento_id`) REFERENCES `atendimentos` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `fila_robot`
--

INSERT INTO `fila_robot` VALUES (1,1,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781384001\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 20:53:23'),(2,1,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781384051\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"AGUARDANDO_TRIAGEM\"}',1,'2026-06-13 20:54:13'),(3,1,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781384508\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"AGUARDANDO_TRIAGEM\"}',1,'2026-06-13 21:01:50'),(4,2,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781385046\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:10:47'),(5,2,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781385056\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:10:58'),(6,2,'{\"mensagem\":\"Oka\",\"timestamp\":\"1781385220\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:13:41'),(7,2,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781385252\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"AGUARDANDO_TRIAGEM\"}',1,'2026-06-13 21:14:13'),(8,2,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781385376\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"PROCESSAR_DOCUMENTO\"}',1,'2026-06-13 21:16:18'),(9,2,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781385392\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"AGUARDANDO_CPF\"}',1,'2026-06-13 21:16:33'),(10,2,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781385639\",\"fluxo_atual\":\"HUMANO\",\"estado_atual\":\"AGUARDANDO\"}',1,'2026-06-13 21:20:40'),(11,2,'{\"mensagem\":\"Reiniciar\",\"timestamp\":\"1781385648\",\"fluxo_atual\":\"HUMANO\",\"estado_atual\":\"AGUARDANDO\"}',1,'2026-06-13 21:20:50'),(12,2,'{\"mensagem\":\"Encerrar\",\"timestamp\":\"1781385654\",\"fluxo_atual\":\"HUMANO\",\"estado_atual\":\"AGUARDANDO\"}',1,'2026-06-13 21:20:55'),(13,3,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781385801\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:23:22'),(14,3,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781385813\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"AGUARDANDO_TRIAGEM\"}',1,'2026-06-13 21:23:34'),(15,4,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781385927\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:25:28'),(16,4,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781385936\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"AGUARDANDO_TRIAGEM\"}',1,'2026-06-13 21:25:37'),(17,5,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781386229\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:30:31'),(18,6,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781386381\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:33:03'),(19,7,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781386587\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:36:28'),(20,7,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781386599\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"SOLICITAR_CPF\"}',1,'2026-06-13 21:36:41'),(21,7,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781386618\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"AGUARDANDO_CPF\"}',1,'2026-06-13 21:37:00'),(22,7,'{\"mensagem\":\"Encerrar\",\"timestamp\":\"1781386637\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"PROCESSAR_DOCUMENTO\"}',1,'2026-06-13 21:37:19'),(23,8,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781386662\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:37:43'),(24,9,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781386780\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:39:41'),(25,9,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781386796\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"AGUARDANDO_CPF\"}',1,'2026-06-13 21:39:57'),(26,10,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781387347\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:49:08'),(27,10,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781387363\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"SOLICITAR_CPF\"}',1,'2026-06-13 21:49:24'),(28,11,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781387393\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:49:55'),(29,12,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781387535\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:52:16'),(30,13,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781387673\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:54:35'),(31,13,'{\"mensagem\":\"Oi\",\"timestamp\":\"1781387682\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:54:43'),(32,14,'{\"mensagem\":\"Ola\",\"timestamp\":\"1781387765\",\"fluxo_atual\":\"ROTEADOR\",\"estado_atual\":\"INICIO\"}',1,'2026-06-13 21:56:06'),(33,14,'{\"mensagem\":\"040.783.676-40\",\"timestamp\":\"1781387780\",\"fluxo_atual\":\"IDENTIFICACAO\",\"estado_atual\":\"SOLICITAR_CPF\"}',1,'2026-06-13 21:56:21');

--
-- Table structure for table `logs_atendimento`
--

CREATE TABLE `logs_atendimento` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `atendimento_id` int(11) NOT NULL,
  `agente_id` int(11) DEFAULT NULL,
  `acao` varchar(100) NOT NULL,
  `descricao` text DEFAULT NULL,
  `criado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `atendimento_id` (`atendimento_id`),
  KEY `agente_id` (`agente_id`),
  CONSTRAINT `logs_atendimento_ibfk_1` FOREIGN KEY (`atendimento_id`) REFERENCES `atendimentos` (`id`) ON DELETE CASCADE,
  CONSTRAINT `logs_atendimento_ibfk_2` FOREIGN KEY (`agente_id`) REFERENCES `agentes` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `logs_atendimento`
--

INSERT INTO `logs_atendimento` VALUES (1,1,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 20:53:23'),(2,2,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:10:47'),(3,3,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:23:22'),(4,4,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:25:28'),(5,5,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:30:31'),(6,6,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:33:03'),(7,7,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:36:28'),(8,8,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:37:43'),(9,9,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:39:41'),(10,10,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:49:08'),(11,11,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:49:55'),(12,12,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:52:16'),(13,13,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:54:35'),(14,14,NULL,'CRIAR_ATENDIMENTO','Atendimento iniciado pelo robô híbrido','2026-06-13 21:56:06');

--
-- Table structure for table `logs_login`
--

CREATE TABLE `logs_login` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `agente_id` int(11) NOT NULL,
  `acao` enum('login_sucesso','login_falha','logout') NOT NULL,
  `ip` varchar(45) DEFAULT NULL,
  `criado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `agente_id` (`agente_id`),
  CONSTRAINT `logs_login_ibfk_1` FOREIGN KEY (`agente_id`) REFERENCES `agentes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `logs_login`
--


--
-- Table structure for table `mensagens_atendimento`
--

CREATE TABLE `mensagens_atendimento` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `atendimento_id` int(11) NOT NULL,
  `direcao` enum('cliente','robo','agente','sistema') NOT NULL,
  `conteudo` text NOT NULL,
  `agente_id` int(11) DEFAULT NULL,
  `enviado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `atendimento_id` (`atendimento_id`),
  KEY `agente_id` (`agente_id`),
  CONSTRAINT `mensagens_atendimento_ibfk_1` FOREIGN KEY (`atendimento_id`) REFERENCES `atendimentos` (`id`) ON DELETE CASCADE,
  CONSTRAINT `mensagens_atendimento_ibfk_2` FOREIGN KEY (`agente_id`) REFERENCES `agentes` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `mensagens_atendimento`
--

INSERT INTO `mensagens_atendimento` VALUES (1,1,'cliente','Ola',NULL,'2026-06-13 20:53:23'),(2,1,'cliente','Oi',NULL,'2026-06-13 20:54:13'),(3,1,'cliente','Ola',NULL,'2026-06-13 21:01:50'),(4,2,'cliente','Ola',NULL,'2026-06-13 21:10:47'),(5,2,'cliente','Oi',NULL,'2026-06-13 21:10:58'),(6,2,'cliente','Oka',NULL,'2026-06-13 21:13:41'),(7,2,'cliente','040.783.676-40',NULL,'2026-06-13 21:14:13'),(8,2,'cliente','Oi',NULL,'2026-06-13 21:16:18'),(9,2,'cliente','040.783.676-40',NULL,'2026-06-13 21:16:33'),(10,2,'cliente','Oi',NULL,'2026-06-13 21:20:40'),(11,2,'cliente','Reiniciar',NULL,'2026-06-13 21:20:50'),(12,2,'cliente','Encerrar',NULL,'2026-06-13 21:20:55'),(13,3,'cliente','Oi',NULL,'2026-06-13 21:23:22'),(14,3,'cliente','040.783.676-40',NULL,'2026-06-13 21:23:34'),(15,4,'cliente','Oi',NULL,'2026-06-13 21:25:28'),(16,4,'cliente','040.783.676-40',NULL,'2026-06-13 21:25:37'),(17,5,'cliente','Ola',NULL,'2026-06-13 21:30:31'),(18,6,'cliente','Oi',NULL,'2026-06-13 21:33:03'),(19,7,'cliente','Oi',NULL,'2026-06-13 21:36:28'),(20,7,'cliente','Oi',NULL,'2026-06-13 21:36:41'),(21,7,'cliente','040.783.676-40',NULL,'2026-06-13 21:37:00'),(22,7,'cliente','Encerrar',NULL,'2026-06-13 21:37:19'),(23,8,'cliente','Oi',NULL,'2026-06-13 21:37:43'),(24,9,'cliente','Oi',NULL,'2026-06-13 21:39:41'),(25,9,'cliente','040.783.676-40',NULL,'2026-06-13 21:39:57'),(26,10,'cliente','Oi',NULL,'2026-06-13 21:49:08'),(27,10,'cliente','040.783.676-40',NULL,'2026-06-13 21:49:24'),(28,11,'cliente','Ola',NULL,'2026-06-13 21:49:55'),(29,12,'cliente','Ola',NULL,'2026-06-13 21:52:16'),(30,13,'cliente','Ola',NULL,'2026-06-13 21:54:35'),(31,13,'cliente','Oi',NULL,'2026-06-13 21:54:43'),(32,14,'cliente','Ola',NULL,'2026-06-13 21:56:06'),(33,14,'cliente','040.783.676-40',NULL,'2026-06-13 21:56:21');

--
-- Table structure for table `robot_comandos_universais`
--

CREATE TABLE `robot_comandos_universais` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `termo_chave` varchar(100) NOT NULL,
  `acao_destino` varchar(50) NOT NULL,
  `descricao` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `termo_chave` (`termo_chave`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `robot_comandos_universais`
--

INSERT INTO `robot_comandos_universais` VALUES (1,'recomecar','RESET_TOTAL','Força o robô a voltar para a saudação apagando a memória'),(2,'mudar cadastro','AMB_CADASTRO','Ativa a tela para escolher outro CPF cadastrado'),(3,'outro plano','AMB_PLANO','Permite alternar entre dois ou mais contratos ativos no mesmo CPF');

--
-- Table structure for table `robot_prompts_mensagens`
--

CREATE TABLE `robot_prompts_mensagens` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fluxo` varchar(50) NOT NULL,
  `chave` varchar(100) NOT NULL,
  `conteudo` text NOT NULL,
  `descricao` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `chave` (`chave`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `robot_prompts_mensagens`
--

INSERT INTO `robot_prompts_mensagens` VALUES (1,'GLOBAL','msg_saudacao','Olá! 👋 Eu sou o assistente virtual da Alta Vista Telecom. Para começarmos, por favor, digite seu CPF ou CNPJ (apenas números):','Primeiro contato com o cliente'),(2,'GLOBAL','msg_ausencia','Olá! No momento nossa equipe humana está fora do horário de atendimento, mas nosso robô continua ativo para serviços financeiros automáticos!','Disparado fora de hora comercial'),(3,'GLOBAL','msg_nao_entendido','Não consegui compreender sua solicitação. Por favor, tente descrever de outra maneira ou digite uma das opções.','Fallback quando robô e IA falham'),(4,'AI_CLASSIFIER','prompt_triagem','Você é o motor de classificação interna da Alta Vista Telecom. Analise o texto do cliente e responda EXCLUSIVAMENTE um JSON no formato {\"intencao\": \"TAG\"}. Tags válidas: SOLICITAR_BOLETO, LENTIDAO_CONEXAO, QUERO_CONTRATAR, FALAR_HUMANO, OUTROS.','Prompt oculto enviado para o DeepSeek'),(5,'SAUDACAO','msg_cpf_valido','Perfeito! Localizei seu cadastro. Agora, por favor, me diga em poucas palavras: como posso te ajudar hoje?','Mensagem enviada logo após o cliente digitar um CPF/CNPJ válido'),(6,'SAUDACAO','msg_cpf_invalido','Não consegui reconhecer o documento informado. Por favor, envie novamente apenas os números do seu CPF ou CNPJ:','Mensagem de erro quando o formato do CPF/CNPJ é inválido'),(7,'CLASSIFICACAO','msg_transbordo_humano','Entendido. Estou transferindo você agora mesmo para um de nossos atendentes. Aguarde um instante que já vamos te chamar!','Mensagem enviada quando o cliente pede atendente ou a IA decide transferir'),(8,'FINANCEIRO','msg_financeiro_buscando','Estou a consultar o nosso sistema para localizar as suas faturas em aberto. Aguarde um momento, por favor... 🔍','Mensagem de espera enviada antes de disparar a requisição para a API da RadiusNet'),(9,'FINANCEIRO','msg_financeiro_encontrado','Localizei a(s) seguinte(s) fatura(s) em aberto no seu cadastro:\n\n{boletos}\n\nPara efetuar o pagamento, utilize os dados listados acima.','Mensagem de retorno quando existem boletos pendentes. O marcador {boletos} será substituído pelo Python'),(10,'FINANCEIRO','msg_financeiro_nada_encontrado','Excelente notícia! 🎉 Não localizei nenhuma fatura em aberto para o CPF/CNPJ informado. O seu cadastro encontra-se totalmente em dia. Se precisar de mais alguma coisa, basta digitar.','Mensagem enviada quando o cliente não possui débitos no sistema'),(11,'FINANCEIRO','msg_financeiro_erro','De momento, ocorreu uma instabilidade técnica ao aceder ao sistema financeiro. Para sua comodidade, estou a transferir o seu atendimento para a nossa equipa do Financeiro. Aguarde um instante...','Mensagem de contingência enviada se a API da RadiusNet falhar ou retornar erro'),(12,'ROTEADOR','msg_saudacao_inicial','Olá! Seja muito bem-vindo ao nosso atendimento automatizado. 🚀\n\nPara facilitar o seu atendimento, por favor digite o *CPF ou CNPJ do titular* da internet, ou descreva brevemente em uma única mensagem o que você precisa.','Mensagem de boas-vindas disparada no estado INICIO do Roteador'),(13,'ROTEADOR','msg_roteador_desconexo','Não consegui compreender a sua mensagem. 🤔\n\nPor favor, tente digitar novamente de forma mais direta (ex: Quero meu boleto, Estou sem internet) ou informe o CPF do titular. Se preferir encerrar este contato, digite *SAIR*.','Mensagem enviada quando a IA de Triagem classifica o input como DESCONEXO'),(14,'ROTEADOR','msg_roteador_encerrar','Atendimento encerrado por falta de interações válidas. Se precisar de algo no futuro, basta enviar uma nova mensagem. Tenha um ótimo dia! 👋','Mensagem disparada ao estourar o limite de tentativas desconexas ou comando SAIR'),(15,'ROTEADOR','prompt_triagem_sistema','Você é o motor de triagem inicial de um Provedor de Internet. Sua única função é analisar a mensagem do cliente e classificar em um objeto JSON contendo a chave \'intencao\'.\n\nOpções de intenção permitidas:\n- \'VENDAS\': Se o cliente quer assinar planos, ver preços de internet, comprar serviços ou saber cobertura.\n- \'GERAL\': Assuntos corporativos, parcerias, falar com a gerência ou algo não operacional.\n- \'CLIENTE_SEM_CPF\': Se o cliente demonstra claramente ser usuário ativo querendo suporte técnico, financeiro, boletos ou reclamando de sinal, mas NÃO informou nenhum documento na mensagem.\n- \'DESCONEXO\': Textos confusos, letras aleatórias, emojis sem contexto, xingamentos ou inputs que impossibilitem categorizar o pedido.\n\nRetorne estritamente o JSON, sem explicações extras. Exemplo:\n{\"intencao\": \"CLIENTE_SEM_CPF\"}','Prompt do sistema enviado ao DeepSeek para a triagem inicial do Roteador'),(16,'IDENTIFICACAO','msg_solicitar_cpf_educado','Perfeito, vi que você já é nosso cliente! Para que eu possa localizar o seu cadastro no sistema, por favor, digite apenas os números do seu *CPF ou CNPJ*:','Solicitação de documento caso caia na rota CLIENTE_SEM_CPF'),(17,'IDENTIFICACAO','msg_cpf_nao_encontrado_repescagem','⚠️ Não encontrei nenhum cadastro ativo com o documento informado. \n\nPor favor, certifique-se de digitar corretamente o *CPF/CNPJ do titular da assinatura da internet* (apenas números):','Mensagem de segunda tentativa caso o CPF não conste na API da RadiusNet'),(18,'IDENTIFICACAO','msg_identificacao_erro_fuga','Não foi possível localizar o seu cadastro de forma automatizada. Para sua comodidade, estou encaminhando você agora mesmo para a nossa equipe de Cadastro e Suporte para verificar o ocorrido. Aguarde um momento... ⏳','Mensagem de transbordo caso falhe as tentativas de CPF (Setor ID 2)'),(19,'IDENTIFICACAO','msg_menu_multi_cadastro','Identifiquei que você possui mais de um cadastro (Pessoa Física / Pessoa Jurídica) vinculado ao seu documento. \n\nPor favor, responda digitando apenas o *número* da opção correspondente ao titular que deseja consultar:\n\n{lista_cadastros}','Cabeçalho dinâmico para seleção de múltiplos cadastros do mesmo CPF/CNPJ'),(20,'IDENTIFICACAO','msg_validacao_contatos','Para mantermos a sua segurança e os avisos do seu cadastro em dia, confirme se os seus dados de contato estão corretos:\n\n📱 Telefone: {telefone}\n📧 E-mail: {email}\n\nEles estão corretos ou deseja adicionar novos contatos?\nDigite *1* para DADOS CORRETOS\nDigite *2* para ATUALIZAR CADASTRO','Mensagem estruturada de validação de dados de contato do cadastro selecionado'),(21,'IDENTIFICACAO','msg_sucesso_identificacao','Perfeito! Cadastro validado com sucesso e dados confirmados. 🎉\n\nAgora me diga, como posso te ajudar hoje? (Ex: Solicitar boleto, Minha internet caiu, Mudança de plano...)','Mensagem pós-identificação completa abrindo espaço para a classificação interna de destino'),(22,'IDENTIFICACAO','prompt_classificacao_interna','Você é a inteligência interna do módulo de identificação de um provedor de internet. O cadastro do cliente já está autenticado. Sua missão é classificar a resposta dele em um JSON estruturado contendo a chave \'decisao\'.\n\nCRÍTICO - REGRA DE CHECAGEM DE FUGA FIRST:\nAntes de olhar qualquer intenção técnica, avalie com prioridade absoluta se o usuário alegou erro na escolha do cadastro, quer mudar o nome/titular escolhido, quer mudar o CPF digitado ou deseja desistir/voltar (Ex: \'escolhi o nome errado\', \'não é esse cadastro\', \'mudar de cadastro\', \'mudar cpf\', \'voltar\', \'cancelar\', \'sair\'). Se detectar qualquer sinal disso, retorne obrigatoriamente:\n{\"decisao\": \"FUGA_RETORNO\"}\n\nCaso o usuário NÃO queira voltar e esteja seguro do cadastro, avalie o pedido dele e classifique entre as seguintes opções operacionais:\n- \'FINANCEIRO\': Pedidos de boleto, segunda via, faturas em aberto, comprovante de pagamento, código PIX ou reativação de sinal cortado.\n- \'SUPORTE_TECNICO\': Reclamações de lentidão, queda de sinal, wi-fi ruim, troca de senha do roteador ou problemas de conexão de internet.\n\nRetorne apenas o JSON limpo, sem markdown, blocos de código ou explicações.\nExemplo: {\"decisao\": \"FINANCEIRO\"}','Prompt focado na checagem prioritária de fuga de cadastro antes do direcionamento N2');

--
-- Table structure for table `setores`
--

CREATE TABLE `setores` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `descricao` varchar(255) DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT 1,
  `criado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `nome` (`nome`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `setores`
--

INSERT INTO `setores` VALUES (1,'Geral','Triagem inicial automática da empresa',1,'2026-06-13 16:03:08'),(2,'Vendas','Setor focado em novos contratos e upgrades de planos',1,'2026-06-13 16:03:08'),(3,'Financeiro','Segunda via de boletos, promessa de liberação e faturamento',1,'2026-06-13 16:03:08'),(4,'Suporte','Tratamento de lentidão, queda de conexão e testes de porta',1,'2026-06-13 16:03:08');


