## Scripts de Base de Datos (12 archivos) - init-database.sh: Inicializacion completa con usuario y BD - init-database-v3.sh: Version con dotenv-vault - reset-database.sh: Reset BD manteniendo usuario - recreate-database.sh: Recreacion completa - cleanup-duplicados.sh, fix-duplicate-triggers.sh - verify-users.sh, verify-missions-status.sh - load-users-and-profiles.sh, DB-127-validar-gaps.sh ## Scripts de Produccion (5 archivos) - build-production.sh: Compilar backend y frontend - deploy-production.sh: Desplegar con PM2 - pre-deploy-check.sh: Validaciones pre-deploy - repair-missing-data.sh: Reparar datos faltantes - migrate-missing-objects.sh: Migrar objetos SQL ## Documentacion (7 archivos) - GUIA-DESPLIEGUE-PRODUCCION-COMPLETA.md - GUIA-ACTUALIZACION-PRODUCCION.md - GUIA-VALIDACION-PRODUCCION.md - GUIA-DEPLOYMENT-AGENTE-PRODUCCION.md - GUIA-SSL-NGINX-PRODUCCION.md - GUIA-SSL-AUTOFIRMADO.md - DIRECTIVA-DEPLOYMENT.md ## Actualizaciones DDL/Seeds - 99-post-ddl-permissions.sql: Permisos actualizados - LOAD-SEEDS-gamification_system.sh: Seeds completos ## Nuevos archivos - PROMPT-AGENTE-PRODUCCION.md: Prompt para agente productivo - FLUJO-CARGA-LIMPIA.md: Documentacion de carga limpia Resuelve: Problema de carga de BD entre dev y produccion Cumple: DIRECTIVA-POLITICA-CARGA-LIMPIA.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
13 KiB
ANALISIS FASE 1: PLANEACION Y DIAGNOSTICO DE SINCRONIZACION
Fecha: 2025-12-18 Agente: Requirements-Analyst Proyecto: GAMILIT Estado: COMPLETADO
RESUMEN EJECUTIVO
Se ha realizado un analisis exhaustivo de los dos workspaces de GAMILIT para identificar las diferencias criticas que causan problemas entre desarrollo y produccion, especialmente en la carga de base de datos.
Workspaces Analizados
| Workspace | Ruta | Proposito | Remote |
|---|---|---|---|
| NUEVO | /home/isem/workspace/projects/gamilit/ |
Desarrollo activo | Gitea local |
| VIEJO | /home/isem/workspace-old/wsl-ubuntu/workspace/workspace-gamilit/gamilit/projects/gamilit/ |
Produccion (74.208.126.102) | GitHub |
1. HALLAZGOS CRITICOS
1.1 Scripts de Base de Datos FALTANTES en Workspace Nuevo
| Script | Tamano | Criticidad | Funcion |
|---|---|---|---|
init-database.sh |
37 KB | CRITICA | Inicializacion completa con seeds ordenados |
init-database-v3.sh |
36 KB | CRITICA | Version con dotenv-vault |
recreate-database.sh |
9 KB | CRITICA | Drop usuario + BD + recrear |
reset-database.sh |
15 KB | CRITICA | Drop BD manteniendo usuario |
cleanup-duplicados.sh |
12 KB | ALTA | Eliminar archivos duplicados |
fix-duplicate-triggers.sh |
4 KB | ALTA | Corregir triggers duplicados |
load-users-and-profiles.sh |
6 KB | ALTA | Cargar usuarios especificos |
verify-users.sh |
4 KB | MEDIA | Validar usuarios creados |
verify-missions-status.sh |
4 KB | MEDIA | Validar estado misiones |
IMPACTO: Sin estos scripts, el workspace nuevo NO puede recrear la base de datos automaticamente desde cero.
1.2 Configuracion por Ambiente FALTANTE
Workspace Viejo tiene:
apps/database/scripts/config/
├── dev.conf # Config desarrollo
├── prod.conf # Config produccion
└── staging.conf # Config staging
Workspace Nuevo: NO EXISTE este directorio
IMPACTO: No hay forma de variar configuracion de BD por ambiente automaticamente.
1.3 Diferencias en .env de Base de Datos
| Aspecto | Workspace Viejo | Workspace Nuevo |
|---|---|---|
.env.database |
Existe (config global BD) | NO EXISTE |
.env.dev |
Existe (passwords dev) | NO EXISTE |
| Separacion por ambiente | Si (4 archivos .env) | No (solo .env) |
| dotenv-vault | Implementado | NO implementado |
1.4 Scripts de Produccion FALTANTES en Root
Workspace Nuevo tiene (en /scripts/):
update-production.sh(existe)diagnose-production.sh(existe)
Workspace Viejo tiene ADICIONAL:
repair-missing-data.shbuild-production.shdeploy-production.shpre-deploy-check.shmigrate-missing-objects.sh
2. ARQUITECTURA DE DESPLIEGUE
2.1 Servidor de Produccion
| Componente | Configuracion |
|---|---|
| IP | 74.208.126.102 |
| Backend | Puerto 3006 (2 instancias cluster PM2) |
| Frontend | Puerto 3005 (1 instancia PM2) |
| PostgreSQL | Puerto 5432, BD gamilit_platform |
| Usuario BD | gamilit_user |
| Gestor Procesos | PM2 |
| Reverse Proxy | Nginx (puertos 80/443) |
| SSL | Let's Encrypt (certbot) |
2.2 Flujo de Deployment Actual
┌─────────────────────────────────────────────────────────────────┐
│ FLUJO DE DEPLOYMENT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ WORKSPACE NUEVO WORKSPACE VIEJO │
│ (Desarrollo) (Produccion) │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Desarrollo │ ──── Sync ────▶ │ Commit │ │
│ │ de Features │ │ + Push │ │
│ └─────────────┘ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ GitHub │ │
│ │ Remote │ │
│ └──────┬──────┘ │
│ │ │
│ SERVIDOR PRODUCCION │ │
│ (74.208.126.102) │ │
│ ┌───────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ AGENTE PRODUCCION: │ │
│ │ 1. Backup configs (.env) │ │
│ │ 2. pm2 stop all │ │
│ │ 3. git pull (fuente de verdad) │ │
│ │ 4. Cargar directivas del repo │ │
│ │ 5. Restaurar configs │ │
│ │ 6. Recrear BD desde DDL+Seeds │ │
│ │ 7. npm install && npm run build │ │
│ │ 8. pm2 start ecosystem.config.js │ │
│ │ 9. Validar deployment │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2.3 Directivas del Agente de Produccion
El agente de produccion sigue estas directivas (archivo PROMPT-AGENTE-PRODUCCION.md):
- Backup solo configuraciones - La BD se recrea desde el repo
- Repo es fuente de verdad - Todo viene del remoto
- Directivas en el repo - Despues del pull, leer docs/
- Backups en
../backups/- Rutas relativas
3. PROBLEMA PRINCIPAL IDENTIFICADO
3.1 El Problema de Carga de Base de Datos
Sintoma: La base de datos funciona en dev pero falla en produccion.
Causa Raiz: El workspace nuevo (que se sincroniza a produccion) carece de los scripts de inicializacion de BD.
Evidencia:
- Workspace viejo: 13 scripts de BD
- Workspace nuevo: 3 scripts de BD
- Script principal
init-database.shNO EXISTE en nuevo
3.2 Flujo de Inicializacion Requerido
# Workspace VIEJO (FUNCIONA):
./apps/database/scripts/init-database.sh --env prod
# - Lee config de scripts/config/prod.conf
# - Ejecuta 38 seeds en orden especifico
# - Valida integridad post-carga
# Workspace NUEVO (FALLA):
./apps/database/scripts/drop-and-recreate-database.sh
# - No tiene config por ambiente
# - Llama a create-database.sh que NO EXISTE
# - No tiene orden de seeds garantizado
4. COMPONENTES A SINCRONIZAR
4.1 Archivos CRITICOS (Deben copiarse del viejo al nuevo)
apps/database/scripts/
├── init-database.sh # 37 KB - CRITICO
├── init-database-v3.sh # 36 KB - CRITICO
├── recreate-database.sh # 9 KB - CRITICO
├── reset-database.sh # 15 KB - CRITICO
├── config/
│ ├── dev.conf # CRITICO
│ ├── prod.conf # CRITICO
│ └── staging.conf # CRITICO
├── cleanup-duplicados.sh # 12 KB - IMPORTANTE
├── fix-duplicate-triggers.sh # 4 KB - IMPORTANTE
├── load-users-and-profiles.sh # 6 KB - IMPORTANTE
├── verify-users.sh # 4 KB - IMPORTANTE
└── verify-missions-status.sh # 4 KB - IMPORTANTE
4.2 Scripts de Produccion a Sincronizar
scripts/
├── repair-missing-data.sh # IMPORTANTE
├── build-production.sh # IMPORTANTE
├── deploy-production.sh # IMPORTANTE
├── pre-deploy-check.sh # IMPORTANTE
└── migrate-missing-objects.sh # IMPORTANTE
4.3 Documentacion a Sincronizar
docs/95-guias-desarrollo/
├── DIRECTIVA-DEPLOYMENT.md # CRITICO (referenciado por agente)
├── GUIA-SSL-AUTOFIRMADO.md # CRITICO (referenciado por agente)
├── GUIA-CREAR-BASE-DATOS.md # CRITICO (referenciado por agente)
├── GUIA-CORS-PRODUCCION.md # IMPORTANTE
├── GUIA-VALIDACION-PRODUCCION.md # IMPORTANTE
└── GUIA-DESPLIEGUE-PRODUCCION-COMPLETA.md # IMPORTANTE
4.4 Archivos de Configuracion
PROMPT-AGENTE-PRODUCCION.md # Solo en viejo - COPIAR al nuevo
apps/database/.env.database # Solo en viejo - CREAR en nuevo
apps/database/.env.dev # Solo en viejo - CREAR en nuevo
5. CONFIGURACION SSL/HTTPS Y CORS
5.1 Arquitectura SSL
INTERNET
│
▼
┌─────────────────┐
│ Nginx :443 │ ← SSL/HTTPS (Let's Encrypt)
│ (Reverse Proxy) │
└────────┬────────┘
│
┌─────────────┴─────────────┐
│ │
▼ ▼
Backend :3006 (HTTP) Frontend :3005 (HTTP)
(interno) (interno)
5.2 Configuracion CORS Actual
Backend .env.production:
CORS_ORIGIN=https://74.208.126.102:3005,https://74.208.126.102
ENABLE_CORS=true
Frontend .env.production:
VITE_API_HOST=74.208.126.102:3006
VITE_API_PROTOCOL=https
VITE_WS_PROTOCOL=wss
5.3 Regla Critica CORS
- NestJS maneja CORS internamente (en
main.ts) - Nginx NO debe agregar headers CORS
- Evitar duplicacion de headers Access-Control-*
6. PLAN DE ACCION PROPUESTO
FASE 2: Ejecucion del Analisis
- Comparar archivo por archivo los scripts de BD
- Verificar diferencias en seeds entre workspaces
- Validar configuraciones .env
- Identificar dependencias faltantes
FASE 3: Planeacion de Implementaciones
- Crear lista de archivos a copiar
- Definir orden de sincronizacion
- Establecer checklist de validacion
- Documentar rollback si falla
FASE 4: Validacion de Planeacion
- Verificar que no falten objetos dependientes
- Validar que todos los imports/referencias existan
- Confirmar compatibilidad de versiones
- Revisar impacto en otros componentes
FASE 5: Ejecucion
- Sincronizar scripts de BD
- Sincronizar configuraciones
- Sincronizar documentacion
- Probar en dev antes de push a produccion
- Commit y push al repositorio
- Validar deployment en servidor
7. RIESGOS IDENTIFICADOS
| Riesgo | Severidad | Probabilidad | Mitigacion |
|---|---|---|---|
| Scripts de BD incompatibles | ALTA | MEDIA | Probar en dev primero |
| Passwords diferentes por ambiente | ALTA | ALTA | No sincronizar .env, solo .env.example |
| Seeds desactualizados | MEDIA | MEDIA | Comparar checksums |
| Conflictos de merge en git | MEDIA | BAJA | Sync manual, no merge |
| Documentacion desactualizada | BAJA | ALTA | Actualizar referencias |
8. PROXIMOS PASOS INMEDIATOS
- Obtener aprobacion de este plan de analisis
- Proceder con FASE 2 - Analisis detallado archivo por archivo
- Generar lista exacta de archivos a sincronizar
- Crear scripts de sincronizacion automatizados
- Probar en ambiente dev antes de tocar produccion
9. DEPENDENCIAS IDENTIFICADAS
Dependencias de Codigo
Scripts BD:
init-database.sh:
- depends_on: config/*.conf
- depends_on: ddl/*.sql
- depends_on: seeds/prod/*.sql
recreate-database.sh:
- depends_on: init-database.sh
- depends_on: reset-database.sh
update-production.sh:
- depends_on: diagnose-production.sh
- depends_on: repair-missing-data.sh
Dependencias de Documentacion
PROMPT-AGENTE-PRODUCCION.md:
- references: docs/95-guias-desarrollo/DIRECTIVA-DEPLOYMENT.md
- references: docs/95-guias-desarrollo/GUIA-SSL-AUTOFIRMADO.md
- references: docs/95-guias-desarrollo/GUIA-CREAR-BASE-DATOS.md
DIRECTIVA-SINCRONIZACION-WORKSPACES.md:
- references: scripts/update-production.sh
- references: apps/database/scripts/
Estado: FASE 1 COMPLETADA Siguiente: Aprobacion para continuar con FASE 2 Mantenedor: Requirements-Analyst