Skip to content

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CognitiveFlow AI

Prototipo educativo para CHARAL 2026, Track 2: predicción, experimentación, justificación, feedback y prueba independiente. El instructor consulta evidencia sin calificar ni modificar sesiones.

El piloto de cuatro estudiantes se retiró del alcance el 31 de octubre de 2026. Las cuentas s1-s4 e i1 son datos demo, no participantes de investigación. No se afirma eficacia educativa.

Demo pública

Abrir CognitiveFlow AI

Acceso Usuario demo
Estudiante s1, s2, s3 o s4
Instructor de solo lectura i1

El acceso demo usa el identificador de usuario, sin contraseña. Para explorar Docker, desplegar «Unidades del curso» en Academia y abrir D01; las unidades siguientes respetan los prerrequisitos del servidor.

Flutter Web se aloja en Firebase Hosting (Spark) y FastAPI en Render Free. Salud de la API. Render puede dormir tras 15 minutos sin tráfico; el primer acceso puede tardar aproximadamente un minuto. SQLite es temporal y los avances pueden perderse al dormir, reiniciar o redesplegar el backend.

Verificado el 31 de octubre de 2026: publicación HTTPS, /health, catálogo, login demo, CORS y carga de Academia desde el navegador. El recorrido completo del laboratorio y las llamadas reales a Gemini/Jev quedan pendientes de verificar. El alojamiento usa planes gratuitos; el consumo de los proveedores de IA se gestiona por separado.

Ejecución local

Requisitos: Flutter 3.47.7, Python 3.12 y uv. En dos terminales PowerShell:

# Terminal 1, desde la raíz
cd backend
uv sync --locked
# Solo si no existe .env; no sobrescribir la configuración actual:
Copy-Item .env.example .env
# Configurar claves y un LLM_MODEL disponible para tu cuenta.
uv run uvicorn app.main:app --reload --port 8000
# Terminal 2, desde la raíz
cd frontend
flutter pub get
flutter run -d web-server --web-port 8080 --dart-define=API_BASE_URL=http://localhost:8000

Abrir http://localhost:8080. Salud API: http://localhost:8000/health. El arranque aplica Alembic y seed_if_empty sin reiniciar SQLite. Seed manual desde backend: uv run python -m app.seed. Incluye 9 módulos, 5 cuentas demo, 4 laboratorios y 15 objetivos.

Arquitectura

flowchart LR
    S[Estudiante] --> F[Flutter Web + Riverpod + GenUI]
    F -->|REST + token opaco| B[FastAPI + SQLAlchemy]
    B --> DB[(SQLite + Alembic)]
    B --> V[Verificadores deterministas]
    B -->|Hechos verificados + argumento| J[Jev: evaluación de los 4 labs]
    B --> G[Gemini: tutor, feedback y planificador]
    G --> M[Menú permitido + parámetros validados]
    M --> B
    I[Instructor: solo consulta] --> F
Loading

Academia → unidad → concepto/predicción → práctica y justificación → evaluación → reto adaptativo central → postest autorizado por servidor → reflexión y repaso. Las fases visibles dependen del laboratorio y del estado persistido.

  • Frontend: lib/ui/academy/, lib/ui/labs/, lib/ui/labs/workspace/ y lib/ui/instructor/. Auth y tema globales con Riverpod.
  • Backend: app/routers/, app/checks.py, app/labs_*.py, app/evaluation.py, app/socratic.py, app/interventions.py y app/activities.py.
  • Catálogo cerrado de 13 tipos activos: app/interventions.py::CATALOG y frontend/lib/ui/tutor/catalog.dart::cognitiveFlowWidgets. frontend/lib/ui/tutor/tutor_surface.dart traduce ui_spec interna a A2UI.
  • Gemini elige una actividad del menú permitido; backend valida parámetros y genera escenarios. No ejecuta código generado ni Docker arbitrario.
  • Eventos con identidad de actividad y client_event_id idempotente; evidencia persistida, reanudación y permiso de postest controlados por backend.

Alcance real y límites

