PostHog
Modulo global de analytics que envia eventos de usuario a PostHog para monitoreo y analisis de comportamiento.Configuracion
El modulo es global — disponible en toda la aplicacion.
En el frontend la key es
VITE_POSTHOG_KEY (publica, phc_..., va en el bundle) con host VITE_POSTHOG_HOST. Las variables completas estan en apps/frontend/.env.example y apps/backend/.env.example.
Gating del copiloto de CX (Fabián)
El copiloto de Fabián se enciende con el feature flagchat-copilot-fabian en dos niveles, ambos obligatorios:
- Frontend (si aparece el panel): el hook
useCopilotFlagevalua el flag client-side con posthog-js y exige roleditor/adminentool-chat. El panelFabianCopilotPanelsolo se monta si ambos se cumplen. - Backend (auto-sugerencias al llegar un mensaje):
CopilotTriggerService.fire()evalua el mismo flag server-side.
Trigger backend gatea por agente.
CopilotTriggerService resuelve el agente asignado al canal (active_agent_user_id, con fallback a default_agent_user_id) y evalua el flag con su email — la misma identidad con la que el frontend identifica a la persona en PostHog. Asi un rollout por persona (p. ej. el flag chat-copilot-fabian segmentado por email) funciona tambien en el auto-trigger proactivo, no solo en el panel on-demand. Si el canal no tiene agente asignado, el pass se omite (fail-closed). (Antes el trigger usaba un distinctId='backend' constante que no matcheaba a ningun usuario real; corregido 2026-06.)Servicio
PostHogService expone:
isFeatureEnabled delega en el cliente posthog-node. Devuelve undefined cuando PostHog no esta configurado (distinto de false): el caller debe tratar undefined como “no hay flag service”, no como “flag apagado”. Las keys viven tipadas en shared/posthog/feature-flags.ts (p. ej. CHAT_COPILOT_FABIAN = 'chat-copilot-fabian') para no usar strings sueltos.
Eventos rastreados
Esquema de eventos IA (agent-agnostico)
Esquema unificado para todos los agentes de IA (Fabián hoy, Lola y otros despues), definido enshared/posthog/ai-events.ts. Toda captura lleva las dimensiones agent / surface / feature para poder cortar el dashboard por agente o por superficie sin acoplarlo a ninguno:
chat_agent_suggestions no tiene columnas de telemetria).
MCP Server
PostHog tambien esta disponible como MCP server en Claude Code, permitiendo consultar datos de analytics directamente:- Feature flags
- Dashboards
- Experiments
- Cohorts
- Insights y queries
.mcp.json del proyecto.