CREATE TABLE IF NOT EXISTS tut_ficha_atencion (
  id_ficha INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
  numero_ficha INT UNSIGNED NOT NULL,
  tipo_ficha VARCHAR(20) NOT NULL DEFAULT 'ATENCION',
  modalidad VARCHAR(40) NOT NULL DEFAULT 'Presencial',
  fecha DATE NOT NULL,
  hora TIME NULL,
  id_estudiante INT UNSIGNED NULL,
  id_matricula INT UNSIGNED NULL,
  estudiante_nombre VARCHAR(220) NOT NULL,
  dni_estudiante VARCHAR(20) NULL,
  id_nivel CHAR(3) NULL,
  id_grado TINYINT UNSIGNED NULL,
  id_seccion TINYINT UNSIGNED NULL,
  grado_texto VARCHAR(80) NULL,
  seccion_texto VARCHAR(40) NULL,
  id_docente_tutor INT UNSIGNED NULL,
  docente_tutor_nombre VARCHAR(220) NULL,
  motivo VARCHAR(80) NOT NULL DEFAULT 'Otro',
  aspecto_abordado TEXT NOT NULL,
  compromisos_estudiante TEXT NOT NULL,
  observaciones TEXT NULL,
  id_usuario_creador INT UNSIGNED NULL,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id_ficha),
  UNIQUE KEY uq_tut_ficha_atencion_numero (id_anio_lectivo, numero_ficha),
  KEY idx_tut_ficha_atencion_fecha (fecha),
  KEY idx_tut_ficha_atencion_estudiante (dni_estudiante, estudiante_nombre),
  KEY idx_tut_ficha_atencion_tipo (tipo_ficha, motivo),
  KEY fk_tut_ficha_atencion_estudiante (id_estudiante),
  KEY fk_tut_ficha_atencion_matricula (id_matricula),
  KEY fk_tut_ficha_atencion_docente (id_docente_tutor),
  KEY fk_tut_ficha_atencion_nivel (id_nivel),
  KEY fk_tut_ficha_atencion_grado (id_grado),
  KEY fk_tut_ficha_atencion_seccion (id_seccion),
  KEY fk_tut_ficha_atencion_usuario (id_usuario_creador),
  CONSTRAINT fk_tut_ficha_atencion_anio FOREIGN KEY (id_anio_lectivo) REFERENCES anio_lectivo(id_anio_lectivo),
  CONSTRAINT fk_tut_ficha_atencion_estudiante FOREIGN KEY (id_estudiante) REFERENCES estudiante(id_estudiante),
  CONSTRAINT fk_tut_ficha_atencion_matricula FOREIGN KEY (id_matricula) REFERENCES matricula(id_matricula),
  CONSTRAINT fk_tut_ficha_atencion_docente FOREIGN KEY (id_docente_tutor) REFERENCES docente(id_docente),
  CONSTRAINT fk_tut_ficha_atencion_nivel FOREIGN KEY (id_nivel) REFERENCES nivel_educativo(id_nivel),
  CONSTRAINT fk_tut_ficha_atencion_grado FOREIGN KEY (id_grado) REFERENCES grado(id_grado),
  CONSTRAINT fk_tut_ficha_atencion_seccion FOREIGN KEY (id_seccion) REFERENCES seccion(id_seccion),
  CONSTRAINT fk_tut_ficha_atencion_usuario FOREIGN KEY (id_usuario_creador) REFERENCES usuario_sistema(id_usuario)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS tut_ficha_atencion_evidencia (
  id_evidencia INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_ficha INT UNSIGNED NOT NULL,
  tipo VARCHAR(10) NOT NULL,
  nombre_original VARCHAR(260) NOT NULL,
  ruta_archivo VARCHAR(360) NOT NULL,
  mime_type VARCHAR(120) NOT NULL,
  tamanio_bytes INT UNSIGNED NOT NULL DEFAULT 0,
  id_usuario INT UNSIGNED NULL,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_evidencia),
  KEY idx_tut_ficha_evidencia_ficha (id_ficha),
  KEY idx_tut_ficha_evidencia_tipo (tipo),
  KEY fk_tut_ficha_evidencia_usuario (id_usuario),
  CONSTRAINT fk_tut_ficha_evidencia_ficha FOREIGN KEY (id_ficha) REFERENCES tut_ficha_atencion(id_ficha) ON DELETE CASCADE,
  CONSTRAINT fk_tut_ficha_evidencia_usuario FOREIGN KEY (id_usuario) REFERENCES usuario_sistema(id_usuario)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
