chore: Remove duplicated TRIGGER-COHERENCIA-CAPAS files
- Removed 2 files from _archive/directivas/ - Removed 1 duplicate from directivas/triggers/ - These files should be inherited from workspace, not copied Part of: TASK-2026-02-02-ANALISIS-REESTRUCTURACION-ORCHESTRATION Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
5d2dbbe327
commit
fad2e4dd9f
@ -1,311 +0,0 @@
|
|||||||
# TRIGGER: COHERENCIA ENTRE CAPAS
|
|
||||||
|
|
||||||
**Versión:** 1.0.0
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Sistema:** SIMCO v4.0.0
|
|
||||||
**Alias:** @TRIGGER_COHERENCIA
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## RESUMEN EJECUTIVO
|
|
||||||
|
|
||||||
Este trigger OBLIGA a mantener coherencia entre las capas DDL, Backend y Frontend. Se activa automáticamente cuando se crea o modifica cualquier objeto en cualquier capa.
|
|
||||||
|
|
||||||
**PRINCIPIO:** "Ninguna capa puede tener objetos huérfanos. Todo DDL debe tener entity, todo entity que requiera persistencia debe tener DDL."
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CONDICIONES DE ACTIVACIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
activar_cuando:
|
|
||||||
DDL:
|
|
||||||
- Se crea nueva tabla (CREATE TABLE)
|
|
||||||
- Se modifica estructura de tabla (ALTER TABLE)
|
|
||||||
- Se crea nuevo schema
|
|
||||||
- Se elimina tabla o schema
|
|
||||||
|
|
||||||
Backend:
|
|
||||||
- Se crea nueva entity
|
|
||||||
- Se modifica entity existente
|
|
||||||
- Se crea nuevo módulo
|
|
||||||
- Se elimina entity o módulo
|
|
||||||
|
|
||||||
Frontend:
|
|
||||||
- Se crea componente que consume endpoint nuevo
|
|
||||||
- Se crea store/hook que requiere datos de API
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## VERIFICACIONES OBLIGATORIAS
|
|
||||||
|
|
||||||
### 1. Al Crear Tabla DDL
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
ANTES_de_completar_tarea:
|
|
||||||
verificar:
|
|
||||||
- "¿Existe entity correspondiente en backend?"
|
|
||||||
- "¿Entity tiene mismos campos que tabla?"
|
|
||||||
- "¿Tipos de datos son compatibles (PostgreSQL ↔ TypeScript)?"
|
|
||||||
- "¿Está documentada en DATABASE_INVENTORY.yml?"
|
|
||||||
- "¿Está documentada en ENTITIES-CATALOG.md?"
|
|
||||||
|
|
||||||
si_no_existe_entity:
|
|
||||||
accion: "BLOQUEAR hasta crear entity"
|
|
||||||
excepcion: "Tablas de relación M:N pueden no tener entity si están documentadas como tal"
|
|
||||||
|
|
||||||
si_no_documentada:
|
|
||||||
accion: "BLOQUEAR hasta documentar en inventarios"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Al Crear Entity
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
ANTES_de_completar_tarea:
|
|
||||||
verificar:
|
|
||||||
- "¿Existe tabla DDL correspondiente?"
|
|
||||||
- "¿Campos coinciden con DDL?"
|
|
||||||
- "¿Decoradores TypeORM son correctos?"
|
|
||||||
- "¿Está documentada en BACKEND_INVENTORY.yml?"
|
|
||||||
- "¿Está documentada en ENTITIES-CATALOG.md?"
|
|
||||||
|
|
||||||
si_no_existe_tabla:
|
|
||||||
accion: "BLOQUEAR hasta crear tabla DDL"
|
|
||||||
excepcion: "Entities de solo lectura (views) deben estar documentadas"
|
|
||||||
|
|
||||||
si_no_documentada:
|
|
||||||
accion: "BLOQUEAR hasta documentar en inventarios"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Al Crear Módulo Backend
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
ANTES_de_completar_tarea:
|
|
||||||
verificar:
|
|
||||||
- "¿Todas las entities del módulo tienen tabla DDL?"
|
|
||||||
- "¿Módulo está documentado en MODULES-CATALOG.md?"
|
|
||||||
- "¿Servicios están documentados en SERVICES-CATALOG.md?"
|
|
||||||
- "¿Endpoints están documentados en QUICK-API.yml?"
|
|
||||||
|
|
||||||
si_incompleto:
|
|
||||||
accion: "BLOQUEAR hasta completar documentación"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Al Crear Schema DDL
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
ANTES_de_completar_tarea:
|
|
||||||
verificar:
|
|
||||||
- "¿Schema tiene al menos un módulo backend correspondiente?"
|
|
||||||
- "¿Schema está documentado en DATABASE-SCHEMA.md?"
|
|
||||||
- "¿Schema está en DATABASE_INVENTORY.yml?"
|
|
||||||
|
|
||||||
si_schema_vacio:
|
|
||||||
accion: "ADVERTIR - Schema sin tablas debe tener plan de uso"
|
|
||||||
|
|
||||||
si_no_documentado:
|
|
||||||
accion: "BLOQUEAR hasta documentar"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## MATRIZ DE COHERENCIA
|
|
||||||
|
|
||||||
```
|
|
||||||
┌─────────────────────────────────────────────────────────────────┐
|
|
||||||
│ MATRIZ DE COHERENCIA │
|
|
||||||
├─────────────────────────────────────────────────────────────────┤
|
|
||||||
│ │
|
|
||||||
│ DDL (Schema/Tabla) │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
||||||
│ │ Tabla │────▶│ Entity │────▶│ Service │ │
|
|
||||||
│ │ DDL │ │ TypeORM │ │ NestJS │ │
|
|
||||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
||||||
│ │ │ │ │
|
|
||||||
│ │ │ │ │
|
|
||||||
│ ▼ ▼ ▼ │
|
|
||||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
||||||
│ │ DATABASE_ │ │ BACKEND_ │ │ QUICK- │ │
|
|
||||||
│ │ INVENTORY │ │ INVENTORY │ │ API.yml │ │
|
|
||||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
||||||
│ │ │ │ │
|
|
||||||
│ └───────────────────┼───────────────────┘ │
|
|
||||||
│ ▼ │
|
|
||||||
│ ┌─────────────────┐ │
|
|
||||||
│ │ ENTITIES-CATALOG│ │
|
|
||||||
│ │ MODULES-CATALOG │ │
|
|
||||||
│ │ SERVICES-CATALOG│ │
|
|
||||||
│ └─────────────────┘ │
|
|
||||||
│ │
|
|
||||||
│ REGLA: Cada flecha representa una DEPENDENCIA OBLIGATORIA │
|
|
||||||
│ No puede existir ningún nodo sin sus dependencias │
|
|
||||||
│ │
|
|
||||||
└─────────────────────────────────────────────────────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## EXCEPCIONES PERMITIDAS
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
excepciones:
|
|
||||||
tablas_sin_entity:
|
|
||||||
- tipo: "Tablas de relación M:N gestionadas por TypeORM"
|
|
||||||
requisito: "Documentar en ENTITIES-CATALOG.md sección 'Relaciones'"
|
|
||||||
ejemplo: "user_roles, permission_roles"
|
|
||||||
|
|
||||||
- tipo: "Tablas de auditoría automática"
|
|
||||||
requisito: "Documentar en DATABASE-SCHEMA.md sección 'Audit'"
|
|
||||||
ejemplo: "audit_logs, activity_logs"
|
|
||||||
|
|
||||||
- tipo: "Tablas de sistema/migración"
|
|
||||||
requisito: "Documentar en DATABASE-SCHEMA.md sección 'System'"
|
|
||||||
ejemplo: "migrations, typeorm_metadata"
|
|
||||||
|
|
||||||
entities_sin_tabla:
|
|
||||||
- tipo: "View entities (solo lectura)"
|
|
||||||
requisito: "Documentar como @ViewEntity con query"
|
|
||||||
ejemplo: "UserStatsView, DashboardSummaryView"
|
|
||||||
|
|
||||||
- tipo: "Entities embebidas"
|
|
||||||
requisito: "Documentar como @Embeddable"
|
|
||||||
ejemplo: "AddressEmbed, MetadataEmbed"
|
|
||||||
|
|
||||||
schemas_sin_modulo:
|
|
||||||
- tipo: "Schemas planificados (FUTURE)"
|
|
||||||
requisito: "Documentar en DATABASE_INVENTORY con estado='PLANNED'"
|
|
||||||
requisito_2: "Crear issue/ticket de implementación"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## FLUJO DE VALIDACIÓN
|
|
||||||
|
|
||||||
```
|
|
||||||
┌─────────────────────────────────────────────────────────────────┐
|
|
||||||
│ FLUJO DE VALIDACIÓN │
|
|
||||||
├─────────────────────────────────────────────────────────────────┤
|
|
||||||
│ │
|
|
||||||
│ 1. Agente completa tarea │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ 2. TRIGGER-COHERENCIA-CAPAS se activa │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ 3. Detectar tipo de cambio (DDL/BE/FE) │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ 4. Ejecutar verificaciones según tipo │
|
|
||||||
│ │ │
|
|
||||||
│ ├──── SI PASA ────▶ 5a. Permitir completar tarea │
|
|
||||||
│ │ │
|
|
||||||
│ └──── SI FALLA ───▶ 5b. BLOQUEAR y reportar gaps │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ 6. Agente debe: │
|
|
||||||
│ - Crear objetos faltantes │
|
|
||||||
│ - Documentar en inventarios │
|
|
||||||
│ - Re-ejecutar validación │
|
|
||||||
│ │
|
|
||||||
└─────────────────────────────────────────────────────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CHECKLIST DE COHERENCIA
|
|
||||||
|
|
||||||
### Para Cambios DDL
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Tabla tiene entity correspondiente en backend
|
|
||||||
[ ] Campos de entity coinciden con columnas de tabla
|
|
||||||
[ ] Tipos de datos son compatibles
|
|
||||||
[ ] Tabla documentada en DATABASE_INVENTORY.yml
|
|
||||||
[ ] Schema documentado en DATABASE-SCHEMA.md
|
|
||||||
[ ] Entity documentada en ENTITIES-CATALOG.md
|
|
||||||
```
|
|
||||||
|
|
||||||
### Para Cambios Backend
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Entity tiene tabla DDL correspondiente
|
|
||||||
[ ] Campos coinciden con DDL
|
|
||||||
[ ] Módulo documentado en MODULES-CATALOG.md
|
|
||||||
[ ] Servicios documentados en SERVICES-CATALOG.md
|
|
||||||
[ ] Entity documentada en BACKEND_INVENTORY.yml
|
|
||||||
[ ] Endpoints documentados en QUICK-API.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Para Nuevo Schema
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Schema tiene módulo backend planificado o existente
|
|
||||||
[ ] Schema documentado en DATABASE-SCHEMA.md
|
|
||||||
[ ] Schema en DATABASE_INVENTORY.yml
|
|
||||||
[ ] Si no tiene módulo: documentar como PLANNED con fecha estimada
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## INTEGRACIÓN CON OTROS TRIGGERS
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
secuencia_triggers:
|
|
||||||
1: "TRIGGER-ANTI-DUPLICACION" # Verificar no existe
|
|
||||||
2: "TRIGGER-ANALISIS-DEPENDENCIAS" # Mapear impacto
|
|
||||||
3: "TRIGGER-COHERENCIA-CAPAS" # ← ESTE TRIGGER
|
|
||||||
4: "TRIGGER-DOCUMENTACION-OBLIGATORIA" # Documentar
|
|
||||||
|
|
||||||
orden: "TRIGGER-COHERENCIA-CAPAS se ejecuta ANTES de TRIGGER-DOC"
|
|
||||||
razon: "No se puede documentar algo que no está coherente"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## MENSAJES DE ERROR
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
errores:
|
|
||||||
E-COH-001:
|
|
||||||
mensaje: "Tabla DDL sin entity correspondiente"
|
|
||||||
accion: "Crear entity antes de completar tarea"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
E-COH-002:
|
|
||||||
mensaje: "Entity sin tabla DDL"
|
|
||||||
accion: "Crear tabla DDL o documentar como excepción"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
E-COH-003:
|
|
||||||
mensaje: "Schema sin módulo backend"
|
|
||||||
accion: "Crear módulo o documentar como PLANNED"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
E-COH-004:
|
|
||||||
mensaje: "Objeto no documentado en inventario"
|
|
||||||
accion: "Actualizar inventario correspondiente"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
E-COH-005:
|
|
||||||
mensaje: "Discrepancia de campos DDL ↔ Entity"
|
|
||||||
accion: "Sincronizar campos entre DDL y Entity"
|
|
||||||
bloqueante: true
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## REFERENCIAS
|
|
||||||
|
|
||||||
| Alias | Descripción |
|
|
||||||
|-------|-------------|
|
|
||||||
| @TRIGGER_COHERENCIA | Este trigger |
|
|
||||||
| @DEF_CHK_POST | Checklist post-tarea |
|
|
||||||
| @TRIGGER-DOC | Documentación obligatoria |
|
|
||||||
| @SIMCO-VALIDAR | Directiva de validación |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Versión:** 1.0.0 | **Sistema:** SIMCO v4.0.0 | **Tipo:** Trigger Preventivo
|
|
||||||
Loading…
Reference in New Issue
Block a user