workspace/projects/gamilit/orchestration/directivas/DIRECTIVA-SINCRONIZACION-WORKSPACES.md
rckrdmrd c4b4b9cd89
Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
docs: Add workspace synchronization directive and update project context
## Summary
- Add DIRECTIVA-SINCRONIZACION-WORKSPACES.md with rules for dual workspace management
- Update CONTEXTO-PROYECTO.md with workspace dual information

## Workspaces
- NEW (development priority): ~/workspace/projects/gamilit → Gitea
- OLD (production client): ~/workspace-old/.../gamilit → GitHub

## Key Rules
- Development happens in NEW workspace first
- Production configs (.env.production, ecosystem.config.js) must exist in BOTH
- Production scripts and guides only in OLD workspace
- DDL/Seeds must be IDENTICAL in both

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 09:19:56 -06:00

7.7 KiB

DIRECTIVA: Sincronizacion de Workspaces GAMILIT

Version: 1.0 Fecha: 2025-12-18 Estado: ACTIVA Aplica a: Todos los agentes que trabajen en GAMILIT


RESUMEN EJECUTIVO

GAMILIT tiene DOS workspaces con propositos diferentes. Esta directiva define como mantenerlos sincronizados y que debe existir en cada uno.


WORKSPACES

Workspace NUEVO (Prioridad Desarrollo)

Path: ~/workspace/projects/gamilit
Remote: http://72.60.226.4:3000/rckrdmrd/workspace.git (Gitea local)

Proposito:

  • Desarrollo activo de nuevas features
  • Manejo de agentes y orquestacion
  • Documentacion tecnica y directivas
  • Prioridad para todo desarrollo nuevo

Contiene:

  • Codigo fuente completo (backend, frontend, database)
  • Sistema de orquestacion y agentes
  • Directivas y prompts
  • Documentacion tecnica

Workspace VIEJO (Produccion Cliente)

Path: ~/workspace-old/wsl-ubuntu/workspace/workspace-gamilit/gamilit/projects/gamilit
Remote: git@github.com:rckrdmrd/gamilit-workspace.git (GitHub)

Proposito:

  • Despliegue en servidor de produccion (74.208.126.102)
  • Codigo estable para cliente
  • Scripts de produccion y automatizacion
  • Documentacion operativa para agente productivo

Contiene:

  • Codigo deployado en produccion
  • Scripts de deployment (scripts/)
  • Guias de produccion (HTTPS, PM2, Certbot)
  • Configuraciones especificas del servidor

REGLAS DE SINCRONIZACION

1. Codigo de Desarrollo

Elemento Workspace Prioridad Accion
Nuevas features NUEVO Desarrollar aqui primero
Bug fixes NUEVO Desarrollar y luego sincronizar al viejo
Refactoring NUEVO Solo en nuevo, migrar cuando este estable

Flujo:

NUEVO (desarrollo) → Estable → VIEJO (produccion) → Deploy

2. Configuraciones de Produccion

Estos archivos deben existir en AMBOS workspaces:

Archivo Proposito
apps/backend/.env.production CORS, JWT, puertos, BD
apps/frontend/.env.production API host, protocolos
ecosystem.config.js Configuracion PM2

Regla: Si se modifica en uno, sincronizar al otro.

3. Scripts de Produccion

Estos archivos solo existen en el VIEJO:

Archivo Proposito
scripts/update-production.sh Actualizacion automatizada
scripts/diagnose-production.sh Diagnostico del servidor
scripts/repair-missing-data.sh Reparar datos faltantes
PRODUCTION-UPDATE.md Guia rapida post-pull

Razon: Son especificos para el agente del servidor productivo.

4. Documentacion de Produccion

Documento Ubicacion
Guias de despliegue completo VIEJO: docs/95-guias-desarrollo/GUIA-DESPLIEGUE-*.md
Validacion produccion VIEJO: docs/95-guias-desarrollo/GUIA-VALIDACION-PRODUCCION.md
HTTPS/Certbot VIEJO: documentado en guias de despliegue

En NUEVO: Solo referencia a que existe en el viejo.

5. Base de Datos

Elemento Regla
DDL (schemas, tables, functions) Deben ser IDENTICOS
Seeds de produccion Deben ser IDENTICOS
create-database.sh Debe ser IDENTICO
Scripts de migracion Solo en VIEJO si son para produccion

ANTES DE SINCRONIZAR

Checklist Obligatorio

[ ] 1. Identificar que workspace es origen
[ ] 2. Verificar que no hay conflictos de merge
[ ] 3. Listar archivos a sincronizar
[ ] 4. Verificar que configuraciones sensibles no se sobreescriban
[ ] 5. Despues de sincronizar, validar build en destino

Archivos que NUNCA sincronizar

