-- ============================================================
-- GNX Group & SPX — Sistema de Cadastro de Candidatos
-- Schema do banco de dados MySQL / MariaDB
-- Importe este arquivo no phpMyAdmin (ou via linha de comando)
-- dentro do banco de dados que você criar (ex.: gnx_recrutamento)
-- ============================================================

CREATE TABLE IF NOT EXISTS candidates (
  id INT AUTO_INCREMENT PRIMARY KEY,
  token VARCHAR(64) NOT NULL UNIQUE,

  -- ---------- dados enviados pelo candidato no formulário ----------
  hora_inicio DATETIME NOT NULL,
  nome_completo VARCHAR(180) NOT NULL,
  nome_social VARCHAR(180) NULL,
  cpf VARCHAR(14) NOT NULL UNIQUE,
  rg VARCHAR(20) NOT NULL,
  data_nascimento DATE NOT NULL,
  telefone VARCHAR(20) NOT NULL,
  email VARCHAR(180) NOT NULL,
  genero ENUM('F','M') NOT NULL,
  colete VARCHAR(5) NOT NULL,
  luva VARCHAR(5) NOT NULL,
  bota VARCHAR(5) NOT NULL,
  nome_mae VARCHAR(180) NOT NULL,
  endereco VARCHAR(200) NOT NULL,
  numero VARCHAR(20) NOT NULL,
  cep VARCHAR(10) NOT NULL,
  bairro VARCHAR(120) NOT NULL,
  cidade VARCHAR(120) NOT NULL,
  uf CHAR(2) NOT NULL,
  origem_vaga VARCHAR(150) NOT NULL,
  lgpd_aceite TINYINT(1) NOT NULL DEFAULT 0,
  foto VARCHAR(255) NULL, -- caminho da foto do candidato (uploads/fotos/...), enviada no perfil ou na Admissão Digital
  senha_hash VARCHAR(255) NULL, -- senha criada pelo candidato no cadastro, para login em forms/login.php

  -- ---------- campos de controle preenchidos pela área administrativa ----------
  nome_candidato VARCHAR(180) NULL,
  cpf_candidato VARCHAR(14) NULL,
  idade INT NULL,
  regional VARCHAR(150) NULL,
  cd_sigla VARCHAR(60) NULL,
  centro_custo VARCHAR(60) NULL,
  cargo VARCHAR(120) NULL,
  salario DECIMAL(10,2) NULL,
  dt_entrevista DATE NULL,
  horario_entrevista TIME NULL,
  recrutador_responsavel VARCHAR(120) NULL,
  lider VARCHAR(120) NULL,
  indicacao VARCHAR(120) NULL,
  locomocao VARCHAR(120) NULL,
  valor_vt VARCHAR(30) NULL,
  escala VARCHAR(60) NULL,
  horario_trabalho VARCHAR(60) NULL,
  observacao TEXT NULL,
  etapa_res VARCHAR(60) NOT NULL DEFAULT 'Recebido',
  blocklist_shpx VARCHAR(60) NULL,
  pesquisa_interna VARCHAR(60) NULL,
  fretado VARCHAR(60) NULL,
  nome_linha VARCHAR(120) NULL,
  local_embarque VARCHAR(150) NULL,
  candidato_apto VARCHAR(20) NULL,
  start_admissao VARCHAR(60) NULL,
  data_horario_admissao DATETIME NULL,
  mensagem_aprovacao TEXT NULL,
  status_admissao VARCHAR(60) NULL,
  status_documento VARCHAR(120) NULL,
  exame_aso VARCHAR(150) NULL,
  dt_realizacao_aso DATE NULL,
  status_contrato VARCHAR(60) NULL,
  motivo_declinio VARCHAR(150) NULL,
  cont VARCHAR(60) NULL DEFAULT '1',

  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  INDEX idx_cpf (cpf),
  INDEX idx_etapa (etapa_res)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8mb4;

-- Usuários que fazem login na área administrativa.
-- Não é preciso inserir nada aqui manualmente: no primeiro acesso a
-- admin/index.php, o sistema cria automaticamente o usuário "admin"
-- com a senha "gnxadmin2026" (você deve trocá-la assim que entrar).
-- Explicações de cada valor de Etapa R&S (Status R&S), escritas pela equipe da GNX
-- Group, para o candidato entender o que cada etapa significa. Gerenciado em
-- admin/etapas.php.
CREATE TABLE IF NOT EXISTS etapa_explicacoes (
  etapa VARCHAR(60) NOT NULL PRIMARY KEY,
  explicacao TEXT NOT NULL,
  ordem INT NOT NULL DEFAULT 0,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Cache de coordenadas resolvidas a partir de links do Google Maps (ex.: local de
-- embarque do fretado). Evita ter que seguir o redirecionamento do link de novo a
-- cada carregamento da página — só resolve uma vez e guarda aqui.
CREATE TABLE IF NOT EXISTS geocode_cache (
  url_hash VARCHAR(64) NOT NULL PRIMARY KEY,
  lat DECIMAL(10,7) NOT NULL,
  lng DECIMAL(10,7) NOT NULL,
  resolved_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS admin_users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(80) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  nome_completo VARCHAR(150) NULL, -- nome do recrutador, exibido ao candidato ("Seu Recrutador R&S é...")
  whatsapp VARCHAR(20) NULL,       -- WhatsApp do recrutador, exibido ao candidato como botão de contato
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Notificações de "tenho um problema" enviadas pelos candidatos
CREATE TABLE IF NOT EXISTS support_tickets (
  id INT AUTO_INCREMENT PRIMARY KEY,
  candidate_id INT NULL,
  nome VARCHAR(180) NULL,
  cpf VARCHAR(14) NULL,
  contato VARCHAR(180) NULL,
  mensagem TEXT NOT NULL,
  resolved TINYINT(1) NOT NULL DEFAULT 0,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (candidate_id) REFERENCES candidates(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Histórico de alterações: toda edição feita pelo recrutador em qualquer campo
-- de um candidato fica registrada aqui (o que mudou, de que valor para que
-- valor, quem alterou e quando).
CREATE TABLE IF NOT EXISTS candidate_history (
  id INT AUTO_INCREMENT PRIMARY KEY,
  candidate_id INT NOT NULL,
  field_key VARCHAR(60) NOT NULL,
  old_value TEXT NULL,
  new_value TEXT NULL,
  changed_by VARCHAR(80) NOT NULL,
  changed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (candidate_id) REFERENCES candidates(id) ON DELETE CASCADE,
  INDEX idx_candidate_field (candidate_id, field_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Opções adicionadas pelos recrutadores nos menus suspensos (além da lista padrão do
-- sistema) — ex.: um novo Regional, um novo cargo, uma nova etapa. Ficam salvas aqui
-- para aparecer pra todo mundo a partir de então.
CREATE TABLE IF NOT EXISTS field_options (
  id INT AUTO_INCREMENT PRIMARY KEY,
  field_key VARCHAR(60) NOT NULL,
  value VARCHAR(255) NOT NULL,
  extra1 VARCHAR(120) NULL,
  extra2 VARCHAR(120) NULL,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_field_value (field_key, value)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- MIGRAÇÃO: rode os comandos abaixo apenas se você já tinha importado uma
-- versão anterior deste schema (o banco já existe e já tem candidatos).
-- Se está criando o banco pela primeira vez, ignore esta seção.
-- ============================================================
-- IMPORTANTE: rode esta linha PRIMEIRO, sozinha, antes de qualquer ADD COLUMN
-- abaixo. Ela resolve o erro "#1118 - Tamanho de linha grande demais" (a tabela
-- já tem muitas colunas de texto; isso faz o MySQL guardar os valores longos
-- fora da linha principal, sem mudar nenhum dado existente).
ALTER TABLE candidates ROW_FORMAT=DYNAMIC;
-- ALTER TABLE candidates MODIFY blocklist_shpx VARCHAR(60) NULL;
-- ALTER TABLE candidates MODIFY pesquisa_interna VARCHAR(60) NULL;
-- ALTER TABLE candidates MODIFY fretado VARCHAR(60) NULL;
-- ALTER TABLE candidates MODIFY start_admissao VARCHAR(60) NULL;
-- ALTER TABLE candidates MODIFY valor_vt VARCHAR(30) NULL;
-- ALTER TABLE candidates CHANGE lm_hub_mg_betim regional VARCHAR(150) NULL;
-- ALTER TABLE candidates ADD COLUMN status_admissao VARCHAR(60) NULL AFTER mensagem_aprovacao;
-- ALTER TABLE candidates ADD COLUMN status_documento VARCHAR(120) NULL AFTER status_admissao;
-- ALTER TABLE candidates ADD COLUMN foto VARCHAR(255) NULL AFTER lgpd_aceite;
-- ALTER TABLE candidates ADD COLUMN senha_hash VARCHAR(255) NULL AFTER foto;
-- ALTER TABLE admin_users ADD COLUMN nome_completo VARCHAR(150) NULL AFTER password_hash;
-- ALTER TABLE admin_users ADD COLUMN whatsapp VARCHAR(20) NULL AFTER nome_completo;
-- ALTER TABLE candidates ADD COLUMN exame_aso VARCHAR(150) NULL AFTER status_documento;
-- ALTER TABLE candidates ADD COLUMN dt_realizacao_aso DATE NULL AFTER exame_aso;
-- ALTER TABLE candidates ADD COLUMN status_contrato VARCHAR(60) NULL AFTER dt_realizacao_aso;
-- ALTER TABLE candidates ADD COLUMN motivo_declinio VARCHAR(150) NULL AFTER status_contrato;
-- ALTER TABLE candidates MODIFY cont VARCHAR(60) NULL DEFAULT '1';
-- UPDATE candidates SET cont = '1' WHERE cont IS NULL;
-- Dados de Admissão (layout GI Windows) que o próprio funcionário preenche ou
-- que a área administrativa completa (referências e códigos internos).
CREATE TABLE IF NOT EXISTS admission_data (
  candidate_id INT NOT NULL PRIMARY KEY,
  `codigo_empresa` VARCHAR(5) NULL, -- Codigo Empresa | chave primária
  `codigo_filial` VARCHAR(5) NULL, -- Codigo Filial | chave primária
  `codigo_funcionario` VARCHAR(6) NULL, -- Codigo Funcionario | chave primária
  `codigo_cliente` VARCHAR(5) NULL, -- Codigo Cliente | ref. Cliente
  `codigo_contrato` VARCHAR(5) NULL, -- Codigo Contrato | ref. Contrato
  `codigo_tipo_faturamento` VARCHAR(5) NULL, -- Codigo Tipo Faturamento | ref. Tipo de Faturamento
  `codigo_vendedor` VARCHAR(5) NULL, -- Codigo Vendedor | ref. Vendedor
  `codigo_selecionador` VARCHAR(5) NULL, -- Codigo Selecionador | ref. Selecionador
  `codigo_recrutador` VARCHAR(5) NULL, -- Codigo Recrutador | ref. Recrutador
  `codigo_funcao` VARCHAR(5) NULL, -- Codigo Funcao | ref. Funcao
  `codigo_sindicato` VARCHAR(5) NULL, -- Codigo Sindicato | ref. Sindicato
  `codigo_horario` VARCHAR(5) NULL, -- Codigo Horario (Antigo) | ref. Horario
  `codigo_bco_folha` VARCHAR(5) NULL, -- Codigo Bco Folha | ref. Banco (do Funcionário)
  `codigo_bco_pagar` VARCHAR(5) NULL, -- Codigo Bco Pagar | ref. Banco (integração com o Contas a Pagar)
  `matricula` VARCHAR(15) NULL, -- Matricula
  `nro_ctps` VARCHAR(7) NULL, -- Nro CTPS
  `serie_ctps` VARCHAR(5) NULL, -- Serie CTPS
  `dt_expedicao_ctps` DATE NULL, -- DT.Expedicao CTPS | DDMMAAAA
  `uf_ctps` VARCHAR(5) NULL, -- UF CTPS
  `cidade_expedicao_ctps` VARCHAR(30) NULL, -- Cidade Expedicao CTPS
  `cidade_nascimento` VARCHAR(30) NULL, -- Cidade Nascimento
  `nome_pai` VARCHAR(70) NULL, -- Nome Pai
  `grau_instrucao` VARCHAR(5) NULL, -- Grau Instrução | Instrução 01
  `data_admissao` DATE NULL, -- Data Admissao | DDMMAAAA
  `tipo_admissao` VARCHAR(5) NULL, -- Tipo Admissao | Instrução 02
  `vinculo` VARCHAR(5) NULL, -- Vinculo | Instrução 03
  `tipo_contrato` VARCHAR(5) NULL, -- Tipo Contrato | Instrução 04
  `dt_vecto_contrato` DATE NULL, -- Dt Vecto Contrato | DDMMAAAA
  `dt_vecto_prorrogacao` DATE NULL, -- Dt Vecto Prorrogacao | DDMMAAAA
  `dias_meses_contrato` VARCHAR(5) NULL, -- Dias/Meses Contrato
  `dias_meses_prorrogacao` VARCHAR(5) NULL, -- Dias/Meses Prorrogacao
  `titulo_eleitor_numero` VARCHAR(32) NULL, -- Titulo Eleitor (Número) | Alterado o Tamanho de 40 para 32
  `titulo_eleitor_zona` VARCHAR(5) NULL, -- Titulo Eleitor (Zona)
  `titulo_eleitor_secao` VARCHAR(5) NULL, -- Titulo Eleitor (Seção)
  `pis` VARCHAR(11) NULL, -- PIS
  `data_opcao_fgts` DATE NULL, -- Data Opcao FGTS | DDMMAAAA
  `estado_civil` VARCHAR(5) NULL, -- Estado Civil | Instrução 05
  `uf_nascimento` VARCHAR(5) NULL, -- UF Nascimento
  `cpl_endereco` VARCHAR(30) NULL, -- Cpl Endereco
  `tipo_de_conta` VARCHAR(5) NULL, -- Tipo de Conta | Verificar os tipos de máscaras cadastradas no Banco (exemplo: C - corresponde a Conta Corrente)
  `agencia` VARCHAR(10) NULL, -- Agencia
  `conta_corrente` VARCHAR(20) NULL, -- Conta Corrente
  `saldo_fgts` DECIMAL(14,2) NULL, -- Saldo FGTS | 10 inteiros + 2 decimais (sem pontos ou vírgulas - exemplo: 000000000624 corresponde a 6,24)
  `jam_fgts` DECIMAL(14,2) NULL, -- Jam FGTS | 10 inteiros + 2 decimais (sem pontos ou vírgulas - exemplo: 000000000624 corresponde a 6,24)
  `ano_mes_fgts` VARCHAR(6) NULL, -- Ano/Mês FGTS | AAAAMM
  `habilitacao` VARCHAR(40) NULL, -- Habilitacao
  `dt_vecto_habilitacao` DATE NULL, -- DT Vecto Habilitacao | DDMMAAAA
  `local_trabalho` VARCHAR(50) NULL, -- Local Trabalho
  `tipo_salario` VARCHAR(5) NULL, -- Tipo Salario | Instrução 06
  `tipo_de_taxa_faturamento` VARCHAR(5) NULL, -- Tipo de Taxa Faturamento | Instrução 07
  `taxa_de_faturamento` DECIMAL(14,2) NULL, -- Taxa de Faturamento | 1 Inteiro + 4 decimais  (sem pontos ou vírgulas - exemplo: 10624 corresponde a 1,0624)
  `centro_custo_contabil` VARCHAR(5) NULL, -- Centro Custo Contabil | ref. Integração com o Contas a Pagar
  `orgao_rg` VARCHAR(6) NULL, -- Orgao RG (Antigo)
  `cidade_rg` VARCHAR(30) NULL, -- Cidade RG
  `uf_rg` VARCHAR(5) NULL, -- UF RG
  `dt_expedicao_rg` DATE NULL, -- DT Expedicao RG | DDMMAAAA
  `salario_hora` DECIMAL(14,2) NULL, -- Salario Hora | 10 inteiros + 2 decimais (sem pontos ou vírgulas - exemplo: 000000000624 corresponde a 6,24)
  `qtde_dep_sf` VARCHAR(5) NULL, -- Qtde Dep SF
  `qtde_dep_irf` VARCHAR(5) NULL, -- Qtde Dep IRF
  `primeiro_emprego` VARCHAR(5) NULL, -- Primeiro Emprego | S ou N (Sim / Não)
  `qtde_horas_semanal` DECIMAL(14,2) NULL, -- Qtde Horas Semanal | 2 inteiros + 2 decimais  (sem pontos ou vírgulas - exemplo: 4400 corresponde a 44,00)
  `qtde_horas_mensal` DECIMAL(14,2) NULL, -- Qtde Horas Mensal | 3 inteiros + 2 decimais  (sem pontos ou vírgulas - exemplo: 22000 corresponde a 220,00)
  `taxa_insalubridade` DECIMAL(14,2) NULL, -- Taxa Insalubridade | 1 Inteiro + 4 decimais  (sem pontos ou vírgulas - exemplo: 02000 corresponde a 0,20)
  `taxa_periculosidade` DECIMAL(14,2) NULL, -- Taxa Periculosidade | 1 Inteiro + 4 decimais (sem pontos ou vírgulas - exemplo: 03000 corresponde a 0,30)
  `tipo_vt` VARCHAR(5) NULL, -- Tipo VT | Instrução 08
  `tipo_vr` VARCHAR(5) NULL, -- Tipo VR | Instrução 09
  `raca` VARCHAR(5) NULL, -- Raca | Instrução 10
  `regiao` VARCHAR(5) NULL, -- Regiao | ref. Regiao
  `tipo_pgto` VARCHAR(5) NULL, -- Tipo Pgto | Instrução 11
  `calcula_inss` VARCHAR(5) NULL, -- Calcula INSS | S ou N (Sim / Não)
  `calcula_irf` VARCHAR(5) NULL, -- Calcula IRF | S ou N (Sim / Não)
  `deficiente_fisico` VARCHAR(5) NULL, -- Deficiente Fisico | S ou N (Sim / Não)
  `tipo_13o` VARCHAR(5) NULL, -- Tipo 13o | Instrução 12
  `tipo_ferias` VARCHAR(5) NULL, -- Tipo Férias | Instrução 13
  `aliq_adto` DECIMAL(14,2) NULL, -- Aliq. Adto | 3 inteiros + 2 decimais (sem pontos ou vírgulas - exemplo: 04000 corresponde a 040,00)
  `aliq_desc_vt` DECIMAL(14,2) NULL, -- Aliq. Desc.VT | 3 inteiros + 2 decimais (sem pontos ou vírgulas - exemplo: 00600 corresponde a 006,00)
  `observacao` VARCHAR(200) NULL, -- Observacao
  `nome_do_substituto` VARCHAR(70) NULL, -- Nome do Substituto | Apenas para contrato temporário por motivo de substituição
  `motivo_da_substituicao` VARCHAR(70) NULL, -- Motivo da Substituição | Apenas para contrato temporário por motivo de substituição
  `codigo_do_representante` VARCHAR(5) NULL, -- Codigo do Representante | Ref. Representante
  `tipo_vencimento_contrato_normal` VARCHAR(5) NULL, -- Tipo de Vencimento de Contrato (Normal) | Instrução 16
  `tipo_vencimento_contrato_prorrogacao` VARCHAR(5) NULL, -- Tipo de Vencimento de Contrato (Prorrogação) | Instrução 16
  `descontou_contribuicao_sindical` VARCHAR(5) NULL, -- Descontou Contribuição Sindical (válido somente no ano de admissão) | S ou N (Sim / Não)
  `valor_mensal_minimo_garantido` DECIMAL(14,2) NULL, -- Valor Mensal Mínimo Garantido (Vendedor) | 10 inteiros + 2 decimais (sem pontos ou vírgulas - exemplo: 000000000624 corresponde a 6,24)
  `vale_alimentacao_diario` VARCHAR(5) NULL, -- Vale Alimentação Diário | S ou N (Sim / Não)
  `data_limite_para_pagto_de_beneficio` DATE NULL, -- Data Limite para Pagto de Beneficio | DDMMAAAA
  `ddd_celular` VARCHAR(5) NULL, -- DDD Celular (SMS)
  `nro_celular` VARCHAR(9) NULL, -- Nro Celular (SMS)
  `codigo_do_depto` VARCHAR(20) NULL, -- Codigo do Depto | ref. Departamento
  `codigo_do_centro_de_resultado` VARCHAR(5) NULL, -- Codigo do Centro de Resultado (CR) | ref. Centro de Resultado
  `codigo_cidade_nascimento` VARCHAR(7) NULL, -- Codigo Cidade Nascimento | Código de cidade do IBGE
  `anuenio` VARCHAR(5) NULL, -- Anuênio | S ou N (Sim / Não)
  `trienio` VARCHAR(5) NULL, -- Triênio | S ou N (Sim / Não)
  `tipo_contrato_web` VARCHAR(5) NULL, -- Tipo Contrato Web
  `id_usuario_web` VARCHAR(5) NULL, -- Id Usuario Web
  `codigo_funcionario_web` VARCHAR(10) NULL, -- Codigo Funcionario Web
  `codigo_do_horario` VARCHAR(5) NULL, -- Codigo do Horario (Novo) | Repetir Codigo Horario (Antigo) (respeitando o tamanho do campo)
  `motivo_contrato` VARCHAR(5) NULL, -- Motivo Contrato | Instrução 14
  `dia_pgto` VARCHAR(5) NULL, -- Dia Pgto
  `dia_adto` VARCHAR(5) NULL, -- Dia Adto
  `dt_cadastro_pis` DATE NULL, -- DT Cadastro PIS | DDMMAAAA
  `codigo_instituicao` VARCHAR(5) NULL, -- Codigo Instituicao (estágio) | ref. Instituicao
  `reservista` VARCHAR(40) NULL, -- Reservista
  `dt_expedicao_reservista` DATE NULL, -- DT Expedicao Reservista | DDMMAAAA
  `tipo_demissao` VARCHAR(5) NULL, -- Tipo Demissao | Instrução 15
  `nome_curso` VARCHAR(70) NULL, -- Nome Curso (estágio)
  `nivel_curso` VARCHAR(50) NULL, -- Nivel Curso (estágio)
  `atividade_curso` VARCHAR(200) NULL, -- Atividade Curso (estágio)
  `campo_livre_01` VARCHAR(50) NULL, -- Campo Livre 01 | ref. Campos Livres
  `campo_livre_02` VARCHAR(50) NULL, -- Campo Livre 02 | ref. Campos Livres
  `campo_livre_03` VARCHAR(50) NULL, -- Campo Livre 03 | ref. Campos Livres
  `campo_livre_04` VARCHAR(50) NULL, -- Campo Livre 04 | ref. Campos Livres
  `campo_livre_05` VARCHAR(50) NULL, -- Campo Livre 05 | ref. Campos Livres
  `campo_livre_06` VARCHAR(50) NULL, -- Campo Livre 06 | ref. Campos Livres
  `campo_livre_07` VARCHAR(50) NULL, -- Campo Livre 07 | ref. Campos Livres
  `campo_livre_08` VARCHAR(50) NULL, -- Campo Livre 08 | ref. Campos Livres
  `campo_livre_09` VARCHAR(50) NULL, -- Campo Livre 09 | ref. Campos Livres
  `campo_livre_10` VARCHAR(50) NULL, -- Campo Livre 10 | ref. Campos Livres
  `campo_livre_11` VARCHAR(120) NULL, -- Campo Livre 11 | ref. Campos Livres
  `campo_livre_12` VARCHAR(120) NULL, -- Campo Livre 12 | ref. Campos Livres
  `campo_livre_13` VARCHAR(120) NULL, -- Campo Livre 13 | ref. Campos Livres
  `campo_livre_14` VARCHAR(120) NULL, -- Campo Livre 14 | ref. Campos Livres
  `campo_livre_15` VARCHAR(120) NULL, -- Campo Livre 15 | ref. Campos Livres
  `campo_livre_16` VARCHAR(120) NULL, -- Campo Livre 16 | ref. Campos Livres
  `campo_livre_17` VARCHAR(120) NULL, -- Campo Livre 17 | ref. Campos Livres
  `campo_livre_18` VARCHAR(120) NULL, -- Campo Livre 18 | ref. Campos Livres
  `campo_livre_19` VARCHAR(120) NULL, -- Campo Livre 19 | ref. Campos Livres
  `campo_livre_20` VARCHAR(120) NULL, -- Campo Livre 20 | ref. Campos Livres
  `cpf_substituto` VARCHAR(11) NULL, -- CPF Substituto | Apenas para contrato temporário por motivo de substituição
  `regime_de_jornada_de_trabalho` VARCHAR(5) NULL, -- Regime de Jornada de Trabalho | Instrução 19
  `registro_nacional_de_estrangeiro_rne` VARCHAR(14) NULL, -- Registro Nacional de Estrangeiro - RNE
  `recebendo_seguro_desemprego` VARCHAR(5) NULL, -- Recebendo Seguro Desemprego | S ou N (Sim / Não)
  `data_do_ultimo_exame_medico` DATE NULL, -- Data do Ultimo Exame Médico | DDMMAAAA
  `dias_de_vencimento_do_ultimo_exame_medico` VARCHAR(5) NULL, -- Dias de Vencimento do Último Exame Médico
  `identificacao_da_vaga_no_sistema_de_selecao` VARCHAR(15) NULL, -- Identificação da Vaga no Sistema de Seleção
  `sirett_tipo_de_admissao` VARCHAR(5) NULL, -- SIRETT - Tipo de Admissão (Temporário) | Instrução 16
  `sirett_motivo_da_contratacao` VARCHAR(100) NULL, -- SIRETT - Motivo da Contratação (Temporário)
  `sirett_motivo_da_prorrogacao` VARCHAR(200) NULL, -- SIRETT - Motivo da Prorrogação (Temporário)
  `orgao_rg_novo` VARCHAR(15) NULL, -- Orgao RG (Novo) | Repetir Orgao RG (Antigo) (respeitando o tamanho do campo)
  `nro_cartao_assistencia_medica` VARCHAR(40) NULL, -- Nro Cartão Assistência Médica
  `nro_cartao_assistencia_odontologica` VARCHAR(40) NULL, -- Nro Cartão Assistência Odontológica
  `tipochavepixfun` VARCHAR(5) NULL, -- TipoChavePixFun | Instrução 18
  `chavepixfun` VARCHAR(100) NULL, -- ChavePixFun | ref. Chave PIX
  `cnh_modelo` VARCHAR(5) NULL, -- CNH_Modelo | ref. Categoria da CNH
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (candidate_id) REFERENCES candidates(id) ON DELETE CASCADE
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- MIGRAÇÃO (Tela de Admissão / layout GI): rode isto se o banco já existia.
-- Se está criando o banco agora, ignore — já nasce certo.
-- ============================================================
-- (a tabela admission_data acima usa CREATE TABLE IF NOT EXISTS, então
--  reimportar o schema.sql inteiro de novo já resolve, sem precisar de ALTER)
CREATE TABLE IF NOT EXISTS vagas_data (
  candidate_id INT NOT NULL PRIMARY KEY,
  `vg_solicitacao` VARCHAR(180) NULL, -- SOLICITAÇÃO
  `vg_operacao` VARCHAR(180) NULL, -- OPERAÇÃO
  `vg_vaga` VARCHAR(180) NULL, -- VAGA
  `vg_motivo` VARCHAR(180) NULL, -- MOTIVO
  `vg_nova_requisicao` VARCHAR(180) NULL, -- NOVA REQUISIÇÃO
  `vg_analista` VARCHAR(180) NULL, -- ANALISTA
  `vg_cd_sigla` VARCHAR(180) NULL, -- CD SIGLA
  `vg_centro_de_custo` VARCHAR(180) NULL, -- CENTRO DE CUSTO
  `vg_bandeira` VARCHAR(180) NULL, -- BANDEIRA
  `vg_hub_soc` VARCHAR(180) NULL, -- HUB/SOC
  `vg_cidade` VARCHAR(180) NULL, -- CIDADE
  `vg_endereco` VARCHAR(180) NULL, -- ENDEREÇO
  `vg_regional` VARCHAR(180) NULL, -- REGIONAL
  `vg_uf` VARCHAR(180) NULL, -- UF
  `vg_cargo` VARCHAR(180) NULL, -- CARGO
  `vg_data_inicio` DATE NULL, -- DATA INICIO
  `vg_termino_previsto` DATE NULL, -- TÉRMINO PREVISTO
  `vg_quantidade_de_dias` VARCHAR(180) NULL, -- QUANTIDADE DE DIAS
  `vg_escala` VARCHAR(180) NULL, -- ESCALA
  `vg_horario` VARCHAR(180) NULL, -- HORARIO
  `vg_turno` VARCHAR(180) NULL, -- TURNO
  `vg_salario` VARCHAR(180) NULL, -- SALARIO
  `vg_vr` VARCHAR(180) NULL, -- VR
  `vg_perfil` VARCHAR(180) NULL, -- PERFIL
  `vg_setor` VARCHAR(180) NULL, -- SETOR
  `vg_entrevista_com_lider` VARCHAR(180) NULL, -- ENTREVISTA COM LIDER
  `vg_responsavel` VARCHAR(180) NULL, -- RESPONSAVEL
  `vg_indicacao` VARCHAR(180) NULL, -- INDICAÇÃO
  `vg_data_de_inicio_recrutamento` DATE NULL, -- DATA DE INICIO RECRUTAMENTO
  `vg_candidato` VARCHAR(180) NULL, -- CANDIDATO
  `vg_cpf` VARCHAR(180) NULL, -- CPF
  `vg_rg` VARCHAR(180) NULL, -- RG
  `vg_data_nascimento` VARCHAR(180) NULL, -- DATA NASCIMENTO
  `vg_telefone` VARCHAR(180) NULL, -- TELEFONE
  `vg_e_mail` VARCHAR(180) NULL, -- E-MAIL
  `vg_transporte` VARCHAR(180) NULL, -- TRANSPORTE
  `vg_valor_vt` VARCHAR(180) NULL, -- VALOR VT
  `vg_colete` VARCHAR(180) NULL, -- COLETE
  `vg_luva` VARCHAR(180) NULL, -- LUVA
  `vg_bota` VARCHAR(180) NULL, -- BOTA
  `vg_data_da_aprovacao` DATE NULL, -- DATA DA APROVAÇÃO
  `vg_lider_shopee` VARCHAR(180) NULL, -- LIDER SHOPEE
  `vg_nome_da_linha_fretado` VARCHAR(180) NULL, -- NOME DA LINHA FRETADO
  `vg_fretado_local_de_embarque` VARCHAR(180) NULL, -- FRETADO - LOCAL DE EMBARQUE
  `vg_status_r_s` VARCHAR(180) NULL, -- STATUS R&S
  `vg_fretado_horario_de_embarque_ou_endereco_completo_betim` VARCHAR(180) NULL, -- FRETADO - HORARIO DE EMBARQUE OU ENDEREÇO COMPLETO (BETIM)
  `vg_concatenar` VARCHAR(180) NULL, -- CONCATENAR
  `vg_inicio_previsto` DATE NULL, -- INICIO PREVISTO
  `vg_status_admissao` VARCHAR(180) NULL, -- STATUS ADMISSÃO
  `vg_data_exame_realizacao` DATE NULL, -- DATA EXAME (REALIZAÇÃO)
  `vg_matricula` VARCHAR(180) NULL, -- MATRICULA
  `vg_motivo_do_atraso` VARCHAR(180) NULL, -- MOTIVO DO ATRASO
  `vg_data_da_reprogramacao` DATE NULL, -- DATA DA REPROGRAMAÇÃO
  `vg_dias_em_aberto` VARCHAR(180) NULL, -- DIAS EM ABERTO
  `vg_dias_de_prazo_de_vaga` VARCHAR(180) NULL, -- DIAS DE PRAZO DE VAGA
  `vg_farol` VARCHAR(180) NULL, -- FAROL
  `vg_dash_vagas` VARCHAR(180) NULL, -- DASH VAGAS
  `vg_mes_de_recebimento` VARCHAR(180) NULL, -- MÊS DE RECEBIMENTO
  `vg_ano_de_recebimento` VARCHAR(180) NULL, -- ANO DE RECEBIMENTO
  `vg_mes_de_fechamento` VARCHAR(180) NULL, -- MÊS DE FECHAMENTO
  `vg_ano_de_fechamento` VARCHAR(180) NULL, -- ANO DE FECHAMENTO
  `vg_numero_de_semana_recebimento` VARCHAR(180) NULL, -- NUMERO DE SEMANA RECEBIMENTO
  `vg_semanas_recebimento` VARCHAR(180) NULL, -- SEMANAS RECEBIMENTO
  `vg_numero_de_semana_fechamento` VARCHAR(180) NULL, -- NUMERO DE SEMANA FECHAMENTO
  `vg_semanas_fechamento` VARCHAR(180) NULL, -- SEMANAS FECHAMENTO
  `vg_vagas_abertas` VARCHAR(180) NULL, -- VAGAS ABERTAS
  `vg_etapa_do_processo_seletivo` VARCHAR(180) NULL, -- Etapa do processo seletivo
  `vg_novo_status_de_vagas` VARCHAR(180) NULL, -- NOVO STATUS DE VAGAS
  `vg_status_de_entrega` VARCHAR(180) NULL, -- STATUS DE ENTREGA
  `vg_resumo_sigla` VARCHAR(180) NULL, -- RESUMO SIGLA
  `vg_previsao_de_entrega` DATE NULL, -- PREVISÃO DE ENTREGA
  `vg_mes_fechamento_da_vaga` VARCHAR(180) NULL, -- MÊS FECHAMENTO DA VAGA
  `vg_fechamento_por_semana` VARCHAR(180) NULL, -- FECHAMENTO POR SEMANA
  `vg_cliente` VARCHAR(180) NULL, -- CLIENTE
  `vg_macro_status_r_s` VARCHAR(180) NULL, -- MACRO_STATUS_R&S
  `vg_justificativa_alteracao_de_data` VARCHAR(180) NULL, -- JUSTIFICATIVA-ALTERAÇÃO DE DATA
  `vg_status_jir` VARCHAR(180) NULL, -- STATUS JIR
  imported_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (candidate_id) REFERENCES candidates(id) ON DELETE CASCADE
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8mb4;
-- ============================================================
-- MIGRAÇÃO (importação da planilha VAGAS): se o banco já existia, é seguro
-- reimportar o schema.sql inteiro — a tabela vagas_data usa IF NOT EXISTS.
-- ============================================================
