Skip to content

Fix: persist game profile + reframe onboarding as CMO recommends

isidro requested to merge claude/onboarding-cmo-recommends-and-profile into main

Qué hay en esta rama

Dos cosas que pidió el CEO tras la primera versión:

Bug: el juego no quedaba registrado tras el onboarding

El onboarding anterior guardaba el juego, género, plataformas, etc. solo en localStorage del navegador — nada se mandaba al servidor. El CEO pasó el flujo y no vio su juego en ningún sitio del cockpit. Fix: nuevo módulo `game_profile.py` con validación estricta de enums, clamp de números y escritura atómica, accesible vía `GET/POST /api/profile`. El onboarding ahora persiste el perfil completo al finalizar.

Adicional: el cockpit CEO muestra una tarjeta "Tu juego" en el sidebar con los datos del perfil (juego, género, plataformas, fase, redes, estilo, presupuesto) y un link a rehacer onboarding.

Reframe: CMO recomienda, CEO confirma

Feedback del CEO: "no debería ser yo quien elija entre AppLovin vs Unity Ads, ese es tu trabajo". Correcto. Rediseño del paso 2, y recomendaciones añadidas en pasos 3 y 4:

  • Paso 2 (redes): una tarjeta verde con el plan inicial concreto (ej: AppLovin + Unity Ads para móvil casual, Steam orgánico sin ads para PC puro, híbrido paralelo si ambos). El CEO solo dice "me parece bien". Un link colapsable lleva a la checklist completa de 8 redes para quien ya tiene cuentas.
  • Paso 3 (presupuesto): tarjeta con presupuesto semanal y tope por experimento recomendados según fase y plataforma. Botón "Usar mi recomendación". Inputs siguen editables.
  • Paso 4 (estilo): opción balanceada marcada con píldora "recomendado" y hint explicando cuándo escalar o relajar.

Resumen de cambios técnicos

Archivo Cambio
`src/agents/gaming_cmo/game_profile.py` Nuevo. Persistencia + validación del perfil.
`tests/test_game_profile.py` Nuevo. 8 tests cubren enums inválidos, clamps, corrupción, sanitización.
`src/agents/gaming_cmo/main.py` Añade endpoints `GET/POST /api/profile`.
`docs/onboarding/index.html` Recomendación en pasos 2-4, POST a `/api/profile` al finalizar, i18n ampliado.
`docs/ceo_portal/index.html` Nueva tarjeta "Tu juego" alimentada por `/api/profile`.

Test plan

  • 79/79 pytest verde (71 previos + 8 nuevos)
  • `GET /api/profile` responde con `is_configured: false` si el archivo no existe
  • `POST /api/profile` con payload completo persiste + `GET` devuelve los mismos valores
  • Enums inválidos (ej. plataforma "xbox", estilo "chaos") se filtran sin romper
  • Kwargs desconocidos (ej. `evil_field`) se eliminan antes de escribir
  • Onboarding en producción en https://cmo.laparedita.com/onboarding/ termina mostrando el resumen y el cockpit ya lee el perfil

No incluido (punted)

  • Self-improvement agent con Hermes de Nous: el CEO preguntó por usar Hermes 3 como feature de automejora continua. Mi lectura: prematuro sin datos reales. Hook para meterlo queda pendiente hasta Milestone E.
  • RBAC real por rol: todos los usuarios autenticados siguen pudiendo llegar a todas las rutas; la separación es solo de UI. Planteado como siguiente iteración cuando haya demanda.

🤖 Generated with Claude Code

Merge request reports