workspace-v1/orchestration/directivas/simco/SIMCO-MODIFICAR.md
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

9.4 KiB

SIMCO: MODIFICAR ARCHIVO

Versión: 1.0.0 Fecha: 2025-12-08 Aplica a: TODO agente que vaya a modificar un archivo existente Prioridad: OBLIGATORIA


RESUMEN EJECUTIVO

Modificar es más delicado que crear. Analiza el impacto antes de cambiar.


CHECKLIST RÁPIDO

ANTES DE MODIFICAR
├── [ ] 1. Leer archivo completo actual
├── [ ] 2. Entender propósito y contexto
├── [ ] 3. Analizar dependencias (quién usa este archivo)
├── [ ] 4. Verificar si hay tests relacionados
└── [ ] 5. Documentar estado ANTES del cambio

DURANTE MODIFICACIÓN
├── [ ] 6. Cambiar solo lo necesario (mínimo impacto)
├── [ ] 7. Mantener convenciones existentes
├── [ ] 8. Actualizar comentarios/documentación inline
└── [ ] 9. NO romper interfaces públicas sin plan de migración

DESPUÉS DE MODIFICAR
├── [ ] 10. Validar que build pasa (@VALIDAR)
├── [ ] 11. Verificar dependencias no rotas
├── [ ] 12. Ejecutar tests relacionados
├── [ ] 13. Actualizar inventario si cambió estructura
└── [ ] 14. Documentar en traza qué se cambió y por qué

FASE 1: ANTES DE MODIFICAR

1.1 Análisis de Impacto

Antes de tocar cualquier archivo, responder:

## Análisis de Impacto

### Archivo a Modificar
- **Ruta:** {ruta_completa}
- **Tipo:** DDL | Entity | Service | Controller | DTO | Componente | Hook
- **Propósito:** {descripción}

### Cambio Propuesto
- **Qué:** {descripción del cambio}
- **Por qué:** {justificación}
- **Alcance:** Menor | Moderado | Mayor

### Dependencias Directas (Nivel 1)
- {archivo_1} - usa {función/clase/tipo}
- {archivo_2} - importa {elemento}

### Dependencias Indirectas (Nivel 2-3)
- {archivo_3} - usa {archivo_1}
- {archivo_4} - usa {archivo_2}

### Riesgo de Ruptura
- [ ] Bajo: Cambio interno, no afecta interfaz
- [ ] Medio: Cambia interfaz pero hay pocos consumidores
- [ ] Alto: Cambia interfaz con muchos consumidores

### Tests Relacionados
- {test_1.spec.ts}
- {test_2.spec.ts}

1.2 Búsqueda de Dependencias

# Buscar quién importa este archivo
grep -rn "import.*{nombre_archivo}" apps/

# Buscar quién usa esta clase/función
grep -rn "{NombreClase}\|{nombreFuncion}" apps/

# Buscar en tests
grep -rn "{nombre}" apps/**/*.spec.ts

# Para DDL: buscar entities que mapean
grep -rn "'{nombre_tabla}'" @BACKEND

1.3 Backup Mental

Antes de modificar, documentar estado actual:

## Estado Antes de Modificación

**Archivo:** {ruta}
**Commit actual:** {hash si aplica}
**Fecha:** {YYYY-MM-DD HH:MM}

### Secciones que cambiarán:
- Líneas {N}-{M}: {descripción}
- Función {nombre}: {cambio}

### Comportamiento actual:
{descripción breve}

### Comportamiento esperado después:
{descripción breve}

FASE 2: DURANTE MODIFICACIÓN

2.1 Principio de Mínimo Cambio

╔══════════════════════════════════════════════════════════════════════╗
║  CAMBIAR SOLO LO NECESARIO                                           ║
║                                                                       ║
║  ❌ NO reformatear código no relacionado                             ║
║  ❌ NO cambiar estilo de código existente                            ║
║  ❌ NO "mejorar" código que no es parte del cambio                   ║
║  ❌ NO renombrar cosas sin necesidad                                 ║
║                                                                       ║
║  ✅ SÍ cambiar exactamente lo solicitado                             ║
║  ✅ SÍ mantener consistencia con código existente                    ║
║  ✅ SÍ actualizar documentación inline afectada                      ║
╚══════════════════════════════════════════════════════════════════════╝

2.2 Mantener Convenciones

Observar y replicar:

  • Estilo de indentación (espacios vs tabs)
  • Formato de imports
  • Estilo de comentarios
  • Nombres de variables/funciones
  • Estructura de archivos

NO introducir:

  • Nuevos patrones sin discusión
  • Librerías adicionales sin justificación
  • Cambios de estilo inconsistentes

2.3 Cambios en Interfaces Públicas

Si necesitas cambiar una interfaz pública (función, tipo, endpoint):

## Cambio de Interfaz Pública

### Interfaz Anterior
{definición anterior}

### Interfaz Nueva
{definición nueva}

### Razón del Cambio
{justificación}

### Impacto en Consumidores
- {consumidor_1}: requiere actualización en {línea}
- {consumidor_2}: requiere actualización en {línea}

