CREATE DATABASE  IF NOT EXISTS `mktarbo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `mktarbo`;
--
-- Host: 34.173.42.58    Database: mktarbo
-- ------------------------------------------------------

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;

--
-- GTID state at the beginning of the backup 
--


--
-- Table structure for table `areas`
--

CREATE TABLE `areas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `nome` varchar(200) NOT NULL,
  `descricao` text,
  `codigo` varchar(50) DEFAULT NULL,
  `coordenador_id` int DEFAULT NULL,
  `cor_tema` varchar(7) DEFAULT '#6366f1',
  `logo_url` varchar(500) DEFAULT NULL,
  `config_json` json DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT '1',
  `criado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `nome` (`nome`),
  UNIQUE KEY `codigo` (`codigo`),
  KEY `idx_coordenador` (`coordenador_id`),
  KEY `idx_ativo` (`ativo`),
  KEY `idx_codigo` (`codigo`),
  CONSTRAINT `areas_ibfk_1` FOREIGN KEY (`coordenador_id`) REFERENCES `usuarios` (`id`) ON DELETE RESTRICT,
  CONSTRAINT `fk_areas_coordenador` FOREIGN KEY (`coordenador_id`) REFERENCES `usuarios` (`id`) ON DELETE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `areas`
--

INSERT INTO `areas` VALUES (1,'Marketing Arbo','Área principal migrada do sistema anterior','MKT-001',10,'#37ff00','',NULL,1,'2025-11-17 16:51:04','2025-12-23 19:05:19'),(46,'Arbotech','TESTE DE PAGINA','TECH-001',20,'#000000','',NULL,1,'2026-01-05 19:40:58','2026-01-05 19:40:58'),(47,'Diversa','','DIV-001',NULL,'#080cfd','',NULL,1,'2026-01-05 20:38:06','2026-01-05 20:38:06'),(48,'Globalis',NULL,'GBS-001',20,'#00aaff',NULL,NULL,1,'2026-01-06 13:48:38','2026-01-06 13:48:38');

--
-- Table structure for table `atividades`
--

CREATE TABLE `atividades` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `tarefa_id` int NOT NULL,
  `usuario_id` int DEFAULT NULL,
  `tipo_atividade` enum('criacao','edicao','movimentacao','comentario','atribuicao','etiqueta_add','etiqueta_remove','imagem_add','imagem_remove','timer_start','timer_pause','finalizacao','duplicacao') NOT NULL,
  `descricao` text NOT NULL,
  `dados_antigos` json DEFAULT NULL COMMENT 'Estado anterior (para undo)',
  `dados_novos` json DEFAULT NULL COMMENT 'Novo estado',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `usuario_id` (`usuario_id`),
  KEY `idx_tarefa` (`tarefa_id`),
  KEY `idx_tipo` (`tipo_atividade`),
  KEY `idx_created` (`created_at`),
  CONSTRAINT `atividades_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `atividades_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=337 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `atividades`
--


--
-- Table structure for table `audit_logs`
--

CREATE TABLE `audit_logs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `action_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Tipo de ação: edit, delete, create',
  `admin_id` int NOT NULL COMMENT 'ID do administrador que fez a alteração',
  `record_id` int DEFAULT NULL COMMENT 'ID do registro alterado',
  `task_id` int DEFAULT NULL COMMENT 'ID da tarefa relacionada',
  `user_id` int DEFAULT NULL COMMENT 'ID do usuário relacionado',
  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT 'Descrição da alteração',
  `changes` json DEFAULT NULL COMMENT 'Detalhes das mudanças em formato JSON',
  `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Data e hora da ação',
  PRIMARY KEY (`id`),
  KEY `idx_admin_id` (`admin_id`),
  KEY `idx_record_id` (`record_id`),
  KEY `idx_task_id` (`task_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_timestamp` (`timestamp`),
  KEY `idx_action_type` (`action_type`),
  CONSTRAINT `audit_logs_ibfk_1` FOREIGN KEY (`admin_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
  CONSTRAINT `audit_logs_ibfk_2` FOREIGN KEY (`task_id`) REFERENCES `tarefas` (`id`) ON DELETE SET NULL,
  CONSTRAINT `audit_logs_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Log de auditoria para rastreamento de alterações administrativas';

--
-- Dumping data for table `audit_logs`
--


--
-- Table structure for table `colunas`
--

CREATE TABLE `colunas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `titulo` varchar(100) NOT NULL,
  `ordem` int NOT NULL,
  `cor` varchar(20) DEFAULT '#6366f1',
  `limite_wip` int DEFAULT NULL COMMENT 'Work In Progress limit',
  `ativo` tinyint(1) DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_ordem_area` (`ordem`,`area_id`)
) ENGINE=InnoDB AUTO_INCREMENT=300 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `colunas`
--

INSERT INTO `colunas` VALUES (1,1,'NOVO',0,'#3b82f6',NULL,1,'2025-10-29 13:21:26'),(11,1,'FINALIZADOS',999,'#22c55e',NULL,1,'2025-10-29 13:21:26'),(167,25,'NOVO',1,'#f59e0b',NULL,1,'2025-12-12 13:34:53'),(251,42,'NOVO',1,'#10b981',NULL,1,'2025-12-17 20:50:38'),(256,42,'FINALIZADOS',6,'#6366f1',NULL,1,'2025-12-17 20:50:38'),(259,43,'NOVO',1,'#10b981',NULL,1,'2025-12-23 19:05:07'),(260,43,'ANÁLISE',2,'#f59e0b',NULL,1,'2025-12-23 19:05:07'),(261,43,'EM ANDAMENTO',3,'#3b82f6',NULL,1,'2025-12-23 19:05:07'),(262,43,'REVISÃO',4,'#8b5cf6',NULL,1,'2025-12-23 19:05:07'),(263,43,'APROVAÇÃO',5,'#ec4899',NULL,1,'2025-12-23 19:05:07'),(266,43,'Finalizados',8,'#61bd4f',NULL,1,'2025-12-23 19:05:08'),(267,44,'NOVO',1,'#10b981',NULL,1,'2025-12-29 13:00:21'),(268,44,'ANÁLISE',2,'#f59e0b',NULL,1,'2025-12-29 13:00:21'),(269,44,'EM ANDAMENTO',3,'#3b82f6',NULL,1,'2025-12-29 13:00:21'),(270,44,'REVISÃO',4,'#8b5cf6',NULL,1,'2025-12-29 13:00:21'),(271,44,'APROVAÇÃO',5,'#ec4899',NULL,1,'2025-12-29 13:00:21'),(272,44,'FINALIZADOS',6,'#6366f1',NULL,1,'2025-12-29 13:00:21'),(273,44,'Novo',7,'#0079bf',NULL,1,'2025-12-29 13:00:22'),(274,44,'Finalizados',8,'#61bd4f',NULL,1,'2025-12-29 13:00:22'),(275,45,'NOVO',1,'#10b981',NULL,1,'2025-12-29 13:10:45'),(276,45,'ANÁLISE',2,'#f59e0b',NULL,1,'2025-12-29 13:10:45'),(277,45,'EM ANDAMENTO',3,'#3b82f6',NULL,1,'2025-12-29 13:10:45'),(278,45,'REVISÃO',4,'#8b5cf6',NULL,1,'2025-12-29 13:10:45'),(279,45,'APROVAÇÃO',5,'#ec4899',NULL,1,'2025-12-29 13:10:45'),(280,45,'FINALIZADOS',6,'#6366f1',NULL,1,'2025-12-29 13:10:45'),(282,46,'NOVO',1,'#10b981',NULL,1,'2026-01-05 19:40:58'),(283,46,'ANÁLISE',2,'#f59e0b',NULL,1,'2026-01-05 19:40:58'),(284,46,'EM ANDAMENTO',3,'#3b82f6',NULL,1,'2026-01-05 19:40:58'),(285,46,'REVISÃO',4,'#8b5cf6',NULL,1,'2026-01-05 19:40:58'),(286,46,'APROVAÇÃO',5,'#ec4899',NULL,1,'2026-01-05 19:40:58'),(287,46,'FINALIZADOS',6,'#6366f1',NULL,1,'2026-01-05 19:40:58'),(288,47,'NOVO',1,'#10b981',NULL,1,'2026-01-05 20:38:06'),(289,47,'ANÁLISE',2,'#f59e0b',NULL,1,'2026-01-05 20:38:06'),(290,47,'EM ANDAMENTO',3,'#3b82f6',NULL,1,'2026-01-05 20:38:06'),(291,47,'REVISÃO',4,'#8b5cf6',NULL,1,'2026-01-05 20:38:06'),(292,47,'APROVAÇÃO',5,'#ec4899',NULL,1,'2026-01-05 20:38:06'),(293,47,'FINALIZADOS',6,'#6366f1',NULL,1,'2026-01-05 20:38:06'),(294,48,'NOVO',1,'#10b981',NULL,1,'2026-01-06 13:48:38'),(295,48,'ANÁLISE',2,'#f59e0b',NULL,1,'2026-01-06 13:48:38'),(296,48,'EM ANDAMENTO',3,'#3b82f6',NULL,1,'2026-01-06 13:48:38'),(297,48,'REVISÃO',4,'#8b5cf6',NULL,1,'2026-01-06 13:48:38'),(298,48,'APROVAÇÃO',5,'#ec4899',NULL,1,'2026-01-06 13:48:38'),(299,48,'FINALIZADOS',6,'#6366f1',NULL,1,'2026-01-06 13:48:38');

--
-- Table structure for table `comentarios`
--

CREATE TABLE `comentarios` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tarefa_id` int NOT NULL,
  `usuario_id` int DEFAULT NULL,
  `nome_autor` varchar(100) NOT NULL,
  `conteudo` text NOT NULL,
  `tipo` enum('comentario','timer_comment','sistema') DEFAULT 'comentario',
  `tempo_execucao_id` int DEFAULT NULL COMMENT 'Se foi comentário durante timer',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `editado_em` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `usuario_id` (`usuario_id`),
  KEY `tempo_execucao_id` (`tempo_execucao_id`),
  KEY `idx_tarefa` (`tarefa_id`),
  KEY `idx_created` (`created_at`),
  CONSTRAINT `comentarios_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `comentarios_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL,
  CONSTRAINT `comentarios_ibfk_3` FOREIGN KEY (`tempo_execucao_id`) REFERENCES `tempo_execucao` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `comentarios`
--


--
-- Table structure for table `configuracoes`
--

CREATE TABLE `configuracoes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `chave` varchar(100) NOT NULL,
  `valor` text,
  `tipo` enum('string','number','boolean','json') DEFAULT 'string',
  `descricao` varchar(255) DEFAULT NULL,
  `atualizado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `chave` (`chave`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `configuracoes`
--


--
-- Table structure for table `etiquetas`
--

CREATE TABLE `etiquetas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `nome` varchar(50) NOT NULL,
  `cor` varchar(20) NOT NULL,
  `descricao` varchar(200) DEFAULT NULL,
  `criado_por` int NOT NULL,
  `criado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_nome_etiqueta` (`nome`),
  KEY `criado_por` (`criado_por`),
  KEY `idx_nome` (`nome`),
  CONSTRAINT `etiquetas_ibfk_1` FOREIGN KEY (`criado_por`) REFERENCES `usuarios` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `etiquetas`
--


--
-- Table structure for table `formularios`
--

CREATE TABLE `formularios` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `nome_solicitante` varchar(100) NOT NULL,
  `email_solicitante` varchar(100) NOT NULL,
  `empresa` varchar(100) DEFAULT NULL,
  `assunto` varchar(200) NOT NULL,
  `mensagem` text NOT NULL,
  `tipo_solicitacao` enum('campanha','design','social_media','evento','outros') DEFAULT 'outros',
  `prioridade` enum('baixa','media','alta','urgente') DEFAULT 'media',
  `origem` enum('website','landing_page','whatsapp','email','manual') DEFAULT 'website',
  `status_formulario` enum('novo','lido','convertido') DEFAULT 'novo',
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `lido_em` timestamp NULL DEFAULT NULL,
  `lido_por` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `lido_por` (`lido_por`),
  KEY `idx_email` (`email_solicitante`),
  KEY `idx_status` (`status_formulario`),
  KEY `idx_created` (`created_at`),
  KEY `idx_tipo` (`tipo_solicitacao`),
  CONSTRAINT `formularios_ibfk_1` FOREIGN KEY (`lido_por`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `formularios`
--


--
-- Table structure for table `notificacoes`
--

CREATE TABLE `notificacoes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `usuario_id` int NOT NULL,
  `tarefa_id` int DEFAULT NULL,
  `formulario_id` int DEFAULT NULL,
  `tipo` enum('novo_formulario','tarefa_atribuida','comentario','prazo_proximo','tarefa_movida') NOT NULL,
  `titulo` varchar(200) NOT NULL,
  `mensagem` text,
  `lida` tinyint(1) DEFAULT '0',
  `link` varchar(500) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `lida_em` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `tarefa_id` (`tarefa_id`),
  KEY `formulario_id` (`formulario_id`),
  KEY `idx_usuario` (`usuario_id`),
  KEY `idx_lida` (`lida`),
  KEY `idx_created` (`created_at`),
  CONSTRAINT `notificacoes_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
  CONSTRAINT `notificacoes_ibfk_2` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `notificacoes_ibfk_3` FOREIGN KEY (`formulario_id`) REFERENCES `formularios` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `notificacoes`
--


--
-- Table structure for table `subtarefas`
--

CREATE TABLE `subtarefas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tarefa_id` int NOT NULL,
  `nome` varchar(500) NOT NULL,
  `concluida` tinyint(1) DEFAULT '0',
  `ordem` int DEFAULT '0',
  `criado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_subtarefas_tarefa` (`tarefa_id`),
  KEY `idx_subtarefas_concluida` (`concluida`),
  CONSTRAINT `subtarefas_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Subtarefas das tarefas principais';

--
-- Dumping data for table `subtarefas`
--


--
-- Table structure for table `tarefa_etiquetas`
--

CREATE TABLE `tarefa_etiquetas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tarefa_id` int NOT NULL,
  `etiqueta_id` int NOT NULL,
  `adicionado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_tarefa_etiqueta` (`tarefa_id`,`etiqueta_id`),
  KEY `idx_tarefa` (`tarefa_id`),
  KEY `idx_etiqueta` (`etiqueta_id`),
  CONSTRAINT `tarefa_etiquetas_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `tarefa_etiquetas_ibfk_2` FOREIGN KEY (`etiqueta_id`) REFERENCES `etiquetas` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `tarefa_etiquetas`
--


--
-- Table structure for table `tarefa_imagens`
--

CREATE TABLE `tarefa_imagens` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tarefa_id` int NOT NULL,
  `nome_arquivo` varchar(255) NOT NULL,
  `caminho_arquivo` varchar(500) NOT NULL,
  `url_publica` varchar(500) DEFAULT NULL,
  `tipo_mime` varchar(50) DEFAULT NULL,
  `tamanho_bytes` int DEFAULT NULL,
  `largura` int DEFAULT NULL,
  `altura` int DEFAULT NULL,
  `enviado_por` int NOT NULL,
  `enviado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `enviado_por` (`enviado_por`),
  KEY `idx_tarefa` (`tarefa_id`),
  CONSTRAINT `tarefa_imagens_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `tarefa_imagens_ibfk_2` FOREIGN KEY (`enviado_por`) REFERENCES `usuarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `tarefa_imagens`
--


--
-- Table structure for table `tarefa_responsaveis`
--

CREATE TABLE `tarefa_responsaveis` (
  `id` int NOT NULL AUTO_INCREMENT,
  `tarefa_id` int NOT NULL,
  `usuario_id` int DEFAULT NULL,
  `nome_responsavel` varchar(100) NOT NULL COMMENT 'Nome para responsáveis externos',
  `email_responsavel` varchar(100) DEFAULT NULL,
  `adicionado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `adicionado_por` int NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_responsavel_tarefa` (`tarefa_id`,`nome_responsavel`),
  KEY `usuario_id` (`usuario_id`),
  KEY `adicionado_por` (`adicionado_por`),
  KEY `idx_tarefa` (`tarefa_id`),
  CONSTRAINT `tarefa_responsaveis_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `tarefa_responsaveis_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL,
  CONSTRAINT `tarefa_responsaveis_ibfk_3` FOREIGN KEY (`adicionado_por`) REFERENCES `usuarios` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `tarefa_responsaveis`
--


--
-- Table structure for table `tarefas`
--

CREATE TABLE `tarefas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `titulo` varchar(200) NOT NULL,
  `descricao` text,
  `template_id` varchar(50) DEFAULT NULL COMMENT 'ID do template usado (marketing, comercial, desenvolvimento, suporte, evento)',
  `custom_data` json DEFAULT NULL COMMENT 'Dados customizados específicos do template',
  `valor_estimado` decimal(15,2) DEFAULT NULL COMMENT 'Valor estimado da oportunidade (template comercial)',
  `probabilidade` varchar(50) DEFAULT NULL COMMENT 'Probabilidade de fechamento (template comercial)',
  `categoria_suporte` varchar(100) DEFAULT NULL COMMENT 'Categoria do chamado (template suporte)',
  `criticidade` varchar(50) DEFAULT NULL COMMENT 'Nível de criticidade (template suporte)',
  `tipo_projeto` varchar(100) DEFAULT NULL COMMENT 'Tipo de projeto (Website, API, Mobile, etc)',
  `tecnologias` text COMMENT 'Tecnologias usadas no projeto',
  `repositorio` varchar(500) DEFAULT NULL COMMENT 'URL do repositório Git',
  `nome_evento` varchar(200) DEFAULT NULL COMMENT 'Nome do evento ou feira',
  `local_evento` varchar(500) DEFAULT NULL COMMENT 'Local onde será realizado o evento',
  `num_participantes` varchar(50) DEFAULT NULL COMMENT 'Número esperado de participantes',
  `coluna_id` int NOT NULL,
  `formulario_id` int DEFAULT NULL COMMENT 'Referência ao formulário original',
  `prioridade` enum('baixa','media','alta','urgente') DEFAULT 'media',
  `status` enum('ativo','finalizado','arquivado') DEFAULT 'ativo',
  `ordem_na_coluna` int NOT NULL DEFAULT '0',
  `nome_cliente` varchar(100) DEFAULT NULL,
  `email_cliente` varchar(100) DEFAULT NULL,
  `telefone_cliente` varchar(20) DEFAULT NULL,
  `empresa_cliente` varchar(100) DEFAULT NULL,
  `data_inicio` date DEFAULT NULL,
  `data_entrega` date DEFAULT NULL,
  `orcamento` decimal(10,2) DEFAULT NULL,
  `tempo_execucao` int DEFAULT '0' COMMENT 'Tempo em segundos',
  `criado_por` int NOT NULL,
  `criado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `finalizado_em` timestamp NULL DEFAULT NULL,
  `finalizado_por` int DEFAULT NULL,
  `campos_personalizados` json DEFAULT NULL,
  `client_request_id` varchar(36) DEFAULT NULL,
  `tarefa_pai_id` int DEFAULT NULL,
  `visibility_scope` varchar(20) DEFAULT 'area',
  `is_principal` tinyint(1) DEFAULT '0',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `criado_por` (`criado_por`),
  KEY `finalizado_por` (`finalizado_por`),
  KEY `idx_coluna` (`coluna_id`),
  KEY `idx_status` (`status`),
  KEY `idx_formulario` (`formulario_id`),
  KEY `idx_email_cliente` (`email_cliente`),
  KEY `idx_ordem` (`coluna_id`,`ordem_na_coluna`),
  KEY `idx_tarefas_template` (`template_id`),
  KEY `idx_tarefas_client_request_id` (`client_request_id`),
  CONSTRAINT `tarefas_ibfk_1` FOREIGN KEY (`coluna_id`) REFERENCES `colunas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `tarefas_ibfk_2` FOREIGN KEY (`formulario_id`) REFERENCES `formularios` (`id`) ON DELETE SET NULL,
  CONSTRAINT `tarefas_ibfk_3` FOREIGN KEY (`criado_por`) REFERENCES `usuarios` (`id`),
  CONSTRAINT `tarefas_ibfk_4` FOREIGN KEY (`finalizado_por`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=178 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `tarefas`
--


--
-- Table structure for table `templates_tarefas`
--

CREATE TABLE `templates_tarefas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int NOT NULL,
  `nome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `descricao` text COLLATE utf8mb4_unicode_ci,
  `campos_json` text COLLATE utf8mb4_unicode_ci COMMENT 'JSON: [{key, label, type, required, options, placeholder}]',
  `tabela_dados` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ex: tarefa_dados_area_5',
  `modulo_subtarefas` tinyint(1) DEFAULT '1',
  `modulo_timer` tinyint(1) DEFAULT '1',
  `modulo_comentarios` tinyint(1) DEFAULT '1',
  `modulo_imagens` tinyint(1) DEFAULT '1',
  `is_padrao` tinyint(1) DEFAULT '1' COMMENT 'Se é o template padrão da área',
  `is_ativo` tinyint(1) DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_area_padrao` (`area_id`,`is_padrao`),
  KEY `idx_templates_area` (`area_id`),
  KEY `idx_templates_ativo` (`is_ativo`),
  CONSTRAINT `templates_tarefas_ibfk_1` FOREIGN KEY (`area_id`) REFERENCES `areas` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Templates personalizados para tarefas de cada área';

--
-- Dumping data for table `templates_tarefas`
--

INSERT INTO `templates_tarefas` VALUES (1,1,'Teste Debug','Template personalizado para Teste Debug','[{\"key\": \"campo_1767640161183_7niufcl7g\", \"label\": \"Texto\", \"type\": \"text\", \"required\": false, \"options\": null, \"placeholder\": \"Digite texto\"}, {\"key\": \"campo_1767640161183_3qjg0t6qa\", \"label\": \"e-mail\", \"type\": \"email\", \"required\": false, \"options\": null, \"placeholder\": \"Digite e-mail\"}, {\"key\": \"campo_1767640161183_2yeb63qu7\", \"label\": \"Telefone\", \"type\": \"tel\", \"required\": false, \"options\": null, \"placeholder\": \"Digite telefone\"}, {\"key\": \"campo_1767640161183_w42q93ym0\", \"label\": \"Data\", \"type\": \"date\", \"required\": false, \"options\": null, \"placeholder\": \"Digite data\"}, {\"key\": \"campo_1767640161183_4rffcevyn\", \"label\": \"Valor\", \"type\": \"currency\", \"required\": false, \"options\": null, \"placeholder\": \"Digite valor\"}]','tarefa_dados_area_1',0,0,1,1,0,1,'2026-01-05 19:09:21','2026-01-05 19:09:21'),(2,46,'Teste Debug','Template personalizado para Teste Debug','[{\"key\": \"campo_1767644848868_5y2mf2rq1\", \"label\": \"e-mail\", \"type\": \"email\", \"required\": false, \"options\": null, \"placeholder\": \"Digite e-mail\"}, {\"key\": \"campo_1767644848868_djuyuqfpe\", \"label\": \"telefone\", \"type\": \"tel\", \"required\": false, \"options\": null, \"placeholder\": \"Digite telefone\"}, {\"key\": \"campo_1767644848868_dzrasg9vm\", \"label\": \"Valor\", \"type\": \"currency\", \"required\": false, \"options\": null, \"placeholder\": \"Digite valor\"}]','tarefa_dados_area_46',1,1,1,1,0,0,'2026-01-05 20:27:29','2026-01-06 13:33:53'),(3,47,'Teste criação','Template personalizado para Teste criação','[{\"key\": \"campo_1767645563959_f7ywx907j\", \"label\": \"e-mail 2\", \"type\": \"email\", \"required\": false, \"options\": null, \"placeholder\": \"Digite e-mail 2\"}, {\"key\": \"campo_1767645563959_wbcvrsetg\", \"label\": \"Telefone 2\", \"type\": \"tel\", \"required\": false, \"options\": null, \"placeholder\": \"Digite telefone 2\"}, {\"key\": \"campo_1767645563959_tuhevk3s0\", \"label\": \"Valor2\", \"type\": \"currency\", \"required\": false, \"options\": null, \"placeholder\": \"Digite valor2\"}, {\"key\": \"campo_1767645563959_q15v6nbws\", \"label\": \"ZED\\u00c2O\", \"type\": \"date\", \"required\": false, \"options\": null, \"placeholder\": \"Digite zed\\u00e2o\"}]','tarefa_dados_area_47',1,1,1,1,0,1,'2026-01-05 20:39:24','2026-01-05 20:39:24');

--
-- Table structure for table `tempo_execucao`
--

CREATE TABLE `tempo_execucao` (
  `id` int NOT NULL AUTO_INCREMENT,
  `area_id` int DEFAULT NULL,
  `tarefa_id` int NOT NULL,
  `usuario_id` int NOT NULL,
  `inicio` timestamp NOT NULL,
  `fim` timestamp NULL DEFAULT NULL,
  `duracao_segundos` int DEFAULT NULL,
  `comentario` text,
  `ativo` tinyint(1) DEFAULT '1' COMMENT 'Timer ainda rodando?',
  PRIMARY KEY (`id`),
  KEY `idx_tarefa` (`tarefa_id`),
  KEY `idx_usuario` (`usuario_id`),
  KEY `idx_ativo` (`ativo`),
  CONSTRAINT `tempo_execucao_ibfk_1` FOREIGN KEY (`tarefa_id`) REFERENCES `tarefas` (`id`) ON DELETE CASCADE,
  CONSTRAINT `tempo_execucao_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=278 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data for table `tempo_execucao`
--


--
-- Temporary view structure for view `v_templates_areas`
--

/*!50001 DROP VIEW IF EXISTS `v_templates_areas`*/;
/*!50001 CREATE VIEW `v_templates_areas` AS SELECT 
 1 AS `template_id`,
 1 AS `template_nome`,
 1 AS `area_id`,
 1 AS `area_nome`,
 1 AS `area_codigo`,
 1 AS `tabela_dados`,
 1 AS `total_campos`,
 1 AS `modulo_subtarefas`,
 1 AS `modulo_timer`,
 1 AS `modulo_comentarios`,
 1 AS `modulo_imagens`,
 1 AS `created_at`,
 1 AS `updated_at`*/;

--
-- Dumping routines for database 'mktarbo'
--
/*!50003 DROP PROCEDURE IF EXISTS `sp_criar_template_padrao` */;
DELIMITER ;;
CREATE DEFINER=`matheusgama`@`%` PROCEDURE `sp_criar_template_padrao`(
    IN p_area_id INT,
    IN p_nome VARCHAR(255),
    IN p_descricao TEXT
)
BEGIN
    DECLARE v_tabela_dados VARCHAR(255);
    DECLARE v_campos_json TEXT;
    
    -- Nome da tabela dinâmica
    SET v_tabela_dados = CONCAT('tarefa_dados_area_', p_area_id);
    
    -- Campos padrão em JSON
    SET v_campos_json = '[
        {
            "key": "cliente_nome",
            "label": "Nome do Cliente",
            "type": "text",
            "required": false,
            "placeholder": "Digite o nome do cliente"
        },
        {
            "key": "cliente_email",
            "label": "Email do Cliente",
            "type": "email",
            "required": false,
            "placeholder": "email@exemplo.com"
        },
        {
            "key": "cliente_telefone",
            "label": "Telefone do Cliente",
            "type": "tel",
            "required": false,
            "placeholder": "(11) 98765-4321"
        },
        {
            "key": "data_inicio",
            "label": "Data de Início",
            "type": "date",
            "required": false
        },
        {
            "key": "data_entrega",
            "label": "Data de Entrega",
            "type": "date",
            "required": false
        },
        {
            "key": "orcamento",
            "label": "Orçamento",
            "type": "currency",
            "required": false,
            "placeholder": "R$ 0,00"
        }
    ]';
    
    -- Inserir template
    INSERT INTO templates_tarefas (
        area_id, 
        nome, 
        descricao, 
        campos_json, 
        tabela_dados,
        is_padrao,
        is_ativo
    ) VALUES (
        p_area_id,
        p_nome,
        p_descricao,
        v_campos_json,
        v_tabela_dados,
        TRUE,
        TRUE
    )
    ON DUPLICATE KEY UPDATE
        nome = p_nome,
        descricao = p_descricao,
        updated_at = CURRENT_TIMESTAMP;
    
    SELECT LAST_INSERT_ID() as template_id, v_tabela_dados as tabela_dados;
END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `sp_get_tarefas_visiveis` */;
DELIMITER ;;
    END IF;
END ;;
DELIMITER ;

--
-- Final view structure for view `v_templates_areas`
--

/*!50001 DROP VIEW IF EXISTS `v_templates_areas`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`matheusgama`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `v_templates_areas` AS select `t`.`id` AS `template_id`,`t`.`nome` AS `template_nome`,`t`.`area_id` AS `area_id`,`a`.`nome` AS `area_nome`,`a`.`codigo` AS `area_codigo`,`t`.`tabela_dados` AS `tabela_dados`,json_length(`t`.`campos_json`) AS `total_campos`,`t`.`modulo_subtarefas` AS `modulo_subtarefas`,`t`.`modulo_timer` AS `modulo_timer`,`t`.`modulo_comentarios` AS `modulo_comentarios`,`t`.`modulo_imagens` AS `modulo_imagens`,`t`.`created_at` AS `created_at`,`t`.`updated_at` AS `updated_at` from (`templates_tarefas` `t` join `areas` `a` on((`t`.`area_id` = `a`.`id`))) where ((`t`.`is_ativo` = true) and (`t`.`is_padrao` = true) and (`a`.`ativo` = true)) */;