.env                    # Configuracion local
.env.local              # Configuracion local
node_modules/           # Dependencias
dist/                   # Builds
*.log                   # Logs
.git/                   # Repositorio git (son diferentes!)

COMANDOS DE SINCRONIZACION

Sincronizar archivo especifico (NUEVO → VIEJO)

# Desde workspace NUEVO
SOURCE=~/workspace/projects/gamilit
DEST=~/workspace-old/wsl-ubuntu/workspace/workspace-gamilit/gamilit/projects/gamilit

# Ejemplo: sincronizar un archivo
cp "$SOURCE/apps/backend/src/modules/auth/auth.service.ts" "$DEST/apps/backend/src/modules/auth/"

Sincronizar carpeta completa (NUEVO → VIEJO)

# Sincronizar modulo completo (sin node_modules, sin .git)
rsync -av --exclude='node_modules' --exclude='.git' --exclude='dist' \
    "$SOURCE/apps/backend/src/modules/gamification/" \
    "$DEST/apps/backend/src/modules/gamification/"

Sincronizar DDL y Seeds

# Base de datos debe ser identica
rsync -av "$SOURCE/apps/database/ddl/" "$DEST/apps/database/ddl/"
rsync -av "$SOURCE/apps/database/seeds/" "$DEST/apps/database/seeds/"

SERVIDOR DE PRODUCCION

Configuracion

Aspecto Valor
IP 74.208.126.102
Backend Puerto 3006 (2 instancias cluster)
Frontend Puerto 3005 (1 instancia)
PostgreSQL Puerto 5432, database gamilit_platform
PM2 Gestor de procesos

Workflow de Deployment

1. Desarrollo en NUEVO
2. Pruebas locales
3. Sincronizar a VIEJO
4. Commit y push a GitHub
5. En servidor: git pull
6. Ejecutar ./scripts/update-production.sh

Referencia a Documentacion de Produccion

Para documentacion completa de produccion, ver en workspace VIEJO:

docs/95-guias-desarrollo/
├── GUIA-ACTUALIZACION-PRODUCCION.md   # Post-pull workflow
├── GUIA-DESPLIEGUE-PRODUCCION-COMPLETA.md
├── GUIA-VALIDACION-PRODUCCION.md
└── DEPLOYMENT-GUIDE.md

scripts/
├── update-production.sh
├── diagnose-production.sh
└── repair-missing-data.sh

CONFIGURACIONES HTTPS/CORS

Backend (.env.production)

# CORS - Produccion
CORS_ORIGIN=http://74.208.126.102:3005,https://74.208.126.102:3005

# Para HTTPS con dominio:
# CORS_ORIGIN=https://gamilit.example.com

# Puerto
APP_PORT=3006

# Database
DATABASE_URL=postgresql://gamilit_user:PASSWORD@localhost:5432/gamilit_platform

Frontend (.env.production)

# API Host
VITE_API_HOST=74.208.126.102
VITE_API_PORT=3006
VITE_API_PROTOCOL=http
VITE_WS_PROTOCOL=ws

# Para HTTPS:
# VITE_API_PROTOCOL=https
# VITE_WS_PROTOCOL=wss

PM2 (ecosystem.config.js)

module.exports = {
  apps: [
    {
      name: 'gamilit-backend',
      cwd: './apps/backend',
      script: 'dist/main.js',
      instances: 2,
      exec_mode: 'cluster',
      env_production: {
        NODE_ENV: 'production',
        APP_PORT: 3006
      }
    },
    {
      name: 'gamilit-frontend',
      cwd: './apps/frontend',
      script: 'npm',
      args: 'run preview -- --port 3005 --host',
      instances: 1,
      exec_mode: 'fork'
    }
  ]
};

CUANDO APLICAR ESTA DIRECTIVA

  1. Al iniciar trabajo en GAMILIT - Verificar en cual workspace trabajar
  2. Al completar una feature - Evaluar si debe sincronizarse
  3. Antes de deployment - Asegurar que VIEJO tiene cambios
  4. Al modificar configuraciones - Sincronizar a ambos workspaces
  5. Al modificar DDL/Seeds - Sincronizar obligatoriamente

ERRORES COMUNES

Error 1: Desarrollar en workspace equivocado

Problema: Feature nueva desarrollada en VIEJO Solucion: Mover cambios a NUEVO, luego sincronizar

Error 2: Sobreescribir configuraciones de produccion

Problema: Copiar .env de desarrollo a produccion Solucion: Siempre respaldar antes de sincronizar

Error 3: DDL desincronizado

Problema: Tablas diferentes entre workspaces Solucion: Sincronizar DDL y recrear BD en ambos

Error 4: Olvidar push al remote correcto

Problema: Push a Gitea cuando deberia ser GitHub Solucion: Verificar remote antes de push


Ultima actualizacion: 2025-12-18 Mantenedor: @tech-lead