workspace-v1/shared/knowledge-base/reference/erp-inmobiliaria-legacy/gamilit/devops/scripts/sync-enums.ts
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

70 lines
2.3 KiB
TypeScript

/**
* Sync ENUMs: Backend → Frontend
*
* @description Copia enums.constants.ts de Backend a Frontend automáticamente.
* @usage npm run sync:enums
*
* IMPORTANTE:
* - Ejecutar SIEMPRE antes de commit
* - Integrado en postinstall (automático)
* - Backend es la fuente de verdad
*
* @see /docs/03-desarrollo/CONSTANTS-ARCHITECTURE.md
*/
import * as fs from 'fs';
import * as path from 'path';
const BACKEND_ENUMS = path.resolve(__dirname, '../../backend/src/shared/constants/enums.constants.ts');
const FRONTEND_ENUMS = path.resolve(__dirname, '../../frontend/src/shared/constants/enums.constants.ts');
async function syncEnums() {
console.log('🔄 Sincronizando ENUMs: Backend → Frontend...\n');
try {
// 1. Verificar que archivo Backend existe
if (!fs.existsSync(BACKEND_ENUMS)) {
console.error('❌ Error: No existe Backend enums.constants.ts');
console.error(` Ruta esperada: ${BACKEND_ENUMS}`);
process.exit(1);
}
// 2. Leer contenido Backend
const content = fs.readFileSync(BACKEND_ENUMS, 'utf-8');
// 3. Modificar header JSDoc (Backend → Frontend)
const modifiedContent = content.replace(
/ENUMs Constants - Shared \(Backend\)/g,
'ENUMs Constants - Shared (Frontend)'
).replace(
/@see \/apps\/backend\/src\/shared\/constants\/enums\.constants\.ts/g,
'@see /apps/backend/src/shared/constants/enums.constants.ts'
);
// 4. Crear directorio Frontend si no existe
const frontendDir = path.dirname(FRONTEND_ENUMS);
if (!fs.existsSync(frontendDir)) {
fs.mkdirSync(frontendDir, { recursive: true });
console.log(`📁 Creado directorio: ${frontendDir}`);
}
// 5. Escribir archivo Frontend
fs.writeFileSync(FRONTEND_ENUMS, modifiedContent, 'utf-8');
// 6. Verificar sincronización
const backendSize = fs.statSync(BACKEND_ENUMS).size;
const frontendSize = fs.statSync(FRONTEND_ENUMS).size;
console.log('✅ ENUMs sincronizados exitosamente!');
console.log(` Backend: ${BACKEND_ENUMS} (${backendSize} bytes)`);
console.log(` Frontend: ${FRONTEND_ENUMS} (${frontendSize} bytes)`);
console.log(` Diferencia: ${Math.abs(backendSize - frontendSize)} bytes (esperado por cambio de header)\n`);
} catch (error) {
console.error('❌ Error al sincronizar ENUMs:', error);
process.exit(1);
}
}
syncEnums();