06. Configuración y secrets

Variables de entorno

Fuente:

  • Desarrollo local: .env (cargado por python-dotenv).
  • Producción/CI: variables del entorno (secrets de GitHub Actions).

Archivo de referencia: .env.example.

VariableRequeridaUsoNotas
MOODLE_URLSí (no dry-run)Base URL de MoodleSin slash final recomendado
MOODLE_USERSí (no dry-run)Usuario MoodleSensible
MOODLE_PASSSí (no dry-run)Password MoodleSensible
TRACKED_SUBJECTSNoFiltra materias por slugall/vacío = todas habilitadas
MODELS_API_KEYSí (si se usa GitHub Models)LLM primarioUsa OpenAI SDK con base_url de GitHub Models
OPENROUTER_API_KEYSí (si se usa OpenRouter)LLM secundarioUsa OpenAI SDK con base_url de OpenRouter
GEMINI_API_KEYSí (si se usa Gemini)LLM terciario/fallbackSolo si no hay MODELS_API_KEY ni OPENROUTER_API_KEY
DRY_RUNNoSimulaciónEn dry-run no se escriben archivos ni manifest
FORCE_REPROCESSNoIgnora manifestReprocesa todo (si hay archivos descargados)

Selección de LLM

  • Si existe MODELS_API_KEY → modelo github/gpt-4o-mini.
  • Else si existe OPENROUTER_API_KEY → modelo openrouter/openai/gpt-oss-20b:free.
  • Else si existe GEMINI_API_KEY → modelo gemini/gemini-1.5-flash.
  • Else:
    • en DRY_RUN=true se declara modelo dry-run/mock,
    • fuera de dry-run el pipeline termina con error.

Catálogo del campus

Archivo: config/campus.yml.

Schema

  • campus (mapping):
    • name (string)
    • url (string URL)
  • subjects (list[mapping]):
    • slug (string): identificador estable (usado en TRACKED_SUBJECTS).
    • name (string): nombre humano.
    • moodle_course_id (int|string): id numérico del curso en Moodle.
    • enabled (bool, default true): permite desactivar sin borrar.

El pipeline ignora materias enabled: false (ver scripts/catalog.py).

Node/Quartz

Fuente: package.json.

  • Requiere Node >=22 y npm >=10.9.2.
  • Comandos principales:
    • npm run serve: build + servidor local (Quartz).
    • npm run build: build estático a public/.
    • npm run check: tsc --noEmit + prettier --check.