feat: Mejorar el manejo de errores en el sistema de feature flags con logging detallado y agregar script de depuración

This commit is contained in:
Shni
2025-10-31 21:33:35 -05:00
parent 76ce4e4e4d
commit 65d030448e
4 changed files with 267 additions and 21 deletions

146
README/FEATURE_FLAGS_FIX.md Normal file
View File

@@ -0,0 +1,146 @@
# 🔧 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
```bash
✅ Servicio inicializado
📊 8 flags cargados
✅ Todos los flags parseados correctamente
```
## 🚀 Próximos Pasos
### 1. Reiniciar el Bot
```bash
# 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
```bash
# 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
```bash
# 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**:
```bash
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**:
```bash
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.** 🎮