147 lines
3.4 KiB
Markdown
147 lines
3.4 KiB
Markdown
# 🔧 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.** 🎮
|