# CONTEXTO DE NIVEL: SUITE CORE (2B.1)

**Template para:** Componentes compartidos de una suite multi-vertical
**Nivel:** 2B.1
**Ejemplos:** nexus-erp-suite/core

---

## IDENTIFICACIÓN

```yaml
NIVEL: "2B.1 - SUITE-CORE"
TIPO: "Componentes compartidos de suite"
SUITE_PADRE: "{SUITE}"
RUTA_BASE: "projects/{SUITE}/core/"
ORCHESTRATION_PATH: "projects/{SUITE}/core/orchestration/"
PROPAGATE_TO:
  - "projects/{SUITE}/orchestration/"  # Suite padre (2B)
  - "orchestration/"                   # Workspace root
CONSUMIDORES:
  - "projects/{SUITE}/verticals/*/"    # Todos los verticales
```

---

## ESTRUCTURA REQUERIDA

```
projects/{SUITE}/core/
├── orchestration/
│   ├── 00-guidelines/
│   │   └── CONTEXTO-SUITE-CORE.md    # ESTE archivo (adaptado)
│   ├── inventarios/
│   │   ├── CORE_MASTER_INVENTORY.yml
│   │   ├── CORE_DATABASE_INVENTORY.yml
│   │   ├── CORE_BACKEND_INVENTORY.yml
│   │   └── CORE_FRONTEND_INVENTORY.yml
│   ├── trazas/
│   │   └── TRAZA-CORE.md
│   └── referencias/
│       └── CONSUMIDORES.yml          # Qué verticales usan qué
├── docs/
├── database/
│   └── ddl/
│       └── schemas/
│           ├── auth/
│           ├── shared/
│           └── catalog/
├── backend/
│   └── src/
│       └── modules/
│           ├── auth/
│           ├── shared/
│           └── ...
└── frontend/
    └── src/
        └── shared/
            └── components/
```

---

## VARIABLES DEL SUITE CORE

```yaml
# Completar con valores reales

SUITE_NAME: "{nombre de la suite}"
SUITE_ROOT: "projects/{SUITE}"
CORE_ROOT: "{SUITE_ROOT}/core"
CORE_DESCRIPTION: "Componentes compartidos entre verticales"

# Database Core
CORE_DB_DDL: "{CORE_ROOT}/database/ddl"
CORE_SCHEMAS:
  - auth        # Autenticación y autorización
  - shared      # Tablas compartidas (audit, config, etc.)
  - catalog     # Catálogos maestros

# Backend Core
CORE_BACKEND_ROOT: "{CORE_ROOT}/backend"
CORE_BACKEND_SRC: "{CORE_BACKEND_ROOT}/src"
CORE_MODULES:
  - AuthModule
  - SharedModule
  - CatalogModule

# Frontend Core
CORE_FRONTEND_ROOT: "{CORE_ROOT}/frontend"
CORE_FRONTEND_SRC: "{CORE_FRONTEND_ROOT}/src"
CORE_COMPONENTS:
  - AuthProvider
  - SharedLayout
  - CommonComponents
```

---

## CONSUMIDORES (Qué verticales usan qué)

```yaml
# Archivo: orchestration/referencias/CONSUMIDORES.yml

consumidores:
  database:
    "auth.*":
      usado_por: ["todos"]
      descripcion: "Schemas de autenticación"
    "shared.audit_logs":
      usado_por: ["todos"]
      descripcion: "Logs de auditoría"
    "catalog.*":
      usado_por: ["construccion", "manufactura"]
      descripcion: "Catálogos maestros"

  backend:
    "AuthModule":
      usado_por: ["todos"]
      importar_como: "@suite/core/auth"
    "SharedModule":
      usado_por: ["todos"]
      importar_como: "@suite/core/shared"

  frontend:
    "AuthProvider":
      usado_por: ["todos"]
      importar_desde: "@suite/core/components"
    "SharedLayout":
      usado_por: ["construccion", "manufactura"]
```

---

## ALIASES DEL SUITE CORE

```yaml
# Aliases específicos (agregar en ALIASES.yml global)

@{SUITE}_CORE: "projects/{SUITE}/core/"
@{SUITE}_CORE_ORCH: "projects/{SUITE}/core/orchestration/"
@{SUITE}_CORE_DDL: "projects/{SUITE}/core/database/ddl/"
@{SUITE}_CORE_BE: "projects/{SUITE}/core/backend/src/"
@{SUITE}_CORE_FE: "projects/{SUITE}/core/frontend/src/"
@{SUITE}_CORE_INV: "projects/{SUITE}/core/orchestration/inventarios/"
```

---

## CONTEXTO A CARGAR

