Este modelo representa los productos de tipo Suscripción dentro de la
colección unificada products. Los productos tipo “Suscripción” manejan
planes de pago Premium y Alumni, sus precios, contenido incluido y acceso a
series/episodios.
Condicional: Visible solo si type === "Suscripción"
Texto enriquecido para mostrar en la UI dentro de las cards de suscripción.
Tipo:component → shared.seo Componente SEO compartido para controlar
título, descripción y meta tags.
Tipo:media Imagen representativa del producto/suscripción.
Tipo:stringLocalizado: ✅ Slug para URLs (autogenerado desde
title).
Tipo:integer
Mínimo: 1
Orden de visualización del producto.
Los productos tipo “Suscripción” dentro de la colección unificada products sirven como base para todo el flujo de suscripciones: lógica de acceso, tarjetas visuales, precios, y middleware de protección de contenido.
Si vertical incluye “Inspiria”, stripeCrm debe ser “Inspiria” - El SKU
debe ser único y requerido - Verifica si el producto será publicado
inmediatamente - Valida orden de visualización
Generar slug (solo para locale por defecto y productos no internos) 2.
Sincronizar producto con Stripe (actualizar metadatos) 3. Manejar
syllabus Laab si hasLaabConnection está activo 4. Crear precios de
producto estándar en Stripe 5. Crear precios de suscripción si es tipo
“Suscripción” y está publicado 6. Ordenar colección según estado de
publicación
Solo procesa locale por defecto para la mayoría de operaciones
Los precios de suscripción solo se crean si está publicando y tiene subscriptionPrices
El ordenamiento solo se ejecuta si isPublishing es true
Misma validación vertical-CRM que en create - SKU único especialmente en
publicaciones - Previene actualizaciones internas recursivas - Valida producto
en locales secundarios
Actualizaciones internas: Se saltan validaciones (_internalUpdate)
Cambio de locale: Valida existencia del producto base
Sincroniza cambios con Stripe cuando se actualiza un producto
Maneja actualizaciones de syllabus Laab
Actualiza precios de producto y suscripción según cambios
Controla reordenamiento de colección
Saltar actualizaciones internas para evitar loops 2. Validar locales
secundarios y redirigir al principal 3. Manejar syllabus Laab con nuevos
datos 4. Sincronizar producto con Stripe (metadatos) 5. Actualizar
precios estándar del producto 6. Actualizar precios de suscripción si
cambiaron o se está publicando 7. Reordenar colección si cambió el orden
Solo procesa locale por defecto para operaciones de Stripe
Los precios de suscripción se actualizan si subscriptionPrices cambió O si se está publicando
El reordenamiento solo ocurre si el campo order está en el payload