One Hat Cyber Team
Your IP :
216.73.217.17
Server IP :
162.240.179.46
Server :
Linux vps-14493116.nutrivittasaude.com.br 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.2.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
lifeprimeti
/
central.lifeprimeti.com.br
/
View File Name :
schema.sql
-- Sistema SaaS de Cadastro de Grupos WhatsApp -- MySQL 8.x / PHP 8.2 -- ATENCAO: Este schema reflete a estrutura ATUAL do banco. CREATE DATABASE IF NOT EXISTS whatsapp_grupos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE whatsapp_grupos; -- ===== TENANTS (EMPRESAS) ===== CREATE TABLE IF NOT EXISTS tenants ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(150) NOT NULL, slug VARCHAR(100) NOT NULL UNIQUE, documento VARCHAR(20), tipo_documento ENUM('cpf','cnpj') DEFAULT 'cpf', email VARCHAR(255), telefone VARCHAR(30), whatsapp_enabled TINYINT(1) NOT NULL DEFAULT 1, whatsapp_phone VARCHAR(30) DEFAULT NULL, ativo TINYINT(1) NOT NULL DEFAULT 1, observacao TEXT, plano_id INT UNSIGNED DEFAULT NULL, assinatura_status ENUM('ativa','cancelada','expirada','pendente','trial') NOT NULL DEFAULT 'pendente', data_inicio DATE DEFAULT NULL, data_fim DATE DEFAULT NULL, periodo ENUM('diario','semanal','mensal','trimestral','semestral','anual','vitalicio') DEFAULT 'mensal', preco_cobrado DECIMAL(10,2) NOT NULL DEFAULT 0.00, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_slug (slug), INDEX idx_ativo (ativo) ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS accounts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, senha VARCHAR(255) NOT NULL, plano ENUM('gratuito','basico','profissional','enterprise') NOT NULL DEFAULT 'gratuito', ativo TINYINT(1) NOT NULL DEFAULT 1, tenant_id INT UNSIGNED DEFAULT NULL, api_key VARCHAR(64) UNIQUE, max_grupos INT UNSIGNED NOT NULL DEFAULT 50, max_categorias INT UNSIGNED NOT NULL DEFAULT 10, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, ultimo_login TIMESTAMP NULL, login_token VARCHAR(64) DEFAULT NULL, INDEX idx_email (email), INDEX idx_api_key (api_key), INDEX idx_tenant_id (tenant_id) ) ENGINE=InnoDB; -- ===== CATEGORIAS ===== CREATE TABLE IF NOT EXISTS categorias ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(80) NOT NULL, slug VARCHAR(100) NOT NULL, descricao VARCHAR(255), cor VARCHAR(7) DEFAULT '#0d6efd', icone VARCHAR(50) DEFAULT 'bi-tag', ordem INT UNSIGNED DEFAULT 0, ativo TINYINT(1) NOT NULL DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_slug (slug) ) ENGINE=InnoDB; -- ===== GRUPOS WHATSAPP ===== CREATE TABLE IF NOT EXISTS grupos ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, categoria_id INT UNSIGNED, nome VARCHAR(150) NOT NULL, descricao TEXT, link_convite VARCHAR(255) NOT NULL, imagem_url VARCHAR(500), membros INT UNSIGNED DEFAULT 0, pais VARCHAR(100), idioma VARCHAR(50) DEFAULT 'Português', ativo TINYINT(1) NOT NULL DEFAULT 1, destaque TINYINT(1) NOT NULL DEFAULT 0, views INT UNSIGNED DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (categoria_id) REFERENCES categorias(id) ON DELETE SET NULL, INDEX idx_categoria_id (categoria_id), INDEX idx_ativo (ativo), INDEX idx_destaque (destaque) ) ENGINE=InnoDB; -- ===== API KEYS ===== CREATE TABLE IF NOT EXISTS api_keys ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, account_id INT UNSIGNED NOT NULL, nome VARCHAR(100) NOT NULL, key_hash VARCHAR(64) NOT NULL, permissoes JSON, ativo TINYINT(1) NOT NULL DEFAULT 1, ultimo_uso TIMESTAMP NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, INDEX idx_account_id (account_id), INDEX idx_key_hash (key_hash) ) ENGINE=InnoDB; -- ===== LOGS DA API ===== CREATE TABLE IF NOT EXISTS api_logs ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, account_id INT UNSIGNED NOT NULL, endpoint VARCHAR(255) NOT NULL, method VARCHAR(10) NOT NULL, status_code SMALLINT UNSIGNED NOT NULL, ip_address VARCHAR(45), user_agent VARCHAR(500), response_time_ms INT UNSIGNED DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, INDEX idx_account_id (account_id), INDEX idx_created_at (created_at) ) ENGINE=InnoDB; -- ===== SUPER ADMINS ===== CREATE TABLE IF NOT EXISTS super_admins ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, senha VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB; -- ===== PLANOS ===== CREATE TABLE IF NOT EXISTS planos ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL, descricao TEXT, max_grupos INT UNSIGNED NOT NULL DEFAULT 10, max_categorias INT UNSIGNED NOT NULL DEFAULT 5, max_usuarios INT UNSIGNED NOT NULL DEFAULT 1, max_assinaturas INT UNSIGNED DEFAULT NULL, max_requisicoes INT UNSIGNED NOT NULL DEFAULT 1000, dias_teste INT UNSIGNED NOT NULL DEFAULT 0, download_access TINYINT(1) NOT NULL DEFAULT 0, max_nfse INT UNSIGNED NOT NULL DEFAULT 0, duracao_ciclos INT UNSIGNED DEFAULT NULL, preco DECIMAL(10,2) NOT NULL DEFAULT 0.00, periodo ENUM('diario','semanal','mensal','trimestral','semestral','anual','vitalicio') NOT NULL DEFAULT 'mensal', metodos_pagamento JSON NOT NULL DEFAULT ('["manual"]'), destaque TINYINT(1) NOT NULL DEFAULT 0, data_expiracao DATE DEFAULT NULL, dia_vencimento TINYINT UNSIGNED DEFAULT NULL, ativo TINYINT(1) NOT NULL DEFAULT 1, permissoes JSON NOT NULL DEFAULT ('{"dashboard":true,"explorar":true,"categorias":true,"api_keys":true,"planos":true,"faturas":true,"calendario":true,"downloads":true,"enviar_grupo":true,"prompts":true,"suporte":true,"documentacao":true,"configuracoes":true,"nfse":false,"mercadolivre":false,"shopee":false}'), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; -- ===== ASSINATURAS ===== CREATE TABLE IF NOT EXISTS assinaturas ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, account_id INT UNSIGNED NOT NULL, plano_id INT UNSIGNED NOT NULL, status ENUM('ativa','cancelada','expirada','pendente','trial') NOT NULL DEFAULT 'trial', data_inicio DATE NOT NULL, data_fim DATE, periodo ENUM('diario','semanal','mensal','trimestral','semestral','anual','vitalicio') NOT NULL DEFAULT 'mensal', preco_cobrado DECIMAL(10,2) NOT NULL DEFAULT 0.00, metodo_pagamento ENUM('mercadopago','asaas','manual') NOT NULL DEFAULT 'manual', renovacao_automatica TINYINT(1) NOT NULL DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, FOREIGN KEY (plano_id) REFERENCES planos(id), INDEX idx_account (account_id), INDEX idx_status (status) ) ENGINE=InnoDB; -- ===== PAGAMENTOS ===== CREATE TABLE IF NOT EXISTS pagamentos ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, assinatura_id INT UNSIGNED NOT NULL, account_id INT UNSIGNED NOT NULL, plano_id INT UNSIGNED NOT NULL, valor DECIMAL(10,2) NOT NULL DEFAULT 0.00, metodo ENUM('mercadopago','asaas','manual') NOT NULL DEFAULT 'manual', status ENUM('pendente','aprovado','recusado','cancelado','reembolsado') NOT NULL DEFAULT 'pendente', transacao_id VARCHAR(255), codigo_boleto VARCHAR(255), link_pagamento VARCHAR(500), data_pagamento TIMESTAMP NULL, data_vencimento DATE, observacao TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (assinatura_id) REFERENCES assinaturas(id) ON DELETE CASCADE, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, FOREIGN KEY (plano_id) REFERENCES planos(id), INDEX idx_account (account_id), INDEX idx_status (status), INDEX idx_vencimento (data_vencimento) ) ENGINE=InnoDB; -- ===== ARQUIVOS (DOWNLOADS) ===== CREATE TABLE IF NOT EXISTS arquivos ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(255) NOT NULL, arquivo_path VARCHAR(500), url_externa VARCHAR(1000) DEFAULT NULL, tamanho BIGINT UNSIGNED NOT NULL DEFAULT 0, tipo VARCHAR(100), versao VARCHAR(20) DEFAULT NULL, is_update TINYINT(1) NOT NULL DEFAULT 0, downloads_count INT UNSIGNED NOT NULL DEFAULT 0, descricao TEXT, changelog TEXT, ativo TINYINT(1) NOT NULL DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_ativo (ativo) ) ENGINE=InnoDB; -- ===== LOG DE DOWNLOADS ===== CREATE TABLE IF NOT EXISTS downloads_log ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED NOT NULL, account_id INT UNSIGNED NOT NULL, arquivo_id INT UNSIGNED NOT NULL, ip VARCHAR(45), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_tenant (tenant_id), INDEX idx_arquivo (arquivo_id) ) ENGINE=InnoDB; -- ===== NFS-e CONFIG (POR TENANT) ===== CREATE TABLE IF NOT EXISTS nfse_configs ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED NOT NULL, cnpj VARCHAR(18) NOT NULL, razao_social VARCHAR(255) NOT NULL, nome_fantasia VARCHAR(255), inscricao_municipal VARCHAR(30), codigo_municipio VARCHAR(7), uf CHAR(2) DEFAULT 'SP', logradouro VARCHAR(255), numero VARCHAR(20), complemento VARCHAR(100), bairro VARCHAR(100), cep VARCHAR(10), email_contador VARCHAR(255), certificado_path VARCHAR(500) DEFAULT NULL, certificado_senha VARCHAR(100) DEFAULT NULL, aliquota_simples DECIMAL(5,4) DEFAULT NULL, aliquota_iss DECIMAL(5,4) DEFAULT 0.0500, retem_iss TINYINT(1) NOT NULL DEFAULT 0, ambiente ENUM('homologacao','producao') NOT NULL DEFAULT 'homologacao', ativo TINYINT(1) NOT NULL DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_tenant (tenant_id), INDEX idx_cnpj (cnpj) ) ENGINE=InnoDB; -- ===== NFS-e NOTAS EMITIDAS ===== CREATE TABLE IF NOT EXISTS nfse_notas ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED NOT NULL, account_id INT UNSIGNED NOT NULL, config_id INT UNSIGNED DEFAULT NULL, numero INT UNSIGNED DEFAULT NULL, numero_rps VARCHAR(20), serie VARCHAR(5) DEFAULT '1', data_emissao DATE NOT NULL, data_competencia DATE NOT NULL, tomador_nome VARCHAR(255) NOT NULL, tomador_cpf_cnpj VARCHAR(18), tomador_email VARCHAR(255), tomador_logradouro VARCHAR(255), tomador_numero VARCHAR(20), tomador_bairro VARCHAR(100), tomador_cep VARCHAR(10), tomador_municipio VARCHAR(255), tomador_uf CHAR(2), discriminacao TEXT NOT NULL, valor_servicos DECIMAL(12,2) NOT NULL DEFAULT 0.00, valor_deducoes DECIMAL(12,2) NOT NULL DEFAULT 0.00, base_calculo DECIMAL(12,2) NOT NULL DEFAULT 0.00, aliquota DECIMAL(5,4) NOT NULL DEFAULT 0.0500, valor_iss DECIMAL(12,2) NOT NULL DEFAULT 0.00, iss_retido TINYINT(1) NOT NULL DEFAULT 0, valor_total DECIMAL(12,2) NOT NULL DEFAULT 0.00, codigo_servico VARCHAR(20) DEFAULT '0105', item_lista VARCHAR(10) DEFAULT '01.05', xml_rps TEXT DEFAULT NULL, xml_nfse TEXT DEFAULT NULL, link_nfse VARCHAR(500) DEFAULT NULL, status ENUM('pendente','emitida','cancelada','erro') NOT NULL DEFAULT 'pendente', motivo_cancelamento TEXT DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_tenant (tenant_id), INDEX idx_data_emissao (data_emissao), INDEX idx_status (status), INDEX idx_numero (numero) ) ENGINE=InnoDB; -- ===== SERVIÇOS NFS-e (LC 116/2003) ===== CREATE TABLE IF NOT EXISTS nfse_servicos ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, item VARCHAR(10) NOT NULL, codigo VARCHAR(20) NOT NULL, descricao VARCHAR(500) NOT NULL, aliquota_ibpt FLOAT DEFAULT NULL, ativo TINYINT(1) NOT NULL DEFAULT 1, UNIQUE KEY uk_codigo (codigo), INDEX idx_item (item) ) ENGINE=InnoDB; INSERT INTO nfse_servicos (item, codigo, descricao, aliquota_ibpt) VALUES ('1', '0101', 'Análise e desenvolvimento de sistemas', 2.04), ('1', '0102', 'Programação', 2.04), ('1', '0103', 'Processamento, armazenamento ou hospedagem de dados', 2.04), ('1', '0104', 'Elaboração de programas de computadores, inclusive jogos eletrônicos', 2.04), ('1', '0105', 'Licenciamento ou cessão de direito de uso de programas de computação', 2.04), ('1', '0106', 'Assessoria e consultoria em informática', 2.04), ('1', '0107', 'Suporte técnico em informática', 2.04), ('1', '0108', 'Planejamento, confecção, manutenção e atualização de páginas eletrônicas', 2.04), ('1', '0109', 'Disponibilização de conteúdos via internet', 4.00), ('2', '0201', 'Pesquisas e desenvolvimento de qualquer natureza', 2.04), ('3', '0301', 'Locação de bens móveis', 4.00), ('4', '0401', 'Cessão de direito de uso de marcas e sinais de propaganda', 4.00), ('4', '0402', 'Exploração de eventos, congressos e assemelhados', 4.00), ('4', '0403', 'Franquia (franchising)', 4.00), ('5', '0501', 'Fornecimento de mão-de-obra, inclusive temporário', 2.04), ('6', '0601', 'Agenciamento, corretagem ou intermediação', 4.00), ('6', '0602', 'Representação comercial e distribuição', 4.00), ('7', '0701', 'Engenharia', 2.04), ('7', '0702', 'Arquitetura e urbanismo', 2.04), ('7', '0703', 'Paisagismo e decoração de interiores', 2.04), ('7', '0704', 'Agronomia, agrimensura e topografia', 2.04), ('7', '0705', 'Geologia, geofísica e geoquímica', 2.04), ('8', '0801', 'Ensino regular', 2.04), ('8', '0802', 'Ensino de idiomas, música, dança e artes', 2.04), ('8', '0803', 'Treinamento e aperfeiçoamento profissional', 2.04), ('9', '0901', 'Hospedagem, turismo, viagens e congêneres', 4.00), ('10', '1001', 'Intermediação e congêneres', 4.00), ('10', '1002', 'Agenciamento de títulos e valores mobiliários', 2.04), ('10', '1003', 'Administração de fundos', 2.04), ('10', '1004', 'Administração de cartões de crédito e débito', 4.00), ('10', '1005', 'Arrendamento mercantil (leasing)', 2.04), ('11', '1101', 'Guarda e estacionamento de veículos', 4.00), ('11', '1102', 'Vigilância, segurança ou monitoramento', 4.00), ('11', '1103', 'Limpeza e conservação de imóveis', 4.00), ('11', '1104', 'Jardinagem', 4.00), ('12', '1201', 'Serviços de beleza e estética', 4.00), ('13', '1301', 'Serviços de saúde e assistência médica', 2.04), ('13', '1302', 'Serviços veterinários', 2.04), ('13', '1303', 'Serviços de psicologia', 2.04), ('13', '1304', 'Serviços odontológicos', 2.04), ('13', '1305', 'Nutrição e dietética', 2.04), ('14', '1401', 'Assistência social', 2.04), ('15', '1501', 'Administração de bens e negócios de terceiros', 2.04), ('16', '1601', 'Manutenção e reparação de máquinas e equipamentos', 2.04), ('17', '1701', 'Publicidade e propaganda', 4.00), ('18', '1801', 'Design e desenho técnico', 2.04), ('19', '1901', 'Tradução e interpretação', 2.04), ('20', '2001', 'Telecomunicações', 2.04), ('21', '2101', 'Instalação e manutenção de equipamentos', 2.04), ('22', '2201', 'Produção audiovisual', 2.04), ('22', '2202', 'Fotografia e cinematografia', 2.04), ('23', '2301', 'Transporte de natureza municipal', 2.04), ('24', '2401', 'Construção civil', 2.04), ('25', '2501', 'Auditoria e consultoria contábil', 2.04), ('25', '2502', 'Serviços contábeis e de escrituração', 2.04), ('25', '2503', 'Perícias e avaliações', 2.04), ('26', '2601', 'Serviços advocatícios e jurídicos', 2.04), ('27', '2701', 'Corretagem de seguros', 2.04), ('28', '2801', 'Organização de festas e recepções', 4.00), ('29', '2901', 'Cópias e reprodução de documentos', 4.00), ('30', '3001', 'Serviços funerários', 2.04), ('31', '3101', 'Entregas rápidas (courier)', 2.04), ('32', '3201', 'Transporte de valores', 2.04), ('33', '3301', 'Serviços gráficos e de editoração', 2.04), ('34', '3401', 'Recarga e manutenção de extintores', 2.04), ('35', '3501', 'Locação de espaço em eventos e feiras', 4.00), ('36', '3601', 'Gestão ambiental', 2.04), ('37', '3701', 'Curadoria e conservação de obras de arte', 2.04), ('38', '3801', 'Análise laboratorial e testes', 2.04), ('39', '3901', 'Análise e controle de qualidade', 2.04), ('40', '4001', 'Outros serviços profissionais e técnicos', 2.04); CREATE TABLE IF NOT EXISTS logs ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED DEFAULT NULL, account_id INT UNSIGNED DEFAULT NULL, admin_id INT UNSIGNED DEFAULT NULL, acao VARCHAR(100) NOT NULL, descricao TEXT, ip VARCHAR(45), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_acao (acao), INDEX idx_tenant (tenant_id), INDEX idx_created (created_at) ) ENGINE=InnoDB; -- ===== GRUPOS PENDENTES ===== CREATE TABLE IF NOT EXISTS grupos_pendentes ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED NOT NULL, account_id INT UNSIGNED NOT NULL, nome VARCHAR(255) NOT NULL, link_convite VARCHAR(500) NOT NULL, descricao TEXT, categoria_id INT UNSIGNED DEFAULT NULL, status ENUM('pendente','aprovado','rejeitado') NOT NULL DEFAULT 'pendente', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_status (status), INDEX idx_tenant (tenant_id) ) ENGINE=InnoDB; -- ===== TICKETS DE SUPORTE ===== CREATE TABLE IF NOT EXISTS tickets ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED NOT NULL, account_id INT UNSIGNED NOT NULL, assunto VARCHAR(255) NOT NULL, status ENUM('aberto','respondido','fechado') NOT NULL DEFAULT 'aberto', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_status (status), INDEX idx_tenant (tenant_id) ) ENGINE=InnoDB; -- ===== MENSAGENS DOS TICKETS ===== CREATE TABLE IF NOT EXISTS tickets_mensagens ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, ticket_id INT UNSIGNED NOT NULL, remetente_type ENUM('empresa','admin') NOT NULL, mensagem TEXT NOT NULL, anexo_nome VARCHAR(255) DEFAULT NULL, anexo_path VARCHAR(500) DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_ticket (ticket_id) ) ENGINE=InnoDB; -- ===== CONFIG EMAIL (SMTP) ===== CREATE TABLE IF NOT EXISTS config_email ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, smtp_host VARCHAR(255) NOT NULL DEFAULT '', smtp_port INT UNSIGNED NOT NULL DEFAULT 587, smtp_user VARCHAR(255) NOT NULL DEFAULT '', smtp_pass VARCHAR(255) NOT NULL DEFAULT '', smtp_encryption ENUM('tls','ssl','none') NOT NULL DEFAULT 'tls', email_remetente VARCHAR(255) NOT NULL DEFAULT '', nome_remetente VARCHAR(255) NOT NULL DEFAULT '', ativo TINYINT(1) NOT NULL DEFAULT 0, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; -- ===== CONFIG PAGAMENTO (GATEWAYS) ===== CREATE TABLE IF NOT EXISTS config_pagamento ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, metodo ENUM('mercadopago','asaas') NOT NULL UNIQUE, chave_publica VARCHAR(500), chave_secreta VARCHAR(500), access_token VARCHAR(500), ambiente ENUM('sandbox','producao') NOT NULL DEFAULT 'sandbox', ativo TINYINT(1) NOT NULL DEFAULT 0, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; -- ===== CONSUMO DIÁRIO ===== CREATE TABLE IF NOT EXISTS consumo_diario ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, account_id INT UNSIGNED NOT NULL, data DATE NOT NULL, total_requisicoes INT UNSIGNED NOT NULL DEFAULT 0, total_200 INT UNSIGNED NOT NULL DEFAULT 0, total_400 INT UNSIGNED NOT NULL DEFAULT 0, total_500 INT UNSIGNED NOT NULL DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, UNIQUE KEY uk_consumo_dia (account_id, data), INDEX idx_data (data) ) ENGINE=InnoDB; -- ===== CONFIG ===== CREATE TABLE IF NOT EXISTS config ( chave VARCHAR(100) PRIMARY KEY, valor TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; -- ===== SUPER ADMIN PADRÃO ===== -- Senha: admin123 (hash Argon2id) -- Senha padrão: admin123 (hash gerado localmente, regenere se necessário) INSERT IGNORE INTO super_admins (nome, email, senha) VALUES ('Super Admin', 'admin@whatsgrupos.com', '$argon2id$v=19$m=65536,t=4,p=3$VWc5UTh1bWlCemguZGdGMg$3PkqXzi/DYUWxZMJ4o3N8pWbco6cQAs4Y1MeDjqNMA4'); -- ===== NOTIFICAÇÕES ===== CREATE TABLE IF NOT EXISTS notificacoes ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, account_id INT UNSIGNED DEFAULT NULL, mensagem TEXT NOT NULL, lida TINYINT(1) NOT NULL DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, INDEX idx_account_id (account_id), INDEX idx_lida (lida) ) ENGINE=InnoDB; -- ===== CONFIG DIGIGO WHATSAPP ===== CREATE TABLE IF NOT EXISTS digigo_config ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, base_url VARCHAR(255) NOT NULL DEFAULT 'http://localhost:8080', admin_token VARCHAR(255) NOT NULL DEFAULT '', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS digigo_users ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id INT UNSIGNED DEFAULT NULL, digigo_user_id VARCHAR(64) NOT NULL DEFAULT '', digigo_token VARCHAR(64) NOT NULL DEFAULT '', name VARCHAR(100) NOT NULL DEFAULT '', label VARCHAR(100) DEFAULT NULL, phone VARCHAR(30) DEFAULT NULL, whatsapp_connected TINYINT(1) NOT NULL DEFAULT 0, whatsapp_jid VARCHAR(100) DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE SET NULL, INDEX idx_tenant_id (tenant_id), INDEX idx_digigo_user_id (digigo_user_id) ) ENGINE=InnoDB; -- ===== CALENDÁRIO DE LANÇAMENTOS ===== CREATE TABLE IF NOT EXISTS calendario_lancamentos ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(255) NOT NULL, descricao TEXT, data_evento DATE NOT NULL, hora_evento TIME, criado_por INT UNSIGNED NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (criado_por) REFERENCES super_admins(id), INDEX idx_data (data_evento) ) ENGINE=InnoDB; -- ===== PROMPTS DE IA ===== CREATE TABLE IF NOT EXISTS prompts_categorias ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL, slug VARCHAR(120) NOT NULL UNIQUE, descricao VARCHAR(255), cor VARCHAR(7) DEFAULT '#00f0ff', icone VARCHAR(50) DEFAULT 'bi-robot', ordem INT UNSIGNED DEFAULT 0, ativo TINYINT(1) NOT NULL DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS prompts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, categoria_id INT UNSIGNED DEFAULT NULL, account_id INT UNSIGNED NOT NULL, tenant_id INT UNSIGNED NOT NULL, titulo VARCHAR(255) NOT NULL, descricao TEXT, prompt_texto TEXT NOT NULL, tags VARCHAR(500) DEFAULT NULL, status ENUM('pendente','aprovado','rejeitado') NOT NULL DEFAULT 'pendente', motivo_rejeicao TEXT DEFAULT NULL, revisor_id INT UNSIGNED DEFAULT NULL, revisado_em TIMESTAMP NULL, views INT UNSIGNED DEFAULT 0, copies INT UNSIGNED DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (categoria_id) REFERENCES prompts_categorias(id) ON DELETE SET NULL, FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE, FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE, FOREIGN KEY (revisor_id) REFERENCES super_admins(id) ON DELETE SET NULL, INDEX idx_status (status), INDEX idx_categoria (categoria_id), INDEX idx_account (account_id), INDEX idx_tenant (tenant_id) ) ENGINE=InnoDB; INSERT IGNORE INTO prompts_categorias (nome, slug, descricao, cor, icone, ordem) VALUES ('Geral', 'geral', 'Prompts de uso geral', '#00f0ff', 'bi-robot', 1), ('Marketing', 'marketing', 'Prompts para marketing digital', '#7c3aed', 'bi-megaphone', 2), ('Programação', 'programacao', 'Prompts para desenvolvimento', '#00ff88', 'bi-code-slash', 3), ('Negócios', 'negocios', 'Prompts para gestão e negócios', '#ff6b35', 'bi-briefcase', 4), ('Criatividade', 'criatividade', 'Prompts criativos e artísticos', '#ff2d95', 'bi-palette', 5); -- ===== PLANOS PADRÃO ===== INSERT IGNORE INTO planos (nome, descricao, max_grupos, max_categorias, max_usuarios, max_requisicoes, preco, periodo, metodos_pagamento, destaque, ativo, permissoes, download_access, max_nfse) VALUES ('Gratuito', 'Plano gratuito para testes', 5, 3, 1, 100, 0.00, 'mensal', '["manual"]', 0, 1, '{"dashboard":true,"explorar":true,"categorias":true,"api_keys":true,"planos":true,"faturas":true,"calendario":false,"downloads":false,"enviar_grupo":false,"prompts":false,"suporte":false,"documentacao":true,"configuracoes":true,"nfse":false}', 0, 0), ('Básico', 'Ideal para pequenos projetos', 30, 10, 2, 5000, 29.90, 'mensal', '["manual","mercadopago","asaas"]', 0, 1, '{"dashboard":true,"explorar":true,"categorias":true,"api_keys":true,"planos":true,"faturas":true,"calendario":true,"downloads":true,"enviar_grupo":true,"prompts":true,"suporte":true,"documentacao":true,"configuracoes":true,"nfse":false}', 1, 0), ('Profissional', 'Para negócios em crescimento', 100, 25, 5, 50000, 79.90, 'mensal', '["manual","mercadopago","asaas"]', 1, 1, '{"dashboard":true,"explorar":true,"categorias":true,"api_keys":true,"planos":true,"faturas":true,"calendario":true,"downloads":true,"enviar_grupo":true,"prompts":true,"suporte":true,"documentacao":true,"configuracoes":true,"nfse":true}', 1, 50), ('Enterprise', 'Solução completa e ilimitada', 999999, 999999, 999999, 999999, 199.90, 'mensal', '["manual","mercadopago","asaas"]', 0, 1, '{"dashboard":true,"explorar":true,"categorias":true,"api_keys":true,"planos":true,"faturas":true,"calendario":true,"downloads":true,"enviar_grupo":true,"prompts":true,"suporte":true,"documentacao":true,"configuracoes":true,"nfse":true}', 1, 500), ('Vitalício', 'Acesso permanente com todos os recursos', 999999, 999999, 999999, 999999, 499.90, 'vitalicio', '["manual","mercadopago","asaas"]', 0, 1, '{"dashboard":true,"explorar":true,"categorias":true,"api_keys":true,"planos":true,"faturas":true,"calendario":true,"downloads":true,"enviar_grupo":true,"prompts":true,"suporte":true,"documentacao":true,"configuracoes":true,"nfse":true}', 1, 999999);