-- ============================================================
-- ERP - ActSafe | Banco de Dados MySQL
-- Desenvolvido por Antônio da Luz
-- Versão 1.0 | 2026
-- ============================================================

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "-03:00";

CREATE DATABASE IF NOT EXISTS `actsafe_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `actsafe_db`;

-- ============================================================
-- TABELA: USUÁRIOS
-- ============================================================
CREATE TABLE `usuarios` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `nome` VARCHAR(150) NOT NULL,
  `email` VARCHAR(320) NOT NULL UNIQUE,
  `senha` VARCHAR(255) NOT NULL,
  `perfil` ENUM('admin','diretor_geral','gestor_unidade','tecnico') NOT NULL DEFAULT 'tecnico',
  `ativo` TINYINT(1) NOT NULL DEFAULT 1,
  `ultimo_acesso` DATETIME NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Usuário admin padrão (senha: actsafe@2026)
INSERT INTO `usuarios` (`nome`, `email`, `senha`, `perfil`) VALUES
('Antônio da Luz', 'admin@actsafe.com.br', '$2y$12$0EGPpZ6qidrZOt79QhhXmuCHiPxzfWDOLwjIVtCmOdDGX1kfobJ/m', 'admin');

-- ATENÇÃO: Senha padrão do admin = actsafe@2026
-- Altere imediatamente após o primeiro acesso em: Configurações → Minha Conta

-- ============================================================
-- TABELA: UNIDADES FABRIS
-- ============================================================
CREATE TABLE `unidades` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `codigo` VARCHAR(20) NOT NULL,
  `nome` VARCHAR(100) NOT NULL,
  `cidade` VARCHAR(100) NOT NULL,
  `estado` CHAR(2) NOT NULL,
  `gestor` VARCHAR(150) NULL,
  `ativo` TINYINT(1) NOT NULL DEFAULT 1,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: VÍNCULO USUÁRIO <-> UNIDADE
-- ============================================================
CREATE TABLE `usuarios_unidades` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `usuario_id` INT NOT NULL,
  `unidade_id` INT NOT NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`usuario_id`) REFERENCES `usuarios`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`unidade_id`) REFERENCES `unidades`(`id`) ON DELETE CASCADE,
  UNIQUE KEY `uk_usuario_unidade` (`usuario_id`, `unidade_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: EQUIPAMENTOS (NR 12)
-- ============================================================
CREATE TABLE `equipamentos` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `unidade_id` INT NOT NULL,
  `cod` VARCHAR(50) NOT NULL,
  `tag` VARCHAR(100) NOT NULL,
  `nome` VARCHAR(200) NOT NULL,
  `familia` VARCHAR(100) NULL,
  `cat_risco` VARCHAR(10) NULL,
  `proj_conceito` TINYINT(1) NOT NULL DEFAULT 0,
  `execucao` TINYINT(1) NOT NULL DEFAULT 0,
  `procedimento` TINYINT(1) NOT NULL DEFAULT 0,
  `validacao` TINYINT(1) NOT NULL DEFAULT 0,
  `laudos` TINYINT(1) NOT NULL DEFAULT 0,
  `data_inicio` DATE NULL,
  `data_prev_conclusao` DATE NULL,
  `observacoes` TEXT NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`unidade_id`) REFERENCES `unidades`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: AÇÕES DE CONFORMIDADE (NR 10, NR 12, SPDA)
-- ============================================================
CREATE TABLE `acoes` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `unidade_id` INT NOT NULL,
  `equipamento_id` INT NULL,
  `norma` ENUM('NR10','NR12','SPDA') NOT NULL,
  `tipo` ENUM('inspecao','manutencao','treinamento','adequacao','laudo','documento') NOT NULL,
  `titulo` VARCHAR(200) NOT NULL,
  `descricao` TEXT NULL,
  `responsavel` VARCHAR(150) NULL,
  `status` ENUM('pendente','em_andamento','concluida','atrasada') NOT NULL DEFAULT 'pendente',
  `data_inicio` DATE NULL,
  `data_vencimento` DATE NULL,
  `recorrente` TINYINT(1) NOT NULL DEFAULT 0,
  `periodicidade_meses` INT NULL,
  `criado_por` INT NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`unidade_id`) REFERENCES `unidades`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`equipamento_id`) REFERENCES `equipamentos`(`id`) ON DELETE SET NULL,
  FOREIGN KEY (`criado_por`) REFERENCES `usuarios`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: NÃO CONFORMIDADES
-- ============================================================
CREATE TABLE `nao_conformidades` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `acao_id` INT NULL,
  `unidade_id` INT NOT NULL,
  `equipamento_id` INT NULL,
  `descricao` TEXT NOT NULL,
  `referencia_item` VARCHAR(100) NULL,
  `status` ENUM('aberta','em_tratamento','encerrada') NOT NULL DEFAULT 'aberta',
  `criado_por` INT NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`unidade_id`) REFERENCES `unidades`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`acao_id`) REFERENCES `acoes`(`id`) ON DELETE SET NULL,
  FOREIGN KEY (`criado_por`) REFERENCES `usuarios`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: PLANOS DE AÇÃO (5W2H)
-- ============================================================
CREATE TABLE `planos_acao` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `nao_conformidade_id` INT NOT NULL,
  `what` TEXT NULL COMMENT 'O quê será feito?',
  `why` TEXT NULL COMMENT 'Por quê será feito?',
  `where_local` TEXT NULL COMMENT 'Onde será feito?',
  `when_data` DATE NULL COMMENT 'Quando será feito?',
  `who` VARCHAR(150) NULL COMMENT 'Quem fará?',
  `how` TEXT NULL COMMENT 'Como será feito?',
  `how_much` VARCHAR(100) NULL COMMENT 'Quanto custará?',
  `status` ENUM('pendente','em_andamento','concluido') NOT NULL DEFAULT 'pendente',
  `criado_por` INT NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`nao_conformidade_id`) REFERENCES `nao_conformidades`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`criado_por`) REFERENCES `usuarios`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: DOCUMENTOS
-- ============================================================
CREATE TABLE `documentos` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `unidade_id` INT NOT NULL,
  `acao_id` INT NULL,
  `equipamento_id` INT NULL,
  `categoria` ENUM('PIE','RTI','laudo_spda','laudo_nr12','certificado_nr10','diagrama_unifilar','procedimento','certificado_treinamento','outro') NOT NULL,
  `nome` VARCHAR(200) NOT NULL,
  `descricao` TEXT NULL,
  `arquivo` VARCHAR(500) NOT NULL,
  `mime_type` VARCHAR(100) NULL,
  `tamanho_kb` INT NULL,
  `versao` INT NOT NULL DEFAULT 1,
  `data_vencimento` DATE NULL,
  `enviado_por` INT NULL,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`unidade_id`) REFERENCES `unidades`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`acao_id`) REFERENCES `acoes`(`id`) ON DELETE SET NULL,
  FOREIGN KEY (`enviado_por`) REFERENCES `usuarios`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- TABELA: FOTOS DO RTI (Relatório Técnico de Inspeção)
-- ============================================================
CREATE TABLE `rti_fotos` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `acao_id` INT NOT NULL,
  `arquivo` VARCHAR(500) NOT NULL,
  `legenda` VARCHAR(300) NULL,
  `nao_conformidade` TEXT NULL,
  `plano_acao_resumo` TEXT NULL,
  `ordem` INT NOT NULL DEFAULT 1,
  `criado_em` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`acao_id`) REFERENCES `acoes`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
