-- Modulo OMR opcional para concurso_nobel.
-- Importar en la misma base de datos del sistema principal.
-- No reemplaza la correccion manual; solo agrega tablas de lectura OMR.

CREATE TABLE IF NOT EXISTS concurso_omr_claves (
  id_clave INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_concurso INT NOT NULL,
  id_grupo INT NOT NULL,
  tipo CHAR(1) NOT NULL DEFAULT 'A',
  pregunta SMALLINT UNSIGNED NOT NULL,
  respuesta_correcta CHAR(1) NOT NULL,
  puntaje DECIMAL(8,2) NOT NULL DEFAULT 1.00,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id_clave),
  UNIQUE KEY uk_concurso_grupo_tipo_pregunta (id_concurso, id_grupo, tipo, pregunta),
  KEY idx_clave_grupo (id_concurso, id_grupo, tipo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS concurso_omr_procesamientos (
  id_procesamiento INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_concurso INT NOT NULL,
  id_grupo INT NULL,
  id_salon INT NULL,
  id_participante INT NULL,
  id_acceso INT NULL,
  lote VARCHAR(80) NULL,
  archivo_original VARCHAR(255) NOT NULL,
  archivo_guardado VARCHAR(255) NULL,
  pagina SMALLINT UNSIGNED NULL,
  dni_leido VARCHAR(20) NULL,
  nivel_leido TINYINT UNSIGNED NULL,
  grado_leido TINYINT UNSIGNED NULL,
  tipo_leido CHAR(1) NULL,
  total_preguntas SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  correctas SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  incorrectas SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  blanco SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  dobles SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  puntaje DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  estado ENUM('PROCESADO','OBSERVADO','ERROR') NOT NULL DEFAULT 'OBSERVADO',
  aplicado_resultado TINYINT(1) NOT NULL DEFAULT 0,
  observacion TEXT NULL,
  raw_json LONGTEXT NULL,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_procesamiento),
  KEY idx_omr_concurso (id_concurso, created_at),
  KEY idx_omr_participante (id_participante),
  KEY idx_omr_dni (dni_leido),
  KEY idx_omr_estado (estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS concurso_omr_respuestas (
  id_respuesta INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_procesamiento INT UNSIGNED NOT NULL,
  pregunta SMALLINT UNSIGNED NOT NULL,
  respuesta_leida VARCHAR(12) NOT NULL,
  respuesta_correcta CHAR(1) NULL,
  es_correcta TINYINT(1) NOT NULL DEFAULT 0,
  score_a DECIMAL(8,4) NULL,
  score_b DECIMAL(8,4) NULL,
  score_c DECIMAL(8,4) NULL,
  score_d DECIMAL(8,4) NULL,
  PRIMARY KEY (id_respuesta),
  KEY idx_omr_resp_proc (id_procesamiento)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
