Some checks failed
CI Pipeline / changes (push) Has been cancelled
CI Pipeline / core (push) Has been cancelled
CI Pipeline / trading-backend (push) Has been cancelled
CI Pipeline / trading-data-service (push) Has been cancelled
CI Pipeline / trading-frontend (push) Has been cancelled
CI Pipeline / erp-core (push) Has been cancelled
CI Pipeline / erp-mecanicas (push) Has been cancelled
CI Pipeline / gamilit-backend (push) Has been cancelled
CI Pipeline / gamilit-frontend (push) Has been cancelled
7.8 KiB
7.8 KiB
Plan de Actualizaciones Mayores - Gamilit & Trading-Platform
Resumen Ejecutivo
Este plan detalla la migración de dependencias con breaking changes significativos para los proyectos gamilit y trading-platform.
1. ZOD 3.x → 4.x (GAMILIT Frontend)
Estado Actual
- Versión actual: 4.1.12 (ya está en v4 en package.json)
- Archivos afectados: ~30+ archivos con schemas de validación
- Uso principal:
@hookform/resolvers/zodpara validación de formularios
Breaking Changes Relevantes
| Cambio | Impacto | Acción Requerida |
|---|---|---|
message → error param |
Alto | Buscar y reemplazar |
.default() behavior change |
Medio | Verificar schemas con defaults |
ZodError.errors → ZodError.issues |
Bajo | Verificar manejo de errores |
Import paths (zod/v4) |
Bajo | Mantener zod (es v4 default) |
Análisis del Código
// Patrones encontrados que necesitan revisión:
z.string().min(1, 'El correo electrónico es requerido') // OK - sin cambios
z.enum(['student', 'admin_teacher'], { message: '...' }) // CAMBIO: message → error
.refine((val) => val === true, { message: '...' }) // OK - refine sigue igual
Tareas
- Ejecutar codemod
npx zod-v3-to-v4 - Buscar
{ message:en schemas y cambiar a{ error: - Verificar schemas con
.default()o.catch() - Ejecutar tests y build
Riesgo: BAJO (ya está en v4, solo ajustes menores)
2. STRIPE 14.x → 20.x (Trading-Platform Backend)
Estado Actual
- Versión actual: ^14.7.0
- Archivos afectados: 3 archivos en
/modules/payments/ - API Version usada:
2023-10-16
Breaking Changes Relevantes
| Cambio | Impacto | Acción Requerida |
|---|---|---|
| API Version update | Alto | Actualizar apiVersion |
| Checkout Session behavior | Medio | Verificar subscription flow |
total_count deprecated on lists |
Bajo | No usado en código |
Análisis del Código
const stripe = new Stripe(config.stripe?.secretKey, {
apiVersion: '2023-10-16', // CAMBIO: Actualizar a '2024-12-18.acacia' o latest
});
// Patrones usados:
stripe.customers.create() // OK
stripe.checkout.sessions.create() // REVISAR: subscription behavior
stripe.subscriptions.update() // OK
stripe.billingPortal.sessions.create() // OK
Tareas
- Actualizar
stripea ^20.0.0 - Actualizar
apiVersiona versión compatible - Verificar webhook signature handling
- Testear flujo de checkout completo
- Verificar
stripe.promotionCodes.list()sigue funcionando
Riesgo: MEDIO (requiere testing de flujo de pagos)
3. REDIS 4.x → 5.x (Trading-Platform Backend)
Estado Actual
- Versión actual: ^4.6.10
- Archivos afectados: 0 (no se encontró uso activo)
- Nota: La dependencia está declarada pero no hay imports de
redis
Análisis
grep -rn "from ['\"']redis['\"']" src/ # Sin resultados
grep -rn "createClient" src/ # Sin resultados
Breaking Changes Relevantes (si se usara)
| Cambio | Impacto |
|---|---|
client.QUIT() → client.close() |
N/A |
client.disconnect() → client.destroy() |
N/A |
| Iterator changes (SCAN, etc.) | N/A |
Recomendación
OPCIÓN A: Remover la dependencia (no está en uso) OPCIÓN B: Actualizar a v5 para cuando se necesite
Riesgo: NINGUNO (no hay código que usar redis)
4. JEST 29.x → 30.x (Ambos Proyectos)
Estado Actual
- Versión actual: ^29.7.0 (gamilit backend, trading-platform backend)
- Archivos afectados: Archivos de configuración jest y todos los tests
Breaking Changes Relevantes
| Cambio | Impacto | Acción Requerida |
|---|---|---|
| Node 14/16 dropped | Ninguno | Ya usamos Node 18+ |
| jsdom 21→26 | Medio | Revisar mocks de window.location |
--testPathPattern → --testPathPatterns |
Bajo | Actualizar scripts |
genMockFromModule removed |
Bajo | Buscar y reemplazar |
| Snapshot changes (Error.cause) | Bajo | Actualizar snapshots |
Análisis del Código
# Buscar uso de APIs deprecadas
grep -rn "genMockFromModule" __tests__/ # Verificar
grep -rn "toBeCalled()" __tests__/ # Cambiar a toHaveBeenCalled()
Tareas
- Actualizar
jesta ^30.0.0 - Actualizar
ts-jesta versión compatible - Actualizar
@types/jesta ^30.0.0 - Buscar y reemplazar
genMockFromModule→createMockFromModule - Actualizar snapshots:
npm test -- -u - Verificar mocks de
window.locationen frontend tests
Riesgo: BAJO-MEDIO (principalmente snapshots)
5. VITEST 3.x → 4.x (Gamilit Frontend)
Estado Actual
- Versión actual: ^3.2.4
- Archivos afectados: Configuración vitest y tests de frontend
Análisis
Vitest 4 tiene cambios menores. La mayoría son mejoras de performance.
Riesgo: BAJO
Plan de Ejecución por Fases
FASE 1: Bajo Riesgo (Ejecutar Primero)
- Redis: Remover dependencia no usada
- Zod: Ajustes menores de sintaxis (message → error)
FASE 2: Riesgo Medio
- Jest/Vitest: Actualizar testing frameworks
- Stripe: Actualizar con testing exhaustivo
FASE 3: Opcional
- Otras dependencias menores identificadas
Prompts para Subagentes
Subagente 1: Migración Zod
TAREA: Migrar schemas de Zod en gamilit/apps/frontend
1. Ejecutar: npx zod-v3-to-v4 --dry-run primero
2. Buscar patrones: { message: en archivos *Schema*.ts
3. Reemplazar { message: por { error: en z.enum() y similares
4. NO cambiar .refine() - esos siguen usando message
5. Verificar: npm run build && npm test
Archivos clave:
- src/shared/schemas/auth.schemas.ts
- src/features/mechanics/**/\*Schemas.ts
- src/services/api/schemas/*.ts
Subagente 2: Limpieza Redis
TAREA: Remover dependencia redis no usada en trading-platform/apps/backend
1. Verificar que no hay imports de 'redis' en src/
2. Remover "redis": "^4.6.10" de package.json
3. Ejecutar npm install
4. Verificar build: npm run build
Subagente 3: Migración Jest
TAREA: Migrar Jest 29→30 en trading-platform/apps/backend
1. Actualizar package.json:
- "jest": "^30.0.0"
- "ts-jest": "^29.3.0" (compatible con jest 30)
- "@types/jest": "^30.0.0"
2. Buscar y reemplazar en __tests__/:
- genMockFromModule → createMockFromModule
- toBeCalled() → toHaveBeenCalled()
3. Actualizar jest.config.js si necesario
4. Ejecutar: npm test -- -u (actualizar snapshots)
5. Verificar todos los tests pasan
Subagente 4: Migración Stripe
TAREA: Migrar Stripe 14→20 en trading-platform/apps/backend
1. Actualizar package.json: "stripe": "^20.0.0"
2. npm install
3. Actualizar src/modules/payments/services/stripe.service.ts:
- Cambiar apiVersion: '2023-10-16' → '2024-12-18.acacia'
4. Verificar que estos métodos siguen funcionando:
- stripe.customers.create()
- stripe.checkout.sessions.create()
- stripe.subscriptions.update()
- stripe.billingPortal.sessions.create()
- stripe.webhooks.constructEvent()
5. npm run build
6. Documentar cualquier cambio de API necesario
Validación Post-Migración
Para cada proyecto:
# 1. Limpiar node_modules
rm -rf node_modules package-lock.json
npm install
# 2. Verificar vulnerabilidades
npm audit
# 3. Build
npm run build
# 4. Lint
npm run lint
# 5. Tests
npm test
# 6. Dev server (verificación manual)
npm run dev
Decisión Final
| Dependencia | Acción | Prioridad | Subagente |
|---|---|---|---|
| redis | REMOVER | Alta | #2 |
| zod | AJUSTAR | Media | #1 |
| jest | ACTUALIZAR | Media | #3 |
| stripe | ACTUALIZAR | Baja | #4 |
| vitest | POSTERGAR | Baja | - |
Nota: Stripe se posterga porque el riesgo de romper pagos en producción es alto y requiere testing exhaustivo con sandbox.