3.4 KiB
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
- Base de datos vacía: No había flags iniciales
- Logger sin detalles: No mostraba el error completo
- 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:
-
Ejecutar debug script:
npx tsx scripts/debugFeatureFlags.ts -
Verificar logs mejorados: Ahora muestran:
error.messageerror.stackerror.code(código de Prisma)error.meta(metadata de Prisma)
-
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
FeatureFlagcreada y sincronizada - ✅ 8 flags de ejemplo en DB
- ✅ Servicio funcionando correctamente
- ✅ Logging mejorado
- ✅ Script de debug disponible
El sistema está listo para usar. 🎮