INSERT INTO `proctoring_eventos` (`id`, `alumno_id`, `colegio_id`, `intento_id`, `tipo_evento`, `similitud`, `snapshot`, `ip_address`, `creado_en`, `examen_id`, `simulacro_id`) VALUES
(11, 3, 81, 18, 'exam_terminated', NULL, 'data:image/jpeg;base64,[encoded data, 20028 characters]', '::1', '2026-04-25 13:01:53', NULL, NULL),
(12, 3, 81, 19, 'exam_terminated', NULL, 'data:image/jpeg;base64,[encoded data, 19988 characters]', '::1', '2026-04-25 13:06:32', NULL, NULL),
(13, 3, 81, 21, 'identity_mismatch', 0.4910, NULL, '::1', '2026-04-25 13:13:25', NULL, NULL),
(14, 3, 81, 21, 'identity_mismatch', 0.4956, NULL, '::1', '2026-04-25 13:13:49', NULL, NULL),
(15, 3, 81, 21, 'exam_terminated', NULL, 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAHgAoADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==', '::1', '2026-04-25 13:14:25', NULL, NULL);
INSERT INTO `proctoring_eventos` (`id`, `alumno_id`, `colegio_id`, `intento_id`, `tipo_evento`, `similitud`, `snapshot`, `ip_address`, `creado_en`, `examen_id`, `simulacro_id`) VALUES
(16, 3, 81, 22, 'identity_mismatch', 0.4975, 'data:image/jpeg;base64,[encoded data, 17504 characters]', '::1', '2026-04-25 13:14:32', NULL, NULL),
(17, 3, 81, 22, 'exam_terminated', NULL, 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAHgAoADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==', '::1', '2026-04-25 13:14:32', NULL, NULL),
(18, 13, 81, 24, 'identity_mismatch', 0.4540, NULL, '::1', '2026-04-25 13:18:32', NULL, NULL),
(19, 13, 81, 24, 'identity_mismatch', 0.4923, NULL, '::1', '2026-04-25 13:18:44', NULL, NULL),
(20, 13, 81, 24, 'identity_mismatch', 0.4979, NULL, '::1', '2026-04-25 13:18:48', NULL, NULL),
(21, 13, 81, 24, 'exam_terminated', NULL, 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAHgAoADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==', '::1', '2026-04-25 13:18:48', NULL, NULL),
(22, 37, 81, 27, 'identity_mismatch', 0.4383, NULL, '::1', '2026-04-25 15:36:24', NULL, NULL),
(23, 15, 81, 29, 'identity_mismatch', 0.4661, NULL, '::1', '2026-04-26 15:03:15', NULL, NULL),
(24, 15, 81, 29, 'identity_mismatch', 0.4535, NULL, '::1', '2026-04-26 15:03:17', NULL, NULL),
(25, 15, 81, 29, 'exam_terminated', NULL, 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAHgAoADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==', '::1', '2026-04-26 15:03:17', NULL, NULL),
(26, 1, 81, 7, 'identity_mismatch', 0.4158, NULL, '::1', '2026-04-27 22:47:36', NULL, NULL),
(27, 1, 81, 7, 'identity_mismatch', 0.3965, NULL, '::1', '2026-04-27 22:47:36', NULL, NULL),
(28, 1, 81, 7, 'exam_terminated', NULL, 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAHgAoADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==', '::1', '2026-04-27 22:47:36', NULL, NULL),
(29, 1, 81, 31, 'identity_mismatch', 0.4425, NULL, '::1', '2026-04-27 22:48:05', NULL, NULL),
(30, 1, 81, 31, 'identity_mismatch', 0.3398, NULL, '::1', '2026-04-27 22:48:09', NULL, NULL),
(31, 1, 81, 31, 'exam_terminated', NULL, 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAHgAoADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==', '::1', '2026-04-27 22:48:09', NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `puntajes_historicos`
--

CREATE TABLE `puntajes_historicos` (
  `id` int(11) NOT NULL,
  `carrera_id` int(11) NOT NULL,
  `anio_admision` year(4) NOT NULL,
  `puntaje_minimo_ingreso` decimal(8,2) DEFAULT NULL,
  `puntaje_promedio_ingreso` decimal(8,2) DEFAULT NULL,
  `fuente` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Datos históricos para el Módulo de Mapeo de Brechas';

--
-- Dumping data for table `puntajes_historicos`
--

INSERT INTO `puntajes_historicos` (`id`, `carrera_id`, `anio_admision`, `puntaje_minimo_ingreso`, `puntaje_promedio_ingreso`, `fuente`) VALUES
(1, 1, '2024', 1600.00, 1728.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(2, 1, '2024', 85.00, 90.10, 'Universidades privadas - escala 100 pts - referencial histórico'),
(3, 1, '2023', 1550.00, 1674.00, 'Universidades públicas - proceso 2023 - referencial'),
(4, 2, '2024', 1350.00, 1458.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(5, 2, '2024', 78.00, 82.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(6, 2, '2023', 1300.00, 1404.00, 'Universidades públicas - proceso 2023 - referencial'),
(7, 3, '2024', 1300.00, 1404.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(8, 3, '2024', 75.00, 79.50, 'Universidades privadas - escala 100 pts - referencial histórico'),
(9, 3, '2023', 1250.00, 1350.00, 'Universidades públicas - proceso 2023 - referencial'),
(10, 4, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(11, 4, '2024', 62.00, 65.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(12, 4, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial'),
(13, 5, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(14, 5, '2024', 63.00, 66.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(15, 5, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(16, 6, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(17, 6, '2024', 62.00, 65.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(18, 6, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial'),
(19, 7, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(20, 7, '2024', 61.00, 64.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(21, 7, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial'),
(22, 8, '2024', 1150.00, 1242.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(23, 8, '2024', 66.00, 70.00, 'Universidades privadas - escala 100 pts - referencial histórico'),
(24, 8, '2023', 1100.00, 1188.00, 'Universidades públicas - proceso 2023 - referencial'),
(25, 9, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(26, 9, '2024', 63.00, 66.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(27, 9, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(28, 10, '2024', 1200.00, 1296.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(29, 10, '2024', 70.00, 74.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(30, 10, '2023', 1150.00, 1242.00, 'Universidades públicas - proceso 2023 - referencial'),
(31, 11, '2024', 980.00, 1058.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(32, 11, '2024', 58.00, 61.50, 'Universidades privadas - escala 100 pts - referencial histórico'),
(33, 11, '2023', 930.00, 1004.40, 'Universidades públicas - proceso 2023 - referencial'),
(34, 12, '2024', 900.00, 972.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(35, 12, '2024', 55.00, 58.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(36, 12, '2023', 850.00, 918.00, 'Universidades públicas - proceso 2023 - referencial'),
(37, 13, '2024', 950.00, 1026.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(38, 13, '2024', 58.00, 61.50, 'Universidades privadas - escala 100 pts - referencial histórico'),
(39, 13, '2023', 900.00, 972.00, 'Universidades públicas - proceso 2023 - referencial'),
(40, 14, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(41, 14, '2024', 60.00, 63.60, 'Universidades privadas - escala 100 pts - referencial histórico'),
(42, 14, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial'),
(43, 15, '2024', 900.00, 972.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(44, 15, '2024', 55.00, 58.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(45, 15, '2023', 850.00, 918.00, 'Universidades públicas - proceso 2023 - referencial'),
(46, 16, '2024', 900.00, 972.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(47, 16, '2024', 55.00, 58.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(48, 16, '2023', 850.00, 918.00, 'Universidades públicas - proceso 2023 - referencial'),
(49, 17, '2024', 900.00, 972.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(50, 17, '2024', 55.00, 58.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(51, 17, '2023', 850.00, 918.00, 'Universidades públicas - proceso 2023 - referencial'),
(52, 18, '2024', 880.00, 950.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(53, 18, '2024', 54.00, 57.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(54, 18, '2023', 830.00, 896.40, 'Universidades públicas - proceso 2023 - referencial'),
(55, 19, '2024', 880.00, 950.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(56, 19, '2024', 54.00, 57.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(57, 19, '2023', 830.00, 896.40, 'Universidades públicas - proceso 2023 - referencial'),
(58, 20, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(59, 20, '2024', 65.00, 68.90, 'Universidades privadas - escala 100 pts - referencial histórico'),
(60, 20, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(61, 21, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(62, 21, '2024', 60.00, 63.60, 'Universidades privadas - escala 100 pts - referencial histórico'),
(63, 21, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial'),
(64, 22, '2024', 1150.00, 1242.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(65, 22, '2024', 68.00, 72.10, 'Universidades privadas - escala 100 pts - referencial histórico'),
(66, 22, '2023', 1100.00, 1188.00, 'Universidades públicas - proceso 2023 - referencial'),
(67, 23, '2024', 1000.00, 1080.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(68, 23, '2024', 60.00, 63.60, 'Universidades privadas - escala 100 pts - referencial histórico'),
(69, 23, '2023', 950.00, 1026.00, 'Universidades públicas - proceso 2023 - referencial'),
(70, 24, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(71, 24, '2024', 62.00, 65.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(72, 24, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial'),
(73, 25, '2024', 950.00, 1026.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(74, 25, '2024', 57.00, 60.40, 'Universidades privadas - escala 100 pts - referencial histórico'),
(75, 25, '2023', 900.00, 972.00, 'Universidades públicas - proceso 2023 - referencial'),
(76, 26, '2024', 1250.00, 1350.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(77, 26, '2024', 72.00, 76.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(78, 26, '2023', 1200.00, 1296.00, 'Universidades públicas - proceso 2023 - referencial'),
(79, 27, '2024', 1200.00, 1296.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(80, 27, '2024', 70.00, 74.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(81, 27, '2023', 1150.00, 1242.00, 'Universidades públicas - proceso 2023 - referencial'),
(82, 28, '2024', 1180.00, 1274.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(83, 28, '2024', 68.00, 72.10, 'Universidades privadas - escala 100 pts - referencial histórico'),
(84, 28, '2023', 1130.00, 1220.40, 'Universidades públicas - proceso 2023 - referencial'),
(85, 29, '2024', 1200.00, 1296.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(86, 29, '2024', 70.00, 74.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(87, 29, '2023', 1150.00, 1242.00, 'Universidades públicas - proceso 2023 - referencial'),
(88, 30, '2024', 1150.00, 1242.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(89, 30, '2024', 67.00, 71.00, 'Universidades privadas - escala 100 pts - referencial histórico'),
(90, 30, '2023', 1100.00, 1188.00, 'Universidades públicas - proceso 2023 - referencial'),
(91, 31, '2024', 1200.00, 1296.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(92, 31, '2024', 70.00, 74.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(93, 31, '2023', 1150.00, 1242.00, 'Universidades públicas - proceso 2023 - referencial'),
(94, 32, '2024', 1180.00, 1274.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(95, 32, '2024', 68.00, 72.10, 'Universidades privadas - escala 100 pts - referencial histórico'),
(96, 32, '2023', 1130.00, 1220.40, 'Universidades públicas - proceso 2023 - referencial'),
(97, 33, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(98, 33, '2024', 64.00, 67.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(99, 33, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(100, 34, '2024', 1150.00, 1242.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(101, 34, '2024', 66.00, 70.00, 'Universidades privadas - escala 100 pts - referencial histórico'),
(102, 34, '2023', 1100.00, 1188.00, 'Universidades públicas - proceso 2023 - referencial'),
(103, 35, '2024', 1120.00, 1209.60, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(104, 35, '2024', 65.00, 68.90, 'Universidades privadas - escala 100 pts - referencial histórico'),
(105, 35, '2023', 1070.00, 1155.60, 'Universidades públicas - proceso 2023 - referencial'),
(106, 36, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(107, 36, '2024', 63.00, 66.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(108, 36, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(109, 37, '2024', 980.00, 1058.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(110, 37, '2024', 57.00, 60.40, 'Universidades privadas - escala 100 pts - referencial histórico'),
(111, 37, '2023', 930.00, 1004.40, 'Universidades públicas - proceso 2023 - referencial'),
(112, 38, '2024', 980.00, 1058.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(113, 38, '2024', 57.00, 60.40, 'Universidades privadas - escala 100 pts - referencial histórico'),
(114, 38, '2023', 930.00, 1004.40, 'Universidades públicas - proceso 2023 - referencial'),
(115, 39, '2024', 1200.00, 1296.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(116, 39, '2024', 70.00, 74.20, 'Universidades privadas - escala 100 pts - referencial histórico'),
(117, 39, '2023', 1150.00, 1242.00, 'Universidades públicas - proceso 2023 - referencial'),
(118, 40, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(119, 40, '2024', 64.00, 67.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(120, 40, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(121, 41, '2024', 1250.00, 1350.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(122, 41, '2024', 72.00, 76.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(123, 41, '2023', 1200.00, 1296.00, 'Universidades públicas - proceso 2023 - referencial'),
(124, 42, '2024', 1000.00, 1080.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(125, 42, '2024', 58.00, 61.50, 'Universidades privadas - escala 100 pts - referencial histórico'),
(126, 42, '2023', 950.00, 1026.00, 'Universidades públicas - proceso 2023 - referencial'),
(127, 43, '2024', 970.00, 1047.60, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(128, 43, '2024', 56.00, 59.40, 'Universidades privadas - escala 100 pts - referencial histórico'),
(129, 43, '2023', 920.00, 993.60, 'Universidades públicas - proceso 2023 - referencial'),
(130, 44, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(131, 44, '2024', 65.00, 68.90, 'Universidades privadas - escala 100 pts - referencial histórico'),
(132, 44, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(133, 45, '2024', 950.00, 1026.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(134, 45, '2024', 58.00, 61.50, 'Universidades privadas - escala 100 pts - referencial histórico'),
(135, 45, '2023', 900.00, 972.00, 'Universidades públicas - proceso 2023 - referencial'),
(136, 46, '2024', 900.00, 972.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(137, 46, '2024', 55.00, 58.30, 'Universidades privadas - escala 100 pts - referencial histórico'),
(138, 46, '2023', 850.00, 918.00, 'Universidades públicas - proceso 2023 - referencial'),
(139, 47, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(140, 47, '2024', 63.00, 66.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(141, 47, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(142, 48, '2024', 1080.00, 1166.40, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(143, 48, '2024', 62.00, 65.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(144, 48, '2023', 1030.00, 1112.40, 'Universidades públicas - proceso 2023 - referencial'),
(145, 49, '2024', 1150.00, 1242.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(146, 49, '2024', 67.00, 71.00, 'Universidades privadas - escala 100 pts - referencial histórico'),
(147, 49, '2023', 1100.00, 1188.00, 'Universidades públicas - proceso 2023 - referencial'),
(148, 50, '2024', 1100.00, 1188.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(149, 50, '2024', 64.00, 67.80, 'Universidades privadas - escala 100 pts - referencial histórico'),
(150, 50, '2023', 1050.00, 1134.00, 'Universidades públicas - proceso 2023 - referencial'),
(151, 51, '2024', 1050.00, 1134.00, 'Universidades públicas - escala 2000 pts - referencial histórico'),
(152, 51, '2024', 61.00, 64.70, 'Universidades privadas - escala 100 pts - referencial histórico'),
(153, 51, '2023', 1000.00, 1080.00, 'Universidades públicas - proceso 2023 - referencial');

-- --------------------------------------------------------

--
-- Table structure for table `ranking_institucional`
--

CREATE TABLE `ranking_institucional` (
  `id` int(11) NOT NULL,
  `institucion` varchar(150) NOT NULL,
  `puntaje_promedio` decimal(8,2) NOT NULL,
  `alumnos_ingresados` int(11) NOT NULL,
  `periodo` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `registros_conducta`
--

CREATE TABLE `registros_conducta` (
  `id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `colegio_id` int(11) NOT NULL,
  `docente_id` int(11) DEFAULT NULL,
  `puntaje` decimal(5,2) DEFAULT 0.00 COMMENT 'Escala de conducta, ej: 0-20',
  `descripcion` text DEFAULT NULL,
  `fecha` date DEFAULT (curdate()),
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `reportes_incidencias`
--

CREATE TABLE `reportes_incidencias` (
  `id` int(11) NOT NULL,
  `colegio_id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `admin_id` int(11) NOT NULL,
  `tipo` enum('conducta','suspension','baja_sistema','amonestacion','llamado_atencion','logro','otro') NOT NULL DEFAULT 'conducta',
  `gravedad` enum('leve','moderada','grave','critica') NOT NULL DEFAULT 'leve',
  `titulo` varchar(200) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `accion` text DEFAULT NULL,
  `estado` enum('activo','resuelto','archivado') DEFAULT 'activo',
  `notificado` tinyint(1) DEFAULT 0,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `resuelto_en` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `reportes_pdf`
--

CREATE TABLE `reportes_pdf` (
  `id` int(11) NOT NULL,
  `alumno_id` int(11) DEFAULT NULL,
  `colegio_id` int(11) DEFAULT NULL COMMENT 'Tenant',
  `tipo` varchar(50) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  `fecha` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `reset_facial_solicitudes`
--

CREATE TABLE `reset_facial_solicitudes` (
  `id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `motivo` text NOT NULL,
  `estado` enum('pendiente','aprobada','rechazada') NOT NULL DEFAULT 'pendiente',
  `comentario_admin` text DEFAULT NULL,
  `revisado_por` int(11) DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `actualizado_en` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Solicitudes para solicitar nuevo registro facial';

--
-- Dumping data for table `reset_facial_solicitudes`
--

INSERT INTO `reset_facial_solicitudes` (`id`, `alumno_id`, `motivo`, `estado`, `comentario_admin`, `revisado_por`, `creado_en`, `actualizado_en`) VALUES
(1, 1, 'wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww', 'aprobada', NULL, 17, '2026-04-26 20:36:23', '2026-04-26 23:38:22'),
(2, 1, 'juanawwwwwwwwwwwwwwww', 'aprobada', NULL, 17, '2026-04-26 23:39:29', '2026-04-26 23:39:52'),
(3, 1, 'KJSJKSNSDKJHDDNKJDNKDJ', 'aprobada', NULL, 17, '2026-04-28 03:47:17', '2026-04-28 03:49:09'),
(4, 38, 'jishkjsbnjsnssssssss', 'rechazada', NULL, 17, '2026-04-28 16:39:19', '2026-04-28 16:39:44');

-- --------------------------------------------------------

--
-- Table structure for table `respuestas_intento`
--

CREATE TABLE `respuestas_intento` (
  `id` int(11) NOT NULL,
  `intento_id` int(11) NOT NULL,
  `pregunta_id` int(11) NOT NULL,
  `respuesta_dada` text DEFAULT NULL,
  `es_correcta` tinyint(1) DEFAULT 0,
  `colegio_id` int(11) DEFAULT NULL COMMENT 'Tenant (derivado del intento)',
  `tiempo_respuesta_seg` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `resultados_vocacionales`
--

CREATE TABLE `resultados_vocacionales` (
  `id` int(11) NOT NULL,
  `intento_id` int(11) DEFAULT NULL COMMENT 'FK a intento VOCACIONAL — NULL si se crea desde test_vocacional.php',
  `alumno_id` int(11) NOT NULL,
  `colegio_id` int(11) DEFAULT NULL COMMENT 'Tenant',
  `perfil_riasec` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'JSON con puntajes Holland RIASEC' CHECK (json_valid(`perfil_riasec`)),
  `competencias_cognitivas` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'JSON con resultados de tests cognitivos' CHECK (json_valid(`competencias_cognitivas`)),
  `carreras_sugeridas` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'JSON con lista de carreras y % de afinidad' CHECK (json_valid(`carreras_sugeridas`)),
  `informe_resumen` text DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `ruta_recomendada` enum('PROGRESIVA','COMPETITIVA','ALTO_IMPACTO') DEFAULT 'PROGRESIVA',
  `indice_cognitivo` int(3) DEFAULT NULL COMMENT 'Índice cognitivo global 0-100',
  `indice_habilidad` int(3) DEFAULT NULL COMMENT 'Índice de habilidad autopercibida 0-100'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `resultados_vocacionales`
--

INSERT INTO `resultados_vocacionales` (`id`, `intento_id`, `alumno_id`, `colegio_id`, `perfil_riasec`, `competencias_cognitivas`, `carreras_sugeridas`, `informe_resumen`, `creado_en`, `ruta_recomendada`, `indice_cognitivo`, `indice_habilidad`) VALUES
(25, NULL, 52, NULL, '{\"Convencional\":86,\"Art\\u00edstico\":68,\"Social\":64,\"Emprendedor\":57,\"Realista\":43,\"Investigativo\":36}', '{\"Comprensi\\u00f3n Abstracta\":80,\"Resistencia al Estr\\u00e9s\":71,\"Velocidad de Procesamiento\":65,\"Memoria Operativa\":60,\"Capacidad Anal\\u00edtica\":57}', '[{\"nombre\":\"Educaci\\u00f3n\",\"afinidad\":67,\"area\":\"Ciencias Sociales\"},{\"nombre\":\"Terapia F\\u00edsica y Rehabilitaci\\u00f3n\",\"afinidad\":66,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Psicolog\\u00eda\",\"afinidad\":66,\"area\":\"Ciencias Sociales\"}]', 'Tu perfil vocacional muestra una fuerte inclinación hacia un enfoque organizado y metódico, complementado por un interés creativo y expresivo. Esto sugiere que disfrutas de actividades que implican organizar y gestionar datos. \n\nTu principal habilidad cognitiva es la \'Comprensión Abstracta\'. Esta capacidad es un activo valioso para tu futuro académico. \n\nEl análisis sugiere que \'Educación\' (área de Ciencias Sociales) es una excelente opción para ti, con una afinidad del 67%. \n\nTu índice de resistencia académica es del 70%, lo que indica una excelente disposición para afrontar estudios superiores exigentes.', '2026-05-18 05:38:35', 'PROGRESIVA', 67, 63),
(26, NULL, 53, NULL, '{\"Emprendedor\":71,\"Realista\":64,\"Social\":57,\"Convencional\":57,\"Investigativo\":46,\"Art\\u00edstico\":25}', '{\"Velocidad de Procesamiento\":75,\"Memoria Operativa\":70,\"Resistencia al Estr\\u00e9s\":64,\"Comprensi\\u00f3n Abstracta\":55,\"Capacidad Anal\\u00edtica\":50}', '[{\"nombre\":\"Negocios Internacionales\",\"afinidad\":64,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Administraci\\u00f3n de Empresas\",\"afinidad\":63,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Contabilidad\",\"afinidad\":63,\"area\":\"Ciencias Empresariales\"}]', 'Tu principal interés vocacional es líder y orientado a resultados, seguido de cerca por un perfil práctico y orientado a lo concreto. Te sentirás a gusto en entornos que te permitan dirigir y persuadir. Por otro lado, las actividades de tipo \'Artístico\' son las que menos te atraen en este momento. \n\nEn el ámbito cognitivo, tu mayor fortaleza es la \'Velocidad de Procesamiento\', lo que te da una ventaja natural en tareas que requieren esta habilidad. \n\nConsiderando tu perfil integral, la carrera de \'Negocios Internacionales\' (área de Ciencias Empresariales) emerge como la más compatible, con una afinidad del 64%. \n\nTu índice de resistencia académica es del 55%, lo que indica una buena base de resiliencia que, con constancia, te permitirá superar los retos académicos. \n\nRecomendación clave: trabaja en definir tus metas a largo plazo para fortalecer tu motivación intrínseca. ¡Saber a dónde vas es el primer paso!', '2026-05-19 06:30:14', 'PROGRESIVA', 63, 72),
(27, NULL, 54, NULL, '{\"Investigativo\":79,\"Art\\u00edstico\":79,\"Social\":75,\"Emprendedor\":75,\"Realista\":71,\"Convencional\":64}', '{\"Resistencia al Estr\\u00e9s\":79,\"Velocidad de Procesamiento\":75,\"Comprensi\\u00f3n Abstracta\":75,\"Capacidad Anal\\u00edtica\":75,\"Memoria Operativa\":70}', '[{\"nombre\":\"Negocios Internacionales\",\"afinidad\":78,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Derecho\",\"afinidad\":77,\"area\":\"Ciencias Sociales\"},{\"nombre\":\"Comunicaciones\",\"afinidad\":77,\"area\":\"Humanidades\"},{\"nombre\":\"Ciencias Pol\\u00edticas\",\"afinidad\":77,\"area\":\"Ciencias Sociales\"},{\"nombre\":\"Psicolog\\u00eda\",\"afinidad\":76,\"area\":\"Ciencias Sociales\"},{\"nombre\":\"Educaci\\u00f3n\",\"afinidad\":76,\"area\":\"Ciencias Sociales\"},{\"nombre\":\"Sociolog\\u00eda\",\"afinidad\":76,\"area\":\"Ciencias Sociales\"},{\"nombre\":\"Historia\",\"afinidad\":76,\"area\":\"Humanidades\"},{\"nombre\":\"Administraci\\u00f3n de Empresas\",\"afinidad\":76,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Medicina\",\"afinidad\":75,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Enfermer\\u00eda\",\"afinidad\":75,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Nutrici\\u00f3n y Diet\\u00e9tica\",\"afinidad\":75,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Ingenier\\u00eda Industrial\",\"afinidad\":75,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Turismo y Hoteler\\u00eda\",\"afinidad\":75,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Marketing\",\"afinidad\":75,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Recursos Humanos\",\"afinidad\":75,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"F\\u00edsica\",\"afinidad\":75,\"area\":\"Ciencias Naturales\"},{\"nombre\":\"Matem\\u00e1tica\",\"afinidad\":75,\"area\":\"Ciencias Naturales\"},{\"nombre\":\"Ingenier\\u00eda de Sistemas\",\"afinidad\":74,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Ingenier\\u00eda Ambiental\",\"afinidad\":74,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Ciencia de la Computaci\\u00f3n\",\"afinidad\":74,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Econom\\u00eda\",\"afinidad\":74,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Biolog\\u00eda\",\"afinidad\":74,\"area\":\"Ciencias Naturales\"},{\"nombre\":\"Qu\\u00edmica\",\"afinidad\":74,\"area\":\"Ciencias Naturales\"},{\"nombre\":\"Estad\\u00edstica\",\"afinidad\":74,\"area\":\"Ciencias Naturales\"},{\"nombre\":\"Farmacia y Bioqu\\u00edmica\",\"afinidad\":73,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Terapia F\\u00edsica y Rehabilitaci\\u00f3n\",\"afinidad\":73,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Ingenier\\u00eda Civil\",\"afinidad\":73,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Ingenier\\u00eda Electr\\u00f3nica\",\"afinidad\":73,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Ingenier\\u00eda Mecatr\\u00f3nica\",\"afinidad\":73,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Dise\\u00f1o Gr\\u00e1fico\",\"afinidad\":73,\"area\":\"Arte y Dise\\u00f1o\"},{\"nombre\":\"Dise\\u00f1o de Interiores\",\"afinidad\":73,\"area\":\"Arte y Dise\\u00f1o\"},{\"nombre\":\"Agronom\\u00eda\",\"afinidad\":73,\"area\":\"Ciencias Agrarias\"},{\"nombre\":\"Ingenier\\u00eda Forestal\",\"afinidad\":73,\"area\":\"Ciencias Agrarias\"},{\"nombre\":\"Odontolog\\u00eda\",\"afinidad\":72,\"area\":\"Ciencias de la Salud\"},{\"nombre\":\"Ingenier\\u00eda Mec\\u00e1nica\",\"afinidad\":72,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Ingenier\\u00eda de Minas\",\"afinidad\":72,\"area\":\"Ingenier\\u00eda y Tecnolog\\u00eda\"},{\"nombre\":\"Arquitectura\",\"afinidad\":72,\"area\":\"Arte y Dise\\u00f1o\"},{\"nombre\":\"Dise\\u00f1o de Modas\",\"afinidad\":72,\"area\":\"Arte y Dise\\u00f1o\"},{\"nombre\":\"M\\u00fasica\",\"afinidad\":72,\"area\":\"Arte y Dise\\u00f1o\"},{\"nombre\":\"Contabilidad\",\"afinidad\":72,\"area\":\"Ciencias Empresariales\"},{\"nombre\":\"Zootecnia\",\"afinidad\":72,\"area\":\"Ciencias Agrarias\"}]', 'Destacas por ser una persona analítico y científico, con rasgos de un perfil creativo y expresivo. Las áreas que te motivan son aquellas donde puedes investigar y analizar. \n\nTu principal habilidad cognitiva es la \'Resistencia al Estrés\'. Esta capacidad es un activo valioso para tu futuro académico. \n\nTu combinación de intereses y habilidades apunta fuertemente hacia \'Negocios Internacionales\' (área de Ciencias Empresariales), que alcanza un 78% de compatibilidad. Otras opciones muy afines a tu perfil son \'Derecho\' y \'Comunicaciones\'. \n\nTu índice de resistencia académica es del 80%, lo que indica una excelente disposición para afrontar estudios superiores exigentes.', '2026-05-28 17:57:32', 'COMPETITIVA', 75, 75);

-- --------------------------------------------------------

--
-- Table structure for table `roles`
--

CREATE TABLE `roles` (
  `id` int(11) NOT NULL,
  `nombre` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `roles`
--

INSERT INTO `roles` (`id`, `nombre`) VALUES
(1, 'admin'),
(2, 'alumno'),
(3, 'docente'),
(5, 'padre'),
(4, 'psicologo'),
(6, 'superadmin');

-- --------------------------------------------------------

--
-- Table structure for table `saas_planes`
--

CREATE TABLE `saas_planes` (
  `id` int(11) NOT NULL,
  `nombre` varchar(50) NOT NULL,
  `precio` decimal(10,2) NOT NULL DEFAULT 0.00,
  `color` varchar(20) DEFAULT '#64748b',
  `caracteristicas` text DEFAULT NULL,
  `popular` tinyint(1) DEFAULT 0,
  `orden` int(11) DEFAULT 0,
  `creditos_mensuales` int(11) DEFAULT 0,
  `bonus_creditos` int(11) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `saas_planes`
--

INSERT INTO `saas_planes` (`id`, `nombre`, `precio`, `color`, `caracteristicas`, `popular`, `orden`, `creditos_mensuales`, `bonus_creditos`) VALUES
(1, 'Gratuito', 0.00, '#64748b', '[\"Hasta 30 alumnos\",\"1 admin\",\"Sin soporte\"]', 0, 1, 50, 0),
(2, 'Estándar', 49.00, '#06b6d4', '[\"Hasta 200 alumnos\",\"3 admins\",\"Soporte email\"]', 0, 2, 300, 0),
(3, 'Premium', 99.00, '#7c3aed', '[\"Hasta 500 alumnos\",\"Admins ilimitados\",\"Soporte prioritario\",\"Reportes avanzados\"]', 1, 3, 1000, 0),
(4, 'Enterprise', 299.00, '#ec4899', '[\"Alumnos ilimitados\",\"Todo incluido\",\"SLA 99.9%\",\"Onboarding dedicado\"]', 0, 4, 50, 0);

-- --------------------------------------------------------

--
-- Table structure for table `schools`
--

CREATE TABLE `schools` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `simulacros`
--

CREATE TABLE `simulacros` (
  `id` int(11) NOT NULL,
  `titulo` varchar(255) DEFAULT NULL,
  `descripcion` text DEFAULT NULL,
  `fecha` date DEFAULT NULL,
  `duracion_min` int(11) DEFAULT NULL,
  `estado` varchar(50) DEFAULT 'borrador',
  `area_id` int(11) DEFAULT NULL,
  `instrucciones` text DEFAULT NULL,
  `puntaje_aprobatorio` decimal(5,2) DEFAULT NULL,
  `max_intentos` int(11) DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `tipo_actividad` varchar(30) DEFAULT 'simulacro',
  `penalizacion_error` tinyint(1) DEFAULT 0,
  `universidad_id` int(11) DEFAULT NULL,
  `carrera_id` int(11) DEFAULT NULL,
  `nivel` varchar(50) DEFAULT 'Intermedio',
  `colegio_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `simulacros`
--

INSERT INTO `simulacros` (`id`, `titulo`, `descripcion`, `fecha`, `duracion_min`, `estado`, `area_id`, `instrucciones`, `puntaje_aprobatorio`, `max_intentos`, `creado_en`, `tipo_actividad`, `penalizacion_error`, `universidad_id`, `carrera_id`, `nivel`, `colegio_id`) VALUES
(7, 'Simulacro IA: Odontología — CIENTIFICA', 'Simulacro auto-generado para Odontología. Dificultad: medio. 10 preguntas (0 del pool · 10 nuevas generadas por IA).', NULL, 75, 'archivado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 75 minutos. Distribuye bien tu tiempo: 7.5 min por pregunta.', 11.00, 3, '2026-05-17 04:45:05', 'simulacro', 0, NULL, NULL, 'Intermedio', NULL),
(8, 'Simulacro IA: Ingeniería Ambiental — UNMSM', 'Simulacro auto-generado para Ingeniería Ambiental. Dificultad: muy alto. 17 preguntas (0 del pool · 17 nuevas generadas por IA).', NULL, 30, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 30 minutos. Distribuye bien tu tiempo: 1.8 min por pregunta.', 11.00, 3, '2026-05-17 04:46:55', 'simulacro', 0, NULL, NULL, 'Avanzado', NULL),
(9, 'Simulacro IA: Ciencias de la Computación — UNI', 'Simulacro auto-generado para Ciencias de la Computación. Dificultad: muy alto. 29 preguntas (0 del pool · 29 nuevas generadas por IA).', NULL, 53, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 53 minutos. Distribuye bien tu tiempo: 1.8 min por pregunta.', 11.00, 3, '2026-05-17 04:52:06', 'simulacro', 0, NULL, NULL, 'Avanzado', NULL),
(10, 'Practica IA: Biología — Universidad Científica del Perú', 'Practica auto-generado para Biología. Dificultad: muy alto. 15 preguntas (0 del pool · 5 nuevas generadas por IA).', NULL, 30, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 30 minutos. Distribuye bien tu tiempo: 2 min por pregunta.', 11.00, 99, '2026-05-21 17:46:59', 'practica', 0, 82, 47, 'Avanzado', NULL),
(11, 'Curso IA: Estadística — UCSS', 'Curso auto-generado para Estadística. Dificultad: muy alto. 10 preguntas (0 del pool · 10 nuevas generadas por IA).', NULL, 15, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 15 minutos. Distribuye bien tu tiempo: 1.5 min por pregunta.', 11.00, 3, '2026-05-21 17:51:22', 'curso', 0, 58, 51, 'Avanzado', NULL),
(12, 'Simulacro IA: Física — Universidad Católica de Santa María', 'Simulacro auto-generado para Física. Dificultad: muy alto. 50 preguntas (0 del pool · 20 nuevas generadas por IA).', NULL, 75, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 75 minutos. Distribuye bien tu tiempo: 1.5 min por pregunta.', 11.00, 3, '2026-05-21 17:55:08', 'simulacro', 0, 79, 49, 'Avanzado', NULL),
(13, 'Diagnostico IA: Historia — Universidad Nacional de Huancavelica', 'Diagnostico auto-generado para Historia. Dificultad: alto. 40 preguntas (0 del pool · 12 nuevas generadas por IA).', NULL, 40, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 40 minutos. Distribuye bien tu tiempo: 1 min por pregunta.', 11.00, 1, '2026-05-21 18:23:12', 'diagnostico_ia', 0, 30, 17, 'Avanzado', NULL),
(14, 'Curso IA: Marketing — CIENTIFICA', 'Curso auto-generado para Marketing. Dificultad: muy alto. 12 preguntas (0 del pool · 8 nuevas generadas por IA).', NULL, 30, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 30 minutos. Distribuye bien tu tiempo: 2.5 min por pregunta.', 11.00, 3, '2026-05-21 18:32:07', 'reto_curso_ia', 0, 44, 23, 'Avanzado', NULL),
(15, 'Simulacro IA: Ingeniería Industrial — UNMSM', 'Simulacro auto-generado para Ingeniería Industrial. Dificultad: muy alto. 24 preguntas (0 del pool · 12 nuevas generadas por IA).', NULL, 45, 'publicado', NULL, 'Lee cada pregunta con atención. Solo una opción es correcta. Tiempo disponible: 45 minutos. Distribuye bien tu tiempo: 1.9 min por pregunta.', 11.00, 3, '2026-05-21 19:25:06', 'simulacro_ia', 0, 92, 28, 'Avanzado', 100);

-- --------------------------------------------------------

--
-- Table structure for table `simulacros_carrera`
--

CREATE TABLE `simulacros_carrera` (
  `id` int(11) NOT NULL,
  `carrera` varchar(100) NOT NULL,
  `universidad` varchar(150) DEFAULT NULL,
  `nombre` varchar(150) NOT NULL,
  `fecha` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `simulacros_ia_cache`
--

CREATE TABLE `simulacros_ia_cache` (
  `id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `universidad_id` int(11) NOT NULL,
  `carrera_id` int(11) DEFAULT NULL,
  `cache_key` varchar(64) NOT NULL COMMENT 'MD5 de universidad+carrera+nivel_alumno',
  `perfil_json` text NOT NULL COMMENT 'Perfil de universidad usado al generar',
  `preguntas_json` mediumtext NOT NULL COMMENT 'Array JSON de preguntas generadas por IA',
  `metadata_json` text DEFAULT NULL COMMENT 'Instrucciones, distribución, etc.',
  `examen_id` int(11) DEFAULT NULL COMMENT 'ID en tabla examenes si se persistió',
  `usado` tinyint(1) DEFAULT 0 COMMENT '1 = ya fue presentado al alumno',
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `expira_en` timestamp NOT NULL DEFAULT (current_timestamp() + interval 24 hour)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Cache de simulacros generados dinámicamente por IA';

-- --------------------------------------------------------

--
-- Table structure for table `simulacro_intentos`
--

CREATE TABLE `simulacro_intentos` (
  `id` int(11) NOT NULL,
  `simulacro_id` int(11) DEFAULT NULL,
  `alumno_id` int(11) DEFAULT NULL,
  `puntaje` decimal(5,2) DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `simulacro_intentos`
--

INSERT INTO `simulacro_intentos` (`id`, `simulacro_id`, `alumno_id`, `puntaje`, `creado_en`) VALUES
(1, 9, 11, 30.75, '2026-05-17 21:47:52'),
(2, 9, 11, 0.00, '2026-05-17 23:31:08'),
(3, 9, 11, 0.00, '2026-05-17 23:39:49'),
(4, 9, 52, 0.00, '2026-05-18 05:18:20'),
(5, 9, 52, 0.00, '2026-05-18 05:54:24'),
(6, 9, 52, 0.00, '2026-05-18 05:54:55');

-- --------------------------------------------------------

--
-- Table structure for table `simulacro_preguntas`
--

CREATE TABLE `simulacro_preguntas` (
  `simulacro_id` int(11) NOT NULL,
  `pregunta_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `simulacro_preguntas`
--

INSERT INTO `simulacro_preguntas` (`simulacro_id`, `pregunta_id`) VALUES
(7, 4),
(7, 5),
(7, 6),
(7, 7),
(7, 8),
(7, 9),
(7, 10),
(7, 11),
(7, 12),
(7, 13),
(8, 14),
(8, 15),
(8, 16),
(8, 17),
(8, 18),
(8, 19),
(8, 20),
(8, 21),
(8, 22),
(8, 23),
(8, 24),
(8, 25),
(8, 26),
(8, 27),
(8, 28),
(8, 29),
(8, 30),
(9, 31),
(9, 32),
(9, 33),
(9, 34),
(9, 35),
(9, 36),
(9, 37),
(9, 38),
(9, 39),
(9, 40),
(9, 41),
(9, 42),
(9, 43),
(9, 44),
(9, 45),
(9, 46),
(9, 47),
(9, 48),
(9, 49),
(9, 50),
(9, 51),
(9, 52),
(9, 53),
(9, 54),
(9, 55),
(9, 56),
(9, 57),
(9, 58),
(9, 59),
(10, 22),
(10, 26),
(10, 51),
(10, 54),
(10, 55),
(10, 58),
(10, 59),
(10, 70),
(10, 71),
(10, 77),
(10, 87),
(10, 88),
(10, 89),
(10, 90),
(10, 91),
(11, 92),
(11, 93),
(11, 94),
(11, 95),
(11, 96),
(11, 97),
(11, 98),
(11, 99),
(11, 100),
(11, 101),
(12, 27),
(12, 28),
(12, 29),
(12, 30),
(12, 43),
(12, 45),
(12, 48),
(12, 49),
(12, 67),
(12, 68),
(12, 69),
(12, 70),
(12, 71),
(12, 72),
(12, 74),
(12, 75),
(12, 76),
(12, 78),
(12, 81),
(12, 82),
(12, 83),
(12, 84),
(12, 85),
(12, 86),
(12, 87),
(12, 88),
(12, 90),
(12, 92),
(12, 99),
(12, 100),
(12, 102),
(12, 103),
(12, 104),
(12, 105),
(12, 106),
(12, 107),
(12, 108),
(12, 109),
(12, 110),
(12, 111),
(12, 112),
(12, 113),
(12, 114),
(12, 115),
(12, 116),
(12, 117),
(12, 118),
(12, 119),
(12, 120),
(12, 121),
(13, 23),
(13, 24),
(13, 27),
(13, 29),
(13, 30),
(13, 54),
(13, 55),
(13, 57),
(13, 82),
(13, 84),
(13, 86),
(13, 87),
(13, 89),
(13, 90),
(13, 91),
(13, 96),
(13, 98),
(13, 99),
(13, 101),
(13, 104),
(13, 105),
(13, 109),
(13, 110),
(13, 111),
(13, 113),
(13, 114),
(13, 117),
(13, 118),
(13, 122),
(13, 123),
(13, 124),
(13, 125),
(13, 126),
(13, 127),
(13, 128),
(13, 129),
(13, 130),
(13, 131),
(13, 132),
(13, 133),
(14, 28),
(14, 30),
(14, 81),
(14, 84),
(14, 134),
(14, 135),
(14, 136),
(14, 137),
(14, 138),
(14, 139),
(14, 140),
(14, 141),
(15, 22),
(15, 44),
(15, 49),
(15, 53),
(15, 54),
(15, 71),
(15, 103),
(15, 107),
(15, 112),
(15, 127),
(15, 130),
(15, 131),
(15, 142),
(15, 143),
(15, 144),
(15, 145),
(15, 146),
(15, 147),
(15, 148),
(15, 149),
(15, 150),
(15, 151),
(15, 152),
(15, 153);

-- --------------------------------------------------------

--
-- Table structure for table `tareas`
--

CREATE TABLE `tareas` (
  `id` int(11) NOT NULL,
  `colegio_id` int(11) DEFAULT NULL,
  `titulo` varchar(200) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `carrera_id` int(11) DEFAULT NULL,
  `docente_id` int(11) DEFAULT NULL,
  `curso_id` int(11) DEFAULT NULL,
  `aula` varchar(50) DEFAULT NULL,
  `estado` enum('pendiente','en_proceso','entregado','terminado') DEFAULT 'pendiente',
  `fecha_entrega` date DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `tareas_alumnos`
--

CREATE TABLE `tareas_alumnos` (
  `id` int(11) NOT NULL,
  `tarea_id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `estado` enum('pendiente','entregado','con_errores','no_entregado') DEFAULT 'pendiente',
  `puntaje` decimal(5,2) DEFAULT NULL,
  `errores` int(11) DEFAULT 0,
  `observaciones` text DEFAULT NULL,
  `fecha_entrega` datetime DEFAULT NULL,
  `colegio_id` int(11) DEFAULT NULL COMMENT 'Tenant'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `universidades`
--

CREATE TABLE `universidades` (
  `id` int(11) NOT NULL,
  `nombre` varchar(255) NOT NULL,
  `tipo_gestion` enum('pública','privada') NOT NULL,
  `siglas` varchar(20) DEFAULT NULL COMMENT 'Siglas o código corto: UNI, UNMSM, PUCP, etc.',
  `ciudad` varchar(100) DEFAULT 'Lima' COMMENT 'Ciudad sede principal',
  `dificultad` tinyint(1) NOT NULL DEFAULT 3 COMMENT 'Dificultad global: 1=Básica, 2=Media-baja, 3=Media, 4=Alta, 5=Muy alta',
  `nivel_matematico` tinyint(1) NOT NULL DEFAULT 3 COMMENT 'Exigencia matemática: 1-5',
  `nivel_verbal` tinyint(1) NOT NULL DEFAULT 3 COMMENT 'Exigencia verbal/comprensión lectora: 1-5',
  `nivel_logico` tinyint(1) NOT NULL DEFAULT 3 COMMENT 'Razonamiento lógico: 1-5',
  `nivel_ciencias` tinyint(1) NOT NULL DEFAULT 2 COMMENT 'Exigencia en ciencias (física, química, biología): 1-5',
  `nivel_historia` tinyint(1) NOT NULL DEFAULT 2 COMMENT 'Exigencia en historia/geografía/CCSS: 1-5',
  `peso_matematica` tinyint(3) NOT NULL DEFAULT 25 COMMENT '% aproximado de preguntas de matemática',
  `peso_verbal` tinyint(3) NOT NULL DEFAULT 20 COMMENT '% de comprensión lectora / lenguaje',
  `peso_razonamiento` tinyint(3) NOT NULL DEFAULT 20 COMMENT '% de razonamiento lógico/abstracto',
  `peso_ciencias` tinyint(3) NOT NULL DEFAULT 20 COMMENT '% de ciencias naturales',
  `peso_historia` tinyint(3) NOT NULL DEFAULT 15 COMMENT '% de historia, geografía, CCSS',
  `total_preguntas` tinyint(3) NOT NULL DEFAULT 50 COMMENT 'Total de preguntas en el examen oficial',
  `tiempo_minutos` smallint(6) NOT NULL DEFAULT 120 COMMENT 'Tiempo total del examen en minutos',
  `tipo_examen` varchar(80) NOT NULL DEFAULT 'selección múltiple' COMMENT 'Formato: selección múltiple / desarrollo / mixto / eliminación',
  `penalizacion_error` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1 = descuenta puntos por respuesta incorrecta',
  `estilo_preguntas` varchar(255) DEFAULT 'analítico, contextualizado' COMMENT 'Descripción del estilo: memorístico, analítico, aplicado, etc.',
  `cursos_prioritarios` text DEFAULT NULL COMMENT 'JSON array: ["Álgebra","Aritmética","Física"] — cursos con mayor peso',
  `areas_excluidas` text DEFAULT NULL COMMENT 'JSON array de áreas que NO evalúa esta universidad',
  `descripcion_ia` text DEFAULT NULL COMMENT 'Contexto libre para el prompt IA: características especiales del examen',
  `activa` tinyint(1) NOT NULL DEFAULT 1 COMMENT '0 = deshabilitada del sistema',
  `actualizado_en` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `universidades`
--

INSERT INTO `universidades` (`id`, `nombre`, `tipo_gestion`, `siglas`, `ciudad`, `dificultad`, `nivel_matematico`, `nivel_verbal`, `nivel_logico`, `nivel_ciencias`, `nivel_historia`, `peso_matematica`, `peso_verbal`, `peso_razonamiento`, `peso_ciencias`, `peso_historia`, `total_preguntas`, `tiempo_minutos`, `tipo_examen`, `penalizacion_error`, `estilo_preguntas`, `cursos_prioritarios`, `areas_excluidas`, `descripcion_ia`, `activa`, `actualizado_en`, `creado_en`) VALUES
(1, 'Universidad Nacional Mayor de San Marcos', 'pública', 'UNMSM', 'Lima', 4, 4, 3, 4, 4, 3, 20, 15, 20, 25, 20, 100, 180, 'selección múltiple - 5 alternativas', 0, 'analítico, contextualizado, resolución de problemas', '[\"Aritmética\",\"Álgebra\",\"Geometría\",\"Trigonometría\",\"Física\",\"Química\",\"Biología\",\"Razonamiento Verbal\",\"Historia del Perú\",\"Geografía\"]', NULL, 'El examen de UNMSM es amplio y equilibrado. Evalúa todos los cursos de forma proporcional. Especial énfasis en ciencias (Física, Química, Biología) y matemáticas. Las preguntas son de aplicación y comprensión, no solo memorísticas. Muy competitivo para Medicina y Derecho.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(2, 'Universidad Nacional de Ingeniería', 'pública', 'UNI', 'Lima', 5, 5, 3, 5, 4, 1, 35, 10, 30, 20, 5, 100, 180, 'selección múltiple - eliminación', 1, 'abstracto, altamente analítico, múltiples pasos', '[\"Aritmética\",\"Álgebra\",\"Geometría\",\"Trigonometría\",\"Física\",\"Razonamiento Matemático\",\"Química\",\"Cálculo Preuniversitario\"]', NULL, 'El examen de la UNI es extremadamente matemático y lógico. Evalúa capacidad de abstracción y resolución de problemas complejos en múltiples pasos. Las preguntas de razonamiento matemático son el corazón del examen. La penalización por error descuenta puntos. Historia y Literatura prácticamente no existen.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(3, 'Universidad Nacional Agraria La Molina', 'pública', 'UNALM', 'Lima', 3, 3, 3, 3, 4, 2, 20, 15, 20, 35, 10, 80, 180, 'selección múltiple', 0, 'aplicado, ciencias básicas, agropecuario', '[\"Biología\",\"Química\",\"Física\",\"Matemática\",\"Razonamiento Verbal\",\"Ecología\"]', NULL, 'La Molina enfoca su examen en ciencias naturales y aplicadas. Biología, Química y Física son fundamentales. Se espera conocimiento en temas agropecuarios y ambientales. Dificultad moderada-alta en ciencias, moderada en matemáticas.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(4, 'Universidad Nacional Federico Villarreal', 'pública', 'UNFV', 'Lima', 3, 3, 3, 3, 3, 3, 20, 20, 20, 20, 20, 100, 180, 'selección múltiple', 0, 'generalista, equilibrado, memorístico-analítico', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Biología\",\"Historia\",\"Física\",\"Química\",\"Álgebra\",\"Geografía\"]', NULL, 'UNFV tiene un examen equilibrado entre todas las áreas. Sin especialización excesiva. Buena distribución entre humanidades y ciencias. Moderadamente difícil, accesible con preparación sólida en todas las materias.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(5, 'Universidad Nacional del Callao', 'pública', 'UNAC', 'Lima', 3, 4, 2, 4, 3, 2, 30, 10, 30, 25, 5, 60, 120, 'selección múltiple', 0, 'técnico, matemático, ingenierías', '[\"Física\",\"Matemática\",\"Álgebra\",\"Geometría\",\"Química\",\"Razonamiento Lógico\"]', NULL, 'UNAC está orientada a ingenierías del Callao. El examen prioriza matemáticas y física. Verbal e historia tienen poca presencia. Competitivo para carreras de sistemas, industrial y mecánica.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(6, 'Universidad Nacional de Educación Enrique Guzmán y Valle', 'pública', 'UNE', 'Lima', 2, 2, 4, 3, 2, 4, 15, 30, 20, 10, 25, 60, 120, 'selección múltiple', 0, 'humanístico, comprensión lectora, educación', '[\"Razonamiento Verbal\",\"Historia del Perú\",\"Literatura\",\"Geografía\",\"Educación Cívica\",\"Psicología\"]', NULL, 'La Cantuta forma docentes. El examen prioriza humanidades: verbal, historia, literatura. Matemáticas y ciencias tienen presencia mínima. Muy accesible en ciencias pero exigente en comprensión lectora y cultura general.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(7, 'Universidad Nacional Tecnológica de Lima Sur', 'pública', 'UNTELS', 'Lima', 2, 3, 2, 3, 3, 1, 30, 10, 30, 25, 5, 50, 90, 'selección múltiple', 0, 'técnico básico, matemático', '[\"Matemática\",\"Física\",\"Razonamiento Matemático\",\"Química\",\"Lógica\"]', NULL, 'UNTELS tiene examen técnico con énfasis en matemáticas y física. Accesible comparado con UNI o UNAC. Buena opción para carreras tecnológicas con menor presión de admisión.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(8, 'Universidad Nacional de Barranca', 'pública', 'UNAB', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(9, 'Universidad Nacional José Faustino Sánchez Carrión', 'pública', 'UNJFSC', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(10, 'Universidad Nacional de Música', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(11, 'Universidad Nacional de San Agustín de Arequipa', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(12, 'Universidad Nacional del Altiplano', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(13, 'Universidad Nacional de San Antonio Abad del Cusco', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(14, 'Universidad Nacional de la Amazonia Peruana', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(15, 'Universidad Nacional Toribio Rodríguez de Mendoza', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(16, 'Universidad Nacional de Trujillo', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(17, 'Universidad Nacional Pedro Ruiz Gallo', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(18, 'Universidad Nacional de San Martín', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(19, 'Universidad Nacional Daniel Alcides Carrión', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(20, 'Universidad Nacional Hermilio Valdizán', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(21, 'Universidad Nacional de San Cristóbal de Huamanga', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(22, 'Universidad Nacional del Centro del Perú', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(23, 'Universidad Nacional Amazónica de Madre de Dios', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(24, 'Universidad Nacional de Piura', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(25, 'Universidad Nacional de Cajamarca', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(26, 'Universidad Nacional Jorge Basadre Grohmann', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(27, 'Universidad Nacional San Luis Gonzaga de Ica', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(28, 'Universidad Nacional de Juliaca', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(29, 'Universidad Nacional Santiago Antúnez de Mayolo', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(30, 'Universidad Nacional de Huancavelica', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(31, 'Universidad Nacional Micaela Bastidas de Apurímac', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(32, 'Universidad Nacional de Moquegua', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(33, 'Universidad Nacional Intercultural de la Amazonia', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(34, 'Universidad Nacional Agraria de la Selva', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(35, 'Universidad Nacional Autónoma de Tayacaja', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(36, 'Universidad Nacional Autónoma de Chota', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(37, 'Universidad Nacional Autónoma Altoandina de Tarma', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(38, 'Universidad Nacional Autónoma de Alto Amazonas', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(39, 'Universidad Nacional de Frontera', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(40, 'Universidad Nacional de Ucayali', 'pública', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(41, 'Pontificia Universidad Católica del Perú', 'privada', 'PUCP', 'Lima', 4, 4, 4, 4, 3, 3, 25, 25, 30, 10, 10, 100, 180, 'aptitudes (verbal + matemático)', 0, 'razonamiento puro, comprensión lectora profunda, analítico', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Comprensión Lectora\",\"Lógica\",\"Razonamiento Analítico\"]', NULL, 'La PUCP evalúa aptitudes, no memorización. Su examen mide razonamiento matemático y verbal puro. No evalúa Historia ni Ciencias directamente. Muy exigente en comprensión lectora y pensamiento abstracto. El más diferente del sistema peruano.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(42, 'Universidad del Pacífico', 'privada', 'UP', 'Lima', 4, 4, 4, 4, 2, 2, 35, 30, 25, 5, 5, 60, 120, 'aptitudes y razonamiento', 0, 'analítico, negocios, cuantitativo', '[\"Matemática Empresarial\",\"Razonamiento Cuantitativo\",\"Inglés\",\"Razonamiento Verbal\",\"Lógica\"]', NULL, 'La UP está orientada a negocios y economía. Evalúa capacidad analítica cuantitativa y verbal. No evalúa Biología, Historia ni temas memorísticos. El examen es tipo aptitudes con énfasis en razonamiento numérico. Incluye inglés en algunos procesos.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(43, 'Universidad de Lima', 'privada', 'ULIMA', 'Lima', 3, 3, 3, 4, 2, 2, 30, 25, 30, 10, 5, 60, 120, 'aptitudes', 0, 'razonamiento, aptitudes generales', '[\"Razonamiento Matemático\",\"Comprensión Lectora\",\"Razonamiento Lógico\",\"Aptitud Verbal\"]', NULL, 'Universidad de Lima evalúa aptitudes generales. Énfasis en razonamiento lógico-matemático y comprensión lectora. Poca o ninguna presencia de ciencias o historia. Examen moderadamente difícil, accesible con preparación en razonamiento.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(44, 'Universidad Científica del Sur', 'privada', 'CIENTIFICA', 'Lima', 3, 3, 3, 3, 3, 2, 20, 20, 25, 25, 10, 50, 90, 'selección múltiple', 0, 'ciencias de la salud, analítico moderado', '[\"Biología\",\"Química\",\"Física\",\"Matemática\",\"Razonamiento Verbal\",\"Razonamiento Lógico\"]', NULL, 'Científica del Sur es reconocida en salud. Su examen equilibra ciencias con razonamiento. Biología y Química son prioritarias para carreras de salud. Dificultad moderada, accesible con buena base científica.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(45, 'Universidad Peruana de Ciencias Aplicadas', 'privada', 'UPC', 'Lima', 3, 3, 3, 3, 2, 1, 30, 25, 30, 10, 5, 50, 90, 'aptitudes + conocimientos básicos', 0, 'aptitudes, moderado, tecnología y negocios', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Comprensión Lectora\",\"Lógica\",\"Matemática Básica\"]', NULL, 'UPC evalúa aptitudes y conocimientos básicos. Orientada a tecnología, negocios e ingenierías. Examen accesible, enfocado en razonamiento. No evalúa Historia ni temas memorísticos. Muy flexible en admisión.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(46, 'Universidad San Ignacio de Loyola', 'privada', 'USIL', 'Lima', 2, 2, 3, 3, 1, 1, 20, 30, 30, 10, 10, 40, 60, 'aptitudes', 0, 'aptitudes gerenciales, hotelería, negocios', '[\"Razonamiento Verbal\",\"Comprensión Lectora\",\"Razonamiento Matemático\",\"Lógica\"]', NULL, 'USIL evalúa aptitudes básicas para negocios, gastronomía y hotelería. Examen accesible, sin materias difíciles de ciencias. Énfasis en comunicación y razonamiento práctico. Ideal para carreras empresariales y servicios.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(47, 'Universidad de Ciencias y Artes de América Latina', 'privada', 'UCAL', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(48, 'Universidad de Ingeniería y Tecnología', 'privada', 'UTEC', 'Lima', 4, 5, 2, 5, 4, 1, 40, 10, 30, 20, 0, 60, 120, 'aptitudes STEM', 0, 'altamente técnico, STEM, ingenierías avanzadas', '[\"Cálculo\",\"Álgebra Lineal\",\"Física\",\"Química\",\"Razonamiento Matemático\",\"Lógica\"]', NULL, 'UTEC es la universidad de ingeniería más exigente del sector privado. Evalúa principalmente matemáticas y ciencias al nivel de primer ciclo universitario. Historia y Verbal prácticamente ausentes. Muy similar a UNI en dificultad matemática. Proceso altamente selectivo.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(49, 'Universidad de San Martín de Porres', 'privada', 'USMP', 'Lima', 3, 3, 3, 3, 3, 2, 20, 20, 25, 25, 10, 80, 150, 'selección múltiple', 0, 'generalista, ciencias de la salud y derecho', '[\"Biología\",\"Química\",\"Razonamiento Verbal\",\"Matemática\",\"Física\",\"Anatomía Básica\"]', NULL, 'USMP tiene examen equilibrado con énfasis en ciencias para carreras de salud. Medicina y Odontología son muy competitivas. Derecho requiere buen verbal. Dificultad moderada con buena distribución de materias.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(50, 'Universidad Peruana Cayetano Heredia', 'privada', 'UPCH', 'Lima', 5, 3, 4, 4, 5, 2, 15, 20, 20, 40, 5, 100, 180, 'selección múltiple - ciencias de la salud', 0, 'ciencias básicas profundas, salud, analítico', '[\"Biología Celular\",\"Química Orgánica\",\"Física\",\"Anatomía\",\"Bioquímica\",\"Matemática\",\"Comprensión Lectora\"]', NULL, 'Cayetano Heredia es LA universidad de ciencias de la salud del Perú. Su examen es el más exigente en ciencias biológicas y químicas. Biología avanzada (celular, genética) y Química Orgánica son determinantes. Solo para carreras de salud. Altamente competitivo.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(51, 'Universidad Alas Peruanas', 'privada', 'UAP', 'Lima', 2, 2, 3, 2, 2, 2, 20, 25, 25, 15, 15, 50, 90, 'selección múltiple', 0, 'generalista, accesible', '[\"Razonamiento Verbal\",\"Razonamiento Matemático\",\"Historia\",\"Lógica\",\"Biología\"]', NULL, 'Alas Peruanas tiene examen accesible y generalista. Sin especialización excesiva. Buena opción para estudiantes que buscan ingreso con menor competencia. Abarca todas las materias de forma superficial.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(52, 'Universidad Inca Garcilaso de la Vega', 'privada', 'UIGV', 'Lima', 2, 2, 3, 2, 2, 2, 20, 25, 25, 15, 15, 50, 90, 'selección múltiple', 0, 'generalista, humanístico', '[\"Razonamiento Verbal\",\"Historia\",\"Razonamiento Matemático\",\"Lógica\",\"Psicología Básica\"]', NULL, 'Inca Garcilaso tiene énfasis en humanidades y ciencias sociales. Examen accesible con buen componente verbal e histórico. Reconocida en Derecho y Psicología. Moderada dificultad.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(53, 'Universidad César Vallejo', 'privada', 'UCV', 'Lima', 2, 2, 3, 2, 2, 2, 20, 25, 25, 15, 15, 50, 90, 'selección múltiple', 0, 'generalista, masivo', '[\"Razonamiento Verbal\",\"Razonamiento Matemático\",\"Historia\",\"Biología\",\"Lógica\"]', NULL, 'César Vallejo es la universidad más grande del Perú por número de alumnos. Examen accesible, generalista. Proceso de admisión con varias modalidades. Sin especialización en el examen. Buena presencia en todas las regiones.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(54, 'Universidad Señor de Sipán', 'privada', 'USS', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(55, 'Universidad Privada Antenor Orrego', 'privada', 'UPAO', 'Lima', 3, 3, 3, 3, 3, 2, 25, 20, 25, 20, 10, 60, 120, 'selección múltiple', 0, 'moderado, norte del Perú, ciencias y humanidades', '[\"Matemática\",\"Biología\",\"Razonamiento Verbal\",\"Química\",\"Física\",\"Historia\"]', NULL, 'UPAO es referente del norte peruano. Examen equilibrado con buena cobertura de ciencias y humanidades. Competitiva en Medicina, Derecho e Ingenierías en la región La Libertad.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(56, 'Universidad Privada del Norte', 'privada', 'UPN', 'Lima', 2, 3, 3, 3, 2, 1, 25, 25, 30, 15, 5, 50, 90, 'aptitudes + conocimientos', 0, 'razonamiento, negocios, tecnología', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Comprensión Lectora\",\"Lógica\"]', NULL, 'UPN es la contraparte norteña de UPC. Evalúa aptitudes con énfasis en razonamiento. Orientada a negocios, administración e ingenierías. Examen accesible con múltiples fechas de proceso. Sin contenido memorístico heavy.', 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(57, 'Universidad Católica Los Ángeles de Chimbote', 'privada', 'ULADECH', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(58, 'Universidad Católica Sedes Sapientiae', 'privada', 'UCSS', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(59, 'Universidad Antonio Ruiz de Montoya', 'privada', 'UARM', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(60, 'Universidad de Piura', 'privada', 'UDEP', 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-17 03:13:31', '2026-03-12 21:50:39'),
(61, 'Universidad Católica Santo Toribio de Mogrovejo', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(62, 'Universidad Católica San Pablo', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(63, 'Universidad Andina del Cusco', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(64, 'Universidad Andina Néstor Cáceres Velásquez', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(65, 'Universidad Privada de Tacna', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(66, 'Universidad José Carlos Mariátegui', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(67, 'Universidad Peruana Los Andes', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(68, 'Universidad Privada San Juan Bautista', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(69, 'Universidad de Ciencias y Humanidades', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(70, 'Universidad Femenina del Sagrado Corazón', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(71, 'Universidad Peruana Unión', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(72, 'Universidad Norbert Wiener', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(73, 'Universidad Tecnológica del Perú', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(74, 'Universidad Continental', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(75, 'Universidad Le Cordon Bleu', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(76, 'Universidad Privada Leonardo Da Vinci', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(77, 'Universidad Autónoma de Ica', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(78, 'Universidad Privada del Centro del Perú', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(79, 'Universidad Católica de Santa María', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(80, 'Universidad Autónoma del Perú', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(81, 'Universidad Telesup', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(82, 'Universidad Científica del Perú', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(83, 'Universidad Peruana de las Américas', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(84, 'Universidad SISE', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(85, 'Universidad Privada Guillermo Urrelo', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(86, 'Universidad Peruana del Oriente', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(87, 'Universidad Interamericana para el Desarrollo', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(88, 'Universidad Hispanoamericana', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(89, 'Universidad Privada de Sullana', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(90, 'Universidad Privada Juan Pablo II', 'privada', NULL, 'Lima', 3, 3, 3, 3, 2, 2, 25, 20, 20, 20, 15, 50, 120, 'selección múltiple', 0, 'analítico, contextualizado', NULL, NULL, NULL, 1, '2026-05-14 18:30:32', '2026-03-12 21:50:39'),
(91, 'Universidad Nacional de Ingeniería (UNI)', 'pública', 'UNI', 'Lima', 5, 5, 3, 5, 4, 1, 35, 10, 30, 20, 5, 100, 180, 'selección múltiple', 0, 'muy analítico, abstracto, con problemas de ingeniería aplicada', '[\"Aritmética\",\"Álgebra\",\"Geometría\",\"Trigonometría\",\"Física\",\"Química\",\"Razonamiento Matemático\",\"Razonamiento Verbal\"]', NULL, 'El examen de la UNI es extremadamente matemático y lógico. Evalúa capacidad de abstracción y resolución de problemas complejos en múltiples pasos. Las preguntas de razonamiento matemático son el corazón del examen.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(92, 'Universidad Nacional Mayor de San Marcos (UNMSM)', 'pública', 'UNMSM', 'Lima', 4, 4, 4, 4, 4, 3, 25, 20, 20, 20, 15, 100, 180, 'selección múltiple', 0, 'enciclopédico, equilibrado, alta memoria y análisis', '[\"Razonamiento Verbal\",\"Razonamiento Matemático\",\"Historia del Perú\",\"Geografía\",\"Biología\",\"Química\",\"Física\"]', NULL, 'San Marcos evalúa de forma equilibrada todas las áreas. Alta exigencia en comprensión lectora, historia peruana y ciencias. Requiere amplio dominio enciclopédico además de análisis.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(93, 'Universidad Nacional de Trujillo (UNT)', 'pública', 'UNT', 'Trujillo', 3, 3, 4, 3, 3, 3, 20, 25, 20, 20, 15, 80, 150, 'selección múltiple', 0, 'analítico-verbal, enfoque norteño, ciencias sociales', '[\"Comprensión Lectora\",\"Razonamiento Verbal\",\"Matemática\",\"Historia del Perú\",\"Geografía\"]', NULL, 'Examen con fuerte énfasis en comprensión lectora y ciencias sociales. Menor peso matemático que UNI/UNMSM.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(94, 'Universidad Nacional de San Agustín (UNSA)', 'pública', 'UNSA', 'Arequipa', 4, 4, 4, 4, 3, 3, 25, 20, 20, 18, 17, 100, 180, 'selección múltiple', 0, 'analítico, equilibrado, con fuerte base científica', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Física\",\"Química\",\"Biología\",\"Historia\"]', NULL, 'Segunda universidad nacional más competitiva. Examen muy similar en estructura a UNMSM pero con mayor peso en ciencias para carreras de salud.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(95, 'Universidad del Callao (UNAC)', 'pública', 'UNAC', 'Callao', 3, 4, 3, 4, 3, 2, 30, 15, 25, 20, 10, 80, 150, 'selección múltiple', 0, 'técnico-científico, enfoque ingenieril', '[\"Matemática\",\"Física\",\"Razonamiento Lógico\",\"Química\",\"Lenguaje\"]', NULL, 'Orientada a ciencias e ingeniería. Menor peso en humanidades que en UNMSM.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(96, 'Universidad Nacional Federico Villarreal (UNFV)', 'pública', 'UNFV', 'Lima', 3, 3, 3, 3, 3, 3, 22, 22, 20, 18, 18, 80, 150, 'selección múltiple', 0, 'equilibrado, memorístico-analítico', '[\"Razonamiento Verbal\",\"Razonamiento Matemático\",\"Historia\",\"Geografía\",\"Biología\"]', NULL, 'Examen equilibrado con énfasis en razonamiento y ciencias sociales.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(97, 'Universidad Nacional de Piura (UNP)', 'pública', 'UNP', 'Piura', 3, 3, 3, 3, 3, 3, 20, 22, 20, 20, 18, 80, 150, 'selección múltiple', 0, 'equilibrado, enfoque regional', '[\"Razonamiento Verbal\",\"Matemática\",\"Historia del Perú\",\"Geografía del Perú\",\"Ciencias\"]', NULL, 'Examen con fuerte componente regional. Incluye preguntas sobre historia y geografía del norte del Perú.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(98, 'Pontificia Universidad Católica del Perú (PUCP)', 'privada', 'PUCP', 'Lima', 4, 4, 5, 4, 3, 2, 20, 30, 25, 15, 10, 60, 120, 'selección múltiple', 0, 'analítico-verbal, pensamiento crítico, argumentación', '[\"Comprensión Lectora\",\"Razonamiento Verbal\",\"Matemática\",\"Razonamiento Abstracto\",\"Aptitud Académica\"]', NULL, 'La PUCP evalúa aptitud académica general con énfasis en comprensión lectora y pensamiento analítico. Las preguntas son complejas en razonamiento pero no memorísticas. Valoriza el análisis sobre la memoria.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(99, 'Universidad de Lima (UL)', 'privada', 'ULIMA', 'Lima', 3, 4, 4, 4, 2, 1, 25, 25, 30, 15, 5, 60, 120, 'selección múltiple', 0, 'razonamiento abstracto, aptitud académica', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Razonamiento Abstracto\",\"Aptitud Numérica\"]', NULL, 'Evalúa principalmente aptitud académica: razonamiento abstracto y numérico. Poca memorización, mucha lógica.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(100, 'Universidad Peruana Cayetano Heredia (UPCH)', 'privada', 'UPCH', 'Lima', 5, 4, 4, 4, 5, 2, 20, 20, 20, 30, 10, 100, 180, 'selección múltiple', 0, 'científico-biomédico, alta precisión en ciencias de la salud', '[\"Biología\",\"Química\",\"Física\",\"Matemática\",\"Comprensión Lectora\",\"Historia de la Medicina\"]', NULL, 'Una de las universidades de medicina más exigentes del Perú. Máxima exigencia en biología y química. Evalúa comprensión de textos científicos.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(101, 'Universidad San Ignacio de Loyola (USIL)', 'privada', 'USIL', 'Lima', 2, 3, 3, 3, 2, 1, 25, 30, 25, 15, 5, 50, 90, 'selección múltiple', 0, 'aptitud académica general, enfoque empresarial', '[\"Razonamiento Verbal\",\"Razonamiento Matemático\",\"Inglés\",\"Aptitud Numérica\"]', NULL, 'Evaluación de aptitud académica orientada a negocios y emprendimiento. Incluye prueba de inglés básico.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(102, 'Universidad Tecnológica del Perú (UTP)', 'privada', 'UTP', 'Lima', 2, 3, 2, 3, 2, 1, 30, 20, 30, 15, 5, 40, 90, 'selección múltiple', 0, 'técnico-práctico, razonamiento aplicado', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Aptitud Numérica\"]', NULL, 'Enfocada en habilidades técnicas y emprendimiento. Evaluación de acceso con énfasis en razonamiento.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(103, 'Universidad César Vallejo (UCV)', 'privada', 'UCV', 'Trujillo', 2, 2, 3, 2, 2, 2, 20, 30, 25, 15, 10, 40, 90, 'selección múltiple', 0, 'comprensión lectora, razonamiento básico', '[\"Comprensión Lectora\",\"Razonamiento Verbal\",\"Matemática Básica\"]', NULL, 'Examen de admisión de nivel intermedio. Mayor peso en comprensión lectora.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(104, 'Universidad Privada del Norte (UPN)', 'privada', 'UPN', 'Trujillo', 2, 3, 3, 3, 2, 1, 25, 30, 25, 15, 5, 40, 90, 'selección múltiple', 0, 'aptitud empresarial, razonamiento aplicado', '[\"Razonamiento Matemático\",\"Comprensión Lectora\",\"Razonamiento Lógico\"]', NULL, 'Orientada a negocios. Evalúa aptitud cuantitativa y verbal con nivel intermedio.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(105, 'Universidad Científica del Sur (UCSUR)', 'privada', 'UCSUR', 'Lima', 3, 3, 3, 3, 4, 2, 20, 20, 20, 30, 10, 60, 120, 'selección múltiple', 0, 'científico, énfasis en salud y medio ambiente', '[\"Biología\",\"Química\",\"Razonamiento Matemático\",\"Comprensión Lectora\",\"Física\"]', NULL, 'Universidad con fuerte perfil en ciencias de la salud y medio ambiente.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32'),
(106, 'Universidad Peruana de Ciencias Aplicadas (UPC)', 'privada', 'UPC', 'Lima', 3, 4, 4, 4, 2, 1, 30, 25, 30, 10, 5, 50, 90, 'selección múltiple', 0, 'razonamiento abstracto y numérico, aptitud tecnológica', '[\"Razonamiento Matemático\",\"Razonamiento Verbal\",\"Razonamiento Abstracto\",\"Aptitud Numérica\"]', NULL, 'Evaluación de aptitud académica con énfasis en habilidades analíticas. Incluye razonamiento abstracto y numérico.', 1, '2026-05-14 18:30:32', '2026-05-14 18:30:32');

-- --------------------------------------------------------

--
-- Table structure for table `usuarios`
--

CREATE TABLE `usuarios` (
  `id` int(11) NOT NULL,
  `nombre` varchar(150) NOT NULL,
  `email` varchar(150) NOT NULL,
  `clave_hash` varchar(255) NOT NULL,
  `rol` enum('superadmin','admin','coordinador','docente','psicologo','alumno') NOT NULL DEFAULT 'alumno',
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp(),
  `colegio_id` int(11) DEFAULT NULL,
  `created_by_admin` int(11) DEFAULT NULL,
  `estado` varchar(50) DEFAULT 'Activo',
  `plan_id` int(11) DEFAULT NULL COMMENT 'Plan asignado',
  `creditos_actuales` int(11) NOT NULL DEFAULT 0,
  `creditos_usados_mes` int(11) DEFAULT 0 COMMENT 'Créditos gastados este mes',
  `fecha_renovacion` date DEFAULT NULL COMMENT 'Próxima renovación mensual',
  `limite_activo` tinyint(1) DEFAULT 1 COMMENT '1=bloquear si sin créditos'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `usuarios`
--

INSERT INTO `usuarios` (`id`, `nombre`, `email`, `clave_hash`, `rol`, `creado_en`, `colegio_id`, `created_by_admin`, `estado`, `plan_id`, `creditos_actuales`, `creditos_usados_mes`, `fecha_renovacion`, `limite_activo`) VALUES
(14, 'Administrador', 'admin@example.com', '$2y$10$9w7HaJLwb5YrRX9C7Vxrs.XFZ9AZpPC.K/c2kPOWJCxG.rVwNg2RK', 'admin', '2026-03-06 05:04:17', 81, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(17, 'juana', 'luxianavellaverde@gmail.com', '$2y$10$k5e/5bqWHhOVyc6fUtf.CeHKBWR6Je2z3/9.GyCv5LjJYAQm.EaHG', 'admin', '2026-03-10 16:57:35', 81, NULL, 'Activo', NULL, 160, 140, NULL, 1),
(43, 'Super Admin', 'superadmin@prealtum.pe', '$2y$12$Q.BHctfATMYPtCYACtSiB.6CwcJYaXcHO25lvh8f3KovCPlPPOhQ.', 'superadmin', '2026-05-08 00:54:32', NULL, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(75, 'Admin I.E.  LOPEX  ALIGA', 'admin@YAMILE.prealtum.pe', '$2y$10$4k.Cgip6E6weqz6I.WJ7becNWDC.zaKT0vRpQNXKWxW1gznsQRQP2', 'admin', '2026-05-09 18:55:35', 84, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(76, 'Admin I.E.  SJJS', 'admin@JUANA.prealtum.pe', '$2y$10$dh2A49dph6iIBbHvwAxMnuXTjpThF482yX9uMIxHggkuXBHyF/mGK', 'admin', '2026-05-09 19:16:28', 85, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(77, 'Admin I.E. jauna', 'admin77@juana.prealtum.pe', '$2y$10$PRs3NzaeMuJLhgyKzxpps.Sf4NI/H6vPFkLBROpjTV8WYAtw5Euli', 'admin', '2026-05-10 22:35:40', 88, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(80, 'Admin I.E. osijdoisd', 'admin74@juana.prealtum.pe', '$2y$10$x8Ae6SCTQBtSfho7uL4P.uG/.UsQeBE9Nn/9vUZfYnHtyoTZdk6nC', 'admin', '2026-05-11 04:09:12', 90, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(81, 'Admin I.E. SSSSSSSSSSSSS', 'admin@DIATAS.prealtum.pe', '$2y$10$U/XX6ONTJ0FVdclNBBfN6.yJG0V4KLRkGUqOMVueLjUSe0vu1sbnW', 'admin', '2026-05-18 04:03:34', 91, NULL, 'Activo', NULL, 100, 0, NULL, 1),
(84, 'Admin I.E. los olvoips', 'admin@olivos.prealtum.pe', '$2y$10$9kWHsfVj20uB7J2EohT7XemPvopdrej97TvSwBqa9u4TvTuLpMTTa', 'admin', '2026-05-21 18:45:04', 92, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(85, 'Admin I.E. los olvoips', 'admin48@olivos.prealtum.pe', '$2y$10$BKvTD1nVhAbyKGC7BCP5i.qNrNeuAFbETAl4C7ONa9lVJX.aBxUO6', 'admin', '2026-05-21 18:45:07', 93, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(86, 'Admin I.E. los olvoips', 'admin47@olivos.prealtum.pe', '$2y$10$qxJdFLdPKReVw9cQ4uSygeSxVKtLhz8PxjLvH7Sh6PFFFSN2Gy9Ru', 'admin', '2026-05-21 18:45:09', 94, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(87, 'Admin I.E. los olvoips', 'admin30@olivos.prealtum.pe', '$2y$10$hBB9Thd/BftIBm9l1n/t.unoSxbK3SXBNt1yxpMNccESOCwctAjm.', 'admin', '2026-05-21 18:45:11', 95, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(88, 'Admin I.E. los olvoips', 'admin35@olivos.prealtum.pe', '$2y$10$VoO8.M6vymxEGiji.jykDu0ISA2QwP8bHQzRjCAL2YvqDr29qvlOe', 'admin', '2026-05-21 18:45:13', 96, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(89, 'Admin I.E. los olvoips', 'admin24@olivos.prealtum.pe', '$2y$10$0p2t.i7wPiK7Xg0UPzZxWed0nSb4.F.ePpjjWr8Lkie.643rhHULG', 'admin', '2026-05-21 18:45:16', 97, NULL, 'Activo', NULL, 0, 0, NULL, 1),
(90, 'Admin I.E. los olvoips', 'admin59@olivos.prealtum.pe', '$2y$10$qj0TiAPErqO.nMcX4yi2UOkboCKC7SC.Gzo0FI6vXUZqUz1cSuX4e', 'admin', '2026-05-21 18:45:17', 98, NULL, 'Activo', 4, 3050, 0, '2026-06-21', 1),
(91, 'Admin I.E. los olvoips', 'admin21@olivos.prealtum.pe', '$2y$10$GrSmHaTKR6t2XymiFChv0OlxxEE4fhaRBMfcJBD2i6MSS5F4L0gky', 'admin', '2026-05-21 18:48:50', 99, NULL, 'Activo', 4, 5000, 0, '2026-06-21', 1),
(92, 'Admin I.E. juana', 'admin@juanaaaa.prealtum.pe', '$2y$10$N1A8JgpeuYlBwbpt9/r/Uu2YaLIlr0h4ATHAyopoM.9ZyS7omc3.W', 'admin', '2026-05-21 19:03:13', 100, NULL, 'Activo', 2, 270, 30, '2026-06-21', 1),
(93, 'Admin I.E. sjhgsuabg', 'admin@jauna.prealtum.pe', '$2y$10$G4Csg85HyYrr8dJeNyaGIeBMZ5bmorysnoeR6NBArXkU1ZdIOi48u', 'admin', '2026-05-21 19:27:15', 101, NULL, 'Activo', 3, 1000, 0, '2026-06-21', 1),
(94, 'aaa aaa', 'aaaaa@BLASSED.prealtum.pe', '$2y$10$KSG21c4iBcoDEjp37IoHVOYNK0h2VHkGBym/4Rdf5YDFj8k8osZ6K', 'alumno', '2026-05-26 18:46:06', 81, 17, 'Activo', NULL, 0, 0, NULL, 1),
(95, 'betty elena santa maria arrollo', 'mentorbetty@BLASSED.prealtum.pe', '$2y$10$H0WVMjwR5I.Dru5hV6ueMOT48QvkDpJtaFSeIbql7Opm.L47aMg52', 'docente', '2026-06-04 03:56:04', 81, 17, 'Activo', NULL, 0, 0, NULL, 1);

-- --------------------------------------------------------

--
-- Table structure for table `verificacion_facial`
--

CREATE TABLE `verificacion_facial` (
  `id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `colegio_id` int(11) DEFAULT NULL COMMENT 'Tenant',
  `embedding` longtext NOT NULL COMMENT 'Array JSON del embedding facial (128 floats)',
  `imagen_referencia` mediumtext DEFAULT NULL,
  `estado` enum('activo','inactivo') DEFAULT 'activo',
  `creado_en` datetime DEFAULT current_timestamp(),
  `actualizado_en` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `reseteado_en` datetime DEFAULT NULL COMMENT 'Fecha en que admin reseteó el registro',
  `reseteado_por` int(11) DEFAULT NULL COMMENT 'ID del usuario admin que autorizó el reseteo'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `verificacion_facial`
--

INSERT INTO `verificacion_facial` (`id`, `alumno_id`, `colegio_id`, `embedding`, `imagen_referencia`, `estado`, `creado_en`, `actualizado_en`, `reseteado_en`, `reseteado_por`) VALUES
(15, 52, NULL, '[-0.05067066475749016,-0.02349589392542839,0.07667569071054459,-0.003707790281623602,-0.1260102093219757,-0.0027542226016521454,-0.049447353929281235,-0.12599489092826843,0.14280541241168976,-0.1285817176103592,0.2055312544107437,-0.027247684076428413,-0.17632819712162018,0.07458741962909698,-0.06689626723527908,0.16228534281253815,-0.10891854017972946,-0.16009360551834106,-0.0991826206445694,0.010474227368831635,-0.005378229543566704,-0.03136685863137245,0.04263007640838623,0.09734565019607544,-0.13284775614738464,-0.328777939081192,-0.1337604820728302,-0.14978323876857758,0.030787453055381775,-0.009194225072860718,-0.08151886612176895,0.022678136825561523,-0.21756936609745026,-0.03361768275499344,0.034797072410583496,0.04372457414865494,-0.01051286980509758,-0.05557877942919731,0.18310809135437012,0.0009822763968259096,-0.25667279958724976,0.040067825466394424,0.05787073075771332,0.18776263296604156,0.14400368928909302,0.10248725861310959,0.0580320842564106,-0.150728240609169,0.0666198655962944,-0.19498997926712036,0.11413070559501648,0.14033421874046326,0.052433863282203674,0.1171734631061554,0.012121740728616714,-0.1148276999592781,0.08812011033296585,0.14238286018371582,-0.16488155722618103,0.06151745095849037,0.09036970138549805,0.018275700509548187,0.030691897496581078,-0.05810701474547386,0.33836203813552856,0.12675587832927704,-0.1203036829829216,-0.1207265630364418,0.13175569474697113,-0.17009849846363068,-0.07908622175455093,0.029255960136651993,-0.1665458232164383,-0.16300739347934723,-0.2968485653400421,0.006067534442991018,0.4651661515235901,0.14682085812091827,-0.16539648175239563,0.11448165774345398,-0.1444924771785736,-0.006812901236116886,0.07978182286024094,0.11498968303203583,-0.014299539849162102,0.03332602232694626,-0.024494919925928116,-0.018993224948644638,0.2420112043619156,-0.020237112417817116,0.03665204346179962,0.2160571813583374,-0.030841538682579994,-0.01034070085734129,0.04135598987340927,0.06833286583423615,-0.1110614463686943,-0.04663700610399246,-0.11574752628803253,-0.05683037266135216,-0.05678359419107437,0.07531881332397461,0.024306530132889748,0.07382599264383316,-0.22807414829730988,0.13349881768226624,-0.05233471468091011,-0.018122659996151924,0.05442459508776665,0.05076582357287407,-0.07170194387435913,-0.10879914462566376,0.1261473298072815,-0.28108617663383484,0.19451095163822174,0.11900264769792557,0.05074766278266907,0.10602793097496033,0.07609587162733078,0.10971297323703766,-0.05185113474726677,0.008418899029493332,-0.2131795436143875,-0.015411773696541786,0.1413695365190506,-0.07126043736934662,0.0808606818318367,0.044051237404346466]', 'data:image/jpeg;base64,[encoded data, 45412 characters]', 'activo', '2026-05-18 00:18:09', '2026-05-18 00:18:09', NULL, NULL);
INSERT INTO `verificacion_facial` (`id`, `alumno_id`, `colegio_id`, `embedding`, `imagen_referencia`, `estado`, `creado_en`, `actualizado_en`, `reseteado_en`, `reseteado_por`) VALUES
(17, 53, NULL, '[-0.05543331056833267,0.004445880185812712,0.05664961785078049,0.002543870359659195,-0.11884757876396179,-0.024009810760617256,-0.046463970094919205,-0.12974593043327332,0.1609993577003479,-0.11957167834043503,0.1886145919561386,-0.026465393602848053,-0.17799510061740875,0.09198742359876633,-0.06004621833562851,0.1332794427871704,-0.09392348676919937,-0.15559373795986176,-0.11581359058618546,-0.012294622138142586,-0.0017471922328695655,-0.027915269136428833,0.04527167230844498,0.10729468613862991,-0.13538464903831482,-0.32682937383651733,-0.1285470724105835,-0.1338181495666504,0.025564931333065033,-0.026339367032051086,-0.05604138970375061,0.018062015995383263,-0.24133014678955078,-0.0731179341673851,0.05035841092467308,0.042035430669784546,0.001122483634389937,-0.059864748269319534,0.17980638146400452,-0.009738310240209103,-0.2465304434299469,0.014942656271159649,0.0823364108800888,0.20021897554397583,0.12691761553287506,0.10240951925516129,0.04536708816885948,-0.14487001299858093,0.05084496736526489,-0.18930013477802277,0.11448156088590622,0.12495028227567673,0.03792983666062355,0.12525293231010437,0.005644609685987234,-0.12591247260570526,0.07347371429204941,0.1498812437057495,-0.19286677241325378,0.053781986236572266,0.09480395913124084,0.00514853885397315,-0.004032725468277931,-0.07257144898176193,0.34964731335639954,0.14611640572547913,-0.12594187259674072,-0.12756219506263733,0.1226050928235054,-0.19020819664001465,-0.048891108483076096,0.04527579993009567,-0.12261208146810532,-0.16593505442142487,-0.2642769515514374,0.015522201545536518,0.46507635712623596,0.15192213654518127,-0.16174474358558655,0.10210021585226059,-0.16308321058750153,-0.019710510969161987,0.05357438698410988,0.10288501530885696,-0.004620899446308613,0.06309042870998383,0.0007697067921981215,-0.013094508089125156,0.2386474460363388,0.008686120621860027,0.024731362238526344,0.22034724056720734,-0.031262338161468506,-0.04605688527226448,0.05887758731842041,0.07415647059679031,-0.14252987504005432,-0.06461688131093979,-0.13189861178398132,-0.06856850534677505,-0.06735162436962128,0.05936640501022339,0.016943171620368958,0.05617103353142738,-0.23352877795696259,0.14499443769454956,-0.043569352477788925,-0.04383740574121475,0.05090177059173584,0.04564095661044121,-0.062020327895879745,-0.13015051186084747,0.13124845921993256,-0.3078644871711731,0.18831658363342285,0.10185860842466354,0.04825485870242119,0.15081046521663666,0.04713328927755356,0.12729158997535706,-0.0313272662460804,0.011976853013038635,-0.17971272766590118,-0.03331807255744934,0.1319291889667511,-0.06970275938510895,0.09462505578994751,0.023225311189889908]', 'data:image/jpeg;base64,[encoded data, 51528 characters]', 'activo', '2026-05-19 01:26:57', '2026-05-19 01:26:57', NULL, NULL);
INSERT INTO `verificacion_facial` (`id`, `alumno_id`, `colegio_id`, `embedding`, `imagen_referencia`, `estado`, `creado_en`, `actualizado_en`, `reseteado_en`, `reseteado_por`) VALUES
(18, 54, NULL, '[-0.10000885277986526,0.057882197201251984,0.08619489520788193,-0.06305655837059021,-0.10919106751680374,-0.010380481369793415,-0.03819369524717331,-0.09809357672929764,0.19916027784347534,-0.11603789776563644,0.23709097504615784,0.010389665141701698,-0.18531116843223572,0.033477816730737686,-0.020149068906903267,0.2042156308889389,-0.11797565966844559,-0.1424165964126587,-0.10271943360567093,-0.018973268568515778,0.001862836885266006,-0.004491742234677076,0.12416965514421463,0.10291539132595062,-0.14854902029037476,-0.3872312903404236,-0.13387665152549744,-0.14789842069149017,-0.024472393095493317,-0.03657892346382141,-0.01923709362745285,-0.013470674864947796,-0.2201068252325058,-0.03908577933907509,0.02843964658677578,0.048733022063970566,-0.017515521496534348,-0.09413177520036697,0.201593816280365,-0.005208391696214676,-0.23851199448108673,-0.02655474655330181,0.06477009505033493,0.2037166804075241,0.10851072520017624,0.07183060795068741,0.09271681308746338,-0.13080887496471405,0.038225967437028885,-0.15340039134025574,0.10494937747716904,0.10373898595571518,0.005116625223308802,0.0830327495932579,0.040642715990543365,-0.09511436522006989,0.09514185786247253,0.14335086941719055,-0.1705128252506256,0.008369174785912037,0.05330634117126465,-0.007096346002072096,-0.04036615416407585,-0.06634601205587387,0.29207643866539,0.13862240314483643,-0.10357337445020676,-0.1190466359257698,0.14835436642169952,-0.1324656754732132,-0.03925466537475586,0.036035750061273575,-0.17186392843723297,-0.18538489937782288,-0.27552127838134766,-0.03458475321531296,0.44393089413642883,0.12837807834148407,-0.18633097410202026,0.06243966519832611,-0.1304793655872345,0.0009954371489584446,0.0572984553873539,0.15026558935642242,0.016623808071017265,0.03667864575982094,-0.0478774718940258,0.019293736666440964,0.19516544044017792,-0.04967793449759483,0.03388560563325882,0.23310767114162445,0.00585005572065711,-0.034572940319776535,0.027817297726869583,0.08682321757078171,-0.11986508220434189,-0.003545008134096861,-0.09694907069206238,-0.031030520796775818,-0.026966260746121407,0.059610750526189804,-0.01429741270840168,0.05377570167183876,-0.2546016573905945,0.11747143417596817,0.0014415140030905604,-0.05179889500141144,0.051779624074697495,0.0812860056757927,-0.0402999185025692,-0.1843077391386032,0.10917868465185165,-0.2595023512840271,0.1377454698085785,0.1967242956161499,-0.054272331297397614,0.17392459511756897,0.015463977120816708,0.17499974370002747,-0.04299042373895645,-0.0022079176269471645,-0.19392988085746765,-0.020382359623908997,0.07962837815284729,-0.018198871985077858,0.04241103306412697,0.038304127752780914]', 'data:image/jpeg;base64,[encoded data, 33916 characters]', 'activo', '2026-05-28 12:55:25', '2026-05-28 12:55:25', NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `verificacion_sesiones`
--

CREATE TABLE `verificacion_sesiones` (
  `id` int(11) NOT NULL,
  `alumno_id` int(11) NOT NULL,
  `session_token` varchar(64) NOT NULL,
  `verificado_en` datetime DEFAULT current_timestamp(),
  `expira_en` datetime NOT NULL,
  `ip_address` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `verificacion_sesiones`
--

INSERT INTO `verificacion_sesiones` (`id`, `alumno_id`, `session_token`, `verificado_en`, `expira_en`, `ip_address`) VALUES
(1, 3, '9c35172cece1be6e6dd49da1ac18cf11b7c86aef3a94cb1495e494fcd62c685c', '2026-04-25 13:11:19', '2026-04-26 04:11:19', '::1'),
(2, 3, 'd3dec4765df9ca5f06d43dfb1a2845a89b80add1056243bf451876de5ed994cb', '2026-04-25 13:11:29', '2026-04-26 04:11:29', '::1'),
(3, 3, 'fcc2697d06c7f2b69886737c7cd68a919a3f764ebed63dae14c6640d48d70b9d', '2026-04-25 13:13:03', '2026-04-26 04:13:03', '::1'),
(4, 13, '954f7f19fc9ab3afde8cb0cb3c6f2eaabd5d19ce58c51dfb9b62bdd443c18b57', '2026-04-25 13:18:04', '2026-04-26 04:18:04', '::1'),
(5, 11, '0f635b5c9a1c7e06c6b7c878fef1f14b8691c15a21361486d7d1712972643df6', '2026-04-25 13:26:20', '2026-04-26 04:26:20', '::1'),
(6, 1, 'fd280833185e8417c0017173e24d9966801943d6953e79fdc85dc881af542960', '2026-04-25 14:24:10', '2026-04-26 05:24:10', '::1'),
(7, 37, '75be32932a29c9ac5fc40960cb52f212f065a5a4900a615f0ca6064f3d79831b', '2026-04-25 15:35:57', '2026-04-26 06:35:57', '::1'),
(8, 38, '3686080d357aeb9cc75e17e2852b8125a24bf218984d400ff19dd1f7fbbece63', '2026-04-26 14:32:58', '2026-04-27 05:32:58', '::1'),
(9, 38, 'd95ccd7306c535590033a3169a22d6c4733278d800f5afa58208a2f4ea7e9cdf', '2026-04-26 14:33:19', '2026-04-27 05:33:19', '::1'),
(10, 15, '21c3af485409bb43cab692a2732af04825cd44e857e13ce831ca2b213d62e505', '2026-04-26 15:02:42', '2026-04-27 06:02:42', '::1'),
(11, 1, '5e2224874d5129d778d049b37d02a723e22cc83f341b29a04ae9ab4d2c322a6b', '2026-04-26 18:39:21', '2026-04-27 09:39:21', '::1'),
(12, 1, 'eb66f0f36058d8a87f3394897efa972527e61f351c051078dd16a32128349de6', '2026-04-27 22:46:56', '2026-04-28 13:46:56', '::1'),
(13, 40, 'da34ee6ab1ada1e78a089f48e88b310f9cc1c2020d9ea414f584974fa1bef48b', '2026-04-28 11:21:39', '2026-04-29 02:21:39', '::1'),
(14, 40, '53272efff1981a0097d1459973c8d61d3b9aa8bdf5b711853a2b7ce951adc03e', '2026-04-28 11:22:07', '2026-04-29 02:22:07', '::1'),
(15, 40, '9f924ba20797a5820571d61c487fd6efde12e275bdef09f4f631a5dc8b36f5d7', '2026-04-28 11:24:44', '2026-04-29 02:24:44', '::1'),
(16, 1, '925246f5721594797dad2ba65c33ecc94d6455847b9f18541e4212bd3d82b256', '2026-04-28 11:37:52', '2026-04-29 02:37:52', '::1'),
(17, 38, 'ab3f5b67856f2d9f01e2b6edc80e62588f52617f6880218a25feb49b5de4fd0c', '2026-04-28 11:38:58', '2026-04-29 02:38:58', '::1'),
(18, 1, 'efa43b246767988e41de36e0bde053f872003b7d96cd9e37743223944308af59', '2026-05-14 11:46:34', '2026-05-15 02:46:34', '::1'),
(19, 11, '998582fed6778ae15a229e8d660eb33d5e4769e9185cc46545b5f320ca9e245e', '2026-05-17 16:46:52', '2026-05-18 07:46:52', '::1'),
(20, 52, 'a7ca1f64b44dae376b153098db71c7bfb1bc900628b267827d8bcfff33059b84', '2026-05-18 00:18:09', '2026-05-18 15:18:09', '::1'),
(21, 15, '0cd5bbb4b919270f541b76032c4c7dcbfe5f47b419a7e5a4cb5523f169aaef70', '2026-05-19 01:18:18', '2026-05-19 16:18:18', '::1'),
(22, 53, 'c95eee1040123dde660e022ac353438441ea1e625be2ee57db2d210c0c11ee96', '2026-05-19 01:26:57', '2026-05-19 16:26:57', '::1'),
(23, 54, '83b9d3ccb1bed5b7cd5c54ce3280e5681054de6814aab1959c1ab2afbd83a8e3', '2026-05-28 12:55:25', '2026-05-29 03:55:25', '::1');

-- --------------------------------------------------------

--
-- Table structure for table `videos`
--

CREATE TABLE `videos` (
  `id` int(11) NOT NULL,
  `titulo` varchar(255) DEFAULT NULL,
  `url` text DEFAULT NULL,
  `area_id` int(11) DEFAULT NULL,
  `carrera_id` int(11) DEFAULT NULL,
  `nivel_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `videos_educativos`
--

CREATE TABLE `videos_educativos` (
  `id` int(11) NOT NULL,
  `colegio_id` int(11) DEFAULT NULL,
  `titulo` varchar(255) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `url_video` varchar(255) NOT NULL,
  `miniatura_url` varchar(255) DEFAULT NULL,
  `area_id` int(11) DEFAULT NULL,
  `duracion_min` int(11) DEFAULT NULL,
  `creado_en` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `videos_educativos`
--

INSERT INTO `videos_educativos` (`id`, `colegio_id`, `titulo`, `descripcion`, `url_video`, `miniatura_url`, `area_id`, `duracion_min`, `creado_en`) VALUES
(1, NULL, 'Introducción al Álgebra', 'Conceptos básicos de álgebra, variables y ecuaciones.', 'https://www.youtube.com/watch?v=_6uyQISZvBc', NULL, 1, 15, '2026-03-24 19:40:36'),
(2, NULL, 'Fotosíntesis Explicada', 'El proceso de la fotosíntesis en las plantas.', 'https://www.youtube.com/watch?v=3pD-x1s-wYI', NULL, 2, 10, '2026-03-24 19:40:36'),
(3, NULL, 'La Primera Guerra Mundial', 'Causas, desarrollo y consecuencias del conflicto.', 'https://www.youtube.com/watch?v=3H4uK9K2R2c', NULL, 4, 25, '2026-03-24 19:40:36'),
(4, NULL, 'Análisis de \"Cien Años de Soledad\"', 'Un resumen y análisis de la obra de García Márquez.', 'https://www.youtube.com/watch?v=sBAqF00gXv4', NULL, 3, 18, '2026-03-24 19:40:36'),
(5, NULL, 'Fundamentos de Física: Leyes de Newton', 'Explicación de las tres leyes del movimiento de Newton.', 'https://www.youtube.com/watch?v=1xrc2_i88oA', NULL, 1, 20, '2026-03-24 19:40:36');

-- --------------------------------------------------------

--
-- Stand-in structure for view `vista_admin_asistencia_hoy`
-- (See below for the actual view)
--
CREATE TABLE `vista_admin_asistencia_hoy` (
`asignatura` varchar(150)
,`dia_semana` varchar(20)
,`hora_inicio` time
,`hora_fin` time
,`aula` varchar(100)
,`total_alumnos` bigint(21)
,`presentes` bigint(21)
,`tardanzas` bigint(21)
,`ausentes` bigint(21)
,`sin_registro` bigint(21)
,`pct_asistencia` decimal(25,1)
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `vista_horario_con_asistencia`
-- (See below for the actual view)
--
CREATE TABLE `vista_horario_con_asistencia` (
`horario_id` int(11)
,`alumno_id` int(11)
,`asignatura` varchar(150)
,`dia_semana` varchar(20)
,`hora_inicio` time
,`hora_fin` time
,`aula` varchar(100)
,`color_hex` varchar(20)
,`tipo` enum('clase','video','simulacro','recuperacion')
,`nivel_requerido` enum('alto','medio','bajo')
,`asistencia_id` int(11)
,`asistencia_estado` enum('presente','tardanza','ausente','excused')
,`hora_registro` time
,`fecha_asistencia` date
,`estado_display` varchar(9)
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `v_ranking_foro`
-- (See below for the actual view)
--
CREATE TABLE `v_ranking_foro` (
`id` int(11)
,`alias` varchar(40)
,`avatar_color` varchar(7)
,`avatar_emoji` varchar(10)
,`xp` int(11)
,`nivel` tinyint(4)
,`racha_dias` int(11)
,`temporada_xp` int(11)
,`total_hilos` bigint(21)
,`total_respuestas` bigint(21)
,`mejores_respuestas` bigint(21)
);

-- --------------------------------------------------------

--
-- Structure for view `perfil_universidad_ia`
--

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `perfil_universidad_ia`  AS SELECT `u`.`id` AS `id`, `u`.`nombre` AS `nombre`, `u`.`siglas` AS `siglas`, `u`.`ciudad` AS `ciudad`, `u`.`tipo_gestion` AS `tipo_gestion`, `u`.`dificultad` AS `dificultad`, `u`.`nivel_matematico` AS `nivel_matematico`, `u`.`nivel_verbal` AS `nivel_verbal`, `u`.`nivel_logico` AS `nivel_logico`, `u`.`nivel_ciencias` AS `nivel_ciencias`, `u`.`nivel_historia` AS `nivel_historia`, `u`.`peso_matematica` AS `peso_matematica`, `u`.`peso_verbal` AS `peso_verbal`, `u`.`peso_razonamiento` AS `peso_razonamiento`, `u`.`peso_ciencias` AS `peso_ciencias`, `u`.`peso_historia` AS `peso_historia`, `u`.`peso_matematica`+ `u`.`peso_verbal` + `u`.`peso_razonamiento` + `u`.`peso_ciencias` + `u`.`peso_historia` AS `total_pesos`, `u`.`total_preguntas` AS `total_preguntas`, `u`.`tiempo_minutos` AS `tiempo_minutos`, `u`.`tipo_examen` AS `tipo_examen`, `u`.`penalizacion_error` AS `penalizacion_error`, `u`.`estilo_preguntas` AS `estilo_preguntas`, `u`.`cursos_prioritarios` AS `cursos_prioritarios`, `u`.`areas_excluidas` AS `areas_excluidas`, `u`.`descripcion_ia` AS `descripcion_ia`, `u`.`activa` AS `activa`, count(distinct `c`.`id`) AS `total_carreras` FROM (`universidades` `u` left join `carreras` `c` on(`c`.`universidad_id` = `u`.`id`)) WHERE `u`.`activa` = 1 GROUP BY `u`.`id` ;

-- --------------------------------------------------------

--
-- Structure for view `vista_admin_asistencia_hoy`
--

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vista_admin_asistencia_hoy`  AS SELECT `h`.`asignatura` AS `asignatura`, `h`.`dia_semana` AS `dia_semana`, `h`.`hora_inicio` AS `hora_inicio`, `h`.`hora_fin` AS `hora_fin`, `h`.`aula` AS `aula`, count(distinct `h`.`alumno_id`) AS `total_alumnos`, count(distinct case when `a`.`estado` = 'presente' then `a`.`alumno_id` end) AS `presentes`, count(distinct case when `a`.`estado` = 'tardanza' then `a`.`alumno_id` end) AS `tardanzas`, count(distinct case when `a`.`estado` = 'ausente' then `a`.`alumno_id` end) AS `ausentes`, count(distinct case when `a`.`id` is null then `h`.`alumno_id` end) AS `sin_registro`, round(count(distinct case when `a`.`estado` = 'presente' then `a`.`alumno_id` end) * 100.0 / nullif(count(distinct `h`.`alumno_id`),0),1) AS `pct_asistencia` FROM (`horarios` `h` left join `asistencia` `a` on(`a`.`alumno_id` = `h`.`alumno_id` and `a`.`fecha` = curdate())) WHERE `h`.`activo` = 1 AND `h`.`dia_semana` = dayname(curdate()) GROUP BY `h`.`asignatura`, `h`.`dia_semana`, `h`.`hora_inicio`, `h`.`hora_fin`, `h`.`aula` ORDER BY `h`.`hora_inicio` ASC ;

-- --------------------------------------------------------

--
-- Structure for view `vista_horario_con_asistencia`
--

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vista_horario_con_asistencia`  AS SELECT `h`.`id` AS `horario_id`, `h`.`alumno_id` AS `alumno_id`, `h`.`asignatura` AS `asignatura`, `h`.`dia_semana` AS `dia_semana`, `h`.`hora_inicio` AS `hora_inicio`, `h`.`hora_fin` AS `hora_fin`, `h`.`aula` AS `aula`, `h`.`color_hex` AS `color_hex`, `h`.`tipo` AS `tipo`, `h`.`nivel_requerido` AS `nivel_requerido`, `a`.`id` AS `asistencia_id`, `a`.`estado` AS `asistencia_estado`, `a`.`hora` AS `hora_registro`, `a`.`fecha` AS `fecha_asistencia`, CASE WHEN `a`.`id` is not null THEN `a`.`estado` WHEN `h`.`dia_semana` = dayname(curdate()) AND curtime() > `h`.`hora_fin` THEN 'ausente' WHEN `h`.`dia_semana` = dayname(curdate()) AND curtime() between `h`.`hora_inicio` and `h`.`hora_fin` THEN 'en_curso' ELSE 'pendiente' END AS `estado_display` FROM (`horarios` `h` left join `asistencia` `a` on(`a`.`alumno_id` = `h`.`alumno_id` and `a`.`curso_id` = `h`.`curso_id` and `a`.`fecha` = curdate())) WHERE `h`.`activo` = 1 ;

-- --------------------------------------------------------

--
-- Structure for view `v_ranking_foro`
--

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_ranking_foro`  AS SELECT `fp`.`id` AS `id`, `fp`.`alias` AS `alias`, `fp`.`avatar_color` AS `avatar_color`, `fp`.`avatar_emoji` AS `avatar_emoji`, `fp`.`xp` AS `xp`, `fp`.`nivel` AS `nivel`, `fp`.`racha_dias` AS `racha_dias`, `fp`.`temporada_xp` AS `temporada_xp`, coalesce(`ht`.`total_hilos`,0) AS `total_hilos`, coalesce(`rp`.`total_respuestas`,0) AS `total_respuestas`, coalesce(`mr`.`mejores_respuestas`,0) AS `mejores_respuestas` FROM (((`foro_perfiles` `fp` left join (select `foro_hilos`.`perfil_id` AS `perfil_id`,count(0) AS `total_hilos` from `foro_hilos` where `foro_hilos`.`eliminado` = 0 group by `foro_hilos`.`perfil_id`) `ht` on(`ht`.`perfil_id` = `fp`.`id`)) left join (select `foro_respuestas`.`perfil_id` AS `perfil_id`,count(0) AS `total_respuestas` from `foro_respuestas` where `foro_respuestas`.`eliminado` = 0 group by `foro_respuestas`.`perfil_id`) `rp` on(`rp`.`perfil_id` = `fp`.`id`)) left join (select `foro_respuestas`.`perfil_id` AS `perfil_id`,count(0) AS `mejores_respuestas` from `foro_respuestas` where `foro_respuestas`.`es_mejor` = 1 and `foro_respuestas`.`eliminado` = 0 group by `foro_respuestas`.`perfil_id`) `mr` on(`mr`.`perfil_id` = `fp`.`id`)) WHERE `fp`.`baneado` = 0 ORDER BY `fp`.`temporada_xp` DESC, `fp`.`xp` DESC ;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `alertas`
--
ALTER TABLE `alertas`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_alertas_alumno` (`alumno_id`);

--
-- Indexes for table `alumnos`
--
ALTER TABLE `alumnos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `colegio_id` (`colegio_id`),
  ADD KEY `carrera_objetivo_id` (`carrera_objetivo_id`),
  ADD KEY `usuario_id` (`usuario_id`),
  ADD KEY `fk_alumno_univ_obj` (`universidad_objetivo_id`),
  ADD KEY `idx_alumnos_colegio_estado` (`colegio_id`,`estado`),
  ADD KEY `idx_alumnos_colegio` (`colegio_id`),
  ADD KEY `fk_alumnos_created_by_admin` (`created_by_admin`);

--
-- Indexes for table `alumno_logros`
--
ALTER TABLE `alumno_logros`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `alumno_id` (`alumno_id`,`logro_id`),
  ADD KEY `logro_id` (`logro_id`),
  ADD KEY `idx_alumno_logros_colegio` (`colegio_id`);

--
-- Indexes for table `anuncios`
--
ALTER TABLE `anuncios`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `activo` (`activo`),
  ADD KEY `idx_anuncios_colegio` (`colegio_id`);

--
-- Indexes for table `anuncios_diagnosticos`
--
ALTER TABLE `anuncios_diagnosticos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `colegio_id` (`colegio_id`);

--
-- Indexes for table `areas_academicas`
--
ALTER TABLE `areas_academicas`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `nombre` (`nombre`);

--
-- Indexes for table `asistencia`
--
ALTER TABLE `asistencia`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_asis_alumno` (`alumno_id`),
  ADD KEY `idx_asistencia_colegio` (`colegio_id`);

--
-- Indexes for table `asistencia_historial`
--
ALTER TABLE `asistencia_historial`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_asistencia_historial_asistencia` (`asistencia_id`),
  ADD KEY `idx_asistencia_historial_alumno` (`alumno_id`),
  ADD KEY `idx_asistencia_historial_admin` (`admin_id`),
  ADD KEY `idx_asistencia_historial_accion` (`accion`),
  ADD KEY `idx_asistencia_hist_colegio` (`colegio_id`);

--
-- Indexes for table `biblioteca_digital`
--
ALTER TABLE `biblioteca_digital`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `cache_ia_peticiones`
--
ALTER TABLE `cache_ia_peticiones`
  ADD PRIMARY KEY (`hash_peticion`);

--
-- Indexes for table `calificaciones`
--
ALTER TABLE `calificaciones`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `docente_id` (`docente_id`),
  ADD KEY `idx_calificaciones_colegio` (`colegio_id`);

--
-- Indexes for table `carreras`
--
ALTER TABLE `carreras`
  ADD PRIMARY KEY (`id`),
  ADD KEY `universidad_id` (`universidad_id`);

--
-- Indexes for table `chat_escribiendo`
--
ALTER TABLE `chat_escribiendo`
  ADD PRIMARY KEY (`usuario_id`,`destinatario_id`);

--
-- Indexes for table `chat_grupos`
--
ALTER TABLE `chat_grupos`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `chat_grupo_miembros`
--
ALTER TABLE `chat_grupo_miembros`
  ADD PRIMARY KEY (`grupo_id`,`usuario_id`);

--
-- Indexes for table `colegios`
--
ALTER TABLE `colegios`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `configuracion`
--
ALTER TABLE `configuracion`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_config_clave` (`clave`);

--
-- Indexes for table `configuracion_creditos`
--
ALTER TABLE `configuracion_creditos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `accion` (`accion`);

--
-- Indexes for table `config_reportes_ia`
--
ALTER TABLE `config_reportes_ia`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `convocatorias_admision`
--
ALTER TABLE `convocatorias_admision`
  ADD PRIMARY KEY (`id`),
  ADD KEY `carrera_id` (`carrera_id`);

--
-- Indexes for table `creditos_movimientos`
--
ALTER TABLE `creditos_movimientos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_usuario` (`usuario_id`),
  ADD KEY `idx_colegio` (`colegio_id`),
  ADD KEY `idx_fecha` (`fecha`);

--
-- Indexes for table `cursos`
--
ALTER TABLE `cursos`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `docente_alumno`
--
ALTER TABLE `docente_alumno`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unico_asignacion` (`docente_id`,`alumno_id`,`colegio_id`,`curso`),
  ADD KEY `idx_docente` (`docente_id`),
  ADD KEY `idx_alumno` (`alumno_id`),
  ADD KEY `idx_colegio` (`colegio_id`);

--
-- Indexes for table `examenes`
--
ALTER TABLE `examenes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `carrera_id` (`carrera_id`),
  ADD KEY `idx_examenes_colegio` (`colegio_id`);

--
-- Indexes for table `examen_preguntas`
--
ALTER TABLE `examen_preguntas`
  ADD PRIMARY KEY (`examen_id`,`pregunta_id`),
  ADD KEY `pregunta_id` (`pregunta_id`);

--
-- Indexes for table `foro_admins`
--
ALTER TABLE `foro_admins`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email` (`email`);

--
-- Indexes for table `foro_badges_secretos`
--
ALTER TABLE `foro_badges_secretos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_badge` (`perfil_id`,`codigo`);

--
-- Indexes for table `foro_categorias`
--
ALTER TABLE `foro_categorias`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `foro_hilos`
--
ALTER TABLE `foro_hilos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `categoria_id` (`categoria_id`),
  ADD KEY `perfil_id` (`perfil_id`);
ALTER TABLE `foro_hilos` ADD FULLTEXT KEY `ft_hilo` (`titulo`,`contenido`);

--
-- Indexes for table `foro_logros`
--
ALTER TABLE `foro_logros`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `foro_logros_alumno`
--
ALTER TABLE `foro_logros_alumno`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_logro` (`perfil_id`,`logro_id`),
  ADD UNIQUE KEY `uq_perfil_logro` (`perfil_id`,`logro_id`),
  ADD KEY `logro_id` (`logro_id`);

--
-- Indexes for table `foro_notificaciones`
--
ALTER TABLE `foro_notificaciones`
  ADD PRIMARY KEY (`id`),
  ADD KEY `perfil_id` (`perfil_id`);

--
-- Indexes for table `foro_perfiles`
--
ALTER TABLE `foro_perfiles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `alias` (`alias`),
  ADD UNIQUE KEY `uq_usuario` (`usuario_id`);

--
-- Indexes for table `foro_ranking_mensual`
--
ALTER TABLE `foro_ranking_mensual`
  ADD PRIMARY KEY (`id`),
  ADD KEY `fk_rm_temporada` (`temporada_id`),
  ADD KEY `fk_rm_perfil` (`perfil_id`);

--
-- Indexes for table `foro_reacciones`
--
ALTER TABLE `foro_reacciones`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_reaccion` (`perfil_id`,`hilo_id`,`emoji`),
  ADD KEY `hilo_id` (`hilo_id`);

--
-- Indexes for table `foro_reportes`
--
ALTER TABLE `foro_reportes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `perfil_id` (`perfil_id`);

--
-- Indexes for table `foro_respuestas`
--
ALTER TABLE `foro_respuestas`
  ADD PRIMARY KEY (`id`),
  ADD KEY `hilo_id` (`hilo_id`),
  ADD KEY `perfil_id` (`perfil_id`),
  ADD KEY `padre_id` (`padre_id`);

--
-- Indexes for table `foro_temporadas`
--
ALTER TABLE `foro_temporadas`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `foro_usuarios_ext`
--
ALTER TABLE `foro_usuarios_ext`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `sis_id` (`sis_id`);

--
-- Indexes for table `foro_votos`
--
ALTER TABLE `foro_votos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_voto` (`perfil_id`,`tipo`,`item_id`);

--
-- Indexes for table `foro_xp_log`
--
ALTER TABLE `foro_xp_log`
  ADD PRIMARY KEY (`id`),
  ADD KEY `perfil_id` (`perfil_id`);

--
-- Indexes for table `historial_asignaciones`
--
ALTER TABLE `historial_asignaciones`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `historial_envios_reportes`
--
ALTER TABLE `historial_envios_reportes`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `horarios`
--
ALTER TABLE `horarios`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_horarios_curso` (`curso_id`),
  ADD KEY `idx_horarios_docente` (`docente_id`),
  ADD KEY `idx_horarios_dia` (`dia_semana`),
  ADD KEY `idx_horarios_activo` (`activo`),
  ADD KEY `idx_horarios_colegio` (`colegio_id`);

--
-- Indexes for table `intentos`
--
ALTER TABLE `intentos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `examen_id` (`examen_id`),
  ADD KEY `idx_intentos_colegio` (`colegio_id`),
  ADD KEY `idx_intentos_alumno_colegio` (`alumno_id`,`colegio_id`);

--
-- Indexes for table `intentos_simulacro_carrera`
--
ALTER TABLE `intentos_simulacro_carrera`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `simulacro_id` (`simulacro_id`),
  ADD KEY `idx_isc_colegio` (`colegio_id`);

--
-- Indexes for table `intentos_simulacro_ia`
--
ALTER TABLE `intentos_simulacro_ia`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_isia_alumno` (`alumno_id`),
  ADD KEY `idx_isia_uni` (`universidad_id`),
  ADD KEY `cache_id` (`cache_id`);

--
-- Indexes for table `logros`
--
ALTER TABLE `logros`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `nombre` (`nombre`);

--
-- Indexes for table `matriculas`
--
ALTER TABLE `matriculas`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email` (`email`),
  ADD KEY `usuario_id` (`usuario_id`),
  ADD KEY `colegio_id` (`colegio_id`),
  ADD KEY `carrera_objetivo_id` (`carrera_objetivo_id`);

--
-- Indexes for table `mensajes`
--
ALTER TABLE `mensajes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_mensajes_colegio` (`colegio_id`);

--
-- Indexes for table `mensajes_motivacionales`
--
ALTER TABLE `mensajes_motivacionales`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `metas_alumno`
--
ALTER TABLE `metas_alumno`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `completada` (`completada`),
  ADD KEY `idx_metas_colegio` (`colegio_id`);

--
-- Indexes for table `nivel_rendimiento`
--
ALTER TABLE `nivel_rendimiento`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`);

--
-- Indexes for table `notificaciones`
--
ALTER TABLE `notificaciones`
  ADD PRIMARY KEY (`id`),
  ADD KEY `usuario_id` (`usuario_id`),
  ADD KEY `idx_notificaciones_colegio` (`colegio_id`);

--
-- Indexes for table `observaciones_docentes`
--
ALTER TABLE `observaciones_docentes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_obs_alumno` (`alumno_id`),
  ADD KEY `idx_obs_docente` (`docente_id`);

--
-- Indexes for table `packs_creditos`
--
ALTER TABLE `packs_creditos`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `participaciones`
--
ALTER TABLE `participaciones`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_part_alumno` (`alumno_id`),
  ADD KEY `idx_part_colegio` (`colegio_id`);

--
-- Indexes for table `planes`
--
ALTER TABLE `planes`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `planes_creditos`
--
ALTER TABLE `planes_creditos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `slug` (`slug`);

--
-- Indexes for table `planes_estudio`
--
ALTER TABLE `planes_estudio`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `idx_planes_colegio` (`colegio_id`);

--
-- Indexes for table `plantillas_horario`
--
ALTER TABLE `plantillas_horario`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `plan_tareas`
--
ALTER TABLE `plan_tareas`
  ADD PRIMARY KEY (`id`),
  ADD KEY `plan_id` (`plan_id`);

--
-- Indexes for table `predicciones_ingreso`
--
ALTER TABLE `predicciones_ingreso`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `idx_pi_colegio` (`colegio_id`);

--
-- Indexes for table `preguntas`
--
ALTER TABLE `preguntas`
  ADD PRIMARY KEY (`id`),
  ADD KEY `area_id` (`area_id`),
  ADD KEY `idx_preguntas_colegio` (`colegio_id`);

--
-- Indexes for table `preguntas_ia_meta`
--
ALTER TABLE `preguntas_ia_meta`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_pregunta` (`pregunta_id`),
  ADD KEY `idx_pool` (`universidad_id`,`carrera_id`,`area_nombre`,`dificultad`);

--
-- Indexes for table `proctoring_eventos`
--
ALTER TABLE `proctoring_eventos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_pe_alumno` (`alumno_id`),
  ADD KEY `idx_pe_intento` (`intento_id`),
  ADD KEY `idx_proct_colegio` (`colegio_id`);

--
-- Indexes for table `puntajes_historicos`
--
ALTER TABLE `puntajes_historicos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `carrera_id` (`carrera_id`);

--
-- Indexes for table `ranking_institucional`
--
ALTER TABLE `ranking_institucional`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `registros_conducta`
--
ALTER TABLE `registros_conducta`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_cond_alumno` (`alumno_id`),
  ADD KEY `idx_cond_colegio` (`colegio_id`);

--
-- Indexes for table `reportes_incidencias`
--
ALTER TABLE `reportes_incidencias`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `reportes_pdf`
--
ALTER TABLE `reportes_pdf`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_rep_pdf_colegio` (`colegio_id`);

--
-- Indexes for table `reset_facial_solicitudes`
--
ALTER TABLE `reset_facial_solicitudes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_reset_facial_alumno` (`alumno_id`),
  ADD KEY `idx_reset_facial_estado` (`estado`),
  ADD KEY `idx_reset_facial_revisado_por` (`revisado_por`);

--
-- Indexes for table `respuestas_intento`
--
ALTER TABLE `respuestas_intento`
  ADD PRIMARY KEY (`id`),
  ADD KEY `intento_id` (`intento_id`),
  ADD KEY `pregunta_id` (`pregunta_id`),
  ADD KEY `idx_ri_intento` (`intento_id`),
  ADD KEY `idx_respuestas_colegio` (`colegio_id`);

--
-- Indexes for table `resultados_vocacionales`
--
ALTER TABLE `resultados_vocacionales`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `intento_id` (`intento_id`),
  ADD KEY `idx_alumno` (`alumno_id`),
  ADD KEY `idx_creado` (`creado_en`),
  ADD KEY `idx_rv_colegio` (`colegio_id`);

--
-- Indexes for table `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `nombre` (`nombre`);

--
-- Indexes for table `saas_planes`
--
ALTER TABLE `saas_planes`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `schools`
--
ALTER TABLE `schools`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `simulacros`
--
ALTER TABLE `simulacros`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `simulacros_carrera`
--
ALTER TABLE `simulacros_carrera`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `simulacros_ia_cache`
--
ALTER TABLE `simulacros_ia_cache`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_cache_key` (`cache_key`),
  ADD KEY `idx_cache_alumno` (`alumno_id`),
  ADD KEY `idx_cache_uni` (`universidad_id`);

--
-- Indexes for table `simulacro_intentos`
--
ALTER TABLE `simulacro_intentos`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `simulacro_preguntas`
--
ALTER TABLE `simulacro_preguntas`
  ADD PRIMARY KEY (`simulacro_id`,`pregunta_id`);

--
-- Indexes for table `tareas`
--
ALTER TABLE `tareas`
  ADD PRIMARY KEY (`id`),
  ADD KEY `carrera_id` (`carrera_id`),
  ADD KEY `docente_id` (`docente_id`),
  ADD KEY `idx_tareas_colegio` (`colegio_id`);

--
-- Indexes for table `tareas_alumnos`
--
ALTER TABLE `tareas_alumnos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `tarea_id` (`tarea_id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `idx_tareas_alumnos_colegio` (`colegio_id`);

--
-- Indexes for table `universidades`
--
ALTER TABLE `universidades`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_universidades_dificultad` (`dificultad`),
  ADD KEY `idx_universidades_tipo` (`tipo_gestion`),
  ADD KEY `idx_universidades_activa` (`activa`);

--
-- Indexes for table `usuarios`
--
ALTER TABLE `usuarios`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email` (`email`),
  ADD KEY `idx_usuarios_colegio_rol` (`colegio_id`,`rol`),
  ADD KEY `idx_usuarios_colegio` (`colegio_id`),
  ADD KEY `fk_usuarios_created_by_admin` (`created_by_admin`);

--
-- Indexes for table `verificacion_facial`
--
ALTER TABLE `verificacion_facial`
  ADD PRIMARY KEY (`id`),
  ADD KEY `alumno_id` (`alumno_id`),
  ADD KEY `idx_vf_colegio` (`colegio_id`);

--
-- Indexes for table `verificacion_sesiones`
--
ALTER TABLE `verificacion_sesiones`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uk_token` (`session_token`),
  ADD KEY `idx_vs_alumno` (`alumno_id`),
  ADD KEY `idx_vs_expira` (`expira_en`);

--
-- Indexes for table `videos`
--
ALTER TABLE `videos`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `videos_educativos`
--
ALTER TABLE `videos_educativos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `area_id` (`area_id`),
  ADD KEY `idx_videos_edu_colegio` (`colegio_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `alertas`
--
ALTER TABLE `alertas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `alumnos`
--
ALTER TABLE `alumnos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=55;

--
-- AUTO_INCREMENT for table `alumno_logros`
--
ALTER TABLE `alumno_logros`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT for table `anuncios`
--
ALTER TABLE `anuncios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22;

--
-- AUTO_INCREMENT for table `anuncios_diagnosticos`
--
ALTER TABLE `anuncios_diagnosticos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `areas_academicas`
--
ALTER TABLE `areas_academicas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `asistencia`
--
ALTER TABLE `asistencia`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=411;

--
-- AUTO_INCREMENT for table `asistencia_historial`
--
ALTER TABLE `asistencia_historial`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=339;

--
-- AUTO_INCREMENT for table `biblioteca_digital`
--
ALTER TABLE `biblioteca_digital`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `calificaciones`
--
ALTER TABLE `calificaciones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `carreras`
--
ALTER TABLE `carreras`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=52;

--
-- AUTO_INCREMENT for table `chat_grupos`
--
ALTER TABLE `chat_grupos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `colegios`
--
ALTER TABLE `colegios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=102;

--
-- AUTO_INCREMENT for table `configuracion`
--
ALTER TABLE `configuracion`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `configuracion_creditos`
--
ALTER TABLE `configuracion_creditos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=38;

--
-- AUTO_INCREMENT for table `config_reportes_ia`
--
ALTER TABLE `config_reportes_ia`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `convocatorias_admision`
--
ALTER TABLE `convocatorias_admision`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=103;

--
-- AUTO_INCREMENT for table `creditos_movimientos`
--
ALTER TABLE `creditos_movimientos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;

--
-- AUTO_INCREMENT for table `cursos`
--
ALTER TABLE `cursos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `docente_alumno`
--
ALTER TABLE `docente_alumno`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=28;

--
-- AUTO_INCREMENT for table `examenes`
--
ALTER TABLE `examenes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `foro_admins`
--
ALTER TABLE `foro_admins`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `foro_badges_secretos`
--
ALTER TABLE `foro_badges_secretos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `foro_categorias`
--
ALTER TABLE `foro_categorias`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=53;

--
-- AUTO_INCREMENT for table `foro_hilos`
--
ALTER TABLE `foro_hilos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `foro_logros`
--
ALTER TABLE `foro_logros`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=41;

--
-- AUTO_INCREMENT for table `foro_logros_alumno`
--
ALTER TABLE `foro_logros_alumno`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `foro_notificaciones`
--
ALTER TABLE `foro_notificaciones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `foro_perfiles`
--
ALTER TABLE `foro_perfiles`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `foro_ranking_mensual`
--
ALTER TABLE `foro_ranking_mensual`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `foro_reacciones`
--
ALTER TABLE `foro_reacciones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `foro_reportes`
--
ALTER TABLE `foro_reportes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `foro_respuestas`
--
ALTER TABLE `foro_respuestas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `foro_temporadas`
--
ALTER TABLE `foro_temporadas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `foro_usuarios_ext`
--
ALTER TABLE `foro_usuarios_ext`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `foro_votos`
--
ALTER TABLE `foro_votos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `foro_xp_log`
--
ALTER TABLE `foro_xp_log`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;

--
-- AUTO_INCREMENT for table `historial_asignaciones`
--
ALTER TABLE `historial_asignaciones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=52;

--
-- AUTO_INCREMENT for table `historial_envios_reportes`
--
ALTER TABLE `historial_envios_reportes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `horarios`
--
ALTER TABLE `horarios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=662;

--
-- AUTO_INCREMENT for table `intentos`
--
ALTER TABLE `intentos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=33;

--
-- AUTO_INCREMENT for table `intentos_simulacro_carrera`
--
ALTER TABLE `intentos_simulacro_carrera`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `intentos_simulacro_ia`
--
ALTER TABLE `intentos_simulacro_ia`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `logros`
--
ALTER TABLE `logros`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT for table `matriculas`
--
ALTER TABLE `matriculas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `mensajes`
--
ALTER TABLE `mensajes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `mensajes_motivacionales`
--
ALTER TABLE `mensajes_motivacionales`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `metas_alumno`
--
ALTER TABLE `metas_alumno`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `nivel_rendimiento`
--
ALTER TABLE `nivel_rendimiento`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `notificaciones`
--
ALTER TABLE `notificaciones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=344;

--
-- AUTO_INCREMENT for table `observaciones_docentes`
--
ALTER TABLE `observaciones_docentes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `packs_creditos`
--
ALTER TABLE `packs_creditos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `participaciones`
--
ALTER TABLE `participaciones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `planes`
--
ALTER TABLE `planes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `planes_creditos`
--
ALTER TABLE `planes_creditos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `planes_estudio`
--
ALTER TABLE `planes_estudio`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `plantillas_horario`
--
ALTER TABLE `plantillas_horario`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `plan_tareas`
--
ALTER TABLE `plan_tareas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `predicciones_ingreso`
--
ALTER TABLE `predicciones_ingreso`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=205;

--
-- AUTO_INCREMENT for table `preguntas`
--
ALTER TABLE `preguntas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=154;

--
-- AUTO_INCREMENT for table `preguntas_ia_meta`
--
ALTER TABLE `preguntas_ia_meta`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=151;

--
-- AUTO_INCREMENT for table `proctoring_eventos`
--
ALTER TABLE `proctoring_eventos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=32;

--
-- AUTO_INCREMENT for table `puntajes_historicos`
--
ALTER TABLE `puntajes_historicos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=154;

--
-- AUTO_INCREMENT for table `ranking_institucional`
--
ALTER TABLE `ranking_institucional`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `registros_conducta`
--
ALTER TABLE `registros_conducta`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `reportes_incidencias`
--
ALTER TABLE `reportes_incidencias`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `reportes_pdf`
--
ALTER TABLE `reportes_pdf`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `reset_facial_solicitudes`
--
ALTER TABLE `reset_facial_solicitudes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `respuestas_intento`
--
ALTER TABLE `respuestas_intento`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `resultados_vocacionales`
--
ALTER TABLE `resultados_vocacionales`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=28;

--
-- AUTO_INCREMENT for table `roles`
--
ALTER TABLE `roles`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `saas_planes`
--
ALTER TABLE `saas_planes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `schools`
--
ALTER TABLE `schools`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `simulacros`
--
ALTER TABLE `simulacros`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;

--
-- AUTO_INCREMENT for table `simulacros_carrera`
--
ALTER TABLE `simulacros_carrera`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `simulacros_ia_cache`
--
ALTER TABLE `simulacros_ia_cache`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `simulacro_intentos`
--
ALTER TABLE `simulacro_intentos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `tareas`
--
ALTER TABLE `tareas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `tareas_alumnos`
--
ALTER TABLE `tareas_alumnos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `universidades`
--
ALTER TABLE `universidades`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=107;

--
-- AUTO_INCREMENT for table `usuarios`
--
ALTER TABLE `usuarios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=96;

--
-- AUTO_INCREMENT for table `verificacion_facial`
--
ALTER TABLE `verificacion_facial`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `verificacion_sesiones`
--
ALTER TABLE `verificacion_sesiones`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=24;

--
-- AUTO_INCREMENT for table `videos`
--
ALTER TABLE `videos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `videos_educativos`
--
ALTER TABLE `videos_educativos`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `alertas`
--
ALTER TABLE `alertas`
  ADD CONSTRAINT `fk_alertas_alumno` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `alumnos`
--
ALTER TABLE `alumnos`
  ADD CONSTRAINT `alumnos_ibfk_1` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `alumnos_ibfk_2` FOREIGN KEY (`carrera_objetivo_id`) REFERENCES `carreras` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `alumnos_ibfk_3` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `fk_alumno_univ_obj` FOREIGN KEY (`universidad_objetivo_id`) REFERENCES `universidades` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `fk_alumnos_created_by_admin` FOREIGN KEY (`created_by_admin`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `alumno_logros`
--
ALTER TABLE `alumno_logros`
  ADD CONSTRAINT `alumno_logros_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `alumno_logros_ibfk_2` FOREIGN KEY (`logro_id`) REFERENCES `logros` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `anuncios`
--
ALTER TABLE `anuncios`
  ADD CONSTRAINT `anuncios_alumno_fk` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `asistencia_historial`
--
ALTER TABLE `asistencia_historial`
  ADD CONSTRAINT `fk_asistencia_historial_admin` FOREIGN KEY (`admin_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `fk_asistencia_historial_alumno` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_asistencia_historial_asistencia` FOREIGN KEY (`asistencia_id`) REFERENCES `asistencia` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `calificaciones`
--
ALTER TABLE `calificaciones`
  ADD CONSTRAINT `calificaciones_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`),
  ADD CONSTRAINT `calificaciones_ibfk_2` FOREIGN KEY (`docente_id`) REFERENCES `usuarios` (`id`);

--
-- Constraints for table `carreras`
--
ALTER TABLE `carreras`
  ADD CONSTRAINT `carreras_ibfk_1` FOREIGN KEY (`universidad_id`) REFERENCES `universidades` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `convocatorias_admision`
--
ALTER TABLE `convocatorias_admision`
  ADD CONSTRAINT `conv_carrera_fk` FOREIGN KEY (`carrera_id`) REFERENCES `carreras` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `docente_alumno`
--
ALTER TABLE `docente_alumno`
  ADD CONSTRAINT `fk_docente_alumno_alumno` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_docente_alumno_colegio` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_docente_alumno_docente` FOREIGN KEY (`docente_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `examenes`
--
ALTER TABLE `examenes`
  ADD CONSTRAINT `examenes_ibfk_1` FOREIGN KEY (`carrera_id`) REFERENCES `carreras` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `fk_examenes_colegio` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `examen_preguntas`
--
ALTER TABLE `examen_preguntas`
  ADD CONSTRAINT `examen_preguntas_ibfk_1` FOREIGN KEY (`examen_id`) REFERENCES `examenes` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `examen_preguntas_ibfk_2` FOREIGN KEY (`pregunta_id`) REFERENCES `preguntas` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_badges_secretos`
--
ALTER TABLE `foro_badges_secretos`
  ADD CONSTRAINT `fk_bs_perfil` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_hilos`
--
ALTER TABLE `foro_hilos`
  ADD CONSTRAINT `foro_hilos_ibfk_1` FOREIGN KEY (`categoria_id`) REFERENCES `foro_categorias` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `foro_hilos_ibfk_2` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_logros_alumno`
--
ALTER TABLE `foro_logros_alumno`
  ADD CONSTRAINT `foro_logros_alumno_ibfk_1` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `foro_logros_alumno_ibfk_2` FOREIGN KEY (`logro_id`) REFERENCES `foro_logros` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_notificaciones`
--
ALTER TABLE `foro_notificaciones`
  ADD CONSTRAINT `foro_notificaciones_ibfk_1` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_perfiles`
--
ALTER TABLE `foro_perfiles`
  ADD CONSTRAINT `foro_perfiles_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_ranking_mensual`
--
ALTER TABLE `foro_ranking_mensual`
  ADD CONSTRAINT `fk_rm_perfil` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_rm_temporada` FOREIGN KEY (`temporada_id`) REFERENCES `foro_temporadas` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_reacciones`
--
ALTER TABLE `foro_reacciones`
  ADD CONSTRAINT `foro_reacciones_ibfk_1` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `foro_reacciones_ibfk_2` FOREIGN KEY (`hilo_id`) REFERENCES `foro_hilos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_reportes`
--
ALTER TABLE `foro_reportes`
  ADD CONSTRAINT `foro_reportes_ibfk_1` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_respuestas`
--
ALTER TABLE `foro_respuestas`
  ADD CONSTRAINT `foro_respuestas_ibfk_1` FOREIGN KEY (`hilo_id`) REFERENCES `foro_hilos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `foro_respuestas_ibfk_2` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `foro_respuestas_ibfk_3` FOREIGN KEY (`padre_id`) REFERENCES `foro_respuestas` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `foro_votos`
--
ALTER TABLE `foro_votos`
  ADD CONSTRAINT `foro_votos_ibfk_1` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `foro_xp_log`
--
ALTER TABLE `foro_xp_log`
  ADD CONSTRAINT `foro_xp_log_ibfk_1` FOREIGN KEY (`perfil_id`) REFERENCES `foro_perfiles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `horarios`
--
ALTER TABLE `horarios`
  ADD CONSTRAINT `fk_horarios_colegio` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `intentos`
--
ALTER TABLE `intentos`
  ADD CONSTRAINT `fk_intentos_colegio` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `intentos_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `intentos_ibfk_2` FOREIGN KEY (`examen_id`) REFERENCES `examenes` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `intentos_simulacro_carrera`
--
ALTER TABLE `intentos_simulacro_carrera`
  ADD CONSTRAINT `intentos_simulacro_carrera_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`),
  ADD CONSTRAINT `intentos_simulacro_carrera_ibfk_2` FOREIGN KEY (`simulacro_id`) REFERENCES `simulacros_carrera` (`id`);

--
-- Constraints for table `intentos_simulacro_ia`
--
ALTER TABLE `intentos_simulacro_ia`
  ADD CONSTRAINT `intentos_simulacro_ia_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `intentos_simulacro_ia_ibfk_2` FOREIGN KEY (`universidad_id`) REFERENCES `universidades` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `intentos_simulacro_ia_ibfk_3` FOREIGN KEY (`cache_id`) REFERENCES `simulacros_ia_cache` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `matriculas`
--
ALTER TABLE `matriculas`
  ADD CONSTRAINT `matriculas_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `matriculas_ibfk_2` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `matriculas_ibfk_3` FOREIGN KEY (`carrera_objetivo_id`) REFERENCES `carreras` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `metas_alumno`
--
ALTER TABLE `metas_alumno`
  ADD CONSTRAINT `metas_alumno_fk` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `nivel_rendimiento`
--
ALTER TABLE `nivel_rendimiento`
  ADD CONSTRAINT `nivel_rendimiento_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`);

--
-- Constraints for table `notificaciones`
--
ALTER TABLE `notificaciones`
  ADD CONSTRAINT `notificaciones_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `observaciones_docentes`
--
ALTER TABLE `observaciones_docentes`
  ADD CONSTRAINT `fk_obs_alumno` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_obs_docente` FOREIGN KEY (`docente_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `participaciones`
--
ALTER TABLE `participaciones`
  ADD CONSTRAINT `fk_part_alumno` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `planes_estudio`
--
ALTER TABLE `planes_estudio`
  ADD CONSTRAINT `planes_estudio_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `plan_tareas`
--
ALTER TABLE `plan_tareas`
  ADD CONSTRAINT `plan_tareas_ibfk_1` FOREIGN KEY (`plan_id`) REFERENCES `planes_estudio` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `predicciones_ingreso`
--
ALTER TABLE `predicciones_ingreso`
  ADD CONSTRAINT `predicciones_ingreso_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`);

--
-- Constraints for table `preguntas`
--
ALTER TABLE `preguntas`
  ADD CONSTRAINT `preguntas_ibfk_1` FOREIGN KEY (`area_id`) REFERENCES `areas_academicas` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `puntajes_historicos`
--
ALTER TABLE `puntajes_historicos`
  ADD CONSTRAINT `puntajes_historicos_ibfk_1` FOREIGN KEY (`carrera_id`) REFERENCES `carreras` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `registros_conducta`
--
ALTER TABLE `registros_conducta`
  ADD CONSTRAINT `fk_cond_alumno` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `respuestas_intento`
--
ALTER TABLE `respuestas_intento`
  ADD CONSTRAINT `respuestas_intento_ibfk_1` FOREIGN KEY (`intento_id`) REFERENCES `intentos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `respuestas_intento_ibfk_2` FOREIGN KEY (`pregunta_id`) REFERENCES `preguntas` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `resultados_vocacionales`
--
ALTER TABLE `resultados_vocacionales`
  ADD CONSTRAINT `resultados_vocacionales_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `resultados_vocacionales_ibfk_2` FOREIGN KEY (`intento_id`) REFERENCES `intentos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `simulacros_ia_cache`
--
ALTER TABLE `simulacros_ia_cache`
  ADD CONSTRAINT `simulacros_ia_cache_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `simulacros_ia_cache_ibfk_2` FOREIGN KEY (`universidad_id`) REFERENCES `universidades` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `tareas`
--
ALTER TABLE `tareas`
  ADD CONSTRAINT `fk_tareas_colegio` FOREIGN KEY (`colegio_id`) REFERENCES `colegios` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `tareas_ibfk_1` FOREIGN KEY (`carrera_id`) REFERENCES `carreras` (`id`),
  ADD CONSTRAINT `tareas_ibfk_2` FOREIGN KEY (`docente_id`) REFERENCES `usuarios` (`id`);

--
-- Constraints for table `tareas_alumnos`
--
ALTER TABLE `tareas_alumnos`
  ADD CONSTRAINT `tareas_alumnos_ibfk_1` FOREIGN KEY (`tarea_id`) REFERENCES `tareas` (`id`),
  ADD CONSTRAINT `tareas_alumnos_ibfk_2` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`);

--
-- Constraints for table `usuarios`
--
ALTER TABLE `usuarios`
  ADD CONSTRAINT `fk_usuarios_created_by_admin` FOREIGN KEY (`created_by_admin`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `verificacion_facial`
--
ALTER TABLE `verificacion_facial`
  ADD CONSTRAINT `verificacion_facial_ibfk_1` FOREIGN KEY (`alumno_id`) REFERENCES `alumnos` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `videos_educativos`
--
ALTER TABLE `videos_educativos`
  ADD CONSTRAINT `videos_educativos_ibfk_1` FOREIGN KEY (`area_id`) REFERENCES `areas_academicas` (`id`) ON DELETE SET NULL;
COMMIT;