### Plan de Migración
1. Actualizar interfaz
2. Actualizar consumidor 1
3. Actualizar consumidor 2
4. Ejecutar tests
5. Verificar build

2.4 Tipos de Modificación

Agregar (más seguro):

// ✅ Agregar nuevo método sin cambiar existentes
class UserService {
    // ... métodos existentes sin cambios ...

    // NUEVO: Método agregado
    async findByEmail(email: string): Promise<UserEntity | null> {
        // implementación
    }
}

Modificar (requiere cuidado):

// ⚠️ Modificar método existente
class UserService {
    // MODIFICADO: Agregado parámetro opcional
    async findOne(id: string, includeDeleted = false): Promise<UserEntity> {
        // implementación actualizada
    }
}

Eliminar (más peligroso):

// 🛑 Eliminar método - VERIFICAR QUE NO SE USA
class UserService {
    // ELIMINADO: Ya no se usa (verificado con grep)
    // async oldMethod() { ... }
}

FASE 3: DESPUÉS DE MODIFICAR

3.1 Validación Completa

# 1. Build
cd @BACKEND_ROOT && npm run build  # o @FRONTEND_ROOT

# 2. Lint
npm run lint

# 3. Tests específicos (si existen)
npm run test -- --grep "{nombre}"

# 4. Tests generales
npm run test

3.2 Verificar Dependencias

# Verificar que no hay errores de importación
grep -rn "Cannot find module\|has no exported member" .

# Verificar que no hay errores de tipo
npm run typecheck  # o tsc --noEmit

3.3 Actualizar Documentación

En inventario (si cambió estructura):

# @INVENTORY
- name: {nombre}
  # ... campos existentes ...
  last_modified: "{YYYY-MM-DD}"
  modificacion_reciente: "{descripción breve del cambio}"

En traza:

## [{TASK-ID}] Modificar {nombre}

**Fecha:** {YYYY-MM-DD HH:MM}
**Agente:** {Nombre-Agente}
**Tipo:** Modificación

### Archivo Modificado
`{ruta_completa}`

### Cambios Realizados
- {cambio 1}
- {cambio 2}

### Razón
{justificación del cambio}

### Impacto
- Archivos afectados: {N}
- Tests actualizados: {M}

### Validaciones
- [x] Build pasa
- [x] Lint pasa
- [x] Tests pasan
- [x] Dependencias OK

MODIFICACIONES POR TIPO DE ARCHIVO

DDL (SQL)

⚠️ MODIFICAR DDL ES ESPECIALMENTE DELICADO

### Proceso Correcto
1. Modificar archivo DDL (NO crear migration)
2. Ejecutar carga limpia completa
3. Verificar integridad referencial
4. Actualizar entities relacionadas si aplica

### NUNCA
- Ejecutar ALTER TABLE directo en BD
- Crear archivo migration separado
- Dejar DDL y BD desincronizados

Entity (TypeORM)

### Proceso Correcto
1. Verificar que cambio está alineado con DDL
2. Modificar entity
3. Actualizar DTOs si cambió estructura
4. Actualizar services si cambió lógica
5. Build + tests

### NUNCA
- Cambiar entity sin verificar DDL
- Omitir decoradores de TypeORM
- Cambiar nombres de columnas sin actualizar DDL

Service

### Proceso Correcto
1. Verificar contratos (DTOs, interfaces)
2. Modificar lógica
3. Actualizar tests unitarios
4. Verificar controllers que usan el service
5. Build + tests

### NUNCA
- Cambiar firma de método público sin actualizar consumidores
- Introducir efectos secundarios no documentados

Componente React

### Proceso Correcto
1. Verificar props actuales
2. Modificar componente
3. Actualizar stories (Storybook) si existe
4. Verificar páginas que usan el componente
5. Build + visual check

### NUNCA
- Cambiar props sin actualizar consumidores
- Romper estilos de otros componentes
- Introducir side effects en render

ROLLBACK

Si algo sale mal después de modificar:

## Rollback Requerido

### Problema Detectado
{descripción del problema}

### Acciones de Rollback
1. Revertir cambios en {archivo}
2. Ejecutar build para verificar
3. Ejecutar tests
4. Documentar lección aprendida

### Lección Aprendida
{qué se debió hacer diferente}

ERRORES COMUNES

Error Causa Solución
Romper dependencias No analizó impacto SIEMPRE buscar dependencias primero
Tests fallando No ejecutó tests Tests son OBLIGATORIOS
Cambios excesivos "Mejoró" código no relacionado Solo cambiar lo necesario
Inconsistencia DDL-Entity Modificó uno sin el otro Mantener sincronizados
Sin documentación Olvidó actualizar traza Documentar TODO cambio

REFERENCIAS

  • Crear archivos: @CREAR (SIMCO-CREAR.md)
  • Validar: @VALIDAR (SIMCO-VALIDAR.md)
  • Documentar: @DOCUMENTAR (SIMCO-DOCUMENTAR.md)
  • Análisis de impacto: @DIRECTIVAS/DIRECTIVA-ANALISIS-IMPACTO-DEPENDENCIAS.md

Versión: 1.0.0 | Sistema: SIMCO | Mantenido por: Tech Lead