# Fase 3 — Selector de plantillas y planificador de ritmo

## Ver una demostración

Desde la carpeta principal del proyecto:

```bash
npm run demo:planning
```

El comando muestra:

- la plantilla recomendada para una intención pedagógica;
- la razón y su puntuación;
- si la secuencia completa es válida;
- métricas de prácticas, avatar, densidad y familias;
- advertencias que deben resolverse antes de publicar.

## Selector de plantillas

La función `selectTemplates(request)` recibe el verbo, el objetivo de la pantalla y la forma del contenido. Devuelve candidatos ordenados y un estado:

- `ready`: se puede usar la recomendación;
- `split-required`: el contenido debe dividirse;
- `blocked`: falta una condición obligatoria, como el texto alternativo;
- `p2-required`: la petición necesita branching profundo y queda fuera del MVP;
- `no-match`: hay que revisar la intención pedagógica.

Reglas cubiertas: visual espacial, concepto narrado, evidencia visual, procedimiento, categorías, decisión local/verbal/acumulativa, movimiento/tiempo y evaluación con objetivos críticos.

## Planificador de ritmo

La función `planRhythm(sequence, overrides)` detecta:

- más de dos tipos iguales consecutivos;
- más de dos pantallas consecutivas de la misma familia;
- menos de tres familias en cinco pantallas;
- más de una interacción de alta carga en tres pantallas;
- ausencia de síntesis después de alta carga;
- falta de práctica recuperativa;
- exceso de quizzes;
- más de un acordeón/tabs en cinco pantallas;
- alternancia con orden de lectura ambiguo;
- CSS arbitrario por curso.

Un `override` solo desactiva una advertencia si identifica exactamente el tramo y contiene una justificación no vacía. El reporte conserva la advertencia y la justificación para auditoría.

## Verificación

```bash
npm run test --workspace @course-factory/domain
npm run check
```

La implementación está en `packages/domain/src/interactive-planning.ts` y no depende de React, del LMS ni de proveedores externos. Por eso puede ejecutarse en el editor, en el backend o en una validación previa al empaquetado.
