Construcción e Integración del Aula Virtual OTEC con SENCE
Este documento es la guía técnica definitiva. Todo el desarrollo se regirá por los siguientes principios, además de los ya establecidos en directrices.txt
:
<?php
// ======================================================
// SECCIÓN 1: CONFIGURACIÓN INICIAL Y SESIÓN
// ======================================================
// ...código...
// ======================================================
// SECCIÓN 2: LÓGICA DE NEGOCIO
// ======================================================
// ...código...
$ver_error = 's';
. Cuando esté activa, los scripts imprimirán en pantalla información relevante sobre su ejecución, como consultas SQL, valores de variables clave y pasos del proceso.Objetivo General: Establecer una estructura de datos definitiva, completa y coherente, que soporte tanto las funcionalidades actuales del sistema como todos los requerimientos de la API de SENCE.
Acción: Analizar las tablas existentes y proponer los siguientes cambios para alinear la base de datos con los requerimientos funcionales y de SENCE.
subtemas_curso
es_obligatorio_sence
(TINYINT(1), DEFAULT 1): Para diferenciar actividades obligatorias de las complementarias.codigo_actividad_sence
(VARCHAR(50), NULL): Para almacenar el identificador de la actividad que requiere SENCE.tipo_actividad_sence
(ENUM('sincronica', 'asincronica'), NOT NULL, DEFAULT 'asincronica'): Para clasificar la actividad según SENCE.subtemas_alumno
calificacion_contenido
(INT, NULL): Calificación de 1-7 para el contenido.calificacion_pedagogia
(INT, NULL): Calificación de 1-7 para la pedagogía del profesor.comentario_evaluacion
(TEXT, NULL): Comentario abierto del alumno sobre el subtema.calificacion
existente se usará para la evaluación general del subtema.*Asegurar que la base de datos pueda almacenar toda la granularidad de datos requerida para la operación del aula y el reporte a SENCE.
Acción: Ejecutar los scripts ALTER TABLE
para aplicar los cambios. Posteriormente, crear una `VIEW` de base de datos para simplificar las consultas de la API.
vw_sence_report_data
:
Esta vista pre-unirá la información clave para facilitar la generación del reporte.
CREATE OR REPLACE VIEW vw_sence_report_data AS
SELECT
-- Datos del Curso
cs.id AS curso_id,
cs.codigo_oferta_sence AS codigoOferta,
cs.codigo_grupo_sence AS codigoGrupo,
cs.rut_otec_sence,
cs.token_sence,
-- Datos del Alumno
a.id AS alumno_id,
a.rut AS rutAlumno,
-- (La lógica del DV se aplicará en PHP)
-- Datos de la Inscripción
i.id AS inscripcion_id,
i.nota_final AS evaluacionFinal,
-- (El estado y % avance se calcularán en PHP)
-- Datos del Módulo (Tema)
tc.id AS tema_id,
tc.codigo_modulo_sence AS codigoModulo,
-- Datos de la Actividad (Subtema)
sc.id AS subtema_id,
sc.codigo_actividad_sence AS codigoActividad,
sc.es_obligatorio_sence,
sc.tipo_actividad_sence,
sc.duracion_minutos,
-- Datos de Progreso del Alumno en el Subtema
sa.visto,
sa.tiempo_visualizacion,
sa.calificacion AS calificacion_general_subtema
FROM
cursos_sence cs
JOIN inscripciones_curso i ON cs.id = i.curso_id
JOIN alumnos a ON i.alumno_id = a.id
JOIN temas_curso tc ON cs.id = tc.curso_id
JOIN subtemas_curso sc ON tc.id = sc.tema_id
LEFT JOIN subtemas_alumno sa ON sc.id = sa.subtema_id AND a.id = sa.alumno_id
WHERE
cs.estado = 'activo' AND a.estado = 'activo';
Tener una base de datos finalizada y una vista optimizada que simplifique radicalmente el desarrollo del conector SENCE.
Objetivo General: Desarrollar las interfaces visuales y la lógica de interacción para el alumno y el profesor, asegurando una experiencia de usuario intuitiva y funcional.
aula_virtual_alumno.php
)Acción: Utilizando aula_virtual_p.php
como base, desarrollar la lógica PHP para:
temas_curso
y subtemas_curso
para construir dinámicamente el acordeón de navegación.subtemas_alumno
para mostrar el estado de progreso (íconos y porcentaje) de cada subtema en el navegador.El alumno puede navegar por todo el contenido estructurado de su curso.
Acción:
mensajes_alumno_profesor
.guarda_evaluacion.php
que recibirá los datos vía POST/AJAX para guardarlos en los campos `calificacion_*` de `subtemas_alumno`.El alumno puede comunicarse con su profesor y evaluar la calidad de los contenidos de forma efectiva.
panel_profesor.php
)Acción:
pizarra_curso
.mensajes_alumno_profesor
y escribir/guardar las respuestas.Proporcionar al profesor las herramientas para comunicarse de manera efectiva con todos los alumnos del curso.
Acción:
documentos_subtema
).Empoderar al profesor con herramientas para administrar los materiales del curso y monitorear el rendimiento de sus alumnos.
Objetivo General: Construir el módulo de software que recolecta, calcula y transmite la información del sistema a la API de SENCE.
Acción: Crear el script `sence_api_connector.php`. Su lógica será:
tiempoConectividad
, `porcentajeAvance`, `estado`).Tener un script funcional que pueda enviar un reporte completo y formateado a SENCE bajo demanda.
Acción: Ampliar el conector para que analice la respuesta de la API.
Crear un sistema de auditoría robusto para monitorear la salud de la integración y diagnosticar fallos rápidamente.
Objetivo General: Automatizar los reportes diarios y realizar las pruebas finales para un lanzamiento controlado.
Acción: Configurar un cronjob en el servidor para ejecutar `sence_api_connector.php` diariamente. El horario debe ser el especificado por SENCE, entre las 22:00 y las 00:00 hrs.
0 22 * * * /usr/bin/php /var/www/html/otec/sence_api_connector.php > /var/www/html/otec/logs/cron.log 2>&1
Garantizar el cumplimiento automático de los reportes diarios a SENCE.
Acción: Realizar una prueba completa del flujo usando los datos del curso de prueba de SENCE. Una vez validado, activar la integración para los cursos reales y monitorear los logs de ejecución durante los primeros días.
Asegurar la estabilidad y corrección de la integración en un entorno productivo.