erp-mecanicas-diesel-backen.../src/modules/feature-flags/README.md
Adrian Flores Cortes f9ec80b037 [SYNC] feat: Add audit, MFA, and feature flags modules
- Add audit module with controllers, DTOs, middleware and services
- Add MFA controller, routes and services
- Add feature flags module with controllers, DTOs and services
- Update audit entities with proper TypeORM decorators
- Update auth service and DTOs
- Update main.ts configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 08:02:07 -06:00

3.2 KiB

Feature Flags Module

Descripcion

Sistema de feature flags/toggles para control de funcionalidades. Permite habilitar/deshabilitar features globalmente o por tenant, con soporte para rollout gradual basado en porcentajes y overrides temporales con expiracion.

Entidades

Entidad Schema Descripcion
Flag feature_flags.flags Definicion de feature flags con estado global y porcentaje de rollout
TenantOverride feature_flags.tenant_overrides Overrides por tenant con razon y fecha de expiracion
FlagEvaluation feature_flags.flag_evaluations Log de evaluaciones para auditoria

Servicios

Servicio Responsabilidades
FeatureFlagsService CRUD de flags y overrides; evaluacion de flags; rollout deterministico; limpieza de expirados

Endpoints

Method Path Descripcion
GET /flags Lista flags activos
GET /flags/all Lista todos los flags (incluyendo inactivos)
GET /flags/tags/:tags Lista flags por tags
GET /flags/:id Obtiene flag por ID
GET /flags/code/:code Obtiene flag por codigo
POST /flags Crea nuevo flag
PATCH /flags/:id Actualiza flag
DELETE /flags/:id Elimina flag (soft/hard)
PATCH /flags/:id/toggle Activa/desactiva flag
GET /flags/:id/stats Estadisticas de overrides del flag
GET /flags/:flagId/overrides Lista overrides de un flag
GET /tenants/:tenantId/overrides Lista overrides de un tenant
GET /overrides/:id Obtiene override por ID
POST /overrides Crea override
PATCH /overrides/:id Actualiza override
DELETE /overrides/:id Elimina override
GET /evaluate/:code Evalua un flag para tenant
POST /evaluate Evalua multiples flags
GET /is-enabled/:code Check rapido de flag habilitado
POST /maintenance/cleanup Limpia overrides expirados

Dependencias

  • common - Utilidades compartidas (crypto para hash)

Configuracion

No requiere configuracion de ambiente.

Prioridad de Evaluacion

  1. Tenant Override (si existe y no ha expirado)
  2. Estado Global del flag (enabled/disabled)
  3. Rollout Percentage (si el flag esta habilitado)
  4. Default (false si el flag no existe)

Rollout Deterministico

El rollout por porcentaje usa un hash MD5 de flagCode:tenantId para asegurar que:

  • El mismo tenant siempre obtiene el mismo resultado
  • La distribucion es uniforme entre tenants
  • No hay necesidad de almacenar el resultado
// Ejemplo: 30% rollout
// Tenants con bucket 0-29 = habilitado
// Tenants con bucket 30-99 = deshabilitado
bucket = MD5(flagCode + tenantId) % 100
enabled = bucket < rolloutPercentage

Fuentes de Evaluacion

Fuente Descripcion
default Flag no existe, retorna false
global Valor global del flag
override Override especifico del tenant
rollout Resultado del calculo de rollout

Mantenimiento

Se recomienda ejecutar POST /maintenance/cleanup periodicamente (cron diario) para eliminar overrides expirados.