Files
amayo/README/FEATURE_FLAGS_FIX.md

3.4 KiB

🔧 Solución a Errores de Feature Flags

Problema Encontrado

Los errores mostrados:

[FeatureFlags] Error al setear flag "alianzas_blacklist_31_10_2025":
[FeatureFlagsCmd]
[FeatureFlags] Error al inicializar:

Causas Identificadas

  1. Base de datos vacía: No había flags iniciales
  2. Logger sin detalles: No mostraba el error completo
  3. Posible inicialización incompleta: Bot intentó usar servicio antes de inicializar

🛠️ Soluciones Aplicadas

1. Mejorado Logging de Errores

Archivo: src/core/services/FeatureFlagService.ts

  • Agregado logging detallado con message, stack, code, meta
  • Ahora muestra errores completos de Prisma

Archivo: src/core/loaders/featureFlagsLoader.ts

  • Logging extendido en múltiples líneas
  • Muestra cada propiedad del error por separado

2. Creado Script de Debug

Archivo: scripts/debugFeatureFlags.ts

  • Lista todos los flags en DB
  • Verifica parsing de JSON
  • Test de creación/eliminación
  • Muestra detalles completos de cada flag

3. Ejecutado Setup Inicial

Comando: npx tsx scripts/setupFeatureFlags.ts

Flags creados (8 ejemplos):

  • new_shop_system (disabled)
  • inventory_ui_v2 (enabled)
  • improved_combat_algorithm (rollout 25%)
  • economy_system_v2 (gradual rollout)
  • halloween_2025 (evento temporal)
  • experimental_features (whitelist)
  • premium_features (disabled con metadata)
  • trading_system (maintenance)

4. Verificado Funcionamiento

Test realizado: Exitoso

✅ Servicio inicializado
📊 8 flags cargados
✅ Todos los flags parseados correctamente

🚀 Próximos Pasos

1. Reiniciar el Bot

# El bot ahora debe inicializar correctamente
npm run dev

2. Verificar en Discord

/featureflags list

3. Crear Nuevos Flags

/featureflags create name:mi_feature status:disabled target:global
/featureflags update flag:mi_feature status:enabled

4. Ver Estadísticas

/featureflags stats flag:inventory_ui_v2

📝 Comandos Útiles

Debug Manual

# Ver todos los flags en DB
npx tsx scripts/debugFeatureFlags.ts

# Test del servicio
npx tsx -e "
import { featureFlagService } from './src/core/services/FeatureFlagService';
await featureFlagService.initialize();
console.log(featureFlagService.getFlags());
"

Resetear Flags

# Eliminar todos los flags
npx tsx -e "
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
await prisma.featureFlag.deleteMany({});
await prisma.\$disconnect();
"

# Recrear flags de ejemplo
npx tsx scripts/setupFeatureFlags.ts

🔍 Debugging Futuro

Si vuelven a aparecer errores:

  1. Ejecutar debug script:

    npx tsx scripts/debugFeatureFlags.ts
    
  2. Verificar logs mejorados: Ahora muestran:

    • error.message
    • error.stack
    • error.code (código de Prisma)
    • error.meta (metadata de Prisma)
  3. Test de conexión:

    npx tsx -e "
    import { prisma } from './src/core/database/prisma';
    const count = await prisma.featureFlag.count();
    console.log('Flags en DB:', count);
    "
    

Estado Actual

  • Tabla FeatureFlag creada y sincronizada
  • 8 flags de ejemplo en DB
  • Servicio funcionando correctamente
  • Logging mejorado
  • Script de debug disponible

El sistema está listo para usar. 🎮