Pieza Implementación y límite
Docker Academy 12 unidades. D01/D02/D04/D07 con experimentos específicos; las otras usan DecisionScenarios. Retos con motores compartidos y 9 actividades de menú, filtradas por unidad/progreso/bancos. No equivale a terminal, editor Compose o pipeline ejecutable.
Data Detective Datos sintéticos, clasificación de anomalías y simulación de limpieza.
ML Experiment Curvas sintéticas deterministas y comparación de hipótesis; no entrena modelos reales.
Model Monitoring Distribuciones/series simuladas con variantes de feature y cambio; no conecta infraestructura real.
Evaluación EVALUATOR_MODE=jev para los cuatro labs y argumentos de retos. Fallo o falta de clave: pending sin scores inventados.
Tutor y planificador Gemini real. Fallo, falta de clave o actividad inválida: HTTP 503 reintentable, sin respuesta inventada.
Mocks Solo pruebas/CI o simulación local explícita: EVALUATOR_MODE=mock y LLM_ALLOW_MOCK=1, con etiquetas visibles.
Instructor Consulta de estudiantes, sesiones, criterios, historial, exportación y estadísticas. instructor_reviews queda como histórico de solo lectura.
Dominio Evidencia del postest independiente; avanzar pasos o evaluar práctica no demuestra dominio.

Límites y backlog: Catálogo GenUI. Docker aparece primero en Academia; los otros cursos llevan Work in progress. Quedan QA y revisión didáctica: tener widgets y tests no acredita producto terminado.

Verificación sin gasto de APIs

cd backend
$env:JEV_LIVE_TEST = "0"
uv run pytest -q
cd frontend
flutter analyze --no-pub
flutter test
flutter build web --release --dart-define=API_BASE_URL=https://cognitiveflow-ai.onrender.com

Los tests backend usan SQLite en memoria y _no_live_llm. No activar JEV_LIVE_TEST=1 en QA de entrega. CI: .github/workflows/ci.yml. Los resultados de auditorías anteriores son históricos; ejecutar las suites sobre la versión que se vaya a publicar.

Despliegue y datos

Guía de despliegue: Render Free para FastAPI y Firebase Hosting para Flutter. render.yaml configura Jev y desactiva el mock del tutor; claves, modelo Gemini y orígenes CORS se introducen en Render.

Proyecto Firebase: cognitiveflow-39af7. Desde la raíz, tras compilar Flutter y autorizar la CLI con la cuenta del proyecto:

npx --yes firebase-tools deploy --only hosting --project cognitiveflow-39af7

firebase.json publica frontend/build/web y conserva las rutas de la SPA. En Render, CORS_ORIGINS permite ambos dominios de Firebase:

CORS_ORIGINS=https://cognitiveflow-39af7.web.app,https://cognitiveflow-39af7.firebaseapp.com

En Render Free, SQLite es efímera: reinicios o redespliegues pueden perder sesiones y tokens. El seed repone cuentas demo, no el historial perdido. La SQLite local no se sube ni se borra. Conservar evidencia entre redespliegues requiere almacenamiento persistente y respaldos verificados.

GET /instructor/backup requiere token instructor y descarga la base completa. No es un export anonimizado ni una instantánea transaccional. Para una copia coherente, detener escrituras y respaldar con la API apagada; conservar WAL/SHM asociados si existen. Restaurar en DATABASE_URL con la API detenida y verificar las migraciones al arrancar. Nunca borrar SQLite para actualizar el esquema.

Seguridad y límites.

Pendiente de entrega

  • Verificar el recorrido completo de laboratorio, evaluación y reto Gemini/Jev en la demo pública. Un health correcto no prueba claves, créditos ni funcionamiento de proveedores.
  • Video de 5 minutos, deck, PDF de gobernanza de 3–5 páginas y resumen de máximo 300 palabras.
  • Revisar cambios Git, QA final, accesibilidad y errores de proveedores.

La demo pública no acredita resultados con estudiantes ni eficacia educativa. Fuentes: código y tests, plan de rediseño, plan educativo, diseño y auditorías fechadas en docs/audits/.

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages