-- Uninterplus - etapa 1: cadastro de alunos sincronizado do SISPAP
-- Banco: salpes73_uninter (MySQL/MariaDB, utf8mb4)

CREATE TABLE IF NOT EXISTS alunos (
  id                   INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

  -- Identificação (vem do SISPAP)
  ru                   VARCHAR(20)  NOT NULL,
  nome                 VARCHAR(150) NOT NULL,
  nome_social          VARCHAR(150) NULL,
  cpf                  VARCHAR(14)  NULL,
  data_nascimento      DATE         NULL,
  rg                   VARCHAR(30)  NULL,
  rg_orgao_emissor     VARCHAR(30)  NULL,
  nacionalidade        VARCHAR(50)  NULL,
  estado_nascimento    VARCHAR(50)  NULL,

  -- Endereço
  endereco             VARCHAR(200) NULL,
  bairro               VARCHAR(100) NULL,
  cidade               VARCHAR(100) NULL,
  cep                  VARCHAR(12)  NULL,

  -- Contato
  telefone_residencial VARCHAR(20)  NULL,
  telefone_celular     VARCHAR(20)  NULL,
  email                VARCHAR(150) NULL,
  whatsapp             VARCHAR(20)  NULL COMMENT 'Só dígitos com 55. Editável na tela; o robô só preenche quando estiver vazio.',

  -- Matrícula
  curso                VARCHAR(150) NULL,
  turma                VARCHAR(150) NOT NULL,
  polo                 VARCHAR(100) NULL,
  polo_id              INT          NULL,
  nivel                VARCHAR(50)  NULL,
  situacao_academica   VARCHAR(80)  NULL,
  contrato             VARCHAR(80)  NULL,
  data_matricula       DATE         NULL,
  data_inscricao       DATE         NULL,
  processo_seletivo    VARCHAR(150) NULL,
  tipo_captacao        VARCHAR(80)  NULL,
  opcao_ingresso       VARCHAR(80)  NULL,

  -- Campos nossos (o robô nunca sobrescreve)
  cobranca_ativa       TINYINT(1)   NOT NULL DEFAULT 1,
  observacoes          TEXT         NULL,

  -- Controle
  detalhe_ok           TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '1 = dados da tela de detalhe já coletados',
  sincronizado_em      DATETIME     NULL,
  criado_em            DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  atualizado_em        DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  UNIQUE KEY uk_ru_turma (ru, turma),
  KEY idx_cpf (cpf),
  KEY idx_nome (nome),
  KEY idx_situacao (situacao_academica)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Cada sincronização: pedida pela tela (manual), pela agenda do robô ou pelo terminal.
-- A tela lê esta tabela para mostrar a barra de progresso.
CREATE TABLE IF NOT EXISTS sincronizacoes (
  id               INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  tipo             VARCHAR(30)  NOT NULL DEFAULT 'alunos',
  origem           VARCHAR(20)  NOT NULL DEFAULT 'terminal' COMMENT 'manual | agenda | terminal',
  modo             VARCHAR(10)  NOT NULL DEFAULT 'rapida' COMMENT 'rapida = só detalhe de novos | completa = todos',
  solicitado_em    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  iniciado_em      DATETIME     NULL,
  finalizado_em    DATETIME     NULL,
  status           VARCHAR(20)  NOT NULL DEFAULT 'pendente' COMMENT 'pendente | rodando | ok | erro',
  fase             VARCHAR(20)  NULL COMMENT 'login | lista | detalhes',
  fase_iniciada_em DATETIME     NULL,
  progresso_atual  INT          NOT NULL DEFAULT 0,
  progresso_total  INT          NOT NULL DEFAULT 0,
  total_lista      INT          NOT NULL DEFAULT 0,
  total_novos      INT          NOT NULL DEFAULT 0,
  total_detalhes   INT          NOT NULL DEFAULT 0,
  total_erros      INT          NOT NULL DEFAULT 0,
  mensagem         TEXT         NULL,
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Sinal de vida do robô (a tela avisa se ele estiver desligado)
CREATE TABLE IF NOT EXISTS robo_status (
  id            TINYINT UNSIGNED PRIMARY KEY,
  ultimo_sinal  DATETIME     NOT NULL,
  info          VARCHAR(200) NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
