Saltearse al contenido

CuratorPlan — Referencia YAML

CuratorPlan ACA Runtime

Un CuratorPlan representa una campaña de ingesta curricular de larga duración y recuperable ante fallos. No es un fichero YAML de ce-specs — es un recurso de base de datos creado por el CLI o la API REST para orquestar el pipeline del Agente Curador Autónomo (ACA).


Schema: CuratorPlan

# Representación lógica de un CuratorPlan (tabla: curator_plans)
id: uuid # Generado automáticamente (UUID v4)
name: string # Nombre legible del operador (--name en CLI)
country: string # ISO-3166-1 alpha-2: "US" | "ES" | "MX" | "GB"…
standard: string # Clave del estándar: "LOMLOE" | "AP" | "IB" | "AP_SPANISH"…
status: enum # Ver tabla de estados abajo
total_items: integer # Total de ítems descubiertos
processed_items: integer # Ítems ya procesados (DONE + FAILED + NEEDS_REVIEW)
failed_items: integer # Ítems en estado FAILED
current_stage: string # Fase activa: DISCOVER | FETCH | PARSE | INGEST
config_json: object # Configuración del operador (ver abajo)
state_json: object # Checkpoint de ejecución (uso interno del ACA)
created_by: string # Email / ID del operador CLI que creó el plan
last_heartbeat: timestamp # Última señal de vida del bucle executePlan()
created_at: timestamp
updated_at: timestamp

config_json — Claves habituales

{
"approval_gates": ["after_c0", "after_c1"],
"confidence_threshold": 0.75,
"model_config": {
"router": "gemini-2.0-flash",
"c0_model": "gemini-2.5-pro"
}
}

Estados del plan

EstadoDescripción
DRAFTCreado, aún no iniciado
RUNNINGEl orquestador está procesando ítems activamente
WAITING_REVIEWPausado en una puerta de aprobación — esperando al operador
PAUSEDEstancamiento detectado (sin heartbeat > 30 min) o pausa manual
COMPLETEDTodos los ítems procesados (DONE + NEEDS_REVIEW + FAILED)
FAILEDCancelado o error crítico irrecuperable

Schema: CuratorPlanItem

Cada documento fuente descubierto crea un CuratorPlanItem dentro de un plan.

# Representación lógica de un CuratorPlanItem (tabla: curator_plan_items)
id: uuid # Generado automáticamente
plan_id: uuid # FK → curator_plans.id
source_url: string # URI del documento fuente: http://, gs://, drive://
spec_type: string # Tipo OAS a producir: C0_STANDARDS | C1_RECIPES | C2_EXERCISES
status: enum # Ver tabla de estados abajo
confidence_score: float # 0.0–1.0 — puntuación del nodo de evaluación del Curador
attempts: integer # Número de intentos realizados
output_path: string # Ruta del YAML generado en el repositorio ce-specs
error_message: string # Último mensaje de error (ítems FAILED)
original_source_url: string # URL original antes del URL Healing (null si no aplica)
created_at: timestamp

Estados del ítem

EstadoDescripción
PENDINGEn cola, aún no procesado
PROCESSINGCuratorWorkflow ejecutándose activamente
DONEAuto-ingestado — confidence_score ≥ umbral
NEEDS_REVIEWconfidence_score < umbral — cola de revisión humana (HITL)
FAILEDError irrecuperable (PDF cifrado, timeout, error de parseo…)

spec_type — Valores válidos

ValorDescripciónCapa OAS
C0_STANDARDSRúbricas y estándares normativosC0
BLOCK_RUBRICAlias para C0 — rúbrica de evaluaciónC0
C1_RECIPESRecetas pedagógicasC1
C2_EXERCISESEjercicios con contextoC2
INTERACTIVE_LESSONLección interactiva con slidesC2
RESOURCE_LEARNINGPuntero OER anotadoC2

Creación vía CLI

Ventana de terminal
# Crear y lanzar un plan ACA completo
./ce-cli.sh --env local \
"aca plan create \
--name 'LOMLOE LCL 2º BACH — Sprint Octubre 2026' \
--country ES \
--standard LOMLOE \
--level '2 BACH' \
--subject lcl \
--gates after_c0 \
--threshold 0.80"
./ce-cli.sh --env local "aca plan start <planId>"

Creación vía REST API

POST /api/v1/aca/plans
Content-Type: application/json
{
"name": "LOMLOE LCL 2º BACH — Sprint Octubre 2026",
"country": "ES",
"standard": "LOMLOE",
"configJson": {
"approval_gates": ["after_c0"],
"confidence_threshold": 0.80
}
}

Respuesta:

{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "DRAFT",
"totalItems": 0,
"createdAt": "2026-10-01T09:00:00Z"
}

Referencia completa de endpoints REST

MétodoEndpointDescripción
POST/api/v1/aca/plansCrear plan
GET/api/v1/aca/plans/{id}Estado del plan
POST/api/v1/aca/plans/{id}/startIniciar / reanudar
POST/api/v1/aca/plans/{id}/pausePausa controlada
POST/api/v1/aca/plans/{id}/cancelCancelar (irreversible)
GET/api/v1/aca/plans/{id}/itemsListar ítems del plan
POST/api/v1/aca/plans/{id}/items/{itemId}/approveAprobar ítem NEEDS_REVIEW
POST/api/v1/aca/plans/{id}/gates/{gateId}/approveAprobar puerta de calidad

Ver También