```yaml
# Orden de carga para agentes trabajando en suite core

1_CORE_SISTEMA:
  - core/orchestration/directivas/simco/SIMCO-NIVELES.md
  - core/orchestration/directivas/principios/*.md
  - core/catalog/CATALOG-INDEX.yml

2_SUITE:
  - projects/{SUITE}/orchestration/00-guidelines/CONTEXTO-SUITE.md
  - projects/{SUITE}/orchestration/referencias/VERTICALES-INDEX.yml

3_SUITE_CORE:
  - projects/{SUITE}/core/orchestration/00-guidelines/CONTEXTO-SUITE-CORE.md
  - projects/{SUITE}/core/orchestration/inventarios/CORE_MASTER_INVENTORY.yml
  - projects/{SUITE}/core/orchestration/referencias/CONSUMIDORES.yml

4_INVENTARIOS_CAPA:
  database: "orchestration/inventarios/CORE_DATABASE_INVENTORY.yml"
  backend: "orchestration/inventarios/CORE_BACKEND_INVENTORY.yml"
  frontend: "orchestration/inventarios/CORE_FRONTEND_INVENTORY.yml"
```

---

## PROPAGACIÓN

```yaml
# Al completar tareas en suite core

DOCUMENTAR_LOCAL:
  inventario: "orchestration/inventarios/CORE_{CAPA}_INVENTORY.yml"
  traza: "orchestration/trazas/TRAZA-CORE.md"

PROPAGAR_A_SUITE:
  archivo: "projects/{SUITE}/orchestration/inventarios/SUITE_MASTER_INVENTORY.yml"
  formato: |
    core:
      {capa}:
        ultima_modificacion: "{fecha}"
        cambio: "{descripción breve}"
        artefacto: "{nombre}"

  traza: "projects/{SUITE}/orchestration/trazas/TRAZA-SUITE.md"
  formato_traza: |
    ## [{fecha}] Core Update
    - Capa: {capa}
    - Componente: {nombre}
    - Cambio: {descripción}
    - Impacto: {verticales afectados}

NOTIFICAR_CONSUMIDORES:
  # Si el cambio afecta a verticales existentes
  accion: "Agregar nota en CONSUMIDORES.yml"
  formato: |
    notas_actualizacion:
      - fecha: "{fecha}"
        componente: "{nombre}"
        mensaje: "{descripción del cambio}"
        accion_requerida: "{ninguna|actualizar|revisar}"

PROPAGAR_A_WORKSPACE:
  archivo: "orchestration/WORKSPACE-STATUS.md"
  formato: |
    ## [{fecha}] {SUITE}/core
    - Componente: {nombre}
    - Cambio: {descripción breve}
    - Verticales afectados: {lista}
```

---

## VALIDACIONES ESPECIALES

```yaml
# Por ser componentes compartidos, validaciones adicionales:

ANTES_DE_MODIFICAR:
  - [ ] Identificar verticales consumidores en CONSUMIDORES.yml
  - [ ] Evaluar impacto del cambio en consumidores
  - [ ] Si es breaking change, documentar migración

ANTES_DE_CREAR:
  - [ ] Verificar que no existe en core/catalog (sistema)
  - [ ] Verificar que no es específico de un vertical
  - [ ] Confirmar que será usado por múltiples verticales

DESPUES_DE_MODIFICAR:
  - [ ] Actualizar CONSUMIDORES.yml con notas
  - [ ] Ejecutar tests de integración
  - [ ] Propagar a suite y workspace
  - [ ] Si breaking change, notificar verticales
```

---

## GESTIÓN DE BREAKING CHANGES

```yaml
# Protocolo para cambios que rompen compatibilidad

IDENTIFICAR:
  - Cambios en interfaces/APIs públicas
  - Cambios en esquemas de base de datos
  - Eliminación de funcionalidades

DOCUMENTAR:
  archivo: "orchestration/BREAKING-CHANGES.md"
  formato: |
    ## [{fecha}] Breaking Change: {componente}

    ### Descripción
    {qué cambió}

    ### Verticales Afectados
    {lista de verticales}

    ### Migración Requerida
    {pasos para actualizar}

    ### Deadline
    {fecha límite para migrar}

NOTIFICAR:
  - Actualizar CONSUMIDORES.yml
  - Agregar entrada en TRAZA-SUITE.md del padre
  - Crear issue/tarea en cada vertical afectado
```

---

## ESTADO DEL SUITE CORE

```yaml
# Actualizar con cada cambio significativo

estado_general: "{ESTABLE|EN_DESARROLLO}"
ultima_actividad: "{YYYY-MM-DD}"

componentes:
  database:
    schemas: "{número}"
    tablas: "{número}"
    estado: "{estado}"
  backend:
    modulos: "{número}"
    estado: "{estado}"
  frontend:
    componentes: "{número}"
    estado: "{estado}"

consumidores_activos: "{número de verticales}"
breaking_changes_pendientes: "{número}"
```

---

**Template:** CONTEXTO-NIVEL-SUITE-CORE.md | **Sistema:** SIMCO Niveles
