--- id: MGN-019-feature-flags title: Sistema de Feature Flags para Clinica Dental type: Module status: Draft priority: P1 version: 1.0.0 created_date: 2026-01-13 updated_date: 2026-01-13 source: erp-core/MGN-019-feature-flags normativas: [NOM-013-SSA2-2015] --- # MGN-019: Sistema de Feature Flags Dental ## Descripcion Sistema propio de feature flags para control granular de funcionalidades odontologicas por clinica y plan. Permite toggle de features dentales sin redeploy, rollout gradual de nuevas funcionalidades, y override manual por clinica para casos especiales. ## Objetivos - Toggle de features dentales sin necesidad de redeploy - Flags configurables por clinica y por plan - Gradual rollout (porcentaje de clinicas) - A/B testing de funcionalidades - Override manual por clinica con expiracion opcional ## Alcance | Caracteristica | Incluido | Notas | |----------------|----------|-------| | Boolean flags | Si | On/off simple | | Plan-based flags | Si | Por tier de plan | | Tenant override | Si | Admin puede activar/desactivar | | Percentage rollout | Si | % de clinicas | | User targeting | No | Fase posterior | | Analytics | No | Fase posterior | ## Feature Flags Odontologicos ### Funcionalidades por Plan | Feature Flag | Consultorio | Clinica | Centro | |--------------|:-----------:|:-------:|:------:| | `odontograma_digital` | - | X | X | | `radiografias_digitales` | - | X | X | | `ortodoncia_3d` | - | - | X | | `asistente_ia_dental` | - | - | X | | `whatsapp_pacientes` | - | - | X | | `multi_sucursal` | - | - | X | | `reportes_avanzados` | - | X | X | | `integracion_laboratorio` | - | X | X | | `presupuestos_financiados` | - | X | X | ### Features en Rollout | Feature Flag | Descripcion | Rollout % | Estado | |--------------|-------------|-----------|--------| | `nuevo_odontograma_v2` | Nueva UI de odontograma | 25% | Beta | | `radiografia_ia` | Analisis IA de radiografias | 10% | Alpha | | `agenda_inteligente` | Sugerencias de agenda | 50% | Beta | | `recordatorio_sms` | Recordatorios via SMS | 100% | GA | ### Features de Normativa | Feature Flag | Descripcion | Default | |--------------|-------------|---------| | `consentimiento_digital` | Firma digital de consentimientos | Activado | | `historial_nom013` | Historial conforme NOM-013-SSA2 | Activado | | `bitacora_cofepris` | Bitacora de procedimientos | Activado | ## Arquitectura de Evaluacion ``` Request (ej: acceder odontograma_digital) | v +-------------------+ | FeatureFlagService| +-------------------+ | +---> 1. Check tenant override (clinica especifica) | | | v (si existe) | Return override value | +---> 2. Check plan features (Consultorio/Clinica/Centro) | | | v (si definido en plan) | Return plan value | +---> 3. Check global flag + rollout | | | v | Evaluate (boolean/percentage) | v Return final value ``` ## Prioridad de Evaluacion 1. **Tenant Override** - Maxima prioridad, permite excepciones (ej: demo, VIP) 2. **Plan Features** - Features incluidas en plan de la clinica 3. **Global Flag** - Valor default con soporte de rollout gradual ## Casos de Uso ### Ejemplo: Activar ortodoncia_3d para demo ```typescript // Override para clinica en demo await featureFlagService.setOverride({ tenantId: 'clinica_demo_123', flag: 'ortodoncia_3d', value: true, expiresAt: addDays(new Date(), 14), // 14 dias de demo reason: 'Demo para cliente potencial' }); ``` ### Ejemplo: Rollout gradual de radiografia_ia ```typescript // Configurar rollout al 25% de clinicas await featureFlagService.setRollout({ flag: 'radiografia_ia', percentage: 25, filterByPlan: ['clinica', 'centro_dental'] }); ``` ### Ejemplo: Verificar feature en codigo ```typescript @Get('odontograma/3d') @FeatureGuard('ortodoncia_3d') async getOdontograma3D(@Tenant() tenant: Tenant) { // Solo accesible si flag activo para esta clinica return this.ortodonciaService.get3DModel(tenant.id); } ``` ## Documentacion del Modulo - [Mapa del Modulo](./_MAP.md) - [Requerimientos](./requerimientos/INDICE-RF-FFLAGS.md) - [Especificaciones](./especificaciones/INDICE-ET-FFLAGS.md) - [Historias de Usuario](./historias-usuario/INDICE-US-FFLAGS.md) - [Trazabilidad](./implementacion/TRACEABILITY.yml) ## Dependencias ### Modulos Requeridos - **MGN-004-tenants** - Contexto de clinica - **MGN-017-plans** - Planes de suscripcion ### Modulos Dependientes - Odontograma (feature: odontograma_digital) - Radiografias (feature: radiografias_digitales) - Ortodoncia (feature: ortodoncia_3d) - IA (feature: asistente_ia_dental) - WhatsApp (feature: whatsapp_pacientes) ## Referencias - **Fuente:** [erp-core/MGN-019-feature-flags](../../../../../erp-core/docs/04-fase-saas/MGN-019-feature-flags/) - **Plans:** [MGN-017-plans](../MGN-017-plans/) --- *Modulo MGN-019 - Feature Flags | Clinica Dental* *Propagado desde erp-core via erp-clinicas* *Actualizado: 2026-01-13*