06 9 planes y capacidades - lfnavarroj1/sport-app-platform GitHub Wiki
SportApp ofrece tres niveles acumulativos para deportistas. El catálogo se precarga mediante una migración versionada antes de habilitar Gestión de afiliación; no existe una HU, pantalla ni API para administrar los planes en producción.
flowchart LR
F["Gratuito<br/>Funciones esenciales"]
I["Intermedio<br/>Gratuito + seguimiento en sesión"]
P["Premium<br/>Intermedio + servicios profesionales"]
F --> I --> P
| Característica | Gratuito | Intermedio | Premium |
|---|---|---|---|
| Código | FREE |
INTERMEDIATE |
PREMIUM |
| Asignación automática al registrarse | Sí, solo athlete
|
No | No |
| Precio de referencia en COP | 0 | 2.400 mensual; 7.200 trimestral; 28.800 anual | 4.800 mensual; 14.400 trimestral; 57.600 anual |
| Periodicidad | NONE |
Mensual, trimestral o anual | Mensual, trimestral o anual |
| Seleccionable actualmente | Sí | No, hasta ratificar la propuesta e implementar el cobro | No, hasta ratificar la propuesta e implementar el cobro |
| Capacidades del nivel anterior | No aplica | Todas las de Gratuito | Todas las de Intermedio |
Los valores de los planes pagos son una propuesta económica base, expresada antes de impuestos, comisiones de pasarela o tienda, soporte, mercadeo y otros costos comerciales. No deben precargarse como valores definitivos hasta su aprobación por el responsable del producto.
| Variable | Valor utilizado |
|---|---|
| Usuarios deportistas activos esperados | 5.000 |
Usuarios FREE
|
70 % = 3.500 |
Usuarios INTERMEDIATE
|
20 % = 1.000 |
Usuarios PREMIUM
|
10 % = 500 |
| Usuarios que pagan | 1.500 = 30 % |
| Infraestructura mensual central | USD 820 = COP 3.280.000 |
| Presupuesto mensual conservador | USD 1.000 = COP 4.000.000 |
| Conversión de planeación | COP 4.000 por USD |
| Margen operativo objetivo | 15 % de los ingresos por membresías |
| Relación de precio elegida | Premium cuesta dos veces el plan Intermedio |
El cálculo supone que los 5.000 usuarios son deportistas activos sujetos a esta distribución. Si el total incluye organizadores o profesionales, o cambia la conversión de planes pagos, los precios deben recalcularse.
pie showData
title Distribución esperada de 5.000 deportistas
"Gratuito: 3.500" : 3500
"Intermedio: 1.000" : 1000
"Premium: 500" : 500
El objetivo se interpreta como un margen del 15 % sobre los ingresos, es decir:
margen = (ingresos - costo) / ingresos
ingresos mínimos = costo / (1 - 0,15)
Con el presupuesto conservador de COP 4.000.000 mensuales:
Ingresos mínimos = COP 4.000.000 / 0,85
= COP 4.705.882 mensuales
Sumar solamente 15 % al costo produciría un margen de 13,04 %, no de 15 %. Por ello se divide el costo entre 0,85.
Para reflejar las capacidades acumulativas se adopta como hipótesis inicial que Premium cuesta el doble de Intermedio. Si I es el precio mensual de Intermedio:
1.000 × I + 500 × (2 × I) = COP 4.705.882
2.000 × I = COP 4.705.882
I exacto = COP 2.352,94
Premium exacto = COP 4.705,88
Los valores se redondean hacia arriba a COP 2.400 para Intermedio y COP 4.800 para Premium. El redondeo evita quedar por debajo del margen objetivo.
La versión inicial ofrece los tres ciclos sin descuento. El valor trimestral equivale a tres mensualidades y el anual a doce; cualquier descuento futuro debe recalcular cobertura y margen.
| Plan | Mensual | Trimestral, cobro anticipado | Anual, cobro anticipado |
|---|---|---|---|
| Gratuito | COP 0 | No aplica | No aplica |
| Intermedio | COP 2.400 | COP 7.200 | COP 28.800 |
| Premium | COP 4.800 | COP 14.400 | COP 57.600 |
La periodicidad elegida cambia el momento del cobro, pero para los análisis mensuales el ingreso trimestral o anual se reconoce proporcionalmente durante su vigencia.
| Concepto | Operación | Resultado mensual |
|---|---|---|
| Ingreso Intermedio | 1.000 × COP 2.400 | COP 2.400.000 |
| Ingreso Premium | 500 × COP 4.800 | COP 2.400.000 |
| Ingresos totales por membresías | Suma de planes pagos | COP 4.800.000 / USD 1.200 |
| Infraestructura presupuestada | Valor conservador | COP 4.000.000 / USD 1.000 |
| Utilidad operativa estimada | Ingresos menos infraestructura | COP 800.000 / USD 200 |
| Margen sobre membresías | COP 800.000 / COP 4.800.000 | 16,67 % |
Con el costo central de USD 820, el mismo precio generaría COP 1.520.000 de utilidad y un margen de 31,67 %. Se conserva el precio calculado sobre USD 1.000 para proteger la operación frente a variaciones normales del piloto.
Con la mezcla prevista, cada usuario registrado genera en promedio COP 960 mensuales:
(20 % × COP 2.400) + (10 % × COP 4.800) = COP 960
El costo conservador se cubre desde aproximadamente 4.167 usuarios con la misma distribución. Para conservar al menos 15 % de margen se requieren aproximadamente 4.902 usuarios; la proyección de 5.000 supera ese mínimo.
| Infraestructura mensual | Intermedio mínimo aproximado | Premium mínimo aproximado | Decisión |
|---|---|---|---|
| USD 820 / COP 3.280.000 | COP 1.930 | COP 3.860 | Cubierto por los precios propuestos |
| USD 1.000 / COP 4.000.000 | COP 2.353 | COP 4.706 | Base usada; se redondea a COP 2.400 y COP 4.800 |
| USD 1.550 / COP 6.200.000 | COP 3.647 | COP 7.294 | Requeriría aproximadamente COP 3.700 y COP 7.400 |
El escenario de USD 1.550 corresponde al clúster GKE escalado hasta nueve nodos. Por tanto, el autoescalado, la factura real y la conversión de planes deben revisarse mensualmente. Consulte Costos estimados de producción en GCP.
La propuesta cubre infraestructura de producción y el margen indicado. Todavía no incorpora:
- impuestos y retenciones aplicables;
- comisión de pasarela de pagos o de las tiendas móviles;
- desarrollo, soporte al usuario, mercadeo y administración;
- devoluciones, fraude, mora o períodos promocionales;
- costos de profesionales, consultas o sesiones reservadas desde Premium;
- crecimiento de infraestructura por encima del escenario presupuestado.
Premium concede acceso a las capacidades de búsqueda y programación; una consulta o sesión profesional puede tener un precio independiente. Antes de publicar los planes debe elaborarse una versión comercial que agregue los costos excluidos y confirme que el precio final continúa siendo viable para el mercado.
Un mismo plan debe admitir tres ofertas de precio: MONTHLY, QUARTERLY y ANNUAL. Cada oferta conserva importe, moneda COP, duración, vigencia y condiciones. FREE mantiene precio cero y periodicidad NONE. La suscripción referencia tanto la versión del plan como la oferta aceptada para preservar la trazabilidad del cobro.
La precarga debe contener estas ofertas de manera versionada e idempotente. Un cambio posterior de precio o descuento crea una nueva versión u oferta vigente y no reescribe las condiciones aceptadas por suscripciones existentes.
Es el plan predeterminado de todo deportista nuevo. Se activa automáticamente después del evento de registro y permite:
- crear y sugerir planes de entrenamiento;
- sugerir rutas y eventos deportivos;
- sugerir acompañamiento, logística y rutinas de alimentación;
- conectar Strava;
- iniciar y finalizar un entrenamiento;
- consultar el tablero, FTP y VO₂max;
- consultar el calendario deportivo.
Durante la activación el canal muestra PROVISIONING; las capacidades solo se conceden al confirmar la suscripción ACTIVE.
Hereda todo el plan Gratuito y añade:
- monitoreo del entrenamiento en tiempo real;
- conexión de dispositivos de medición;
- recordatorios de alimentación e hidratación durante la sesión.
El cambio es explícito mediante HU016. La propuesta de precios y periodicidades ya tiene una base cuantitativa, pero el plan solo podrá publicarse cuando el responsable del producto la ratifique y estén aprobadas y precargadas la vigencia, los impuestos, el medio de pago y las condiciones de cambio, renovación y cancelación.
Hereda todo el plan Intermedio y añade:
- acceso a servicios médicos y deportivos;
- programación de sesiones virtuales con profesionales.
El acceso al plan no garantiza la disponibilidad de un profesional o una agenda concreta; publicación, reserva y prestación mantienen las reglas del dominio Servicios.
| Capacidad | Código | Gratuito | Intermedio | Premium | HU |
|---|---|---|---|---|---|
| Crear planes de entrenamiento | training.plan.manage |
Sí | Sí | Sí | HU010 |
| Sugerir rutas | training.routes.suggest |
Sí | Sí | Sí | HU026 |
| Sugerir eventos | events.suggest |
Sí | Sí | Sí | HU027 |
| Sugerir planes | training.plans.suggest |
Sí | Sí | Sí | HU028 |
| Sugerir acompañamiento | services.support.suggest |
Sí | Sí | Sí | HU029 |
| Sugerir alimentación | nutrition.routines.suggest |
Sí | Sí | Sí | HU030 |
| Conectar Strava | integrations.strava.connect |
Sí | Sí | Sí | HU031 |
| Registrar entrenamiento | training.session.record |
Sí | Sí | Sí | HU032 |
| Consultar tablero | training.dashboard.view |
Sí | Sí | Sí | HU033 |
| Consultar FTP/VO₂max | training.metrics.ftp_vo2max |
Sí | Sí | Sí | HU034 |
| Consultar calendario | calendar.sport.view |
Sí | Sí | Sí | HU023, HU035 |
| Monitorear en tiempo real | training.realtime.monitor |
— | Sí | Sí | HU036 |
| Conectar dispositivos | devices.measurement.connect |
— | Sí | Sí | HU037 |
| Recordatorios durante sesión | nutrition.session.reminders |
— | Sí | Sí | HU038 |
| Servicios médicos/deportivos | services.sports_medicine.access |
— | — | Sí | HU017 |
| Sesiones virtuales | services.virtual_sessions.schedule |
— | — | Sí | HU040 |
HU039 pertenece al organizador y no es un beneficio de la suscripción del deportista.
- Los clientes consultan códigos de capacidad; no comparan nombres de plan.
- Cada capacidad vigente del deportista aparece como una opción navegable en el menú lateral izquierdo.
- Una función de un nivel superior se explica en Comparar planes, pero no aparece como opción operativa del menú.
- Una función ajena al rol o sensible se oculta.
- La autorización efectiva se repite en BFF y microservicio.
- La ausencia de capacidad produce
403 capability_required.
flowchart TB
B["Opciones base<br/>Inicio · Mi perfil · Mi plan · Cerrar sesión"]
F["FREE<br/>11 opciones funcionales"]
I["INTERMEDIATE<br/>+ 3 opciones"]
P["PREMIUM<br/>+ 2 opciones"]
B --> F --> I --> P
| Nivel | Opciones funcionales visibles en el menú lateral |
|---|---|
FREE |
Planes de entrenamiento; Rutas sugeridas; Eventos sugeridos; Entrenamientos sugeridos; Acompañamiento y logística; Rutinas de alimentación; Strava; Registrar entrenamiento; Tablero de entrenamiento; FTP y VO₂max; Calendario deportivo. |
INTERMEDIATE |
Todas las opciones FREE, más Monitoreo en tiempo real, Dispositivos de medición y Recordatorios durante sesión. |
PREMIUM |
Todas las opciones INTERMEDIATE, más Servicios médicos y deportivos y Sesiones virtuales. |
El menú se reconstruye al iniciar sesión, al completar el aprovisionamiento y después de un cambio de plan. Si el usuario baja de nivel se retiran las opciones no autorizadas, se invalidan sus rutas abiertas y se navega a una pantalla permitida. El botón Atrás o una URL directa no evitan las guardas.
El BFF entrega rol, estado de suscripción, versión y códigos de capacidad. El cliente conserva un único registro de navegación con etiqueta, icono, orden, ruta y capacidad requerida; el backend no entrega rutas ni componentes ejecutables.
La migración incluye código, nombre, descripción, orden, estado, versión, vigencia, ofertas de precio por periodicidad, moneda, textos, capacidades y límites. Es transaccional e idempotente y se ejecuta antes de habilitar las réplicas. La aplicación no queda lista si el catálogo está incompleto.
Cualquier cambio futuro se realiza mediante una migración revisada. Cuando cambia una condición aceptada se crea una nueva versión del plan; no se modifica silenciosamente una versión que ya tiene suscripciones.
- ADR-024: plan gratuito automático y autorización por capacidades.
- HU001: registro y afiliación gratuita automática.
- HU016: selección o cambio explícito de plan.
- Costos de infraestructura: Costos estimados de producción en GCP.
- Documentación técnica detallada:
arquitectura/planes/. - Especificación del menú:
arquitectura/planes/05-menu-lateral-por-plan.md.