docs: Add workspace synchronization directive and update project context
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

## 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>
This commit is contained in:
rckrdmrd 2025-12-18 09:19:56 -06:00
parent 608e1e2a2e
commit c4b4b9cd89
2 changed files with 358 additions and 0 deletions

View File

@ -95,6 +95,49 @@ Cuando una directiva global usa `{DB_DDL_PATH}/schemas/{schema}/tables/`:
└── orchestration/ → Sistema de orquestación local
```
---
## WORKSPACES DUALES
**IMPORTANTE:** GAMILIT tiene dos workspaces con propositos diferentes.
### Workspace NUEVO (Este - Prioridad Desarrollo)
| Aspecto | Valor |
|---------|-------|
| **Path** | `~/workspace/projects/gamilit` |
| **Remote** | `http://72.60.226.4:3000/rckrdmrd/workspace.git` |
| **Proposito** | Desarrollo activo, agentes, directivas |
| **Prioridad** | ALTA - Todo desarrollo nuevo aqui |
### Workspace VIEJO (Produccion Cliente)
| Aspecto | Valor |
|---------|-------|
| **Path** | `~/workspace-old/wsl-ubuntu/workspace/workspace-gamilit/gamilit/projects/gamilit` |
| **Remote** | `git@github.com:rckrdmrd/gamilit-workspace.git` |
| **Proposito** | Deployment a servidor produccion |
| **Contenido especial** | Scripts produccion, guias HTTPS/PM2/Certbot |
### Reglas de Sincronizacion
Ver directiva completa: `orchestration/directivas/DIRECTIVA-SINCRONIZACION-WORKSPACES.md`
**Resumen:**
- Desarrollo → NUEVO primero, luego sincronizar a VIEJO
- Configuraciones (.env.production, ecosystem.config.js) → AMBOS
- Scripts de produccion → Solo VIEJO
- DDL y Seeds → IDENTICOS en ambos
### Servidor de Produccion
| Aspecto | Valor |
|---------|-------|
| IP | 74.208.126.102 |
| Backend | Puerto 3006 (PM2 cluster) |
| Frontend | Puerto 3005 (PM2 fork) |
| Database | PostgreSQL :5432, `gamilit_platform` |
## Convenciones Específicas
### Nomenclatura de Archivos

View File

@ -0,0 +1,315 @@
# 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)
```bash
# 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)
```bash
# 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
```bash
# 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)
```bash
# 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)
```bash
# 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)
```javascript
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