-- Metas anuales personales por docente, aula y área.
-- La tabla almacena conteos enteros; los resultados históricos y diagnósticos
-- continúan en sus fuentes canónicas y no se duplican aquí.

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS docente_meta_anual (
  id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
  anio SMALLINT UNSIGNED NOT NULL,
  id_docente INT UNSIGNED NOT NULL,
  id_aula INT UNSIGNED NOT NULL,
  id_area INT UNSIGNED NOT NULL,
  id_nivel CHAR(3) NOT NULL,
  id_grado TINYINT UNSIGNED NOT NULL,
  id_seccion TINYINT UNSIGNED NOT NULL,
  docente_nombre VARCHAR(220) NOT NULL DEFAULT '',
  nivel_nombre VARCHAR(80) NOT NULL DEFAULT '',
  grado_nombre VARCHAR(80) NOT NULL DEFAULT '',
  seccion_nombre VARCHAR(40) NOT NULL DEFAULT '',
  area_nombre VARCHAR(180) NOT NULL DEFAULT '',
  total_estudiantes SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  meta_ad SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  meta_a SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  meta_b SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  meta_c SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  observacion VARCHAR(1000) NULL,
  creado_por INT UNSIGNED NULL,
  actualizado_por INT UNSIGNED NULL,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  version INT UNSIGNED NOT NULL DEFAULT 1,
  PRIMARY KEY (id),
  UNIQUE KEY uq_docente_meta_contexto (id_anio_lectivo, id_docente, id_aula, id_area),
  KEY idx_docente_meta_docente (id_docente, id_anio_lectivo),
  KEY idx_docente_meta_aula_area (id_anio_lectivo, id_aula, id_area)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Si una instalación conserva una tabla provisional con otra estructura,
-- debe respaldarla y renombrarla antes de ejecutar esta migración canónica.
