# Fase 4 — Empaquetador SCORM interactivo

Esta fase convierte un curso JSON válido en un único paquete SCORM 1.2 listo para subir al LMS. El ZIP incluye el runtime React estático, `course.json`, el manifest y todos los recursos locales que use el curso.

## Generar el paquete de prueba

Desde la carpeta principal del proyecto, ejecuta:

```bash
npm run build:interactive-scorm -- apps/player/src/fixtures/gallery-course.json
```

Al terminar aparecen dos archivos en `artifacts/`:

- `*-scorm12.zip`: este es el archivo que se sube a SCORM Cloud o evolCampus, sin descomprimirlo.
- `*.qa.json`: informe técnico de validación para conservar junto al ZIP.

El comando se detiene con un mensaje claro si el JSON no es válido, falta un recurso o el paquete no supera los controles.

## Ver el ZIP antes de subirlo

```bash
npm run preview:interactive-scorm -- artifacts/decisiones-con-informacion-fiable-v2026-9-1-scorm12.zip
```

Después abre `http://localhost:4174` en el navegador. Para cerrar la vista previa, vuelve a la terminal y pulsa `Ctrl+C`.

## Qué comprueba automáticamente

- El ZIP abre correctamente.
- `imsmanifest.xml` es XML válido, declara SCORM 1.2 y contiene un único SCO.
- El archivo inicial y todos los archivos declarados existen.
- `course.json` está incluido y tiene la estructura esperada.
- Todos los recursos locales referenciados están dentro del ZIP.
- No hay URLs firmadas de corta duración.
- Las 10 plantillas P0 pasan axe-core sin infracciones automáticas.
- Los breakpoints 320, 768, 1024 y 1440 px están cubiertos por pruebas.
- El ZIP no supera 100 MB, salvo que se configure otro límite.

## Usar otro curso

```bash
npm run build:interactive-scorm -- ruta/al/curso.json
```

Si los vídeos, imágenes o subtítulos no están junto al JSON ni en `apps/player/public`, indica su carpeta:

```bash
npm run build:interactive-scorm -- ruta/al/curso.json --assets-root ruta/a/los/recursos
```

Para elegir el nombre de salida o ajustar el límite de tamaño:

```bash
npm run build:interactive-scorm -- ruta/al/curso.json --out artifacts/mi-curso.zip --max-mb 500
```

## Prueba manual en el LMS

1. Entra en SCORM Cloud o evolCampus.
2. Crea o importa una actividad SCORM.
3. Selecciona el archivo `*-scorm12.zip`; no lo descomprimas.
4. Abre el curso, avanza varias pantallas, realiza una interacción y cierra la actividad.
5. Vuelve a abrirla y confirma que recupera la pantalla, el progreso y la puntuación.

El runtime registra `lesson_location`, `lesson_status`, `score.raw`, `suspend_data`, `session_time`, `exit` e interacciones mediante la API SCORM 1.2.
