USE akrcsist_bd0003_2026;

ALTER TABLE docente_area_cargo
  ADD COLUMN IF NOT EXISTS horas_semanales DECIMAL(5,2) NULL AFTER id_anio_lectivo,
  ADD COLUMN IF NOT EXISTS tipo_asignacion VARCHAR(40) NOT NULL DEFAULT 'MANUAL' AFTER horas_semanales,
  ADD COLUMN IF NOT EXISTS fuente VARCHAR(140) NULL AFTER tipo_asignacion,
  ADD COLUMN IF NOT EXISTS observaciones VARCHAR(260) NULL AFTER fuente;

ALTER TABLE docente_tutoria
  MODIFY turno VARCHAR(20) NULL DEFAULT 'MANANA';

UPDATE docente_tutoria
SET turno = 'MANANA'
WHERE turno IS NULL OR turno = '' OR turno LIKE 'MA%';

CREATE TABLE IF NOT EXISTS tut_acta_modelo (
  id_modelo SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  codigo VARCHAR(20) NOT NULL,
  titulo VARCHAR(220) NOT NULL,
  descripcion TEXT NULL,
  normas_vinculadas VARCHAR(120) NULL,
  orden SMALLINT UNSIGNED NOT NULL DEFAULT 1,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id_modelo),
  UNIQUE KEY uq_tut_acta_modelo_codigo (codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS tut_acta_compromiso (
  id_acta INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
  numero_acta INT UNSIGNED NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NULL,
  id_modelo SMALLINT UNSIGNED NOT NULL,
  id_estudiante INT UNSIGNED NULL,
  estudiante_nombre VARCHAR(220) NOT NULL,
  dni_estudiante VARCHAR(20) NULL,
  id_apoderado INT UNSIGNED NULL,
  apoderado_nombre VARCHAR(220) NULL,
  dni_apoderado VARCHAR(20) NULL,
  id_tutor INT UNSIGNED NULL,
  tutor_nombre VARCHAR(220) NULL,
  id_nivel CHAR(3) NULL,
  id_grado TINYINT UNSIGNED NULL,
  id_seccion TINYINT UNSIGNED NULL,
  lugar VARCHAR(160) NULL,
  situacion_observada TEXT NOT NULL,
  reflexion_formativa TEXT NULL,
  compromisos_estudiante TEXT NULL,
  compromisos_familia TEXT NULL,
  accion_reparadora TEXT NULL,
  meta_mejora VARCHAR(260) NULL,
  fecha_revision DATE NULL,
  evidencias_esperadas TEXT NULL,
  estado VARCHAR(30) NOT NULL DEFAULT 'EN_SEGUIMIENTO',
  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_acta),
  UNIQUE KEY uq_tut_acta_numero (id_anio_lectivo, numero_acta),
  KEY idx_tut_acta_fecha (fecha),
  KEY idx_tut_acta_estudiante (dni_estudiante, estudiante_nombre),
  KEY idx_tut_acta_aula (id_nivel, id_grado, id_seccion),
  KEY fk_tut_acta_modelo (id_modelo),
  KEY fk_tut_acta_estudiante (id_estudiante),
  KEY fk_tut_acta_apoderado (id_apoderado),
  KEY fk_tut_acta_tutor (id_tutor),
  CONSTRAINT fk_tut_acta_anio FOREIGN KEY (id_anio_lectivo) REFERENCES anio_lectivo(id_anio_lectivo),
  CONSTRAINT fk_tut_acta_modelo FOREIGN KEY (id_modelo) REFERENCES tut_acta_modelo(id_modelo),
  CONSTRAINT fk_tut_acta_estudiante FOREIGN KEY (id_estudiante) REFERENCES estudiante(id_estudiante),
  CONSTRAINT fk_tut_acta_apoderado FOREIGN KEY (id_apoderado) REFERENCES persona(id_persona),
  CONSTRAINT fk_tut_acta_tutor FOREIGN KEY (id_tutor) REFERENCES docente(id_docente),
  CONSTRAINT fk_tut_acta_nivel FOREIGN KEY (id_nivel) REFERENCES nivel_educativo(id_nivel),
  CONSTRAINT fk_tut_acta_grado FOREIGN KEY (id_grado) REFERENCES grado(id_grado),
  CONSTRAINT fk_tut_acta_seccion FOREIGN KEY (id_seccion) REFERENCES seccion(id_seccion),
  CONSTRAINT fk_tut_acta_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_acta_seguimiento (
  id_seguimiento INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_acta INT UNSIGNED NOT NULL,
  fecha DATE NOT NULL,
  criterio VARCHAR(220) NULL,
  avance TEXT NULL,
  evidencia TEXT NULL,
  decision_formativa VARCHAR(220) NULL,
  responsable VARCHAR(180) NULL,
  estado VARCHAR(30) NOT NULL DEFAULT 'REGISTRADO',
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_seguimiento),
  KEY idx_tut_acta_seg_fecha (fecha),
  CONSTRAINT fk_tut_acta_seg_acta FOREIGN KEY (id_acta) REFERENCES tut_acta_compromiso(id_acta) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS comite_ie (
  id_comite INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
  codigo VARCHAR(40) NOT NULL,
  nombre VARCHAR(240) NOT NULL,
  tipo VARCHAR(80) NOT NULL DEFAULT 'GESTION_ESCOLAR',
  numero_resolucion VARCHAR(80) NULL,
  fecha_resolucion DATE NULL,
  finalidad TEXT NULL,
  fuente_documento VARCHAR(260) NULL,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id_comite),
  UNIQUE KEY uq_comite_anio_codigo (id_anio_lectivo, codigo),
  CONSTRAINT fk_comite_anio FOREIGN KEY (id_anio_lectivo) REFERENCES anio_lectivo(id_anio_lectivo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS comite_miembro (
  id_miembro INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_comite INT UNSIGNED NOT NULL,
  id_persona INT UNSIGNED NULL,
  cargo VARCHAR(180) NOT NULL,
  nombres VARCHAR(220) NOT NULL,
  dni VARCHAR(20) NULL,
  celular VARCHAR(30) NULL,
  correo VARCHAR(160) NULL,
  orden SMALLINT UNSIGNED NOT NULL DEFAULT 1,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_miembro),
  UNIQUE KEY uq_comite_miembro (id_comite, cargo, dni),
  KEY fk_comite_miembro_persona (id_persona),
  CONSTRAINT fk_comite_miembro_comite FOREIGN KEY (id_comite) REFERENCES comite_ie(id_comite) ON DELETE CASCADE,
  CONSTRAINT fk_comite_miembro_persona FOREIGN KEY (id_persona) REFERENCES persona(id_persona)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS comite_funcion (
  id_funcion INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_comite INT UNSIGNED NOT NULL,
  numero VARCHAR(10) NULL,
  descripcion TEXT NOT NULL,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_funcion),
  UNIQUE KEY uq_comite_funcion (id_comite, numero),
  CONSTRAINT fk_comite_funcion_comite FOREIGN KEY (id_comite) REFERENCES comite_ie(id_comite) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS docente_cuadro_horas (
  id_cuadro_horas INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
  id_docente INT UNSIGNED NULL,
  codigo_plaza VARCHAR(40) NULL,
  docente_nombre VARCHAR(220) NOT NULL,
  condicion_laboral VARCHAR(80) NULL,
  area_especialidad VARCHAR(180) NULL,
  jornada_pedagogica VARCHAR(80) NULL,
  horas_dictado DECIMAL(5,2) NULL,
  fuente VARCHAR(160) NULL,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_cuadro_horas),
  UNIQUE KEY uq_docente_cuadro (id_anio_lectivo, codigo_plaza, docente_nombre),
  KEY fk_docente_cuadro_docente (id_docente),
  CONSTRAINT fk_docente_cuadro_anio FOREIGN KEY (id_anio_lectivo) REFERENCES anio_lectivo(id_anio_lectivo),
  CONSTRAINT fk_docente_cuadro_docente FOREIGN KEY (id_docente) REFERENCES docente(id_docente)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS plan_estudio_area (
  id_plan_area INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
  id_nivel CHAR(3) NOT NULL,
  id_grado TINYINT UNSIGNED NOT NULL,
  id_seccion TINYINT UNSIGNED NULL,
  id_area INT UNSIGNED NOT NULL,
  horas_semanales DECIMAL(5,2) NOT NULL DEFAULT 0,
  fuente VARCHAR(120) NULL,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_plan_area),
  UNIQUE KEY uq_plan_area (id_anio_lectivo, id_nivel, id_grado, id_seccion, id_area),
  CONSTRAINT fk_plan_area_anio FOREIGN KEY (id_anio_lectivo) REFERENCES anio_lectivo(id_anio_lectivo),
  CONSTRAINT fk_plan_area_nivel FOREIGN KEY (id_nivel) REFERENCES nivel_educativo(id_nivel),
  CONSTRAINT fk_plan_area_grado FOREIGN KEY (id_grado) REFERENCES grado(id_grado),
  CONSTRAINT fk_plan_area_seccion FOREIGN KEY (id_seccion) REFERENCES seccion(id_seccion),
  CONSTRAINT fk_plan_area_area FOREIGN KEY (id_area) REFERENCES area_curricular(id_area)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS tabla_simple (
  id_tabla INT UNSIGNED NOT NULL AUTO_INCREMENT,
  codigo VARCHAR(60) NOT NULL,
  nombre VARCHAR(160) NOT NULL,
  descripcion VARCHAR(260) NULL,
  es_sistema TINYINT(1) NOT NULL DEFAULT 0,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id_tabla),
  UNIQUE KEY uq_tabla_simple_codigo (codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS tabla_simple_item (
  id_item INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_tabla INT UNSIGNED NOT NULL,
  codigo VARCHAR(60) NOT NULL,
  valor VARCHAR(180) NOT NULL,
  descripcion VARCHAR(260) NULL,
  orden SMALLINT UNSIGNED NOT NULL DEFAULT 1,
  estado TINYINT(1) NOT NULL DEFAULT 1,
  creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id_item),
  UNIQUE KEY uq_tabla_item_codigo (id_tabla, codigo),
  CONSTRAINT fk_tabla_item_tabla FOREIGN KEY (id_tabla) REFERENCES tabla_simple(id_tabla) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO tut_acta_modelo (codigo, titulo, descripcion, normas_vinculadas, orden, estado) VALUES
('M01', 'Acta de compromiso formativo del estudiante y padre de familia', 'Compromiso general por incumplimiento de una o más normas de convivencia institucional.', 'Normas 1 a 10', 1, 1),
('M02', 'Acta por puntualidad, asistencia y presentación personal', 'Promueve responsabilidad, organización, autocuidado y sentido de pertenencia institucional.', 'Normas 1, 2 y 3', 2, 1),
('M03', 'Acta por responsabilidad académica y uso de materiales educativos', 'Orienta el cumplimiento de responsabilidades académicas y el uso pertinente de materiales.', 'Normas 4, 6 y 10', 3, 1),
('M04', 'Acta por buen trato y resolución pacífica de conflictos', 'Registra diálogo restaurativo, compromisos de buen trato y acciones reparadoras.', 'Norma 5', 4, 1),
('M05', 'Acta por cuidado de infraestructura, mobiliario y recursos educativos', 'Promueve el cuidado del bien común y la reparación del daño causado.', 'Norma 7', 5, 1),
('M06', 'Acta por uso inadecuado de celular u objetos no permitidos', 'Orienta el uso responsable de objetos personales y tecnología.', 'Norma 8', 6, 1),
('M07', 'Acta por hábitos saludables, higiene y autocuidado', 'Fortalece hábitos saludables, higiene personal y autocuidado.', 'Normas 3 y 9', 7, 1),
('M08', 'Ficha de seguimiento formativo del acta de compromiso', 'Permite registrar avances, evidencias y decisiones formativas.', 'Aplicable a todas', 8, 1),
('M09', 'Registro consolidado de actas de compromiso', 'Sistematiza actas, seguimiento de acuerdos y decisiones preventivas.', 'Gestión institucional', 9, 1)
ON DUPLICATE KEY UPDATE
  titulo = VALUES(titulo),
  descripcion = VALUES(descripcion),
  normas_vinculadas = VALUES(normas_vinculadas),
  orden = VALUES(orden),
  estado = VALUES(estado);

INSERT INTO comite_ie (id_anio_lectivo, codigo, nombre, tipo, numero_resolucion, fecha_resolucion, finalidad, fuente_documento, estado) VALUES
(2026, 'CONEI', 'Consejo Educativo Institucional', 'PARTICIPACION', '010-2026-I.E. N° 0003-ED-CPD', '2026-03-02', 'Órgano de participación, concertación y vigilancia ciudadana de la institución educativa.', 'RD comités 2026', 1),
(2026, 'CGCO', 'Comité de Gestión de Condiciones Operativas', 'GESTION_ESCOLAR', '011-2026-I.E. N° 0003-ED-CPD', '2026-03-02', 'Implementa procesos de matrícula, recursos educativos, mantenimiento, GRD, infraestructura y condiciones operativas.', 'RD comités 2026', 1),
(2026, 'CGP', 'Comité de Gestión Pedagógica', 'GESTION_ESCOLAR', '012-2026-I.E. N° 0003-ED-CPD', '2026-03-02', 'Orienta la gestión pedagógica, comunidades de aprendizaje, lectura, recursos y logro de aprendizajes.', 'RD comités 2026', 1),
(2026, 'CGB', 'Comité de Gestión del Bienestar', 'GESTION_ESCOLAR', '013-2026-I.E. N° 0003-ED-CPD', '2026-03-02', 'Implementa tutoría, orientación educativa, convivencia escolar, prevención y atención de situaciones que afecten el bienestar.', 'RD comités 2026', 1),
(2026, 'APOYO_MATERIAL', 'Personal de apoyo a la recepción de material educativo', 'APOYO', '014-2026-I.E. N° 0003-ED-S', '2026-03-06', 'Apoya la recepción, registro y distribución del material educativo del año escolar.', 'RD comités 2026', 1)
ON DUPLICATE KEY UPDATE
  nombre = VALUES(nombre),
  tipo = VALUES(tipo),
  numero_resolucion = VALUES(numero_resolucion),
  fecha_resolucion = VALUES(fecha_resolucion),
  finalidad = VALUES(finalidad),
  fuente_documento = VALUES(fuente_documento),
  estado = VALUES(estado);

INSERT INTO comite_miembro (id_comite, cargo, nombres, dni, celular, correo, orden, estado)
SELECT id_comite, cargo, nombres, dni, celular, correo, orden_miembro, 1
FROM (
  SELECT 'CONEI' codigo, 'PRESIDENTE' cargo, 'Rodríguez Cárdenas, Alvert Kennedy' nombres, '42992057' dni, NULL celular, NULL correo, 1 orden_miembro
  UNION ALL SELECT 'CONEI', 'REPRESENTANTE DOCENTES', 'Diaz Vásquez Dolores Edit', '40873462', NULL, NULL, 2
  UNION ALL SELECT 'CONEI', 'REPRESENTANTE PADRES', 'Alvarado Cabrera Jannet', '42466842', NULL, NULL, 3
  UNION ALL SELECT 'CONEI', 'REPRESENTANTE ESTUDIANTES', 'Huatangare Quispe, Jessica Mishely', '61763190', NULL, NULL, 4
  UNION ALL SELECT 'CONEI', 'REPRESENTANTE DEL CENTRO POBLADO', 'López Riva, Francisco Javier', '33947139', NULL, NULL, 5
  UNION ALL SELECT 'CGCO', 'Director de I.E.', 'Rodríguez Cárdenas Alvert Kennedy', '45228933', '966904054', 'alvertkennedy19@hotmail.com', 1
  UNION ALL SELECT 'CGCO', 'Representante de Estudiantes', 'Huatangari Quispe Jesica Mishel', '61763190', NULL, NULL, 2
  UNION ALL SELECT 'CGCO', 'Representante del CONEI', 'Alvarado Cabrera Jannet', '42466842', '942155260', NULL, 3
  UNION ALL SELECT 'CGCO', 'Representante de los padres de familia', 'Huertas Aleman Erika Julissa', '44950644', '973966526', 'huertasjulissa14@gmail.com', 4
  UNION ALL SELECT 'CGCO', 'Presidenta de APAFA', 'Delgado Mejía, Salvador', '33672834', '939414089', NULL, 5
  UNION ALL SELECT 'CGCO', 'Autoridad Local de la comunidad', 'Lopez Riva Javier', '33947139', '985395070', NULL, 6
  UNION ALL SELECT 'CGCO', 'Representante Personal administrativo', 'Bardales Rodríguez, Aldo', '48027954', '948525020', NULL, 7
  UNION ALL SELECT 'CGCO', 'Representante del Personal Docente', 'Guerrero Parian Lith Reyna', '40208668', '993229956', 'litha1020@gmail.com', 8
  UNION ALL SELECT 'CGCO', 'Responsable de GRD', 'Condor Segura Segundo Héctor', '33662905', '958831881', 'condorsegura1973@gmail.com', 9
  UNION ALL SELECT 'CGP', 'Director de IE', 'Rodríguez Cárdenas, Alvert Kennedy', '45228933', '966904054', 'alvertkennedy19@hotmail.com', 1
  UNION ALL SELECT 'CGP', 'Representante del CONEI', 'Diaz Vásquez Dolores Edit', '40873462', '942700803', 'diazvasquezdoloresedith@gmail.com', 2
  UNION ALL SELECT 'CGP', 'Representante de los padres y madres de familia', 'Jirón Quinde Matías', '80682137', NULL, NULL, 3
  UNION ALL SELECT 'CGP', 'Representante del personal docente por nivel', 'Pérez Pariatanta Adelmo', '80545836', '954986503', 'adelpepa@gmail.com', 4
  UNION ALL SELECT 'CGP', 'Representante del personal docente por nivel', 'Vásquez Pérez, María Vidalina', '27420956', '967903196', 'vasquezperezmariavidalina@gmail.com', 5
  UNION ALL SELECT 'CGP', 'Representante de Estudiantes', 'Huatangare Quispe, Jessica Mishely', '61763190', NULL, NULL, 6
  UNION ALL SELECT 'CGP', 'Representante del personal administrativo', 'Bardales Rodríguez, Aldo', '48027954', '948525020', NULL, 7
  UNION ALL SELECT 'CGB', 'Director/a de la IE', 'Rodríguez Cárdenas, Alvert Kennedy', '45228933', '966904054', 'alvertkennedy19@hotmail.com', 1
  UNION ALL SELECT 'CGB', 'Coordinador/a de tutoría Secundaria', 'Canales Ramírez, Roberto Carlos', '22314104', '937570158', 'tigre_canales@hotmail.com', 2
  UNION ALL SELECT 'CGB', 'Responsable de convivencia del nivel primaria', 'Suarez Bonilla, Liliana', '41294905', '968548247', 'zirel_07@hotmail.com', 3
  UNION ALL SELECT 'CGB', 'Responsable de convivencia del nivel secundaria', 'Panduro Silva Henry Carlos', '42361656', '910358002', 'jheoabicaleb@gmail.com', 4
  UNION ALL SELECT 'CGB', 'Responsable de inclusión', 'Panduro Pelaez, Fernando', '80299178', '983252319', 'fn2panduro@gmail.com', 5
  UNION ALL SELECT 'CGB', 'Representante de los padres y madres de familia, tutores legales o apoderados/as', 'Alvarado Cabrera Jannet', '42966842', '942155260', NULL, 6
  UNION ALL SELECT 'CGB', 'Representante de las y los estudiantes', 'Huatangare Quispe, Jessica Mishely', '61763190', NULL, NULL, 7
  UNION ALL SELECT 'APOYO_MATERIAL', 'Director de I.E.', 'Rodríguez Cárdenas Alvert Kennedy', '45228933', '966904054', 'alvertkennedy19@hotmail.com', 1
  UNION ALL SELECT 'APOYO_MATERIAL', 'Representante de Estudiantes', 'Huatangare Quispe, Jessica Mishely', '61763190', NULL, NULL, 2
  UNION ALL SELECT 'APOYO_MATERIAL', 'Representante del CONEI', 'Alvarado Cabrera Jannet', '42966842', '942155260', NULL, 3
  UNION ALL SELECT 'APOYO_MATERIAL', 'Representante de los padres de familia', 'Jirón Quinde Matías', '80682137', NULL, NULL, 4
  UNION ALL SELECT 'APOYO_MATERIAL', 'Presidenta de APAFA', 'Delgado Mejía, Salvador', '33672834', '939414089', NULL, 5
  UNION ALL SELECT 'APOYO_MATERIAL', 'Autoridad Local de la comunidad', 'López Riva Javier', '33947139', '985395070', NULL, 6
  UNION ALL SELECT 'APOYO_MATERIAL', 'Representante Personal administrativo', 'Bardales Rodríguez, Aldo', '48027954', '948525020', NULL, 7
  UNION ALL SELECT 'APOYO_MATERIAL', 'Representante del Personal Docente', 'Castro Camizan Delicia', '71076819', '958311173', 'deliciacastro69@gmail.com', 8
  UNION ALL SELECT 'APOYO_MATERIAL', 'Responsable de GRD', 'Condor Segura Segundo Héctor', '33662905', '958831881', 'condorsegura1973@gmail.com', 9
) seed
INNER JOIN comite_ie c ON c.codigo = seed.codigo AND c.id_anio_lectivo = 2026
ON DUPLICATE KEY UPDATE
  nombres = VALUES(nombres),
  celular = VALUES(celular),
  correo = VALUES(correo),
  orden = VALUES(orden),
  estado = VALUES(estado);

INSERT INTO comite_funcion (id_comite, numero, descripcion, estado)
SELECT c.id_comite, seed.numero, seed.descripcion, 1
FROM (
  SELECT 'CGCO' codigo, '01' numero, 'Participar en la elaboración, actualización, implementación y evaluación de los instrumentos de gestión de la institución educativa.' descripcion
  UNION ALL SELECT 'CGCO', '02', 'Implementar procesos de recepción, registro, almacenamiento, distribución e inventario de recursos educativos.'
  UNION ALL SELECT 'CGCO', '03', 'Elaborar, implementar y evaluar el Plan de Gestión del Riesgo de Desastres y simulacros.'
  UNION ALL SELECT 'CGCO', '04', 'Reportar incidentes sobre afectación o exposición de la IE ante emergencias, desastres o peligro inminente.'
  UNION ALL SELECT 'CGCO', '05', 'Diagnosticar necesidades de infraestructura, mantenimiento y acondicionamiento del local educativo.'
  UNION ALL SELECT 'CGCO', '06', 'Programar y ejecutar acciones de mantenimiento y acondicionamiento priorizadas.'
  UNION ALL SELECT 'CGCO', '07', 'Actualizar información en sistemas de matrícula, condiciones operativas y reportes oficiales.'
  UNION ALL SELECT 'CGCO', '08', 'Formular e incorporar acciones de recursos propios, actividades productivas y presupuesto en el PAT.'
  UNION ALL SELECT 'CGCO', '09', 'Rendir cuentas de recursos financieros ante CONEI, comunidad educativa y UGEL.'
  UNION ALL SELECT 'CGCO', '10', 'Implementar procesos de adjudicación y supervisión de quioscos, cafeterías y comedores escolares.'
  UNION ALL SELECT 'CGCO', '11', 'Supervisar el funcionamiento, servicio y administración financiera de quioscos, cafeterías o comedores.'
  UNION ALL SELECT 'CGCO', '12', 'Implementar el proceso de racionalización de plazas según normativa vigente.'
  UNION ALL SELECT 'CGCO', '13', 'Formular la propuesta del cuadro de horas pedagógicas, presentarla ante UGEL/DRE e incorporar ajustes.'
  UNION ALL SELECT 'CGP', '01', 'Participar en la actualización e implementación de instrumentos de gestión orientados al logro de aprendizajes.'
  UNION ALL SELECT 'CGP', '02', 'Propiciar comunidades de aprendizaje para fortalecer prácticas pedagógicas y de gestión.'
  UNION ALL SELECT 'CGP', '03', 'Promover lectura, interaprendizaje y participación en concursos y actividades escolares.'
  UNION ALL SELECT 'CGP', '04', 'Desarrollar procesos de convalidación, revalidación, ubicación y recuperación pedagógica.'
  UNION ALL SELECT 'CGP', '05', 'Promover uso pedagógico de recursos y materiales educativos con adaptaciones pertinentes.'
  UNION ALL SELECT 'CGP', '06', 'Promover Proyectos Educativos Ambientales Integrados incorporados a los instrumentos de gestión.'
  UNION ALL SELECT 'CGP', '07', 'Promover prácticas de gestión asociadas al Compromiso de Gestión Escolar 4.'
  UNION ALL SELECT 'CGB', '01', 'Participar en instrumentos de gestión para promover el bienestar escolar y desarrollo integral.'
  UNION ALL SELECT 'CGB', '02', 'Elaborar, ejecutar y evaluar acciones de tutoría, orientación educativa y convivencia escolar.'
  UNION ALL SELECT 'CGB', '03', 'Promover materiales y actividades de orientación, convivencia democrática, intercultural e inclusiva.'
  UNION ALL SELECT 'CGB', '04', 'Prevenir y atender oportunamente casos de violencia escolar y vulneración de derechos.'
  UNION ALL SELECT 'CGB', '05', 'Promover trabajo colegiado e interaprendizaje con tutores, docentes, auxiliares y actores socioeducativos.'
  UNION ALL SELECT 'CGB', '06', 'Articular acciones con instituciones, autoridades y redes de apoyo a la tutoría y convivencia.'
  UNION ALL SELECT 'CGB', '07', 'Promover disciplina, ciudadanía y sana convivencia desde derechos e interculturalidad.'
  UNION ALL SELECT 'CGB', '08', 'Conformar brigadas para atender situaciones que afectan el bienestar estudiantil.'
  UNION ALL SELECT 'CGB', '09', 'Promover prácticas de gestión asociadas al Compromiso de Gestión Escolar 5.'
) seed
INNER JOIN comite_ie c ON c.codigo = seed.codigo AND c.id_anio_lectivo = 2026
ON DUPLICATE KEY UPDATE descripcion = VALUES(descripcion), estado = VALUES(estado);

INSERT INTO docente_cuadro_horas (id_anio_lectivo, codigo_plaza, docente_nombre, condicion_laboral, area_especialidad, jornada_pedagogica, horas_dictado, fuente, estado) VALUES
(2026, '1181113111J4', 'RODRÍGUEZ CARDENAS ALVERT KENNEDY', 'LEY 29944', 'Área de Gestión Institucional', '40 Horas Cronológicas', 0, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1128114719V3', 'SAAVEDRA AREVALO MANUEL', 'LEY 29944', 'CIENCIAS SOCIALES', '30 pedagógicas', 26, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1171114121J9', 'PLAZA VACANTE', 'LEY 30328', 'EDUCACIÓN FÍSICA', '30 pedagógicas', 26, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '621491219817', 'LEYVA ANTICONA LUCERITO DE LOURDES', 'LEY 29944', 'COMUNICACIÓN', '30 pedagógicas', 25, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1171114121J8', 'CASTRO CAMIZAN DELICIA', 'LEY 29944', 'INGLÉS', '30 pedagógicas', 26, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1128114719V2', 'PLAZA VACANTE', 'LEY 30328', 'MATEMÁTICA', '30 pedagógicas', 25, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1128114719V5', 'PEREZ PARIATANTA ADELMO', 'LEY 29944', 'MATEMÁTICA', '30 pedagógicas', 25, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1128114719V6', 'DIAZ VASQUEZ DOLORES EDITH', 'LEY 29944', 'COMUNICACIÓN', '30 pedagógicas', 25, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '1128114719V4', 'PLAZA VACANTE', 'LEY 30328', 'CIENCIA Y TECNOLOGÍA', '30 pedagógicas', 26, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '621431215816', 'PLAZA VACANTE', 'LEY 30328', 'DPCC', '30 pedagógicas', 26, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '621411219813', 'PLAZA VACANTE', 'LEY 30328', 'EDUCACIÓN RELIGIOSA', '30 pedagógicas', 24, 'Anexo 01 cuadro de horas 2026', 1),
(2026, '621471219818', 'PANDURO SILVA HENRY CARLOS', 'LEY 29944', 'EPT - COMPUTACIÓN', '30 pedagógicas', 24, 'Anexo 01 cuadro de horas 2026', 1)
ON DUPLICATE KEY UPDATE
  condicion_laboral = VALUES(condicion_laboral),
  area_especialidad = VALUES(area_especialidad),
  jornada_pedagogica = VALUES(jornada_pedagogica),
  horas_dictado = VALUES(horas_dictado),
  fuente = VALUES(fuente),
  estado = VALUES(estado);

UPDATE docente_cuadro_horas ch
INNER JOIN docente d ON d.id_docente = CASE
  WHEN ch.docente_nombre LIKE '%RODR%GUEZ%ALVERT%' THEN 1
  WHEN ch.docente_nombre LIKE '%SAAVEDRA%MANUEL%' THEN 11
  WHEN ch.docente_nombre LIKE '%LEYVA%LUCERITO%' THEN 12
  WHEN ch.docente_nombre LIKE '%PEREZ%PARIATANTA%ADELMO%' THEN 13
  WHEN ch.docente_nombre LIKE '%DIAZ%VASQUEZ%DOLORES%' THEN 15
  WHEN ch.docente_nombre LIKE '%PANDURO%SILVA%HENRY%' THEN 14
  ELSE 0
END
SET ch.id_docente = d.id_docente
WHERE ch.id_anio_lectivo = 2026;

INSERT INTO plan_estudio_area (id_anio_lectivo, id_nivel, id_grado, id_seccion, id_area, horas_semanales, fuente, estado)
SELECT src.id_anio_lectivo, src.id_nivel, src.id_grado, src.id_seccion, src.id_area, src.horas_semanales, src.fuente, src.estado
FROM (
  SELECT 2026 id_anio_lectivo, 'SEC' id_nivel, g.id_grado, sec.id_seccion, a.id_area, seed.horas horas_semanales, 'Anexo 2 cuadro de horas 2026' fuente, 1 estado
  FROM (
    SELECT 7 id_grado UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11
  ) g
  CROSS JOIN (
    SELECT 1 id_seccion UNION ALL SELECT 2
  ) sec
  INNER JOIN (
    SELECT 'MAT' codigo, 5 horas
    UNION ALL SELECT 'COM', 5
    UNION ALL SELECT 'ING', 3
    UNION ALL SELECT 'AYC', 2
    UNION ALL SELECT 'CCSS', 4
    UNION ALL SELECT 'DPCC', 3
    UNION ALL SELECT 'EF', 3
    UNION ALL SELECT 'REL', 2
    UNION ALL SELECT 'CYT', 4
    UNION ALL SELECT 'EPT', 2
    UNION ALL SELECT 'TUT', 2
  ) seed
  INNER JOIN area_curricular a ON a.id_nivel = 'SEC' AND a.descripcion = seed.codigo
) src
ON DUPLICATE KEY UPDATE
  horas_semanales = VALUES(horas_semanales),
  fuente = VALUES(fuente),
  estado = VALUES(estado);

INSERT INTO tabla_simple (codigo, nombre, descripcion, es_sistema, estado) VALUES
('ACTA_ESTADO', 'Estados de actas de compromiso', 'Estados usados para seguimiento tutorial.', 1, 1),
('COMITE_TIPO', 'Tipos de comités IE', 'Clasificación de comités y grupos de trabajo institucionales.', 1, 1),
('DOCENTE_TIPO_ASIGNACION', 'Tipos de asignación docente', 'Origen o regla de asignación de áreas y tutorías.', 1, 1)
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre), descripcion = VALUES(descripcion), estado = VALUES(estado);

INSERT INTO tabla_simple_item (id_tabla, codigo, valor, descripcion, orden, estado)
SELECT t.id_tabla, s.codigo, s.valor, s.descripcion, s.orden_item, 1
FROM (
  SELECT 'ACTA_ESTADO' tabla, 'BORRADOR' codigo, 'Borrador' valor, 'Registro en elaboración.' descripcion, 1 orden_item
  UNION ALL SELECT 'ACTA_ESTADO', 'EN_SEGUIMIENTO', 'En seguimiento', 'Tiene compromisos activos por verificar.', 2
  UNION ALL SELECT 'ACTA_ESTADO', 'CUMPLIDA', 'Cumplida', 'Compromisos verificados favorablemente.', 3
  UNION ALL SELECT 'ACTA_ESTADO', 'DERIVADA', 'Derivada', 'Requiere intervención del comité o aliado externo.', 4
  UNION ALL SELECT 'COMITE_TIPO', 'GESTION_ESCOLAR', 'Gestión escolar', 'Comités de gestión escolar establecidos por norma.', 1
  UNION ALL SELECT 'COMITE_TIPO', 'PARTICIPACION', 'Participación', 'Instancias de participación y vigilancia.', 2
  UNION ALL SELECT 'COMITE_TIPO', 'APOYO', 'Apoyo operativo', 'Equipos temporales o de apoyo específico.', 3
  UNION ALL SELECT 'DOCENTE_TIPO_ASIGNACION', 'PRIMARIA_AULA', 'Primaria por aula', 'Docente de primaria responsable de aula y áreas generales.', 1
  UNION ALL SELECT 'DOCENTE_TIPO_ASIGNACION', 'PRIMARIA_EDUCACION_FISICA', 'Primaria Educación Física', 'Docente especialista de Educación Física de primero a sexto.', 2
  UNION ALL SELECT 'DOCENTE_TIPO_ASIGNACION', 'SECUNDARIA_CUADRO_HORAS', 'Secundaria cuadro de horas', 'Asignación según cuadro de horas aprobado.', 3
  UNION ALL SELECT 'DOCENTE_TIPO_ASIGNACION', 'MANUAL', 'Manual', 'Asignación registrada manualmente.', 4
) s
INNER JOIN tabla_simple t ON t.codigo = s.tabla
ON DUPLICATE KEY UPDATE valor = VALUES(valor), descripcion = VALUES(descripcion), orden = VALUES(orden), estado = VALUES(estado);

CREATE OR REPLACE VIEW vw_tut_acta_compromiso AS
SELECT
  a.id_acta,
  a.id_anio_lectivo,
  a.numero_acta,
  a.fecha,
  a.hora,
  a.id_modelo,
  m.codigo AS modelo_codigo,
  m.titulo AS modelo,
  a.id_estudiante,
  a.estudiante_nombre,
  a.dni_estudiante,
  a.id_apoderado,
  a.apoderado_nombre,
  a.dni_apoderado,
  a.id_tutor,
  a.tutor_nombre,
  a.id_nivel,
  ne.descripcion AS nivel,
  a.id_grado,
  g.nombre_corto AS grado,
  g.descripcion AS grado_descripcion,
  a.id_seccion,
  s.nombre_corto AS seccion,
  a.lugar,
  a.situacion_observada,
  a.reflexion_formativa,
  a.compromisos_estudiante,
  a.compromisos_familia,
  a.accion_reparadora,
  a.meta_mejora,
  a.fecha_revision,
  a.evidencias_esperadas,
  a.estado,
  (SELECT COUNT(*) FROM tut_acta_seguimiento seg WHERE seg.id_acta = a.id_acta) AS total_seguimientos
FROM tut_acta_compromiso a
INNER JOIN tut_acta_modelo m ON m.id_modelo = a.id_modelo
LEFT JOIN nivel_educativo ne ON ne.id_nivel = a.id_nivel
LEFT JOIN grado g ON g.id_grado = a.id_grado
LEFT JOIN seccion s ON s.id_seccion = a.id_seccion;

CREATE OR REPLACE VIEW vw_comite_ie AS
SELECT
  c.id_comite,
  c.id_anio_lectivo,
  c.codigo,
  c.nombre,
  c.tipo,
  c.numero_resolucion,
  c.fecha_resolucion,
  c.finalidad,
  c.estado,
  COUNT(DISTINCT m.id_miembro) AS total_miembros,
  COUNT(DISTINCT f.id_funcion) AS total_funciones
FROM comite_ie c
LEFT JOIN comite_miembro m ON m.id_comite = c.id_comite AND m.estado = 1
LEFT JOIN comite_funcion f ON f.id_comite = c.id_comite AND f.estado = 1
GROUP BY c.id_comite;

CREATE OR REPLACE VIEW vw_docente_asignacion_comano AS
SELECT
  da.id_docente_area,
  da.id_anio_lectivo,
  da.estado,
  da.horas_semanales,
  da.tipo_asignacion,
  da.fuente,
  da.observaciones,
  d.id_docente,
  p.numero_documento AS dni,
  COALESCE(NULLIF(p.nombre_completo, ''), TRIM(CONCAT_WS(' ', p.apellido_paterno, p.apellido_materno, p.nombres))) AS docente,
  au.id_aula,
  au.id_nivel,
  ne.descripcion AS nivel,
  au.id_grado,
  g.nombre_corto AS grado,
  g.descripcion AS grado_descripcion,
  au.id_seccion,
  s.nombre_corto AS seccion,
  ar.id_area,
  ar.nombre AS area,
  ar.nombre_oficial AS area_oficial,
  ar.descripcion AS area_codigo
FROM docente_area_cargo da
INNER JOIN docente d ON d.id_docente = da.id_docente
INNER JOIN persona p ON p.id_persona = d.id_persona
INNER JOIN area_curricular ar ON ar.id_area = da.id_area
LEFT JOIN aula au ON au.id_aula = da.id_aula
LEFT JOIN nivel_educativo ne ON ne.id_nivel = au.id_nivel
LEFT JOIN grado g ON g.id_grado = au.id_grado
LEFT JOIN seccion s ON s.id_seccion = au.id_seccion;

CREATE OR REPLACE VIEW vw_docente_cuadro_horas AS
SELECT
  ch.*,
  p.numero_documento AS dni_docente,
  COALESCE(NULLIF(p.nombre_completo, ''), TRIM(CONCAT_WS(' ', p.apellido_paterno, p.apellido_materno, p.nombres))) AS docente_vinculado
FROM docente_cuadro_horas ch
LEFT JOIN docente d ON d.id_docente = ch.id_docente
LEFT JOIN persona p ON p.id_persona = d.id_persona;

