chore: Remove obsolete orchestration archive files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8fa57a4c00
commit
73f509a911
@ -1,82 +0,0 @@
|
|||||||
# ═══════════════════════════════════════════════════════════════════════════════
|
|
||||||
# ÍNDICE DE DEFINICIONES CANÓNICAS - CLINICA-DENTAL
|
|
||||||
# ═══════════════════════════════════════════════════════════════════════════════
|
|
||||||
|
|
||||||
version: "1.0.0"
|
|
||||||
created: "2026-01-18"
|
|
||||||
updated: "2026-01-18"
|
|
||||||
maintained_by: "@WS_ORCHESTRATOR"
|
|
||||||
propagated_from: "erp-clinicas/orchestration/_definitions/"
|
|
||||||
role: "CONSUMER" # Especialización de erp-clinicas
|
|
||||||
|
|
||||||
# ─────────────────────────────────────────────────────────────────────────────────
|
|
||||||
# PROTOCOLOS
|
|
||||||
# ─────────────────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
protocols:
|
|
||||||
CCA-PROTOCOL:
|
|
||||||
alias: "@DEF_CCA"
|
|
||||||
path: "protocols/CCA-PROTOCOL.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
CAPVED-CYCLE:
|
|
||||||
alias: "@DEF_CAPVED"
|
|
||||||
path: "protocols/CAPVED-CYCLE.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
|
|
||||||
validations:
|
|
||||||
VALIDATION-BACKEND:
|
|
||||||
alias: "@DEF_VAL_BE"
|
|
||||||
path: "validations/VALIDATION-BACKEND.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
VALIDATION-FRONTEND:
|
|
||||||
alias: "@DEF_VAL_FE"
|
|
||||||
path: "validations/VALIDATION-FRONTEND.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
VALIDATION-DDL:
|
|
||||||
alias: "@DEF_VAL_DDL"
|
|
||||||
path: "validations/VALIDATION-DDL.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
|
|
||||||
checklists:
|
|
||||||
CHECKLIST-GOBERNANZA-TAREA:
|
|
||||||
alias: "@DEF_CHK_GOB"
|
|
||||||
path: "checklists/CHECKLIST-GOBERNANZA-TAREA.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
CHECKLIST-POST-TASK:
|
|
||||||
alias: "@DEF_CHK_POST"
|
|
||||||
path: "checklists/CHECKLIST-POST-TASK.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
CHECKLIST-PRE-CREATE:
|
|
||||||
alias: "@DEF_CHK_CREATE"
|
|
||||||
path: "checklists/CHECKLIST-PRE-CREATE.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
CHECKLIST-PRE-MODIFY:
|
|
||||||
alias: "@DEF_CHK_MODIFY"
|
|
||||||
path: "checklists/CHECKLIST-PRE-MODIFY.md"
|
|
||||||
estado: "PROPAGADO"
|
|
||||||
|
|
||||||
statistics:
|
|
||||||
total_definitions: 9
|
|
||||||
propagated: 9
|
|
||||||
|
|
||||||
# ─────────────────────────────────────────────────────────────────────────────────
|
|
||||||
# CONFIGURACIÓN DE HERENCIA (SPECIALIZES)
|
|
||||||
# ─────────────────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
consumer_config:
|
|
||||||
role: "CONSUMER"
|
|
||||||
inherits_from: "erp-clinicas" # Especialización de erp-clinicas
|
|
||||||
inherits_version: "1.0.0"
|
|
||||||
tipo_herencia: "SPECIALIZES"
|
|
||||||
modulos_heredados:
|
|
||||||
- pacientes (adaptado a odontología)
|
|
||||||
- citas
|
|
||||||
- expedientes (adaptado)
|
|
||||||
modulos_propios:
|
|
||||||
- odontograma
|
|
||||||
- ortodoncia
|
|
||||||
- protesis
|
|
||||||
propagates_to: []
|
|
||||||
sync_strategy: "AUTO"
|
|
||||||
vertical: "clinica-dental"
|
|
||||||
nota: "Clínica dental especializada - hereda de erp-clinicas"
|
|
||||||
@ -1,223 +0,0 @@
|
|||||||
# CHECKLIST: GOBERNANZA DE TAREA
|
|
||||||
|
|
||||||
**Versión:** 1.0.0
|
|
||||||
**Alias:** @DEF_CHK_GOB
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Sistema:** SIMCO v4.0.0
|
|
||||||
**Prioridad:** P0 - BLOQUEANTE
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PROPÓSITO
|
|
||||||
|
|
||||||
Este checklist es **OBLIGATORIO** y **BLOQUEANTE** para toda tarea que se marque como completada.
|
|
||||||
Debe ejecutarse ANTES de cualquier otra validación post-tarea.
|
|
||||||
|
|
||||||
> **REGLA:** Sin gobernanza documentada, la tarea NO está completada.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## SECUENCIA DE EJECUCIÓN
|
|
||||||
|
|
||||||
```
|
|
||||||
TAREA FINALIZA EJECUCIÓN
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
┌─────────────────────────────┐
|
|
||||||
│ CHECKLIST-GOBERNANZA-TAREA │ ← PRIMERO (este checklist)
|
|
||||||
│ (BLOQUEANTE) │
|
|
||||||
└─────────────┬───────────────┘
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
¿Todos los items pasan?
|
|
||||||
/ \
|
|
||||||
Sí No
|
|
||||||
│ │
|
|
||||||
▼ ▼
|
|
||||||
CHECKLIST-POST-TASK BLOQUEAR
|
|
||||||
(validaciones (no continuar
|
|
||||||
técnicas) hasta resolver)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CHECKLIST (8 Items)
|
|
||||||
|
|
||||||
### 1. Carpeta de Tarea
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Existe carpeta: orchestration/tareas/TASK-{YYYY-MM-DD}-{NNN}/
|
|
||||||
```
|
|
||||||
|
|
||||||
**Si no existe:**
|
|
||||||
```bash
|
|
||||||
# Crear carpeta
|
|
||||||
mkdir -p orchestration/tareas/TASK-$(date +%Y-%m-%d)-00X
|
|
||||||
|
|
||||||
# Copiar templates
|
|
||||||
cp -r orchestration/tareas/_templates/TASK-TEMPLATE/* orchestration/tareas/TASK-$(date +%Y-%m-%d)-00X/
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. METADATA.yml
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] METADATA.yml existe y tiene campos obligatorios:
|
|
||||||
[ ] task_id
|
|
||||||
[ ] identificacion.titulo
|
|
||||||
[ ] identificacion.tipo
|
|
||||||
[ ] responsabilidad.agente_responsable
|
|
||||||
[ ] alcance.nivel
|
|
||||||
[ ] temporalidad.fecha_inicio
|
|
||||||
[ ] estado.actual = "completada"
|
|
||||||
[ ] artefactos.archivos_creados (lista)
|
|
||||||
[ ] artefactos.archivos_modificados (lista)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Fase C - Contexto (OBLIGATORIA)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] 01-CONTEXTO.md existe y documenta:
|
|
||||||
[ ] Qué se solicitó
|
|
||||||
[ ] Por qué se necesita
|
|
||||||
[ ] Proyecto/módulo afectado
|
|
||||||
[ ] Contexto cargado
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Fase E - Ejecución (OBLIGATORIA)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] 05-EJECUCION.md existe y documenta:
|
|
||||||
[ ] Subtareas ejecutadas
|
|
||||||
[ ] Archivos creados/modificados
|
|
||||||
[ ] Validaciones ejecutadas
|
|
||||||
[ ] Problemas encontrados y cómo se resolvieron
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Fase D - Documentación (OBLIGATORIA)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] 06-DOCUMENTACION.md existe y documenta:
|
|
||||||
[ ] Resumen de cambios
|
|
||||||
[ ] Inventarios actualizados
|
|
||||||
[ ] Propagación evaluada
|
|
||||||
[ ] Referencias actualizadas
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6. Índice de Tareas
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] orchestration/tareas/_INDEX.yml actualizado:
|
|
||||||
[ ] Estadísticas actualizadas
|
|
||||||
[ ] Tarea en historial_por_fecha
|
|
||||||
[ ] Tarea en por_proyecto
|
|
||||||
[ ] Tarea en por_agente
|
|
||||||
[ ] Tarea en por_tipo
|
|
||||||
```
|
|
||||||
|
|
||||||
### 7. Traza de Agente (Recomendado)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] orchestration/agents/trazas/TRAZA-AGENTE-{PERFIL}.md actualizada
|
|
||||||
O
|
|
||||||
[ ] Excepción documentada en METADATA.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### 8. Validación Final
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Carpeta de tarea contiene mínimo:
|
|
||||||
- METADATA.yml (completo)
|
|
||||||
- 01-CONTEXTO.md (documentado)
|
|
||||||
- 05-EJECUCION.md (documentado)
|
|
||||||
- 06-DOCUMENTACION.md (documentado)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## DECISIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
SI_PASA_TODO:
|
|
||||||
accion: "Continuar con CHECKLIST-POST-TASK"
|
|
||||||
nota: "Gobernanza validada"
|
|
||||||
|
|
||||||
SI_FALLA_CUALQUIER_ITEM:
|
|
||||||
accion: "BLOQUEAR"
|
|
||||||
mensaje: |
|
|
||||||
❌ GOBERNANZA INCOMPLETA
|
|
||||||
|
|
||||||
La tarea NO puede marcarse como completada.
|
|
||||||
Items faltantes:
|
|
||||||
- {lista de items faltantes}
|
|
||||||
|
|
||||||
Acciones requeridas:
|
|
||||||
1. Completar items faltantes
|
|
||||||
2. Re-ejecutar este checklist
|
|
||||||
3. Continuar con validaciones técnicas
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## TEMPLATE RÁPIDO
|
|
||||||
|
|
||||||
Para crear documentación de gobernanza rápidamente:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Variables
|
|
||||||
TASK_ID="TASK-$(date +%Y-%m-%d)-00X"
|
|
||||||
TASK_DIR="orchestration/tareas/$TASK_ID"
|
|
||||||
|
|
||||||
# 1. Crear estructura
|
|
||||||
mkdir -p $TASK_DIR
|
|
||||||
cp orchestration/tareas/_templates/TASK-TEMPLATE/* $TASK_DIR/
|
|
||||||
|
|
||||||
# 2. Completar METADATA.yml
|
|
||||||
# 3. Documentar 01-CONTEXTO.md
|
|
||||||
# 4. Documentar 05-EJECUCION.md
|
|
||||||
# 5. Documentar 06-DOCUMENTACION.md
|
|
||||||
# 6. Actualizar _INDEX.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## INTEGRACIÓN CON TODOLIST
|
|
||||||
|
|
||||||
Al iniciar cualquier tarea, el TodoList DEBE incluir:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
todos:
|
|
||||||
# ... otras tareas ...
|
|
||||||
|
|
||||||
# SIEMPRE al final:
|
|
||||||
- content: "Crear documentación de gobernanza (TASK-{ID})"
|
|
||||||
status: "pending"
|
|
||||||
activeForm: "Documentando gobernanza"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## USO
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# En cualquier perfil de agente:
|
|
||||||
al_completar_trabajo_tecnico:
|
|
||||||
- Cargar: "@DEF_CHK_GOB"
|
|
||||||
- Ejecutar: "8 items de gobernanza"
|
|
||||||
- Si pasa: "Continuar con @DEF_CHK_POST"
|
|
||||||
- Si falla: "Completar gobernanza primero"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## REFERENCIAS
|
|
||||||
|
|
||||||
| Alias | Descripción |
|
|
||||||
|-------|-------------|
|
|
||||||
| @DEF_CHK_GOB | Este checklist |
|
|
||||||
| @DEF_CHK_POST | Checklist post-tarea (validaciones técnicas) |
|
|
||||||
| @TRIGGER-DOC | Trigger de documentación obligatoria |
|
|
||||||
| @TAREAS | Directorio de tareas |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Versión:** 1.0.0 | **Sistema:** SIMCO v4.0.0 | **Tipo:** Checklist Bloqueante
|
|
||||||
@ -1,244 +0,0 @@
|
|||||||
# CHECKLIST: POST-TASK
|
|
||||||
|
|
||||||
**Versión:** 1.1.0
|
|
||||||
**Alias:** @DEF_CHK_POST
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Sistema:** SIMCO v4.0.0
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PROPÓSITO
|
|
||||||
|
|
||||||
Verificaciones obligatorias DESPUÉS de completar cualquier tarea, antes de marcarla como terminada.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## SECUENCIA OBLIGATORIA
|
|
||||||
|
|
||||||
```
|
|
||||||
TAREA FINALIZA EJECUCIÓN
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
┌─────────────────────────────┐
|
|
||||||
│ 0. GOBERNANZA │ ← PRIMERO (BLOQUEANTE)
|
|
||||||
│ (@DEF_CHK_GOB) │
|
|
||||||
└─────────────┬───────────────┘
|
|
||||||
¿Pasa?
|
|
||||||
/ \
|
|
||||||
No Sí
|
|
||||||
│ │
|
|
||||||
BLOQUEAR ▼
|
|
||||||
┌─────────────────────────────┐
|
|
||||||
│ 1-7. VALIDACIONES TÉCNICAS │
|
|
||||||
│ (este checklist) │
|
|
||||||
└─────────────────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CHECKLIST
|
|
||||||
|
|
||||||
### 0. Gobernanza de Tarea (BLOQUEANTE - EJECUTAR PRIMERO)
|
|
||||||
|
|
||||||
> **OBLIGATORIO:** Ejecutar @DEF_CHK_GOB antes de continuar.
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] CHECKLIST-GOBERNANZA-TAREA.md ejecutado y PASADO
|
|
||||||
- Carpeta de tarea existe
|
|
||||||
- METADATA.yml completo
|
|
||||||
- Fases C, E, D documentadas
|
|
||||||
- _INDEX.yml actualizado
|
|
||||||
|
|
||||||
SI NO PASA: DETENER. Completar gobernanza primero.
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 1. Validaciones Técnicas
|
|
||||||
|
|
||||||
#### Backend (si aplica)
|
|
||||||
```markdown
|
|
||||||
[ ] npm run build - PASA
|
|
||||||
[ ] npm run lint - PASA
|
|
||||||
[ ] npm run test - PASA (si existen tests)
|
|
||||||
[ ] Servidor inicia sin errores
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Frontend (si aplica)
|
|
||||||
```markdown
|
|
||||||
[ ] npm run build - PASA
|
|
||||||
[ ] npm run lint - PASA
|
|
||||||
[ ] npm run typecheck - PASA
|
|
||||||
[ ] Aplicación renderiza sin errores
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Database (si aplica)
|
|
||||||
```markdown
|
|
||||||
[ ] DDL ejecuta sin errores
|
|
||||||
[ ] Datos de prueba cargan correctamente
|
|
||||||
[ ] Constraints funcionan como esperado
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Coherencia Entre Capas (TRIGGER-COHERENCIA-CAPAS)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## DDL ↔ Backend
|
|
||||||
[ ] Toda tabla DDL tiene entity correspondiente (o excepción documentada)
|
|
||||||
[ ] Toda entity tiene tabla DDL correspondiente (o es View/Embeddable)
|
|
||||||
[ ] Campos de entity coinciden exactamente con columnas de tabla
|
|
||||||
[ ] Tipos TypeScript son compatibles con tipos PostgreSQL
|
|
||||||
[ ] Todo schema tiene al menos un módulo backend (o está marcado PLANNED)
|
|
||||||
|
|
||||||
## Backend ↔ Frontend (si aplica)
|
|
||||||
[ ] Todo endpoint consumido tiene implementación en backend
|
|
||||||
[ ] Si hay nuevo endpoint: está documentado en Swagger
|
|
||||||
[ ] Si hay nuevo componente: está integrado donde corresponde
|
|
||||||
|
|
||||||
## Verificación de Excepciones
|
|
||||||
[ ] Tablas M:N sin entity están documentadas en ENTITIES-CATALOG sección "Relaciones"
|
|
||||||
[ ] View entities (@ViewEntity) están documentadas como tal
|
|
||||||
[ ] Schemas PLANNED tienen fecha estimada de implementación
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Actualización de Inventarios (TRIGGER-INVENTARIOS-SINCRONIZADOS)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## Sincronización Obligatoria
|
|
||||||
[ ] DATABASE_INVENTORY.yml actualizado (si cambió BD)
|
|
||||||
- Conteo de schemas correcto
|
|
||||||
- Conteo de tablas correcto
|
|
||||||
- Nuevos objetos agregados
|
|
||||||
[ ] BACKEND_INVENTORY.yml actualizado (si cambió BE)
|
|
||||||
- Conteo de módulos correcto
|
|
||||||
- Conteo de entities correcto
|
|
||||||
- Conteo de services correcto
|
|
||||||
[ ] FRONTEND_INVENTORY.yml actualizado (si cambió FE)
|
|
||||||
- Conteo de componentes correcto
|
|
||||||
- Conteo de páginas correcto
|
|
||||||
[ ] MASTER_INVENTORY.yml actualizado con totales
|
|
||||||
|
|
||||||
## Verificación de Cobertura
|
|
||||||
[ ] Cobertura de inventarios = 100%
|
|
||||||
[ ] Timestamp de actualización = fecha de hoy
|
|
||||||
[ ] sync_status = "SYNCED"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Actualización de Trazas
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Traza de tarea actualizada
|
|
||||||
[ ] Traza de agente actualizada
|
|
||||||
[ ] PROXIMA-ACCION.md actualizado
|
|
||||||
[ ] Commits con mensajes descriptivos
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Documentación
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] README actualizado (si cambió significativamente)
|
|
||||||
[ ] Documentación técnica actualizada (si aplica)
|
|
||||||
[ ] ADR creado (si fue decisión arquitectural)
|
|
||||||
[ ] Comentarios en código donde la lógica no es obvia
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6. Sistema de Gobernanza
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Carpeta de tarea creada: orchestration/tareas/TASK-{ID}/
|
|
||||||
[ ] METADATA.yml completado
|
|
||||||
[ ] Fases mínimas documentadas (C, E, D)
|
|
||||||
[ ] _INDEX.yml de tareas actualizado
|
|
||||||
[ ] Traza de agente actualizada
|
|
||||||
```
|
|
||||||
|
|
||||||
### 7. Evaluación de Propagación
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] ¿Cambio debe propagarse a otros proyectos?
|
|
||||||
[ ] Si es erp-core: ¿propagar a verticales?
|
|
||||||
[ ] Si es shared/catalog: ¿notificar proyectos que lo usan?
|
|
||||||
[ ] Si es security fix: ¿propagar inmediatamente?
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CRITERIOS DE COMPLETITUD
|
|
||||||
|
|
||||||
### Tarea Completada SI:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
obligatorio:
|
|
||||||
- Todas las validaciones técnicas pasan
|
|
||||||
- Inventarios actualizados
|
|
||||||
- Trazas actualizadas
|
|
||||||
- Documentación de gobernanza creada
|
|
||||||
|
|
||||||
recomendado:
|
|
||||||
- Documentación técnica actualizada
|
|
||||||
- Tests agregados/actualizados
|
|
||||||
- Propagación evaluada
|
|
||||||
```
|
|
||||||
|
|
||||||
### Tarea NO Completada SI:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
bloqueantes:
|
|
||||||
- Build falla
|
|
||||||
- Lint falla
|
|
||||||
- Tests fallan
|
|
||||||
- Inventarios no actualizados
|
|
||||||
- Sin documentación de gobernanza
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## DECISIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
SI_PASA_TODO:
|
|
||||||
accion: "Marcar tarea como COMPLETADA"
|
|
||||||
documentar: "Resumen en METADATA.yml"
|
|
||||||
actualizar: "_INDEX.yml con estado COMPLETADO"
|
|
||||||
|
|
||||||
SI_FALLA_VALIDACION:
|
|
||||||
accion: "MANTENER como EN_PROGRESO"
|
|
||||||
corregir: "Resolver validaciones fallidas"
|
|
||||||
reintentar: "Ejecutar checklist de nuevo"
|
|
||||||
|
|
||||||
SI_FALTA_DOCUMENTACION:
|
|
||||||
accion: "MANTENER como EN_PROGRESO"
|
|
||||||
completar: "Documentación faltante"
|
|
||||||
nota: "Tarea no está completa sin documentación"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## USO
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# En cualquier perfil de agente:
|
|
||||||
al_completar_tarea:
|
|
||||||
- Cargar: "@DEF_CHK_POST"
|
|
||||||
- Ejecutar: "Checklist completo"
|
|
||||||
- Si pasa: "Marcar tarea como completada"
|
|
||||||
- Si falla: "Resolver antes de marcar completada"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## INTEGRACIÓN CON TRIGGER-DOC
|
|
||||||
|
|
||||||
Este checklist se activa junto con `TRIGGER-DOCUMENTACION-OBLIGATORIA.md` al intentar completar una tarea.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
secuencia:
|
|
||||||
1: "Agente intenta marcar tarea como completada"
|
|
||||||
2: "TRIGGER-DOC se activa"
|
|
||||||
3: "Se ejecuta CHECKLIST-POST-TASK"
|
|
||||||
4: "Si pasa: tarea se marca completada"
|
|
||||||
5: "Si falla: tarea permanece en progreso"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Versión:** 1.0.0 | **Sistema:** SIMCO v4.0.0 | **Tipo:** Checklist
|
|
||||||
@ -1,107 +0,0 @@
|
|||||||
# CHECKLIST: PRE-CREATE
|
|
||||||
|
|
||||||
**Versión:** 1.0.0
|
|
||||||
**Alias:** @DEF_CHK_CREATE
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Sistema:** SIMCO v4.0.0
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PROPÓSITO
|
|
||||||
|
|
||||||
Verificaciones obligatorias ANTES de crear cualquier objeto nuevo (tabla, entity, service, componente, etc.).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CHECKLIST
|
|
||||||
|
|
||||||
### 1. Verificación Anti-Duplicación
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Buscar en catálogo compartido (shared/catalog/CATALOG-INDEX.yml)
|
|
||||||
[ ] Buscar en inventario del proyecto (orchestration/inventarios/)
|
|
||||||
[ ] Buscar archivos similares con nombre parecido
|
|
||||||
[ ] Buscar funcionalidad similar en módulos existentes
|
|
||||||
[ ] Confirmar que NO existe funcionalidad equivalente
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Verificación de Dependencias
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Identificar de qué depende el nuevo objeto
|
|
||||||
[ ] Verificar que las dependencias existen
|
|
||||||
[ ] Si depende de DDL: tabla existe en base de datos
|
|
||||||
[ ] Si depende de entity: entity existe en backend
|
|
||||||
[ ] Si depende de endpoint: endpoint existe y funciona
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Verificación de Ubicación
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Identificar módulo/carpeta correcta según estándares
|
|
||||||
[ ] Verificar que la ruta sigue convenciones del proyecto
|
|
||||||
[ ] Confirmar que no hay conflicto de nombres
|
|
||||||
[ ] Verificar permisos de escritura en la ubicación
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Verificación de Nomenclatura
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Nombre sigue convenciones del proyecto
|
|
||||||
[ ] Nombre es descriptivo y no ambiguo
|
|
||||||
[ ] Prefijos/sufijos correctos según tipo de archivo
|
|
||||||
[ ] Formato de archivo correcto (PascalCase, kebab-case, etc.)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Verificación de Coherencia
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Nuevo objeto es coherente con arquitectura existente
|
|
||||||
[ ] No introduce acoplamiento innecesario
|
|
||||||
[ ] Sigue patrones establecidos del proyecto
|
|
||||||
[ ] No duplica responsabilidades de otros objetos
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## DECISIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
SI_PASA_TODO:
|
|
||||||
accion: "Proceder con creación"
|
|
||||||
siguiente: "Ejecutar SIMCO-CREAR.md"
|
|
||||||
|
|
||||||
SI_FALLA_DUPLICACION:
|
|
||||||
accion: "DETENER - Evaluar uso del existente"
|
|
||||||
opciones:
|
|
||||||
- "Usar objeto existente"
|
|
||||||
- "Extender objeto existente"
|
|
||||||
- "Justificar creación de nuevo (documentar razón)"
|
|
||||||
|
|
||||||
SI_FALLA_DEPENDENCIA:
|
|
||||||
accion: "DETENER - Resolver dependencia primero"
|
|
||||||
opciones:
|
|
||||||
- "Delegar creación de dependencia"
|
|
||||||
- "Crear dependencia primero"
|
|
||||||
- "Replanificar orden de tareas"
|
|
||||||
|
|
||||||
SI_FALLA_NOMENCLATURA:
|
|
||||||
accion: "Corregir nombre antes de crear"
|
|
||||||
consultar: "@SIMCO/SIMCO-NOMENCLATURA.md"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## USO
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# En perfil de agente:
|
|
||||||
antes_de_crear:
|
|
||||||
- Cargar: "@DEF_CHK_CREATE"
|
|
||||||
- Ejecutar: "Checklist completo"
|
|
||||||
- Documentar: "Resultado en traza"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Versión:** 1.0.0 | **Sistema:** SIMCO v4.0.0 | **Tipo:** Checklist
|
|
||||||
@ -1,149 +0,0 @@
|
|||||||
# CHECKLIST: PRE-MODIFY
|
|
||||||
|
|
||||||
**Versión:** 1.0.0
|
|
||||||
**Alias:** @DEF_CHK_MODIFY
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Sistema:** SIMCO v4.0.0
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PROPÓSITO
|
|
||||||
|
|
||||||
Verificaciones obligatorias ANTES de modificar cualquier archivo existente.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CHECKLIST
|
|
||||||
|
|
||||||
### 1. Análisis de Dependientes
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Identificar archivos que IMPORTAN el archivo a modificar
|
|
||||||
[ ] Listar todos los dependientes encontrados
|
|
||||||
[ ] Evaluar impacto del cambio en cada dependiente
|
|
||||||
[ ] Clasificar cambio como: aditivo | modificación | breaking
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Análisis de Dependencias
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Identificar archivos que el archivo IMPORTA
|
|
||||||
[ ] Verificar que las dependencias siguen siendo válidas post-cambio
|
|
||||||
[ ] Identificar si el cambio requiere actualizar dependencias
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Evaluación de Impacto
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Determinar alcance: local | módulo | proyecto | workspace
|
|
||||||
[ ] Identificar capas afectadas: DDL | BE | FE
|
|
||||||
[ ] Evaluar si cambio requiere migración de datos
|
|
||||||
[ ] Evaluar si cambio rompe compatibilidad hacia atrás
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Plan de Actualización
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Si hay dependientes afectados: incluir en plan de subtareas
|
|
||||||
[ ] Ordenar actualizaciones por dependencia (de más interno a más externo)
|
|
||||||
[ ] Identificar tests que deben actualizarse
|
|
||||||
[ ] Identificar documentación que debe actualizarse
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Verificación de Seguridad
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Cambio no introduce vulnerabilidades de seguridad
|
|
||||||
[ ] Cambio no expone datos sensibles
|
|
||||||
[ ] Cambio mantiene validaciones existentes
|
|
||||||
[ ] Si es API: cambio no rompe contratos existentes
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6. Estrategia de Rollback
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
[ ] Identificar cómo revertir el cambio si falla
|
|
||||||
[ ] Confirmar que existe backup o commit previo
|
|
||||||
[ ] Documentar pasos de rollback si son complejos
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CLASIFICACIÓN DE CAMBIOS
|
|
||||||
|
|
||||||
### Cambio Aditivo (BAJO RIESGO)
|
|
||||||
```yaml
|
|
||||||
caracteristicas:
|
|
||||||
- Agregar campo/método nuevo
|
|
||||||
- Agregar endpoint nuevo
|
|
||||||
- No modifica comportamiento existente
|
|
||||||
acciones:
|
|
||||||
- Actualizar dependientes que usarán lo nuevo
|
|
||||||
- Validación estándar
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cambio de Modificación (MEDIO RIESGO)
|
|
||||||
```yaml
|
|
||||||
caracteristicas:
|
|
||||||
- Cambiar implementación interna
|
|
||||||
- Cambiar tipos de datos
|
|
||||||
- Renombrar elementos
|
|
||||||
acciones:
|
|
||||||
- Actualizar TODOS los dependientes
|
|
||||||
- Validación exhaustiva
|
|
||||||
- Pruebas de regresión
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cambio Breaking (ALTO RIESGO)
|
|
||||||
```yaml
|
|
||||||
caracteristicas:
|
|
||||||
- Eliminar campo/método
|
|
||||||
- Cambiar firma de función/endpoint
|
|
||||||
- Cambiar comportamiento de API
|
|
||||||
acciones:
|
|
||||||
- DETENER y evaluar con Tech-Leader
|
|
||||||
- Plan de migración obligatorio
|
|
||||||
- Comunicar a equipos afectados
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## DECISIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
SI_PASA_TODO:
|
|
||||||
accion: "Proceder con modificación"
|
|
||||||
siguiente: "Ejecutar SIMCO-MODIFICAR.md"
|
|
||||||
incluir: "Actualización de dependientes en plan"
|
|
||||||
|
|
||||||
SI_CAMBIO_BREAKING:
|
|
||||||
accion: "ESCALAR a Tech-Leader"
|
|
||||||
documentar:
|
|
||||||
- Razón del cambio breaking
|
|
||||||
- Alternativas evaluadas
|
|
||||||
- Plan de migración propuesto
|
|
||||||
|
|
||||||
SI_IMPACTO_ALTO:
|
|
||||||
accion: "Solicitar revisión antes de proceder"
|
|
||||||
documentar:
|
|
||||||
- Alcance del impacto
|
|
||||||
- Dependientes afectados
|
|
||||||
- Plan de actualización
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## USO
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# En perfil de agente:
|
|
||||||
antes_de_modificar:
|
|
||||||
- Cargar: "@DEF_CHK_MODIFY"
|
|
||||||
- Ejecutar: "Checklist completo"
|
|
||||||
- Documentar: "Resultado en traza"
|
|
||||||
- Si breaking: "Escalar antes de continuar"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Versión:** 1.0.0 | **Sistema:** SIMCO v4.0.0 | **Tipo:** Checklist
|
|
||||||
@ -1,347 +0,0 @@
|
|||||||
---
|
|
||||||
tipo: especificacion-tecnica
|
|
||||||
nivel: 2-tecnico
|
|
||||||
ssot: /orchestration/directivas/principios/PRINCIPIO-CAPVED.md
|
|
||||||
audiencia: agentes IA, sistemas automaticos
|
|
||||||
proposito: Especificacion tecnica del protocolo CAPVED
|
|
||||||
actualizado: 2026-01-16
|
|
||||||
---
|
|
||||||
|
|
||||||
# PROTOCOLO: CAPVED-CYCLE
|
|
||||||
|
|
||||||
**Versión:** 1.0.0
|
|
||||||
**Alias:** @DEF_CAPVED
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Sistema:** SIMCO v4.0.0
|
|
||||||
**SSOT:** [PRINCIPIO-CAPVED.md](/orchestration/directivas/principios/PRINCIPIO-CAPVED.md)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## RESUMEN
|
|
||||||
|
|
||||||
CAPVED es el ciclo de vida obligatorio para toda tarea en el workspace. Define 6 fases secuenciales que aseguran calidad, trazabilidad y documentación completa.
|
|
||||||
|
|
||||||
```
|
|
||||||
C → A → P → V → E → D
|
|
||||||
│ │ │ │ │ │
|
|
||||||
│ │ │ │ │ └─ DOCUMENTACIÓN (Registrar, trazar, propagar)
|
|
||||||
│ │ │ │ └───── EJECUCIÓN (Implementar cambios)
|
|
||||||
│ │ │ └───────── VALIDACIÓN (Gate pre-ejecución)
|
|
||||||
│ │ └───────────── PLANEACIÓN (Desglosar subtareas)
|
|
||||||
│ └───────────────── ANÁLISIS (Mapear impacto)
|
|
||||||
└───────────────────── CONTEXTO (Clasificar y vincular)
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## FASES DEL CICLO
|
|
||||||
|
|
||||||
### FASE C - CONTEXTO
|
|
||||||
|
|
||||||
**Objetivo:** Clasificar tarea y vincular con proyecto/workspace.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
actividades:
|
|
||||||
- Identificar tipo de tarea (feature/fix/refactor/analysis)
|
|
||||||
- Identificar proyecto(s) involucrado(s)
|
|
||||||
- Identificar nivel (workspace/proyecto/módulo)
|
|
||||||
- Cargar contexto requerido según perfil
|
|
||||||
- Vincular con épica/user story si aplica
|
|
||||||
|
|
||||||
salidas:
|
|
||||||
- Tipo de tarea identificado
|
|
||||||
- Proyecto(s) identificado(s)
|
|
||||||
- Contexto mínimo viable cargado
|
|
||||||
- Vinculación establecida
|
|
||||||
|
|
||||||
criterios_completitud:
|
|
||||||
- Proyecto claramente identificado
|
|
||||||
- Tipo de tarea determinado
|
|
||||||
- Contexto base cargado
|
|
||||||
```
|
|
||||||
|
|
||||||
### FASE A - ANÁLISIS
|
|
||||||
|
|
||||||
**Objetivo:** Mapear impacto, dependencias y riesgos.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
actividades:
|
|
||||||
- Ejecutar TRIGGER-ANTI-DUPLICACION si es creación
|
|
||||||
- Ejecutar TRIGGER-ANALISIS-DEPENDENCIAS si es modificación
|
|
||||||
- Identificar archivos afectados
|
|
||||||
- Mapear dependientes (quién usa lo que modifico)
|
|
||||||
- Mapear dependencias (qué usa lo que modifico)
|
|
||||||
- Evaluar riesgos y complejidad
|
|
||||||
|
|
||||||
salidas:
|
|
||||||
- Mapa de impacto
|
|
||||||
- Lista de dependientes
|
|
||||||
- Lista de dependencias
|
|
||||||
- Evaluación de riesgos
|
|
||||||
- Complejidad estimada
|
|
||||||
|
|
||||||
criterios_completitud:
|
|
||||||
- Impacto mapeado
|
|
||||||
- Dependencias identificadas
|
|
||||||
- Riesgos evaluados
|
|
||||||
```
|
|
||||||
|
|
||||||
### FASE P - PLANEACIÓN
|
|
||||||
|
|
||||||
**Objetivo:** Desglosar en subtareas por dominio.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
actividades:
|
|
||||||
- Crear lista de subtareas específicas
|
|
||||||
- Ordenar por dependencia (DDL → BE → FE)
|
|
||||||
- Identificar subtareas paralelizables
|
|
||||||
- Asignar perfil responsable por subtarea
|
|
||||||
- Definir criterios de aceptación por subtarea
|
|
||||||
|
|
||||||
salidas:
|
|
||||||
- Lista de subtareas (ST-001, ST-002, ...)
|
|
||||||
- Orden de ejecución
|
|
||||||
- Asignación de perfiles
|
|
||||||
- Criterios de aceptación
|
|
||||||
|
|
||||||
criterios_completitud:
|
|
||||||
- Subtareas definidas
|
|
||||||
- Orden establecido
|
|
||||||
- Criterios claros
|
|
||||||
```
|
|
||||||
|
|
||||||
### FASE V - VALIDACIÓN (Gate)
|
|
||||||
|
|
||||||
**Objetivo:** Verificar antes de ejecutar.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
actividades:
|
|
||||||
- Verificar que plan cubre todo el impacto
|
|
||||||
- Verificar que no hay scope creep
|
|
||||||
- Verificar que dependencias están resueltas
|
|
||||||
- Verificar que hay capacidad de rollback
|
|
||||||
- Confirmar alineación con estándares
|
|
||||||
|
|
||||||
salidas:
|
|
||||||
- Checklist de validación completado
|
|
||||||
- Decisión GO/NO-GO
|
|
||||||
|
|
||||||
criterios_completitud:
|
|
||||||
- Todas las verificaciones pasadas
|
|
||||||
- Decisión GO documentada
|
|
||||||
|
|
||||||
decision:
|
|
||||||
GO: "Continuar a Fase E"
|
|
||||||
NO-GO: "Regresar a Fase A o P según hallazgo"
|
|
||||||
```
|
|
||||||
|
|
||||||
### FASE E - EJECUCIÓN
|
|
||||||
|
|
||||||
**Objetivo:** Implementar cambios según plan.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
actividades:
|
|
||||||
- Ejecutar subtareas en orden
|
|
||||||
- Validar cada subtarea (build/lint/test)
|
|
||||||
- Crear commits atómicos por subtarea
|
|
||||||
- Documentar problemas encontrados
|
|
||||||
- Escalar si hay bloqueos
|
|
||||||
|
|
||||||
salidas:
|
|
||||||
- Código implementado
|
|
||||||
- Commits realizados
|
|
||||||
- Validaciones pasadas
|
|
||||||
- Problemas documentados
|
|
||||||
|
|
||||||
criterios_completitud:
|
|
||||||
- Todas las subtareas completadas
|
|
||||||
- Build pasa
|
|
||||||
- Lint pasa
|
|
||||||
- Tests pasan (si existen)
|
|
||||||
```
|
|
||||||
|
|
||||||
### FASE D - DOCUMENTACIÓN
|
|
||||||
|
|
||||||
**Objetivo:** Registrar, trazar y propagar.
|
|
||||||
|
|
||||||
> **IMPORTANTE:** Esta fase tiene dos sub-fases en orden estricto:
|
|
||||||
> 1. **D1 - Gobernanza** (BLOQUEANTE)
|
|
||||||
> 2. **D2 - Técnica** (después de gobernanza)
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
actividades:
|
|
||||||
# D1 - GOBERNANZA (PRIMERO - BLOQUEANTE)
|
|
||||||
d1_gobernanza:
|
|
||||||
- Crear carpeta de tarea: orchestration/tareas/TASK-{ID}/
|
|
||||||
- Completar METADATA.yml
|
|
||||||
- Documentar 01-CONTEXTO.md (qué y por qué)
|
|
||||||
- Documentar 05-EJECUCION.md (cómo y qué problemas)
|
|
||||||
- Documentar 06-DOCUMENTACION.md (resumen y referencias)
|
|
||||||
- Actualizar orchestration/tareas/_INDEX.yml
|
|
||||||
- Actualizar traza de agente (opcional pero recomendado)
|
|
||||||
|
|
||||||
# D2 - TÉCNICA (después de gobernanza)
|
|
||||||
d2_tecnica:
|
|
||||||
- Actualizar inventarios afectados
|
|
||||||
- Evaluar propagación (TRIGGER-PROPAGACION-AUTOMATICA)
|
|
||||||
- Crear/actualizar documentación técnica si aplica
|
|
||||||
|
|
||||||
salidas:
|
|
||||||
# Gobernanza
|
|
||||||
- Carpeta de tarea con documentación completa
|
|
||||||
- _INDEX.yml actualizado
|
|
||||||
# Técnica
|
|
||||||
- Inventarios actualizados
|
|
||||||
- Propagación evaluada/ejecutada
|
|
||||||
|
|
||||||
criterios_completitud:
|
|
||||||
# Gobernanza (BLOQUEANTE)
|
|
||||||
- Carpeta TASK-{ID}/ existe
|
|
||||||
- METADATA.yml completo
|
|
||||||
- Fases C, E, D documentadas
|
|
||||||
- _INDEX.yml actualizado
|
|
||||||
# Técnica
|
|
||||||
- Inventarios al día
|
|
||||||
- Propagación evaluada
|
|
||||||
|
|
||||||
validacion:
|
|
||||||
checklist: "@DEF_CHK_GOB (gobernanza) + @DEF_CHK_POST (técnica)"
|
|
||||||
orden: "Gobernanza PRIMERO, luego técnica"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## MODOS DE EJECUCIÓN
|
|
||||||
|
|
||||||
### MODE-FULL (Por defecto)
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
fases: [C, A, P, V, E, D]
|
|
||||||
uso: "Features, bug fixes, refactorizaciones, cambios BD"
|
|
||||||
alias: "@FULL"
|
|
||||||
```
|
|
||||||
|
|
||||||
### MODE-QUICK
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
fases: [E, D]
|
|
||||||
uso: "Typos, fixes menores, updates de deps, config simple"
|
|
||||||
alias: "@QUICK"
|
|
||||||
condicion: "Cambio trivial sin riesgo de impacto"
|
|
||||||
```
|
|
||||||
|
|
||||||
### MODE-ANALYSIS
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
fases: [C, A, P]
|
|
||||||
uso: "Investigación, auditoría, exploración, propuestas"
|
|
||||||
alias: "@ANALYSIS"
|
|
||||||
nota: "No modifica código"
|
|
||||||
```
|
|
||||||
|
|
||||||
### MODE-PROPAGATION
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
fases: [C, A, P, E, V, D] # Por cada proyecto destino
|
|
||||||
uso: "Propagar cambio existente a proyectos relacionados"
|
|
||||||
alias: "@PROPAGATE"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## INTEGRACIÓN CON TRIGGERS
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
triggers_por_fase:
|
|
||||||
A:
|
|
||||||
- TRIGGER-ANTI-DUPLICACION (si creación)
|
|
||||||
- TRIGGER-ANALISIS-DEPENDENCIAS (si modificación)
|
|
||||||
V:
|
|
||||||
- TRIGGER-DUPLICADOS (si se detectan)
|
|
||||||
D:
|
|
||||||
- TRIGGER-PROPAGACION-AUTOMATICA
|
|
||||||
- TRIGGER-DOCUMENTACION-OBLIGATORIA
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## INTEGRACIÓN CON GOBERNANZA
|
|
||||||
|
|
||||||
> **OBLIGATORIO:** Toda tarea que complete el ciclo CAPVED DEBE crear documentación de gobernanza.
|
|
||||||
> **BLOQUEANTE:** Sin gobernanza, la tarea NO está completada.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
gobernanza:
|
|
||||||
checklist: "@DEF_CHK_GOB"
|
|
||||||
|
|
||||||
pasos:
|
|
||||||
1_carpeta_tarea:
|
|
||||||
accion: "Crear orchestration/tareas/TASK-{ID}/"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
2_metadata:
|
|
||||||
accion: "Completar METADATA.yml con todos los campos obligatorios"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
3_fases_minimas:
|
|
||||||
accion: "Documentar 01-CONTEXTO.md, 05-EJECUCION.md, 06-DOCUMENTACION.md"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
4_actualizar_indices:
|
|
||||||
accion: "Actualizar orchestration/tareas/_INDEX.yml"
|
|
||||||
bloqueante: true
|
|
||||||
|
|
||||||
5_traza_agente:
|
|
||||||
accion: "Actualizar traza del agente ejecutor"
|
|
||||||
bloqueante: false
|
|
||||||
nota: "Recomendado pero no bloquea"
|
|
||||||
|
|
||||||
si_falta_gobernanza:
|
|
||||||
mensaje: "❌ TAREA NO COMPLETADA - Falta documentación de gobernanza"
|
|
||||||
accion: "BLOQUEAR hasta completar"
|
|
||||||
referencia: "@DEF_CHK_GOB"
|
|
||||||
|
|
||||||
recordatorio_todolist: |
|
|
||||||
Al iniciar cualquier tarea, el TodoList DEBE incluir como último item:
|
|
||||||
- content: "Crear documentación de gobernanza (TASK-{ID})"
|
|
||||||
status: "pending"
|
|
||||||
activeForm: "Documentando gobernanza"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## VALIDACIONES POR DOMINIO
|
|
||||||
|
|
||||||
### Backend (NestJS)
|
|
||||||
```bash
|
|
||||||
npm run build # DEBE pasar
|
|
||||||
npm run lint # DEBE pasar
|
|
||||||
npm run test # Si existen, DEBEN pasar
|
|
||||||
```
|
|
||||||
|
|
||||||
### Frontend (React)
|
|
||||||
```bash
|
|
||||||
npm run build # DEBE pasar
|
|
||||||
npm run lint # DEBE pasar
|
|
||||||
npm run typecheck # DEBE pasar
|
|
||||||
```
|
|
||||||
|
|
||||||
### Database (PostgreSQL)
|
|
||||||
```bash
|
|
||||||
./scripts/recreate-database.sh # DEBE ejecutar sin errores
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## REFERENCIAS
|
|
||||||
|
|
||||||
| Alias | Descripción |
|
|
||||||
|-------|-------------|
|
|
||||||
| @DEF_CAPVED | Este protocolo |
|
|
||||||
| @PRINCIPIOS/PRINCIPIO-CAPVED.md | Principio base |
|
|
||||||
| @SIMCO/SIMCO-TAREA.md | Punto de entrada |
|
|
||||||
| @TRIGGER-DOC | Documentación obligatoria |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Versión:** 1.0.0 | **Sistema:** SIMCO v4.0.0 | **Tipo:** Protocolo Base
|
|
||||||
@ -1,245 +0,0 @@
|
|||||||
# Protocolo CCA - Carga de Contexto Automática
|
|
||||||
## Definición Canónica (Fuente Única de Verdad)
|
|
||||||
|
|
||||||
**Versión:** 1.0.0
|
|
||||||
**Fecha:** 2026-01-16
|
|
||||||
**Alias:** @DEF_CCA
|
|
||||||
**Tipo:** Definición Canónica
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PROPÓSITO
|
|
||||||
|
|
||||||
Este documento es la **ÚNICA** fuente de verdad para el Protocolo CCA.
|
|
||||||
Todos los perfiles de agentes deben **REFERENCIAR** este archivo, no copiar su contenido.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## USO EN PERFILES
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## PROTOCOLO CCA
|
|
||||||
> Definición: @DEF_CCA
|
|
||||||
> Variante: {dominio}
|
|
||||||
|
|
||||||
### Extensiones Específicas
|
|
||||||
[Solo contenido específico del dominio]
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PROTOCOLO BASE
|
|
||||||
|
|
||||||
> **ANTES de cualquier acción, ejecutar Carga de Contexto Automática**
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Al recibir: "Serás {PERFIL}-Agent en {PROYECTO} para {TAREA}"
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 0: IDENTIFICAR NIVEL (OBLIGATORIO PRIMERO)
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_0_IDENTIFICAR_NIVEL:
|
|
||||||
leer: "orchestration/directivas/simco/SIMCO-NIVELES.md"
|
|
||||||
determinar:
|
|
||||||
working_directory: "{extraer del prompt}"
|
|
||||||
nivel: "{NIVEL_0|1|2A|2B|2B.1|2B.2|3}"
|
|
||||||
orchestration_path: "{calcular según nivel}"
|
|
||||||
propagate_to: ["{niveles superiores si aplica}"]
|
|
||||||
registrar:
|
|
||||||
nivel_actual: "{nivel identificado}"
|
|
||||||
ruta_inventario: "{orchestration_path}/inventarios/"
|
|
||||||
ruta_traza: "{orchestration_path}/trazas/"
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 1: IDENTIFICAR CONTEXTO
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_1_IDENTIFICAR:
|
|
||||||
perfil: "{PERFIL}" # Nombre del perfil activo
|
|
||||||
proyecto: "{PROYECTO}" # Extraer del prompt
|
|
||||||
tarea: "{TAREA}" # Extraer del prompt
|
|
||||||
operacion: "CREAR | MODIFICAR | VALIDAR | DOCUMENTAR | BUSCAR"
|
|
||||||
dominio: "{DOMINIO}" # BACKEND | FRONTEND | DDL | DEVOPS | ML | etc.
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 2: CARGAR CONTEXTO CORE (SIEMPRE)
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_2_CARGAR_CORE:
|
|
||||||
leer_obligatorio:
|
|
||||||
# Catálogo primero (evitar duplicados)
|
|
||||||
- shared/catalog/CATALOG-INDEX.yml
|
|
||||||
|
|
||||||
# Principios fundamentales
|
|
||||||
- orchestration/directivas/principios/PRINCIPIO-CAPVED.md
|
|
||||||
- orchestration/directivas/principios/PRINCIPIO-DOC-PRIMERO.md
|
|
||||||
- orchestration/directivas/principios/PRINCIPIO-ANTI-DUPLICACION.md
|
|
||||||
- orchestration/directivas/principios/PRINCIPIO-VALIDACION-OBLIGATORIA.md
|
|
||||||
- orchestration/directivas/principios/PRINCIPIO-ECONOMIA-TOKENS.md
|
|
||||||
|
|
||||||
# Índices y referencias
|
|
||||||
- orchestration/directivas/simco/_INDEX.md
|
|
||||||
- orchestration/directivas/simco/SIMCO-TAREA.md
|
|
||||||
- orchestration/referencias/ALIASES.yml
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 3: CARGAR CONTEXTO DEL PROYECTO
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_3_CARGAR_PROYECTO:
|
|
||||||
leer_obligatorio:
|
|
||||||
- projects/{PROYECTO}/orchestration/00-guidelines/CONTEXTO-PROYECTO.md
|
|
||||||
- projects/{PROYECTO}/orchestration/PROXIMA-ACCION.md
|
|
||||||
|
|
||||||
leer_segun_dominio:
|
|
||||||
# Ver sección VARIANTES POR DOMINIO
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 4: CARGAR DIRECTIVAS DE OPERACIÓN
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_4_CARGAR_OPERACION:
|
|
||||||
verificar_catalogo_primero:
|
|
||||||
- "grep -i '{funcionalidad}' @CATALOG_INDEX"
|
|
||||||
- si_existe: "Seguir @REUTILIZAR en lugar de crear"
|
|
||||||
|
|
||||||
segun_operacion:
|
|
||||||
crear: ["SIMCO-CREAR.md", "SIMCO-{DOMINIO}.md"]
|
|
||||||
modificar: ["SIMCO-MODIFICAR.md", "SIMCO-{DOMINIO}.md"]
|
|
||||||
validar: ["SIMCO-VALIDAR.md"]
|
|
||||||
documentar: ["SIMCO-DOCUMENTAR.md"]
|
|
||||||
buscar: ["SIMCO-BUSCAR.md"]
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 5: CARGAR CONTEXTO ESPECÍFICO DE TAREA
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_5_CARGAR_TAREA:
|
|
||||||
- "Documentación relevante en docs/"
|
|
||||||
- "Código existente similar (patrones)"
|
|
||||||
- "Archivos relacionados con la tarea"
|
|
||||||
- "Identificar dependencias"
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# PASO 6: VERIFICAR DEPENDENCIAS
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
PASO_6_VERIFICAR_DEPENDENCIAS:
|
|
||||||
si_dependencia_no_existe:
|
|
||||||
accion: "DELEGAR al agente correspondiente"
|
|
||||||
no_continuar_hasta: "Dependencia resuelta"
|
|
||||||
|
|
||||||
dependencias_por_dominio:
|
|
||||||
backend:
|
|
||||||
requiere: "Tablas DDL existen"
|
|
||||||
delegar_a: "@PERFIL_DATABASE"
|
|
||||||
frontend:
|
|
||||||
requiere: "Endpoints API existen"
|
|
||||||
delegar_a: "@PERFIL_BACKEND"
|
|
||||||
devops:
|
|
||||||
requiere: "Código funcional existe"
|
|
||||||
delegar_a: "@PERFIL_BACKEND o @PERFIL_FRONTEND"
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
# RESULTADO
|
|
||||||
# ═══════════════════════════════════════════════════════════════
|
|
||||||
RESULTADO: "READY_TO_EXECUTE - Contexto completo cargado"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## VARIANTES POR DOMINIO
|
|
||||||
|
|
||||||
### #backend
|
|
||||||
```yaml
|
|
||||||
PASO_3_CARGAR_PROYECTO:
|
|
||||||
leer_segun_dominio:
|
|
||||||
- projects/{PROYECTO}/orchestration/inventarios/BACKEND_INVENTORY.yml
|
|
||||||
- projects/{PROYECTO}/orchestration/inventarios/DATABASE_INVENTORY.yml
|
|
||||||
|
|
||||||
PASO_4_CARGAR_OPERACION:
|
|
||||||
segun_tarea:
|
|
||||||
crear_entity: [SIMCO-CREAR.md, SIMCO-BACKEND.md]
|
|
||||||
crear_service: [SIMCO-CREAR.md, SIMCO-BACKEND.md]
|
|
||||||
crear_controller: [SIMCO-CREAR.md, SIMCO-BACKEND.md]
|
|
||||||
crear_dto: [SIMCO-CREAR.md, SIMCO-BACKEND.md]
|
|
||||||
```
|
|
||||||
|
|
||||||
### #frontend
|
|
||||||
```yaml
|
|
||||||
PASO_3_CARGAR_PROYECTO:
|
|
||||||
leer_segun_dominio:
|
|
||||||
- projects/{PROYECTO}/orchestration/inventarios/FRONTEND_INVENTORY.yml
|
|
||||||
|
|
||||||
PASO_4_CARGAR_OPERACION:
|
|
||||||
segun_tarea:
|
|
||||||
crear_componente: [SIMCO-CREAR.md, SIMCO-FRONTEND.md]
|
|
||||||
crear_hook: [SIMCO-CREAR.md, SIMCO-FRONTEND.md]
|
|
||||||
crear_page: [SIMCO-CREAR.md, SIMCO-FRONTEND.md]
|
|
||||||
```
|
|
||||||
|
|
||||||
### #ddl
|
|
||||||
```yaml
|
|
||||||
PASO_3_CARGAR_PROYECTO:
|
|
||||||
leer_segun_dominio:
|
|
||||||
- projects/{PROYECTO}/orchestration/inventarios/DATABASE_INVENTORY.yml
|
|
||||||
- projects/{PROYECTO}/ddl/ # Esquemas existentes
|
|
||||||
|
|
||||||
PASO_4_CARGAR_OPERACION:
|
|
||||||
segun_tarea:
|
|
||||||
crear_tabla: [SIMCO-CREAR.md, SIMCO-DDL.md]
|
|
||||||
crear_funcion: [SIMCO-CREAR.md, SIMCO-DDL.md]
|
|
||||||
crear_trigger: [SIMCO-CREAR.md, SIMCO-DDL.md]
|
|
||||||
crear_rls: [SIMCO-CREAR.md, SIMCO-DDL.md]
|
|
||||||
```
|
|
||||||
|
|
||||||
### #devops
|
|
||||||
```yaml
|
|
||||||
PASO_3_CARGAR_PROYECTO:
|
|
||||||
leer_segun_dominio:
|
|
||||||
- projects/{PROYECTO}/docker-compose.yml
|
|
||||||
- projects/{PROYECTO}/.env.example
|
|
||||||
|
|
||||||
PASO_4_CARGAR_OPERACION:
|
|
||||||
segun_tarea:
|
|
||||||
crear_dockerfile: [SIMCO-CREAR.md, SIMCO-DEVOPS.md]
|
|
||||||
crear_pipeline: [SIMCO-CREAR.md, SIMCO-DEVOPS.md]
|
|
||||||
```
|
|
||||||
|
|
||||||
### #ml
|
|
||||||
```yaml
|
|
||||||
PASO_3_CARGAR_PROYECTO:
|
|
||||||
leer_segun_dominio:
|
|
||||||
- projects/{PROYECTO}/orchestration/inventarios/ML_INVENTORY.yml
|
|
||||||
- projects/{PROYECTO}/models/
|
|
||||||
|
|
||||||
PASO_4_CARGAR_OPERACION:
|
|
||||||
segun_tarea:
|
|
||||||
crear_modelo: [SIMCO-CREAR.md, SIMCO-ML.md]
|
|
||||||
crear_pipeline_ml: [SIMCO-CREAR.md, SIMCO-ML.md]
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## VERSIÓN LIGERA (SUBAGENTES)
|
|
||||||
|
|
||||||
Para subagentes con tareas específicas, usar versión reducida:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# CCA Ligero - Solo para subagentes
|
|
||||||
CCA_LIGHT:
|
|
||||||
PASO_1: "Identificar perfil, proyecto, tarea"
|
|
||||||
PASO_2: "Cargar ALIASES.yml"
|
|
||||||
PASO_3: "Cargar inventario del dominio"
|
|
||||||
PASO_4: "Cargar SIMCO de operación"
|
|
||||||
RESULTADO: "READY_TO_EXECUTE"
|
|
||||||
```
|
|
||||||
|
|
||||||
Ver también: @DEF_CCA_LIGHT
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## REFERENCIAS
|
|
||||||
|
|
||||||
- **Perfiles que usan este protocolo:** Todos los perfiles en agents/perfiles/
|
|
||||||
- **Directiva relacionada:** SIMCO-INICIALIZACION.md
|
|
||||||
- **Versión ligera:** @DEF_CCA_LIGHT
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Última actualización:** 2026-01-16
|
|
||||||
**Mantenido por:** @WS_ORCHESTRATOR
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
# Validación Backend - NestJS/TypeScript
|
|
||||||
## Definición Canónica
|
|
||||||
|
|
||||||
**Alias:** @DEF_VAL_BE
|
|
||||||
**Dominio:** Backend NestJS/TypeScript
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## COMANDOS OBLIGATORIOS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# ANTES de marcar tarea como completada:
|
|
||||||
npm run build # DEBE pasar sin errores
|
|
||||||
npm run lint # DEBE pasar sin errores
|
|
||||||
npm run test # Si existen tests, DEBEN pasar
|
|
||||||
```
|
|
||||||
|
|
||||||
## CRITERIOS DE ACEPTACIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
build:
|
|
||||||
resultado: "Compila sin errores"
|
|
||||||
archivos_generados: "dist/"
|
|
||||||
sin_warnings_criticos: true
|
|
||||||
|
|
||||||
lint:
|
|
||||||
resultado: "0 errores de ESLint"
|
|
||||||
warnings_permitidos: "Solo menores"
|
|
||||||
reglas_obligatorias:
|
|
||||||
- "@typescript-eslint/no-explicit-any"
|
|
||||||
- "@typescript-eslint/no-unused-vars"
|
|
||||||
|
|
||||||
test:
|
|
||||||
resultado: "100% tests pasan"
|
|
||||||
coverage_minimo: "70% (si configurado)"
|
|
||||||
nuevos_tests: "Crear para código nuevo"
|
|
||||||
```
|
|
||||||
|
|
||||||
## VALIDACIONES ADICIONALES
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
entities:
|
|
||||||
- "Alineadas con DDL (nombres, tipos)"
|
|
||||||
- "Relaciones correctamente definidas"
|
|
||||||
- "Decoradores TypeORM correctos"
|
|
||||||
|
|
||||||
services:
|
|
||||||
- "Inyección de dependencias correcta"
|
|
||||||
- "Manejo de errores implementado"
|
|
||||||
- "Transacciones donde aplique"
|
|
||||||
|
|
||||||
controllers:
|
|
||||||
- "Decoradores Swagger completos"
|
|
||||||
- "Validación de DTOs"
|
|
||||||
- "Guards aplicados"
|
|
||||||
|
|
||||||
dtos:
|
|
||||||
- "class-validator decoradores"
|
|
||||||
- "Tipos correctos"
|
|
||||||
- "Documentación Swagger"
|
|
||||||
```
|
|
||||||
|
|
||||||
## ERRORES COMUNES
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- error: "Cannot find module"
|
|
||||||
causa: "Import incorrecto o dependencia faltante"
|
|
||||||
solucion: "Verificar rutas y npm install"
|
|
||||||
|
|
||||||
- error: "Type X is not assignable to type Y"
|
|
||||||
causa: "Tipos incompatibles"
|
|
||||||
solucion: "Alinear tipos con DDL/interfaces"
|
|
||||||
|
|
||||||
- error: "Circular dependency"
|
|
||||||
causa: "Módulos se importan mutuamente"
|
|
||||||
solucion: "Extraer a módulo compartido o forwardRef"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Referencia:** @PERFIL_BACKEND, @SIMCO_BACKEND
|
|
||||||
@ -1,89 +0,0 @@
|
|||||||
# Validación DDL - PostgreSQL
|
|
||||||
## Definición Canónica
|
|
||||||
|
|
||||||
**Alias:** @DEF_VAL_DDL
|
|
||||||
**Dominio:** Database DDL PostgreSQL
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## COMANDOS OBLIGATORIOS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# ANTES de marcar tarea como completada:
|
|
||||||
|
|
||||||
# 1. Validar sintaxis SQL
|
|
||||||
psql -h localhost -U postgres -d {DB} -f {archivo}.sql --set ON_ERROR_STOP=1
|
|
||||||
|
|
||||||
# 2. Verificar que no hay errores
|
|
||||||
echo $? # Debe ser 0
|
|
||||||
|
|
||||||
# 3. Si existe script de recreación:
|
|
||||||
./scripts/recreate-database.sh # DEBE ejecutar sin errores
|
|
||||||
```
|
|
||||||
|
|
||||||
## CRITERIOS DE ACEPTACIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
sintaxis:
|
|
||||||
resultado: "SQL ejecuta sin errores"
|
|
||||||
encoding: "UTF-8"
|
|
||||||
schema_correcto: true
|
|
||||||
|
|
||||||
convenciones:
|
|
||||||
tablas: "snake_case, plural (users, products)"
|
|
||||||
columnas: "snake_case (created_at, user_id)"
|
|
||||||
constraints: "{tabla}_{columna}_{tipo} (users_email_unique)"
|
|
||||||
indices: "idx_{tabla}_{columnas}"
|
|
||||||
foreign_keys: "fk_{tabla_origen}_{tabla_destino}"
|
|
||||||
|
|
||||||
integridad:
|
|
||||||
- "Primary keys definidas"
|
|
||||||
- "Foreign keys con ON DELETE/UPDATE"
|
|
||||||
- "NOT NULL donde aplique"
|
|
||||||
- "DEFAULT values apropiados"
|
|
||||||
- "CHECK constraints donde necesario"
|
|
||||||
```
|
|
||||||
|
|
||||||
## VALIDACIONES ADICIONALES
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
tablas:
|
|
||||||
- "Columnas id, created_at, updated_at presentes"
|
|
||||||
- "Tipos de datos apropiados"
|
|
||||||
- "Índices en columnas de búsqueda frecuente"
|
|
||||||
|
|
||||||
rls_policies:
|
|
||||||
- "Habilitado en tablas multi-tenant"
|
|
||||||
- "Políticas para SELECT, INSERT, UPDATE, DELETE"
|
|
||||||
- "Usando tenant_id del contexto"
|
|
||||||
|
|
||||||
funciones:
|
|
||||||
- "SECURITY DEFINER/INVOKER correcto"
|
|
||||||
- "Manejo de errores (EXCEPTION)"
|
|
||||||
- "Documentación en comentarios"
|
|
||||||
|
|
||||||
triggers:
|
|
||||||
- "Timing correcto (BEFORE/AFTER)"
|
|
||||||
- "Operaciones correctas (INSERT/UPDATE/DELETE)"
|
|
||||||
- "Función trigger existe"
|
|
||||||
```
|
|
||||||
|
|
||||||
## ERRORES COMUNES
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- error: "relation already exists"
|
|
||||||
causa: "Tabla/objeto ya existe"
|
|
||||||
solucion: "Usar IF NOT EXISTS o DROP primero"
|
|
||||||
|
|
||||||
- error: "foreign key constraint violation"
|
|
||||||
causa: "Referencia a registro inexistente"
|
|
||||||
solucion: "Verificar orden de inserción o CASCADE"
|
|
||||||
|
|
||||||
- error: "column does not exist"
|
|
||||||
causa: "Nombre de columna incorrecto"
|
|
||||||
solucion: "Verificar nombres y comillas"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Referencia:** @PERFIL_DATABASE, @SIMCO_DDL
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
# Validación Frontend - React/TypeScript
|
|
||||||
## Definición Canónica
|
|
||||||
|
|
||||||
**Alias:** @DEF_VAL_FE
|
|
||||||
**Dominio:** Frontend React/TypeScript
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## COMANDOS OBLIGATORIOS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# ANTES de marcar tarea como completada:
|
|
||||||
npm run build # DEBE pasar sin errores
|
|
||||||
npm run lint # DEBE pasar sin errores
|
|
||||||
npm run typecheck # DEBE pasar sin errores (tsc --noEmit)
|
|
||||||
```
|
|
||||||
|
|
||||||
## CRITERIOS DE ACEPTACIÓN
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
build:
|
|
||||||
resultado: "Build de producción exitoso"
|
|
||||||
sin_warnings_criticos: true
|
|
||||||
bundle_size: "Monitorear incrementos grandes"
|
|
||||||
|
|
||||||
lint:
|
|
||||||
resultado: "0 errores de ESLint"
|
|
||||||
reglas_react:
|
|
||||||
- "react-hooks/rules-of-hooks"
|
|
||||||
- "react-hooks/exhaustive-deps"
|
|
||||||
|
|
||||||
typecheck:
|
|
||||||
resultado: "0 errores de TypeScript"
|
|
||||||
strict_mode: true
|
|
||||||
no_any_implicito: true
|
|
||||||
```
|
|
||||||
|
|
||||||
## VALIDACIONES ADICIONALES
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
componentes:
|
|
||||||
- "Props tipadas correctamente"
|
|
||||||
- "Keys únicas en listas"
|
|
||||||
- "Manejo de loading/error states"
|
|
||||||
- "Accesibilidad básica (aria labels)"
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
- "Dependencias completas en useEffect"
|
|
||||||
- "Cleanup en useEffect si necesario"
|
|
||||||
- "useMemo/useCallback donde aplique"
|
|
||||||
|
|
||||||
estado:
|
|
||||||
- "Estado mínimo necesario"
|
|
||||||
- "Derivar datos cuando posible"
|
|
||||||
- "Zustand/Context correctamente usado"
|
|
||||||
|
|
||||||
api:
|
|
||||||
- "Manejo de errores de red"
|
|
||||||
- "Estados de carga"
|
|
||||||
- "Cancelación de requests"
|
|
||||||
```
|
|
||||||
|
|
||||||
## ERRORES COMUNES
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- error: "React Hook useEffect has missing dependency"
|
|
||||||
causa: "Dependencia no incluida en array"
|
|
||||||
solucion: "Agregar dependencia o usar useCallback"
|
|
||||||
|
|
||||||
- error: "Cannot read property of undefined"
|
|
||||||
causa: "Datos async no disponibles"
|
|
||||||
solucion: "Optional chaining o loading state"
|
|
||||||
|
|
||||||
- error: "Each child should have unique key"
|
|
||||||
causa: "Key faltante o duplicada en map()"
|
|
||||||
solucion: "Usar ID único como key"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Referencia:** @PERFIL_FRONTEND, @SIMCO_FRONTEND
|
|
||||||
@ -1,197 +0,0 @@
|
|||||||
# Referencias a Workspace
|
|
||||||
# Proyecto: clinica-dental
|
|
||||||
# Nivel de Herencia: 3 (erp-core -> erp-clinicas -> clinica-dental)
|
|
||||||
|
|
||||||
version: "1.0.0"
|
|
||||||
proyecto: "clinica-dental"
|
|
||||||
fecha_creacion: "2026-01-16"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# REFERENCIAS A DEFINICIONES GLOBALES
|
|
||||||
# ============================================================================
|
|
||||||
definiciones_workspace:
|
|
||||||
protocolos:
|
|
||||||
CCA:
|
|
||||||
alias: "@WS_DEF_CCA"
|
|
||||||
archivo: "orchestration/_definitions/protocols/CCA-PROTOCOL.md"
|
|
||||||
uso: "Protocolo de Carga de Contexto Automatica"
|
|
||||||
|
|
||||||
CCA_LIGHT:
|
|
||||||
alias: "@WS_DEF_CCA_LIGHT"
|
|
||||||
archivo: "orchestration/_definitions/protocols/CCA-LIGHT.md"
|
|
||||||
uso: "Version ligera para subagentes"
|
|
||||||
|
|
||||||
validaciones:
|
|
||||||
backend:
|
|
||||||
alias: "@WS_DEF_VAL_BE"
|
|
||||||
archivo: "orchestration/_definitions/validations/VALIDATION-BACKEND.md"
|
|
||||||
comandos: ["npm run build", "npm run lint", "npm run test"]
|
|
||||||
|
|
||||||
frontend:
|
|
||||||
alias: "@WS_DEF_VAL_FE"
|
|
||||||
archivo: "orchestration/_definitions/validations/VALIDATION-FRONTEND.md"
|
|
||||||
comandos: ["npm run build", "npm run lint", "npm run typecheck"]
|
|
||||||
|
|
||||||
ddl:
|
|
||||||
alias: "@WS_DEF_VAL_DDL"
|
|
||||||
archivo: "orchestration/_definitions/validations/VALIDATION-DDL.md"
|
|
||||||
|
|
||||||
devops:
|
|
||||||
alias: "@WS_DEF_VAL_DEVOPS"
|
|
||||||
archivo: "orchestration/_definitions/validations/VALIDATION-DEVOPS.md"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# REFERENCIAS A NAVEGACION RAPIDA GLOBAL
|
|
||||||
# ============================================================================
|
|
||||||
navegacion_workspace:
|
|
||||||
indice:
|
|
||||||
alias: "@WS_QUICK_INDEX"
|
|
||||||
archivo: "orchestration/_quick/QUICK-INDEX.yml"
|
|
||||||
|
|
||||||
perfiles:
|
|
||||||
alias: "@WS_QUICK_PERFILES"
|
|
||||||
archivo: "orchestration/_quick/QUICK-PERFILES.yml"
|
|
||||||
|
|
||||||
directivas:
|
|
||||||
alias: "@WS_QUICK_DIRECTIVAS"
|
|
||||||
archivo: "orchestration/_quick/QUICK-DIRECTIVAS.yml"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# REFERENCIAS A CATALOGO COMPARTIDO
|
|
||||||
# ============================================================================
|
|
||||||
catalogo_compartido:
|
|
||||||
indice:
|
|
||||||
alias: "@WS_CATALOG"
|
|
||||||
archivo: "shared/catalog/CATALOG-INDEX.yml"
|
|
||||||
|
|
||||||
funcionalidades:
|
|
||||||
auth: "shared/catalog/auth/"
|
|
||||||
notifications: "shared/catalog/notifications/"
|
|
||||||
payments: "shared/catalog/payments/"
|
|
||||||
multi_tenancy: "shared/catalog/multi-tenancy/"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# HERENCIA DE PROYECTO (Nivel 3)
|
|
||||||
# ============================================================================
|
|
||||||
herencia:
|
|
||||||
padre: "erp-clinicas"
|
|
||||||
nivel: 3
|
|
||||||
cadena_completa:
|
|
||||||
- proyecto: "erp-core"
|
|
||||||
nivel: 1
|
|
||||||
tipo: "core"
|
|
||||||
hereda: "definiciones + codigo base"
|
|
||||||
- proyecto: "erp-clinicas"
|
|
||||||
nivel: 2
|
|
||||||
tipo: "vertical"
|
|
||||||
hereda: "definiciones + codigo clinico"
|
|
||||||
- proyecto: "clinica-dental"
|
|
||||||
nivel: 3
|
|
||||||
tipo: "sub-vertical"
|
|
||||||
hereda: "especializacion dental"
|
|
||||||
|
|
||||||
hereda_de:
|
|
||||||
- proyecto: "erp-clinicas"
|
|
||||||
tipo: "definiciones + codigo"
|
|
||||||
modulos:
|
|
||||||
- CL-001 # Fundamentos
|
|
||||||
- CL-002 # Pacientes
|
|
||||||
- CL-003 # Citas
|
|
||||||
- CL-004 # Consultas
|
|
||||||
- CL-005 # Recetas
|
|
||||||
- CL-006 # Laboratorio (parcial)
|
|
||||||
- CL-008 # Facturacion
|
|
||||||
- CL-009 # Reportes
|
|
||||||
- CL-011 # Expediente
|
|
||||||
- CL-012 # Imagenologia
|
|
||||||
- proyecto: "erp-core"
|
|
||||||
tipo: "definiciones base + codigo core"
|
|
||||||
modulos:
|
|
||||||
- MGN-001 # Authentication
|
|
||||||
- MGN-002 # Users
|
|
||||||
- MGN-003 # Roles
|
|
||||||
- MGN-004 # Tenants
|
|
||||||
- MGN-005 # Catalogs
|
|
||||||
- MGN-007 # Audit
|
|
||||||
- MGN-008 # Notifications
|
|
||||||
- MGN-009 # Reports
|
|
||||||
- MGN-010 # Financial
|
|
||||||
- MGN-016 # Billing (SaaS)
|
|
||||||
- MGN-017 # Plans (SaaS)
|
|
||||||
- MGN-018 # Webhooks (SaaS)
|
|
||||||
- MGN-019 # Feature Flags (SaaS)
|
|
||||||
- MGN-020 # AI Integration (IA)
|
|
||||||
- MGN-021 # WhatsApp Business (IA)
|
|
||||||
- MGN-022 # MCP Server (IA)
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# PROPAGACION
|
|
||||||
# ============================================================================
|
|
||||||
propagacion:
|
|
||||||
mirror: "shared/mirrors/clinica-dental/"
|
|
||||||
status: "shared/mirrors/clinica-dental/PROPAGATION-STATUS.yml"
|
|
||||||
consumidores: [] # Sin sub-proyectos actualmente
|
|
||||||
proveedores:
|
|
||||||
- proyecto: "erp-clinicas"
|
|
||||||
tipo: "padre"
|
|
||||||
- proyecto: "erp-core"
|
|
||||||
tipo: "abuelo"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# DEFINICIONES LOCALES
|
|
||||||
# ============================================================================
|
|
||||||
definiciones_locales:
|
|
||||||
database:
|
|
||||||
alias: "@PROJ_DEF_DB"
|
|
||||||
archivo: "docs/_definitions/DATABASE-SCHEMA.md"
|
|
||||||
entities:
|
|
||||||
alias: "@PROJ_DEF_ENTITIES"
|
|
||||||
archivo: "docs/_definitions/ENTITIES-CATALOG.md"
|
|
||||||
services:
|
|
||||||
alias: "@PROJ_DEF_SERVICES"
|
|
||||||
archivo: "docs/_definitions/SERVICES-CATALOG.md"
|
|
||||||
modules:
|
|
||||||
alias: "@PROJ_DEF_MODULES"
|
|
||||||
archivo: "docs/_definitions/MODULES-CATALOG.md"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# GOBERNANZA DE DOCUMENTACION (2026-01-16)
|
|
||||||
# ============================================================================
|
|
||||||
gobernanza_ws:
|
|
||||||
tareas:
|
|
||||||
ruta: "orchestration/tareas/"
|
|
||||||
alias: "@WS_TAREAS"
|
|
||||||
descripcion: "Sistema de tracking de tareas"
|
|
||||||
template: "orchestration/tareas/_templates/TASK-TEMPLATE/"
|
|
||||||
|
|
||||||
mapa_documentacion:
|
|
||||||
ruta: "orchestration/MAPA-DOCUMENTACION.yml"
|
|
||||||
alias: "@WS_MAPA_DOC"
|
|
||||||
descripcion: "Mapa central de documentacion del workspace"
|
|
||||||
|
|
||||||
trazas_agentes:
|
|
||||||
ruta: "orchestration/agents/trazas/"
|
|
||||||
alias: "@WS_TRAZA_AGENTE"
|
|
||||||
descripcion: "Tracking de actividad por agente"
|
|
||||||
|
|
||||||
trigger_documentacion:
|
|
||||||
ruta: "orchestration/directivas/triggers/TRIGGER-DOCUMENTACION-OBLIGATORIA.md"
|
|
||||||
alias: "@WS_TRIGGER_DOC"
|
|
||||||
descripcion: "Directiva obligatoria de documentacion"
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# NAVEGACION RAPIDA LOCAL
|
|
||||||
# ============================================================================
|
|
||||||
navegacion_local:
|
|
||||||
indice:
|
|
||||||
alias: "@PROJ_QUICK_INDEX"
|
|
||||||
archivo: "docs/_quick/QUICK-INDEX.yml"
|
|
||||||
modulos:
|
|
||||||
alias: "@PROJ_QUICK_MODULES"
|
|
||||||
archivo: "docs/_quick/QUICK-MODULES.yml"
|
|
||||||
database:
|
|
||||||
alias: "@PROJ_QUICK_DB"
|
|
||||||
archivo: "docs/_quick/QUICK-DATABASE.yml"
|
|
||||||
api:
|
|
||||||
alias: "@PROJ_QUICK_API"
|
|
||||||
archivo: "docs/_quick/QUICK-API.yml"
|
|
||||||
@ -1,202 +0,0 @@
|
|||||||
# ===============================================================================
|
|
||||||
# PERFIL DE AGENTE - DDL DENTAL
|
|
||||||
# ===============================================================================
|
|
||||||
#
|
|
||||||
# Proyecto: clinica-dental
|
|
||||||
# Rol: Agente especializado en base de datos para clinica dental
|
|
||||||
# Alias: @DENTAL_AGENT_DDL
|
|
||||||
#
|
|
||||||
# ===============================================================================
|
|
||||||
|
|
||||||
version: "1.0.0"
|
|
||||||
created: "2026-01-16"
|
|
||||||
updated: "2026-01-16"
|
|
||||||
proyecto: "clinica-dental"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# IDENTIFICACION
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
perfil:
|
|
||||||
id: "DENTAL-AGENT-002"
|
|
||||||
nombre: "DDL Dental Agent"
|
|
||||||
alias: "@DENTAL_AGENT_DDL"
|
|
||||||
descripcion: "Agente especializado en esquema de BD para dominio dental"
|
|
||||||
tipo: "DATABASE_SPECIALIST"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# CADENA DE HERENCIA
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
herencia:
|
|
||||||
cadena: "template-saas -> erp-core -> erp-clinicas -> clinica-dental"
|
|
||||||
perfiles_padre:
|
|
||||||
- "@ERP_AGENT_DDL"
|
|
||||||
- "@CLINICAS_AGENT_DDL"
|
|
||||||
especializacion: "Schema sub_dental"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# COMPETENCIAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
competencias:
|
|
||||||
postgresql:
|
|
||||||
nivel: "experto"
|
|
||||||
areas:
|
|
||||||
- "Diseño de schemas multi-tenant"
|
|
||||||
- "Indices para busquedas clinicas"
|
|
||||||
- "JSONB para odontogramas"
|
|
||||||
- "Triggers de auditoria medica"
|
|
||||||
- "Row Level Security (RLS)"
|
|
||||||
|
|
||||||
dominio_dental:
|
|
||||||
nivel: "avanzado"
|
|
||||||
conocimientos:
|
|
||||||
- "Modelado de odontogramas (32/20 piezas)"
|
|
||||||
- "Estados de piezas dentales (5 superficies)"
|
|
||||||
- "Tratamientos y procedimientos"
|
|
||||||
- "Historial radiografico"
|
|
||||||
- "Planes de tratamiento"
|
|
||||||
|
|
||||||
normativa_datos:
|
|
||||||
nivel: "experto"
|
|
||||||
conocimientos:
|
|
||||||
- "NOM-024-SSA3: Expediente clinico electronico"
|
|
||||||
- "Ley Federal de Proteccion de Datos Personales"
|
|
||||||
- "Retencion de expedientes (5 años minimo)"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# RESPONSABILIDADES
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
responsabilidades:
|
|
||||||
principales:
|
|
||||||
- "Diseñar y mantener schema sub_dental"
|
|
||||||
- "Crear migraciones para tablas dentales"
|
|
||||||
- "Optimizar queries de odontograma"
|
|
||||||
- "Asegurar integridad referencial"
|
|
||||||
- "Implementar auditoria de expedientes"
|
|
||||||
|
|
||||||
validaciones:
|
|
||||||
- validacion: "Schema correcto"
|
|
||||||
regla: "Todas las tablas dentales en sub_dental.*"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
- validacion: "Auditoria"
|
|
||||||
regla: "Tablas clinicas deben tener triggers de auditoria"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
- validacion: "RLS"
|
|
||||||
regla: "Datos de paciente protegidos por tenant_id"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
- validacion: "Constraints FK"
|
|
||||||
regla: "Referencias cruzadas validadas"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# SCHEMA SUB_DENTAL
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
schema:
|
|
||||||
nombre: "sub_dental"
|
|
||||||
descripcion: "Schema exclusivo para clinica dental"
|
|
||||||
|
|
||||||
tablas_core:
|
|
||||||
- nombre: "odontograms"
|
|
||||||
descripcion: "Odontograma digital del paciente"
|
|
||||||
campos_clave:
|
|
||||||
- "id UUID PK"
|
|
||||||
- "patient_id FK"
|
|
||||||
- "teeth_data JSONB"
|
|
||||||
- "type ENUM (adult, child)"
|
|
||||||
- "exam_date TIMESTAMP"
|
|
||||||
|
|
||||||
- nombre: "tooth_conditions"
|
|
||||||
descripcion: "Condiciones por pieza dental"
|
|
||||||
campos_clave:
|
|
||||||
- "odontogram_id FK"
|
|
||||||
- "tooth_number INT"
|
|
||||||
- "surface VARCHAR(5)"
|
|
||||||
- "condition_code VARCHAR(10)"
|
|
||||||
|
|
||||||
- nombre: "dental_treatments"
|
|
||||||
descripcion: "Catalogo de tratamientos dentales"
|
|
||||||
campos_clave:
|
|
||||||
- "id UUID PK"
|
|
||||||
- "code VARCHAR(20)"
|
|
||||||
- "name VARCHAR(100)"
|
|
||||||
- "category VARCHAR(50)"
|
|
||||||
- "default_price DECIMAL"
|
|
||||||
|
|
||||||
- nombre: "treatment_plans"
|
|
||||||
descripcion: "Planes de tratamiento por paciente"
|
|
||||||
campos_clave:
|
|
||||||
- "id UUID PK"
|
|
||||||
- "patient_id FK"
|
|
||||||
- "odontogram_id FK"
|
|
||||||
- "status ENUM"
|
|
||||||
- "total_cost DECIMAL"
|
|
||||||
|
|
||||||
- nombre: "dental_xrays"
|
|
||||||
descripcion: "Radiografias dentales"
|
|
||||||
campos_clave:
|
|
||||||
- "id UUID PK"
|
|
||||||
- "patient_id FK"
|
|
||||||
- "type ENUM (panoramic, periapical, occlusal)"
|
|
||||||
- "image_url VARCHAR"
|
|
||||||
- "taken_at TIMESTAMP"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# DIRECTIVAS ACTIVAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
directivas:
|
|
||||||
obligatorias:
|
|
||||||
- "@DENTAL_TRIGGER_COHERENCIA"
|
|
||||||
- "@DENTAL_TRIGGER_INVENTARIOS"
|
|
||||||
- "@ERP_DIRECTIVA_DDL"
|
|
||||||
- "@WS_TRIGGER_COHERENCIA"
|
|
||||||
|
|
||||||
opcionales:
|
|
||||||
- "@WS_TRIGGER_ANTI_DUPLICACION"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# MIGRACIONES
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
migraciones:
|
|
||||||
convencion: "YYYYMMDD_HHMMSS_descripcion.sql"
|
|
||||||
ubicacion: "database/migrations/"
|
|
||||||
|
|
||||||
pendientes:
|
|
||||||
- "20260116_000001_create_schema_sub_dental.sql"
|
|
||||||
- "20260116_000002_create_odontograms_table.sql"
|
|
||||||
- "20260116_000003_create_tooth_conditions_table.sql"
|
|
||||||
- "20260116_000004_create_dental_treatments_table.sql"
|
|
||||||
- "20260116_000005_create_treatment_plans_table.sql"
|
|
||||||
- "20260116_000006_create_dental_xrays_table.sql"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# REFERENCIAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
referencias:
|
|
||||||
documentacion:
|
|
||||||
- "@DENTAL_DEF_DB"
|
|
||||||
- "@DENTAL_INV_DB"
|
|
||||||
- "@DENTAL_MAPA_DOC"
|
|
||||||
|
|
||||||
schemas_relacionados:
|
|
||||||
- "clinicas.* (expedientes, citas, pacientes)"
|
|
||||||
- "core.* (usuarios, tenants)"
|
|
||||||
- "audit.* (trazas)"
|
|
||||||
|
|
||||||
workspace:
|
|
||||||
- "@ERP_DEF_DB"
|
|
||||||
- "@CLINICAS_DEF_DB"
|
|
||||||
- "@TS_DEF_DB"
|
|
||||||
|
|
||||||
# ===============================================================================
|
|
||||||
# FIN DEL PERFIL
|
|
||||||
# ===============================================================================
|
|
||||||
@ -1,193 +0,0 @@
|
|||||||
# ===============================================================================
|
|
||||||
# PERFIL DE AGENTE - ODONTOLOGO DIGITAL
|
|
||||||
# ===============================================================================
|
|
||||||
#
|
|
||||||
# Proyecto: clinica-dental
|
|
||||||
# Rol: Agente especializado en dominio odontologico
|
|
||||||
# Alias: @DENTAL_AGENT_ODONTOLOGO
|
|
||||||
#
|
|
||||||
# ===============================================================================
|
|
||||||
|
|
||||||
version: "1.0.0"
|
|
||||||
created: "2026-01-16"
|
|
||||||
updated: "2026-01-16"
|
|
||||||
proyecto: "clinica-dental"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# IDENTIFICACION
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
perfil:
|
|
||||||
id: "DENTAL-AGENT-001"
|
|
||||||
nombre: "Odontologo Digital"
|
|
||||||
alias: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
descripcion: "Agente especializado en logica de negocio odontologica"
|
|
||||||
tipo: "DOMAIN_EXPERT"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# CADENA DE HERENCIA
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
herencia:
|
|
||||||
cadena: "template-saas -> erp-core -> erp-clinicas -> clinica-dental"
|
|
||||||
perfiles_padre:
|
|
||||||
- "@CLINICAS_AGENT_MEDICO"
|
|
||||||
- "@ERP_AGENT_BACKEND"
|
|
||||||
especializacion: "Dominio odontologico"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# COMPETENCIAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
competencias:
|
|
||||||
dominio_clinico:
|
|
||||||
nivel: "experto"
|
|
||||||
areas:
|
|
||||||
- "Anatomia dental (32 piezas permanentes, 20 deciduos)"
|
|
||||||
- "Nomenclatura FDI/Palmer/Universal"
|
|
||||||
- "Patologias dentales (caries, periodontal, endodontica)"
|
|
||||||
- "Tratamientos restauradores"
|
|
||||||
- "Ortodoncia y brackets"
|
|
||||||
- "Protesis fija y removible"
|
|
||||||
- "Radiografia dental (panoramica, periapical, oclusal)"
|
|
||||||
|
|
||||||
normativa:
|
|
||||||
nivel: "experto"
|
|
||||||
conocimientos:
|
|
||||||
- nom_013_ssa2_2015:
|
|
||||||
descripcion: "Prevencion y control enfermedades bucales"
|
|
||||||
aplicacion: "Estructura de expediente, odontograma"
|
|
||||||
- nom_004_ssa3_2012:
|
|
||||||
descripcion: "Del expediente clinico"
|
|
||||||
aplicacion: "Historia clinica, consentimiento informado"
|
|
||||||
- cofepris:
|
|
||||||
descripcion: "Regulacion consultorios"
|
|
||||||
aplicacion: "Licencias, registro"
|
|
||||||
|
|
||||||
tecnico:
|
|
||||||
nivel: "avanzado"
|
|
||||||
areas:
|
|
||||||
- "Modelado de odontogramas digitales"
|
|
||||||
- "Codigos CIE-10 dentales"
|
|
||||||
- "Integracion con imagenologia"
|
|
||||||
- "Presupuestos y planes de tratamiento"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# RESPONSABILIDADES
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
responsabilidades:
|
|
||||||
principales:
|
|
||||||
- "Validar logica de negocio odontologica"
|
|
||||||
- "Asegurar cumplimiento normativo NOM-013"
|
|
||||||
- "Disenar flujos de tratamiento dental"
|
|
||||||
- "Verificar integridad de odontogramas"
|
|
||||||
- "Revisar codificacion de diagnosticos"
|
|
||||||
|
|
||||||
validaciones:
|
|
||||||
- validacion: "Odontograma completo"
|
|
||||||
regla: "32 piezas para adulto, 20 para nino"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
- validacion: "Consentimiento informado"
|
|
||||||
regla: "Obligatorio antes de tratamiento invasivo"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
- validacion: "Plan de tratamiento"
|
|
||||||
regla: "Debe incluir diagnostico, procedimientos, costos"
|
|
||||||
bloquea: false
|
|
||||||
|
|
||||||
- validacion: "Historial radiografico"
|
|
||||||
regla: "Justificacion clinica requerida"
|
|
||||||
bloquea: true
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# DIRECTIVAS ACTIVAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
directivas:
|
|
||||||
obligatorias:
|
|
||||||
- "@DENTAL_TRIGGER_COHERENCIA"
|
|
||||||
- "@DENTAL_TRIGGER_INVENTARIOS"
|
|
||||||
- "@CLINICAS_DIRECTIVA_EXPEDIENTE"
|
|
||||||
- "@ERP_DIRECTIVA_MULTI_TENANT"
|
|
||||||
|
|
||||||
opcionales:
|
|
||||||
- "@WS_TRIGGER_ANTI_DUPLICACION"
|
|
||||||
- "@WS_TRIGGER_DEPENDENCIAS"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# FLUJOS DE TRABAJO
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
flujos:
|
|
||||||
nueva_consulta:
|
|
||||||
pasos:
|
|
||||||
1: "Verificar paciente existente o crear nuevo"
|
|
||||||
2: "Cargar odontograma vigente"
|
|
||||||
3: "Registrar hallazgos del examen"
|
|
||||||
4: "Actualizar odontograma"
|
|
||||||
5: "Generar plan de tratamiento"
|
|
||||||
6: "Presupuesto si aplica"
|
|
||||||
|
|
||||||
tratamiento:
|
|
||||||
pasos:
|
|
||||||
1: "Validar consentimiento informado"
|
|
||||||
2: "Verificar historial alergias"
|
|
||||||
3: "Registrar procedimiento"
|
|
||||||
4: "Actualizar odontograma post-tratamiento"
|
|
||||||
5: "Generar receta si aplica"
|
|
||||||
6: "Agendar seguimiento"
|
|
||||||
|
|
||||||
radiografia:
|
|
||||||
pasos:
|
|
||||||
1: "Verificar justificacion clinica"
|
|
||||||
2: "Seleccionar tipo (panoramica/periapical/oclusal)"
|
|
||||||
3: "Registrar dosis estimada"
|
|
||||||
4: "Almacenar imagen DICOM"
|
|
||||||
5: "Vincular a expediente"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# INTEGRACIONES
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
integraciones:
|
|
||||||
modulos_CDT:
|
|
||||||
- "CDT-001: Odontograma"
|
|
||||||
- "CDT-002: Tratamientos dentales"
|
|
||||||
- "CDT-003: Ortodoncia"
|
|
||||||
- "CDT-004: Protesis"
|
|
||||||
- "CDT-005: Radiografias"
|
|
||||||
- "CDT-006: Presupuestos"
|
|
||||||
|
|
||||||
modulos_heredados:
|
|
||||||
- "Pacientes (de erp-clinicas)"
|
|
||||||
- "Citas (de erp-clinicas)"
|
|
||||||
- "Expedientes (de erp-clinicas)"
|
|
||||||
- "Prescripciones (de erp-clinicas)"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# REFERENCIAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
referencias:
|
|
||||||
documentacion:
|
|
||||||
- "@DENTAL_MAPA_DOC"
|
|
||||||
- "@DENTAL_CONTEXT_MAP"
|
|
||||||
- "@DENTAL_INHERITANCE"
|
|
||||||
|
|
||||||
inventarios:
|
|
||||||
- "@DENTAL_INV_MASTER"
|
|
||||||
- "@DENTAL_INV_DB"
|
|
||||||
- "@DENTAL_INV_BE"
|
|
||||||
|
|
||||||
workspace:
|
|
||||||
- "@WS_DIRECTIVAS"
|
|
||||||
- "@WS_PERFILES"
|
|
||||||
- "@CLINICAS_MAPA_DOC"
|
|
||||||
- "@ERP_MAPA_DOC"
|
|
||||||
- "@TS_MAPA_DOC"
|
|
||||||
|
|
||||||
# ===============================================================================
|
|
||||||
# FIN DEL PERFIL
|
|
||||||
# ===============================================================================
|
|
||||||
@ -1,146 +0,0 @@
|
|||||||
# ===============================================================================
|
|
||||||
# INDICE DE PERFILES DE AGENTES - CLINICA DENTAL
|
|
||||||
# ===============================================================================
|
|
||||||
#
|
|
||||||
# Proyecto: clinica-dental
|
|
||||||
# Descripcion: Catalogo de agentes especializados para el dominio odontologico
|
|
||||||
# Alias: @DENTAL_AGENTS_INDEX
|
|
||||||
#
|
|
||||||
# ===============================================================================
|
|
||||||
|
|
||||||
version: "1.0.0"
|
|
||||||
created: "2026-01-16"
|
|
||||||
updated: "2026-01-16"
|
|
||||||
proyecto: "clinica-dental"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# CADENA DE HERENCIA DE PERFILES
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
herencia:
|
|
||||||
cadena: "template-saas -> erp-core -> erp-clinicas -> clinica-dental"
|
|
||||||
perfiles_heredados:
|
|
||||||
desde_template_saas:
|
|
||||||
- "@TS_AGENT_DDL"
|
|
||||||
- "@TS_AGENT_BACKEND"
|
|
||||||
- "@TS_AGENT_FRONTEND"
|
|
||||||
desde_erp_core:
|
|
||||||
- "@ERP_AGENT_DDL"
|
|
||||||
- "@ERP_AGENT_BACKEND"
|
|
||||||
- "@ERP_AGENT_FRONTEND"
|
|
||||||
desde_erp_clinicas:
|
|
||||||
- "@CLINICAS_AGENT_MEDICO"
|
|
||||||
- "@CLINICAS_AGENT_DDL"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# PERFILES PROPIOS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
perfiles:
|
|
||||||
dominio:
|
|
||||||
- id: "DENTAL-AGENT-001"
|
|
||||||
archivo: "PERFIL-ODONTOLOGO-AGENT.yml"
|
|
||||||
alias: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
tipo: "DOMAIN_EXPERT"
|
|
||||||
descripcion: "Agente experto en logica de negocio odontologica"
|
|
||||||
competencias_clave:
|
|
||||||
- "Anatomia y patologia dental"
|
|
||||||
- "Normativa NOM-013-SSA2"
|
|
||||||
- "Flujos clinicos dentales"
|
|
||||||
|
|
||||||
tecnico:
|
|
||||||
- id: "DENTAL-AGENT-002"
|
|
||||||
archivo: "PERFIL-DDL-DENTAL-AGENT.yml"
|
|
||||||
alias: "@DENTAL_AGENT_DDL"
|
|
||||||
tipo: "DATABASE_SPECIALIST"
|
|
||||||
descripcion: "Agente especializado en schema sub_dental"
|
|
||||||
competencias_clave:
|
|
||||||
- "PostgreSQL avanzado"
|
|
||||||
- "Modelado odontograma"
|
|
||||||
- "Auditoria medica"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# MATRIZ DE COMPETENCIAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
matriz_competencias:
|
|
||||||
por_area:
|
|
||||||
dominio_dental:
|
|
||||||
principal: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
soporte: "@CLINICAS_AGENT_MEDICO"
|
|
||||||
|
|
||||||
base_de_datos:
|
|
||||||
principal: "@DENTAL_AGENT_DDL"
|
|
||||||
soporte: "@CLINICAS_AGENT_DDL"
|
|
||||||
|
|
||||||
backend:
|
|
||||||
principal: "@ERP_AGENT_BACKEND"
|
|
||||||
especializacion: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
|
|
||||||
frontend:
|
|
||||||
principal: "@ERP_AGENT_FRONTEND"
|
|
||||||
especializacion: null # Por definir
|
|
||||||
|
|
||||||
normativa:
|
|
||||||
principal: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
referencias:
|
|
||||||
- "NOM-013-SSA2-2015"
|
|
||||||
- "NOM-004-SSA3-2012"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# ASIGNACION POR TAREA
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
asignacion_tareas:
|
|
||||||
crear_tabla_dental:
|
|
||||||
agente_principal: "@DENTAL_AGENT_DDL"
|
|
||||||
validadores:
|
|
||||||
- "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
|
|
||||||
crear_entity_dental:
|
|
||||||
agente_principal: "@ERP_AGENT_BACKEND"
|
|
||||||
validadores:
|
|
||||||
- "@DENTAL_AGENT_DDL"
|
|
||||||
- "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
|
|
||||||
implementar_odontograma:
|
|
||||||
agente_principal: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
validadores:
|
|
||||||
- "@DENTAL_AGENT_DDL"
|
|
||||||
|
|
||||||
validar_normativa:
|
|
||||||
agente_principal: "@DENTAL_AGENT_ODONTOLOGO"
|
|
||||||
validadores: []
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# ESTADISTICAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
estadisticas:
|
|
||||||
total_perfiles_propios: 2
|
|
||||||
total_perfiles_heredados: 8
|
|
||||||
cobertura_areas:
|
|
||||||
dominio: "100%"
|
|
||||||
ddl: "100%"
|
|
||||||
backend: "heredado"
|
|
||||||
frontend: "heredado"
|
|
||||||
ultima_actualizacion: "2026-01-16"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
# REFERENCIAS
|
|
||||||
# -------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
referencias:
|
|
||||||
documentacion:
|
|
||||||
- "@DENTAL_MAPA_DOC"
|
|
||||||
- "@DENTAL_TRIGGER_COHERENCIA"
|
|
||||||
- "@DENTAL_TRIGGER_INVENTARIOS"
|
|
||||||
|
|
||||||
workspace:
|
|
||||||
- "@WS_PERFILES"
|
|
||||||
- "@CLINICAS_AGENTS_INDEX"
|
|
||||||
- "@ERP_AGENTS"
|
|
||||||
|
|
||||||
# ===============================================================================
|
|
||||||
# FIN DEL INDICE
|
|
||||||
# ===============================================================================
|
|
||||||
@ -1,804 +0,0 @@
|
|||||||
# =============================================================================
|
|
||||||
# ENVIRONMENT-INVENTORY.yml - CLINICA-DENTAL
|
|
||||||
# =============================================================================
|
|
||||||
# Inventario Completo de Entorno de Desarrollo y Produccion
|
|
||||||
# Generado por: @PERFIL_DEVENV
|
|
||||||
# Basado en: orchestration/templates/TEMPLATE-ENVIRONMENT-INVENTORY.yml
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
version: "1.1.0"
|
|
||||||
fecha_creacion: "2026-01-04"
|
|
||||||
fecha_actualizacion: "2026-01-04"
|
|
||||||
responsable: "@PERFIL_DEVENV"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# IDENTIFICACION DEL PROYECTO
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
proyecto:
|
|
||||||
nombre: "Clinica Dental"
|
|
||||||
alias: "clinica-dental"
|
|
||||||
codigo: "CD"
|
|
||||||
nivel: "NIVEL_2B.3"
|
|
||||||
tipo: "vertical-especializada"
|
|
||||||
estado: "desarrollo"
|
|
||||||
descripcion: "Sistema de gestion para clinicas dentales y odontologicas"
|
|
||||||
parent: "erp-clinicas"
|
|
||||||
herencia:
|
|
||||||
- erp-core
|
|
||||||
- erp-clinicas
|
|
||||||
normativas:
|
|
||||||
- "NOM-024-SSA3-2012 (Expediente clinico electronico)"
|
|
||||||
- "NOM-013-SSA2-2015 (Prevencion y control enfermedades bucales)"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# HERRAMIENTAS Y RUNTIME
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
herramientas:
|
|
||||||
runtime:
|
|
||||||
node:
|
|
||||||
version: "20.x"
|
|
||||||
version_minima: "18.x"
|
|
||||||
requerido: true
|
|
||||||
notas: "LTS recomendado para NestJS y React"
|
|
||||||
python:
|
|
||||||
version: ""
|
|
||||||
requerido: false
|
|
||||||
notas: "No requerido para este proyecto"
|
|
||||||
|
|
||||||
package_managers:
|
|
||||||
npm:
|
|
||||||
version: "10.x"
|
|
||||||
requerido: true
|
|
||||||
pnpm:
|
|
||||||
version: "8.x"
|
|
||||||
requerido: false
|
|
||||||
notas: "Alternativa opcional"
|
|
||||||
|
|
||||||
build_tools:
|
|
||||||
- nombre: "Vite"
|
|
||||||
version: "5.x"
|
|
||||||
uso: "Frontend build y dev server"
|
|
||||||
- nombre: "TypeScript"
|
|
||||||
version: "5.x"
|
|
||||||
uso: "Compilacion de codigo"
|
|
||||||
- nombre: "NestJS CLI"
|
|
||||||
version: "10.x"
|
|
||||||
uso: "Backend scaffolding y build"
|
|
||||||
|
|
||||||
linters:
|
|
||||||
- nombre: "ESLint"
|
|
||||||
version: "8.x"
|
|
||||||
config: ".eslintrc.js"
|
|
||||||
- nombre: "Prettier"
|
|
||||||
version: "3.x"
|
|
||||||
config: ".prettierrc"
|
|
||||||
|
|
||||||
testing:
|
|
||||||
- nombre: "Jest"
|
|
||||||
version: "29.x"
|
|
||||||
tipo: "unit backend"
|
|
||||||
config: "jest.config.js"
|
|
||||||
- nombre: "Vitest"
|
|
||||||
version: "1.x"
|
|
||||||
tipo: "unit frontend"
|
|
||||||
config: "vitest.config.ts"
|
|
||||||
- nombre: "Supertest"
|
|
||||||
version: "6.x"
|
|
||||||
tipo: "e2e"
|
|
||||||
config: "jest-e2e.config.js"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# SERVICIOS Y PUERTOS
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
servicios:
|
|
||||||
frontend:
|
|
||||||
nombre: "clinica-dental-frontend"
|
|
||||||
framework: "React"
|
|
||||||
version: "18.x"
|
|
||||||
puerto: 3130
|
|
||||||
comando_dev: "npm run dev"
|
|
||||||
comando_build: "npm run build"
|
|
||||||
comando_preview: "npm run preview"
|
|
||||||
ubicacion: "apps/frontend/"
|
|
||||||
url_local: "http://localhost:3130"
|
|
||||||
build_output: "dist/"
|
|
||||||
|
|
||||||
backend:
|
|
||||||
nombre: "clinica-dental-backend"
|
|
||||||
framework: "NestJS"
|
|
||||||
version: "10.x"
|
|
||||||
puerto: 3131
|
|
||||||
comando_dev: "npm run start:dev"
|
|
||||||
comando_build: "npm run build"
|
|
||||||
comando_prod: "npm run start:prod"
|
|
||||||
ubicacion: "apps/backend/"
|
|
||||||
url_local: "http://localhost:3131"
|
|
||||||
api_prefix: "/api/v1"
|
|
||||||
swagger_url: "http://localhost:3131/api/docs"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# BASE DE DATOS - CONFIGURACION COMPLETA
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
base_de_datos:
|
|
||||||
principal:
|
|
||||||
engine: "PostgreSQL"
|
|
||||||
version: "15"
|
|
||||||
host_variable: "DB_HOST"
|
|
||||||
puerto_variable: "DB_PORT"
|
|
||||||
|
|
||||||
ambientes:
|
|
||||||
development:
|
|
||||||
host: "localhost"
|
|
||||||
puerto: 5441
|
|
||||||
nombre: "clinica_dental_dev"
|
|
||||||
usuario: "dental_dev"
|
|
||||||
password_ref: "DB_PASSWORD en .env"
|
|
||||||
ssl: false
|
|
||||||
pool_size: 10
|
|
||||||
conexion: "postgresql://dental_dev:{password}@localhost:5441/clinica_dental_dev"
|
|
||||||
|
|
||||||
test:
|
|
||||||
host: "localhost"
|
|
||||||
puerto: 5441
|
|
||||||
nombre: "clinica_dental_test"
|
|
||||||
usuario: "dental_dev"
|
|
||||||
password_ref: "DB_PASSWORD en .env"
|
|
||||||
ssl: false
|
|
||||||
pool_size: 5
|
|
||||||
conexion: "postgresql://dental_dev:{password}@localhost:5441/clinica_dental_test"
|
|
||||||
|
|
||||||
staging:
|
|
||||||
host: "${DB_HOST}"
|
|
||||||
puerto: 5432
|
|
||||||
nombre: "clinica_dental_staging"
|
|
||||||
usuario: "dental_staging"
|
|
||||||
password_ref: "DB_PASSWORD en variables de CI/CD"
|
|
||||||
ssl: true
|
|
||||||
pool_size: 20
|
|
||||||
conexion: "postgresql://dental_staging:{password}@${DB_HOST}:5432/clinica_dental_staging?sslmode=require"
|
|
||||||
|
|
||||||
production:
|
|
||||||
host: "${DB_HOST}"
|
|
||||||
puerto: 5432
|
|
||||||
nombre: "clinica_dental_prod"
|
|
||||||
usuario: "dental_prod"
|
|
||||||
password_ref: "DB_PASSWORD en secrets manager"
|
|
||||||
ssl: true
|
|
||||||
pool_size: 50
|
|
||||||
conexion: "postgresql://dental_prod:{password}@${DB_HOST}:5432/clinica_dental_prod?sslmode=require"
|
|
||||||
|
|
||||||
schemas:
|
|
||||||
- nombre: "public"
|
|
||||||
descripcion: "Schema principal PostgreSQL"
|
|
||||||
- nombre: "dental"
|
|
||||||
descripcion: "Entidades odontologicas (odontograma, piezas, tratamientos, ortodoncia)"
|
|
||||||
- nombre: "clinical"
|
|
||||||
descripcion: "Heredado de erp-clinicas (consultorios, citas, historiales)"
|
|
||||||
- nombre: "financial"
|
|
||||||
descripcion: "Heredado de erp-core (pagos, facturacion, presupuestos)"
|
|
||||||
- nombre: "hr"
|
|
||||||
descripcion: "Heredado de erp-core (empleados, especialidades)"
|
|
||||||
- nombre: "inventory"
|
|
||||||
descripcion: "Heredado de erp-core (materiales, insumos dentales)"
|
|
||||||
|
|
||||||
scripts_inicializacion:
|
|
||||||
orden:
|
|
||||||
- "database/init/00-extensions.sql"
|
|
||||||
- "database/init/01-schemas.sql"
|
|
||||||
- "database/schemas/01-dental-schema-ddl.sql"
|
|
||||||
- "database/seeds/fase8/01-dental-catalogos.sql"
|
|
||||||
- "database/seeds/fase8/02-piezas-dentales-fdi.sql"
|
|
||||||
|
|
||||||
datos_iniciales:
|
|
||||||
piezas_dentales:
|
|
||||||
total: 52
|
|
||||||
nomenclatura: "FDI (Federation Dentaire Internationale)"
|
|
||||||
cuadrantes:
|
|
||||||
- id: 1
|
|
||||||
nombre: "Superior derecho"
|
|
||||||
piezas: "18-11"
|
|
||||||
tipo: "permanente"
|
|
||||||
- id: 2
|
|
||||||
nombre: "Superior izquierdo"
|
|
||||||
piezas: "21-28"
|
|
||||||
tipo: "permanente"
|
|
||||||
- id: 3
|
|
||||||
nombre: "Inferior izquierdo"
|
|
||||||
piezas: "31-38"
|
|
||||||
tipo: "permanente"
|
|
||||||
- id: 4
|
|
||||||
nombre: "Inferior derecho"
|
|
||||||
piezas: "41-48"
|
|
||||||
tipo: "permanente"
|
|
||||||
- id: 5
|
|
||||||
nombre: "Superior derecho temporal"
|
|
||||||
piezas: "55-51"
|
|
||||||
tipo: "temporal"
|
|
||||||
- id: 6
|
|
||||||
nombre: "Superior izquierdo temporal"
|
|
||||||
piezas: "61-65"
|
|
||||||
tipo: "temporal"
|
|
||||||
- id: 7
|
|
||||||
nombre: "Inferior izquierdo temporal"
|
|
||||||
piezas: "71-75"
|
|
||||||
tipo: "temporal"
|
|
||||||
- id: 8
|
|
||||||
nombre: "Inferior derecho temporal"
|
|
||||||
piezas: "81-85"
|
|
||||||
tipo: "temporal"
|
|
||||||
|
|
||||||
redis:
|
|
||||||
host_variable: "REDIS_HOST"
|
|
||||||
puerto_variable: "REDIS_PORT"
|
|
||||||
|
|
||||||
ambientes:
|
|
||||||
development:
|
|
||||||
host: "localhost"
|
|
||||||
puerto: 6388
|
|
||||||
database: 0
|
|
||||||
password: ""
|
|
||||||
conexion: "redis://localhost:6388/0"
|
|
||||||
|
|
||||||
production:
|
|
||||||
host: "${REDIS_HOST}"
|
|
||||||
puerto: 6379
|
|
||||||
database: 0
|
|
||||||
password_ref: "REDIS_PASSWORD en secrets"
|
|
||||||
conexion: "redis://:${REDIS_PASSWORD}@${REDIS_HOST}:6379/0"
|
|
||||||
|
|
||||||
uso:
|
|
||||||
- "Cache de sesiones"
|
|
||||||
- "Cache de odontogramas"
|
|
||||||
- "Rate limiting"
|
|
||||||
- "Queue de tareas (Bull)"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# VARIABLES DE ENTORNO - DESARROLLO
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
variables_entorno:
|
|
||||||
archivos:
|
|
||||||
ejemplo: ".env.example"
|
|
||||||
desarrollo: ".env"
|
|
||||||
test: ".env.test"
|
|
||||||
produccion: ".env.production"
|
|
||||||
|
|
||||||
development:
|
|
||||||
- nombre: "NODE_ENV"
|
|
||||||
valor: "development"
|
|
||||||
descripcion: "Ambiente de ejecucion"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "APP_NAME"
|
|
||||||
valor: "clinica-dental"
|
|
||||||
descripcion: "Nombre de la aplicacion"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "APP_VERSION"
|
|
||||||
valor: "1.0.0"
|
|
||||||
descripcion: "Version de la aplicacion"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# Puertos
|
|
||||||
- nombre: "FRONTEND_PORT"
|
|
||||||
valor: "3130"
|
|
||||||
descripcion: "Puerto del frontend React"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "BACKEND_PORT"
|
|
||||||
valor: "3131"
|
|
||||||
descripcion: "Puerto del backend NestJS"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# Base de datos
|
|
||||||
- nombre: "DB_HOST"
|
|
||||||
valor: "localhost"
|
|
||||||
descripcion: "Host de PostgreSQL"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "DB_PORT"
|
|
||||||
valor: "5441"
|
|
||||||
descripcion: "Puerto de PostgreSQL"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "DB_NAME"
|
|
||||||
valor: "clinica_dental_dev"
|
|
||||||
descripcion: "Nombre de la base de datos"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "DB_USER"
|
|
||||||
valor: "dental_dev"
|
|
||||||
descripcion: "Usuario de PostgreSQL"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "DB_PASSWORD"
|
|
||||||
valor: ""
|
|
||||||
descripcion: "Password de PostgreSQL"
|
|
||||||
requerido: true
|
|
||||||
sensible: true
|
|
||||||
generacion: "openssl rand -base64 32"
|
|
||||||
|
|
||||||
- nombre: "DATABASE_URL"
|
|
||||||
valor: "postgresql://dental_dev:${DB_PASSWORD}@localhost:5441/clinica_dental_dev"
|
|
||||||
descripcion: "Connection string completo"
|
|
||||||
requerido: true
|
|
||||||
sensible: true
|
|
||||||
|
|
||||||
# Redis
|
|
||||||
- nombre: "REDIS_HOST"
|
|
||||||
valor: "localhost"
|
|
||||||
descripcion: "Host de Redis"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "REDIS_PORT"
|
|
||||||
valor: "6388"
|
|
||||||
descripcion: "Puerto de Redis"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "REDIS_URL"
|
|
||||||
valor: "redis://localhost:6388/0"
|
|
||||||
descripcion: "Connection string de Redis"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# Autenticacion
|
|
||||||
- nombre: "JWT_SECRET"
|
|
||||||
valor: ""
|
|
||||||
descripcion: "Secreto para firmar JWT (min 32 caracteres)"
|
|
||||||
requerido: true
|
|
||||||
sensible: true
|
|
||||||
generacion: "openssl rand -base64 64"
|
|
||||||
|
|
||||||
- nombre: "JWT_EXPIRES_IN"
|
|
||||||
valor: "24h"
|
|
||||||
descripcion: "Tiempo de expiracion del access token"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "JWT_REFRESH_EXPIRES_IN"
|
|
||||||
valor: "7d"
|
|
||||||
descripcion: "Tiempo de expiracion del refresh token"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# CORS
|
|
||||||
- nombre: "FRONTEND_URL"
|
|
||||||
valor: "http://localhost:3130"
|
|
||||||
descripcion: "URL del frontend para CORS"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "ALLOWED_ORIGINS"
|
|
||||||
valor: "http://localhost:3130,http://localhost:3131"
|
|
||||||
descripcion: "Origenes permitidos (comma separated)"
|
|
||||||
requerido: true
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# Logging
|
|
||||||
- nombre: "LOG_LEVEL"
|
|
||||||
valor: "debug"
|
|
||||||
descripcion: "Nivel de logging (debug, info, warn, error)"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "LOG_FORMAT"
|
|
||||||
valor: "pretty"
|
|
||||||
descripcion: "Formato de logs (pretty, json)"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# File Storage (radiografias, documentos)
|
|
||||||
- nombre: "STORAGE_TYPE"
|
|
||||||
valor: "local"
|
|
||||||
descripcion: "Tipo de storage (local, s3, minio)"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "STORAGE_PATH"
|
|
||||||
valor: "./uploads"
|
|
||||||
descripcion: "Path para almacenamiento local"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "MAX_FILE_SIZE"
|
|
||||||
valor: "20971520"
|
|
||||||
descripcion: "Tamano maximo de archivo en bytes (20MB para radiografias)"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "ALLOWED_FILE_TYPES"
|
|
||||||
valor: "image/jpeg,image/png,image/dicom,application/pdf"
|
|
||||||
descripcion: "Tipos de archivo permitidos"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# Email (opcional)
|
|
||||||
- nombre: "SMTP_HOST"
|
|
||||||
valor: "localhost"
|
|
||||||
descripcion: "Host SMTP para emails"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "SMTP_PORT"
|
|
||||||
valor: "1025"
|
|
||||||
descripcion: "Puerto SMTP (1025 para MailHog)"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
# Configuracion Dental Especifica
|
|
||||||
- nombre: "DENTAL_FDI_NOTATION"
|
|
||||||
valor: "true"
|
|
||||||
descripcion: "Usar notacion FDI para piezas dentales"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
- nombre: "ODONTOGRAM_VERSION"
|
|
||||||
valor: "2.0"
|
|
||||||
descripcion: "Version del formato de odontograma"
|
|
||||||
requerido: false
|
|
||||||
sensible: false
|
|
||||||
|
|
||||||
production:
|
|
||||||
notas: |
|
|
||||||
En produccion, las siguientes variables deben configurarse
|
|
||||||
via secrets manager o variables de CI/CD:
|
|
||||||
- DB_PASSWORD (secreto)
|
|
||||||
- JWT_SECRET (secreto)
|
|
||||||
- REDIS_PASSWORD (secreto)
|
|
||||||
- AWS_ACCESS_KEY_ID (si usa S3)
|
|
||||||
- AWS_SECRET_ACCESS_KEY (si usa S3)
|
|
||||||
|
|
||||||
IMPORTANTE - Cumplimiento Normativo:
|
|
||||||
- NOM-024-SSA3-2012: Logs de auditoria obligatorios
|
|
||||||
- Encriptacion de datos sensibles (historiales)
|
|
||||||
- Backups diarios con retencion minima 5 anos
|
|
||||||
|
|
||||||
diferencias:
|
|
||||||
- nombre: "NODE_ENV"
|
|
||||||
valor: "production"
|
|
||||||
- nombre: "LOG_LEVEL"
|
|
||||||
valor: "info"
|
|
||||||
- nombre: "LOG_FORMAT"
|
|
||||||
valor: "json"
|
|
||||||
- nombre: "DB_PORT"
|
|
||||||
valor: "5432"
|
|
||||||
- nombre: "REDIS_PORT"
|
|
||||||
valor: "6379"
|
|
||||||
- nombre: "STORAGE_TYPE"
|
|
||||||
valor: "s3"
|
|
||||||
- nombre: "AUDIT_ENABLED"
|
|
||||||
valor: "true"
|
|
||||||
- nombre: "DATA_ENCRYPTION"
|
|
||||||
valor: "true"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# CONTENEDORES DOCKER
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
docker:
|
|
||||||
compose_file: "docker-compose.yml"
|
|
||||||
compose_dev: "docker-compose.dev.yml"
|
|
||||||
compose_prod: "docker-compose.prod.yml"
|
|
||||||
|
|
||||||
services:
|
|
||||||
- nombre: "db"
|
|
||||||
imagen: "postgres:15-alpine"
|
|
||||||
puerto_host: 5441
|
|
||||||
puerto_container: 5432
|
|
||||||
variables:
|
|
||||||
POSTGRES_DB: "clinica_dental_dev"
|
|
||||||
POSTGRES_USER: "dental_dev"
|
|
||||||
POSTGRES_PASSWORD: "${DB_PASSWORD}"
|
|
||||||
volumes:
|
|
||||||
- "postgres_data:/var/lib/postgresql/data"
|
|
||||||
healthcheck: "pg_isready -U dental_dev"
|
|
||||||
|
|
||||||
- nombre: "redis"
|
|
||||||
imagen: "redis:7-alpine"
|
|
||||||
puerto_host: 6388
|
|
||||||
puerto_container: 6379
|
|
||||||
volumes:
|
|
||||||
- "redis_data:/data"
|
|
||||||
healthcheck: "redis-cli ping"
|
|
||||||
|
|
||||||
- nombre: "mailhog"
|
|
||||||
imagen: "mailhog/mailhog"
|
|
||||||
puerto_smtp: 1025
|
|
||||||
puerto_web: 8025
|
|
||||||
uso: "Testing de emails en desarrollo"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- nombre: "postgres_data"
|
|
||||||
descripcion: "Datos persistentes de PostgreSQL"
|
|
||||||
- nombre: "redis_data"
|
|
||||||
descripcion: "Datos persistentes de Redis"
|
|
||||||
- nombre: "uploads_data"
|
|
||||||
descripcion: "Radiografias y documentos"
|
|
||||||
|
|
||||||
networks:
|
|
||||||
- nombre: "clinica_dental_network"
|
|
||||||
driver: "bridge"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# MIGRACIONES Y SEEDS
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
migraciones:
|
|
||||||
herramienta: "TypeORM"
|
|
||||||
directorio: "apps/backend/src/database/migrations"
|
|
||||||
|
|
||||||
comandos:
|
|
||||||
generar: "npm run migration:generate -- -n NombreMigracion"
|
|
||||||
ejecutar: "npm run migration:run"
|
|
||||||
revertir: "npm run migration:revert"
|
|
||||||
mostrar: "npm run migration:show"
|
|
||||||
|
|
||||||
seeds:
|
|
||||||
directorio: "database/seeds"
|
|
||||||
orden:
|
|
||||||
- "fase8/01-dental-catalogos.sql"
|
|
||||||
- "fase8/02-piezas-dentales-fdi.sql"
|
|
||||||
|
|
||||||
comandos:
|
|
||||||
ejecutar: "npm run seed"
|
|
||||||
desarrollo: "npm run seed:dev"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# SCRIPTS DE DESARROLLO
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
scripts:
|
|
||||||
setup:
|
|
||||||
descripcion: "Configurar entorno desde cero"
|
|
||||||
pasos:
|
|
||||||
- comando: "npm install"
|
|
||||||
descripcion: "Instalar dependencias"
|
|
||||||
- comando: "cp .env.example .env"
|
|
||||||
descripcion: "Crear archivo de configuracion"
|
|
||||||
- comando: "docker-compose up -d db redis"
|
|
||||||
descripcion: "Levantar servicios de infraestructura"
|
|
||||||
- comando: "npm run db:create"
|
|
||||||
descripcion: "Crear base de datos"
|
|
||||||
- comando: "npm run migration:run"
|
|
||||||
descripcion: "Ejecutar migraciones"
|
|
||||||
- comando: "npm run seed"
|
|
||||||
descripcion: "Cargar datos iniciales (incluye 52 piezas FDI)"
|
|
||||||
|
|
||||||
desarrollo:
|
|
||||||
frontend: "cd apps/frontend && npm run dev"
|
|
||||||
backend: "cd apps/backend && npm run start:dev"
|
|
||||||
ambos: "npm run dev:all"
|
|
||||||
docker: "docker-compose up -d"
|
|
||||||
|
|
||||||
testing:
|
|
||||||
unit: "npm run test"
|
|
||||||
unit_watch: "npm run test:watch"
|
|
||||||
e2e: "npm run test:e2e"
|
|
||||||
coverage: "npm run test:cov"
|
|
||||||
|
|
||||||
build:
|
|
||||||
frontend: "cd apps/frontend && npm run build"
|
|
||||||
backend: "cd apps/backend && npm run build"
|
|
||||||
docker: "docker-compose -f docker-compose.prod.yml build"
|
|
||||||
|
|
||||||
database:
|
|
||||||
create: "npm run db:create"
|
|
||||||
drop: "npm run db:drop"
|
|
||||||
reset: "npm run db:reset"
|
|
||||||
migrations_run: "npm run migration:run"
|
|
||||||
migrations_revert: "npm run migration:revert"
|
|
||||||
seed: "npm run seed"
|
|
||||||
|
|
||||||
linting:
|
|
||||||
lint: "npm run lint"
|
|
||||||
lint_fix: "npm run lint:fix"
|
|
||||||
format: "npm run format"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# INSTRUCCIONES DE SETUP
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
setup_instrucciones: |
|
|
||||||
## Setup del Entorno de Desarrollo - Clinica Dental
|
|
||||||
|
|
||||||
### Prerequisitos
|
|
||||||
- Node.js 20.x (LTS)
|
|
||||||
- PostgreSQL 15 (o Docker)
|
|
||||||
- Redis 7 (o Docker)
|
|
||||||
- npm 10.x
|
|
||||||
- Git
|
|
||||||
|
|
||||||
### Opcion 1: Setup con Docker (Recomendado)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. Clonar repositorio
|
|
||||||
git clone <url_repo>
|
|
||||||
cd clinica-dental
|
|
||||||
|
|
||||||
# 2. Instalar dependencias
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# 3. Configurar variables de entorno
|
|
||||||
cp .env.example .env
|
|
||||||
# Editar .env - generar passwords seguros:
|
|
||||||
# openssl rand -base64 32 # para DB_PASSWORD
|
|
||||||
# openssl rand -base64 64 # para JWT_SECRET
|
|
||||||
|
|
||||||
# 4. Levantar infraestructura
|
|
||||||
docker-compose up -d db redis
|
|
||||||
|
|
||||||
# 5. Crear base de datos y ejecutar migraciones
|
|
||||||
npm run db:create
|
|
||||||
npm run migration:run
|
|
||||||
npm run seed # Carga 52 piezas dentales FDI
|
|
||||||
|
|
||||||
# 6. Iniciar desarrollo
|
|
||||||
npm run dev:all
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opcion 2: Setup con PostgreSQL Local
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1-3. Igual que arriba
|
|
||||||
|
|
||||||
# 4. Crear usuario y base de datos en PostgreSQL
|
|
||||||
sudo -u postgres psql
|
|
||||||
CREATE USER dental_dev WITH PASSWORD 'tu_password';
|
|
||||||
CREATE DATABASE clinica_dental_dev OWNER dental_dev;
|
|
||||||
GRANT ALL PRIVILEGES ON DATABASE clinica_dental_dev TO dental_dev;
|
|
||||||
\q
|
|
||||||
|
|
||||||
# 5. Configurar Redis local o Docker
|
|
||||||
docker run -d --name redis-dental -p 6388:6379 redis:7-alpine
|
|
||||||
|
|
||||||
# 6-7. Continuar con migraciones y seeds
|
|
||||||
```
|
|
||||||
|
|
||||||
### Verificar Instalacion
|
|
||||||
- Frontend: http://localhost:3130
|
|
||||||
- Backend API: http://localhost:3131/api/v1
|
|
||||||
- Swagger Docs: http://localhost:3131/api/docs
|
|
||||||
- Health Check: http://localhost:3131/health
|
|
||||||
|
|
||||||
### Usuarios de Prueba (despues de seed)
|
|
||||||
- Admin: admin@clinica-dental.local / Admin123!
|
|
||||||
- Odontologo: doctor@clinica-dental.local / Doctor123!
|
|
||||||
- Recepcion: recepcion@clinica-dental.local / Recep123!
|
|
||||||
|
|
||||||
### Nomenclatura Dental FDI
|
|
||||||
El sistema usa la nomenclatura FDI (Federation Dentaire Internationale):
|
|
||||||
- Cuadrante 1: Superior derecho (18-11)
|
|
||||||
- Cuadrante 2: Superior izquierdo (21-28)
|
|
||||||
- Cuadrante 3: Inferior izquierdo (31-38)
|
|
||||||
- Cuadrante 4: Inferior derecho (41-48)
|
|
||||||
- Cuadrantes 5-8: Denticion temporal
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# TROUBLESHOOTING
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
troubleshooting:
|
|
||||||
- problema: "Puerto 3130 o 3131 en uso"
|
|
||||||
solucion: |
|
|
||||||
Verificar con: lsof -i :3130
|
|
||||||
Terminar proceso: kill -9 <PID>
|
|
||||||
O cambiar puertos en .env
|
|
||||||
|
|
||||||
- problema: "Error de conexion a PostgreSQL"
|
|
||||||
solucion: |
|
|
||||||
1. Verificar que PostgreSQL esta corriendo:
|
|
||||||
docker-compose ps
|
|
||||||
# o: systemctl status postgresql
|
|
||||||
2. Verificar credenciales en .env
|
|
||||||
3. Verificar que la BD existe:
|
|
||||||
psql -h localhost -p 5441 -U dental_dev -l
|
|
||||||
|
|
||||||
- problema: "Error de conexion a Redis"
|
|
||||||
solucion: |
|
|
||||||
1. Verificar que Redis esta corriendo:
|
|
||||||
docker-compose ps
|
|
||||||
# o: redis-cli -p 6388 ping
|
|
||||||
2. Verificar puerto en .env
|
|
||||||
|
|
||||||
- problema: "Migraciones fallan"
|
|
||||||
solucion: |
|
|
||||||
1. Verificar que la BD existe
|
|
||||||
2. Verificar permisos del usuario
|
|
||||||
3. Revisar logs: npm run migration:run --verbose
|
|
||||||
4. Si es necesario, resetear: npm run db:reset
|
|
||||||
|
|
||||||
- problema: "Piezas dentales no cargadas"
|
|
||||||
solucion: |
|
|
||||||
Ejecutar seeds manualmente:
|
|
||||||
npm run seed
|
|
||||||
Verificar: SELECT COUNT(*) FROM dental.piezas_dentales;
|
|
||||||
Debe retornar 52 (32 permanentes + 20 temporales)
|
|
||||||
|
|
||||||
- problema: "Radiografias no se suben"
|
|
||||||
solucion: |
|
|
||||||
1. Verificar STORAGE_PATH existe y tiene permisos
|
|
||||||
2. Verificar MAX_FILE_SIZE en .env (default 20MB)
|
|
||||||
3. Verificar ALLOWED_FILE_TYPES incluye el tipo de archivo
|
|
||||||
|
|
||||||
- problema: "JWT errors"
|
|
||||||
solucion: |
|
|
||||||
Verificar que JWT_SECRET esta configurado (min 32 caracteres)
|
|
||||||
Generar nuevo: openssl rand -base64 64
|
|
||||||
|
|
||||||
- problema: "CORS errors en frontend"
|
|
||||||
solucion: |
|
|
||||||
Verificar FRONTEND_URL y ALLOWED_ORIGINS en .env
|
|
||||||
Deben coincidir con la URL del frontend
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# CONFIGURACION DE PRODUCCION
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
produccion:
|
|
||||||
checklist:
|
|
||||||
- item: "Variables de entorno configuradas via secrets manager"
|
|
||||||
- item: "SSL/TLS habilitado para BD y Redis"
|
|
||||||
- item: "Backups automaticos configurados (retencion 5 anos)"
|
|
||||||
- item: "Monitoreo y alertas activas"
|
|
||||||
- item: "Rate limiting configurado"
|
|
||||||
- item: "CORS restringido a dominios autorizados"
|
|
||||||
- item: "Logs en formato JSON para agregacion"
|
|
||||||
- item: "Audit logging habilitado (NOM-024-SSA3-2012)"
|
|
||||||
- item: "Encriptacion de datos sensibles"
|
|
||||||
|
|
||||||
infraestructura_recomendada:
|
|
||||||
base_de_datos: "AWS RDS PostgreSQL 15 o equivalente"
|
|
||||||
cache: "AWS ElastiCache Redis o equivalente"
|
|
||||||
storage: "AWS S3 o equivalente (para radiografias)"
|
|
||||||
cdn: "CloudFront o equivalente"
|
|
||||||
ci_cd: "GitHub Actions / GitLab CI"
|
|
||||||
|
|
||||||
escalado:
|
|
||||||
backend_replicas: 2
|
|
||||||
pool_db_size: 50
|
|
||||||
redis_maxmemory: "512mb"
|
|
||||||
storage_bucket_region: "us-east-1"
|
|
||||||
|
|
||||||
cumplimiento:
|
|
||||||
nom_024_ssa3:
|
|
||||||
descripcion: "Expediente clinico electronico"
|
|
||||||
requisitos:
|
|
||||||
- "Logs de auditoria inmutables"
|
|
||||||
- "Firma electronica de expedientes"
|
|
||||||
- "Control de versiones de historiales"
|
|
||||||
retencion_datos:
|
|
||||||
expedientes: "5 anos minimo"
|
|
||||||
radiografias: "5 anos minimo"
|
|
||||||
logs_auditoria: "5 anos"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# REFERENCIAS
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
referencias:
|
|
||||||
perfil_devenv: "orchestration/agents/perfiles/PERFIL-DEVENV.md"
|
|
||||||
inventario_master: "orchestration/inventarios/DEVENV-MASTER-INVENTORY.yml"
|
|
||||||
inventario_puertos: "orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml"
|
|
||||||
contexto_proyecto: "orchestration/00-guidelines/CONTEXTO-PROYECTO.md"
|
|
||||||
parent_clinicas: "../erp-clinicas/orchestration/environment/ENVIRONMENT-INVENTORY.yml"
|
|
||||||
schema_dental: "database/schemas/01-dental-schema-ddl.sql"
|
|
||||||
nomenclatura_fdi: "https://www.fdiworlddental.org/tooth-numbering-system"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# FIN DE INVENTARIO
|
|
||||||
# =============================================================================
|
|
||||||
@ -1,133 +0,0 @@
|
|||||||
# DEPENDENCIAS-ERP-CORE.yml - Clínica Dental
|
|
||||||
# Dependencias técnicas heredadas de erp-core via erp-clinicas
|
|
||||||
# Versión: 1.0.0
|
|
||||||
# Fecha: 2026-01-13
|
|
||||||
|
|
||||||
version: "1.0.0"
|
|
||||||
updated: "2026-01-13"
|
|
||||||
project: "clinica-dental"
|
|
||||||
|
|
||||||
inheritance_chain:
|
|
||||||
- source: "template-saas"
|
|
||||||
version: "1.2.1"
|
|
||||||
relation: "PROVIDES_TO"
|
|
||||||
- source: "erp-core"
|
|
||||||
version: "1.3.0"
|
|
||||||
relation: "DEPENDS_ON"
|
|
||||||
- source: "erp-clinicas"
|
|
||||||
version: "1.0.0"
|
|
||||||
relation: "EXTENDS"
|
|
||||||
- target: "clinica-dental"
|
|
||||||
version: "1.0.0"
|
|
||||||
relation: "SPECIALIZES"
|
|
||||||
|
|
||||||
# Módulos heredados de ERP-CORE
|
|
||||||
modules_from_erp_core:
|
|
||||||
fase_03_core:
|
|
||||||
total: 15
|
|
||||||
inherited:
|
|
||||||
- MGN-001-auth
|
|
||||||
- MGN-002-users
|
|
||||||
- MGN-003-roles
|
|
||||||
- MGN-004-tenants
|
|
||||||
- MGN-005-branches
|
|
||||||
- MGN-006-geo
|
|
||||||
- MGN-007-mobile
|
|
||||||
- MGN-008-terminals
|
|
||||||
- MGN-010-catalog
|
|
||||||
- MGN-011-products
|
|
||||||
- MGN-012-inventory
|
|
||||||
- MGN-013-customers
|
|
||||||
- MGN-014-sales
|
|
||||||
- MGN-015-invoicing
|
|
||||||
partial:
|
|
||||||
- MGN-009-biometrics # Solo si la clínica lo requiere
|
|
||||||
|
|
||||||
fase_04_saas:
|
|
||||||
total: 4
|
|
||||||
inherited:
|
|
||||||
- MGN-016-billing
|
|
||||||
- MGN-017-plans
|
|
||||||
- MGN-018-webhooks
|
|
||||||
- MGN-019-feature-flags
|
|
||||||
propagation_date: "2026-01-13"
|
|
||||||
propagation_id: "PROP-CORE-002"
|
|
||||||
|
|
||||||
fase_05_ia:
|
|
||||||
total: 3
|
|
||||||
inherited:
|
|
||||||
- MGN-020-ai-integration
|
|
||||||
- MGN-021-whatsapp-business
|
|
||||||
- MGN-022-mcp-server
|
|
||||||
propagation_date: "2026-01-13"
|
|
||||||
propagation_id: "PROP-CORE-002"
|
|
||||||
|
|
||||||
# Dependencias técnicas (DDL)
|
|
||||||
ddl_dependencies:
|
|
||||||
from_erp_core:
|
|
||||||
reused:
|
|
||||||
- "01-extensions.sql"
|
|
||||||
- "02-core-schema.sql"
|
|
||||||
- "10-billing.sql"
|
|
||||||
- "15-ai-agents.sql"
|
|
||||||
- "16-messaging.sql"
|
|
||||||
created_fase_04_05:
|
|
||||||
- "19-webhooks.sql"
|
|
||||||
- "20-feature-flags.sql"
|
|
||||||
|
|
||||||
from_erp_clinicas:
|
|
||||||
- "03-clinical-tables.sql"
|
|
||||||
- "04-financial-ext-schema-ddl.sql"
|
|
||||||
- "05-hr-ext-fase8-schema-ddl.sql"
|
|
||||||
- "06-inventory-ext-fase8-schema-ddl.sql"
|
|
||||||
- "07-purchase-ext-fase8-schema-ddl.sql"
|
|
||||||
- "08-clinica-ext-fase8-schema-ddl.sql"
|
|
||||||
|
|
||||||
specific_dental:
|
|
||||||
- "01-dental-schema-ddl.sql"
|
|
||||||
|
|
||||||
# Adaptaciones específicas dental
|
|
||||||
adaptations:
|
|
||||||
terminology:
|
|
||||||
Paciente: "Paciente odontológico"
|
|
||||||
Consulta: "Consulta dental"
|
|
||||||
Prescripción: "Receta dental"
|
|
||||||
Médico: "Odontólogo"
|
|
||||||
|
|
||||||
ai_tools:
|
|
||||||
- name: "crear_cita_dental"
|
|
||||||
description: "Crear cita en agenda odontológica"
|
|
||||||
- name: "consultar_odontograma"
|
|
||||||
description: "Consultar estado dental del paciente"
|
|
||||||
- name: "presupuesto_tratamiento"
|
|
||||||
description: "Generar presupuesto de tratamiento dental"
|
|
||||||
- name: "historial_tratamientos"
|
|
||||||
description: "Consultar historial de tratamientos"
|
|
||||||
|
|
||||||
whatsapp_templates:
|
|
||||||
- "recordatorio_cita_dental"
|
|
||||||
- "confirmacion_cita"
|
|
||||||
- "seguimiento_tratamiento"
|
|
||||||
- "promocion_limpieza"
|
|
||||||
|
|
||||||
# Normativa
|
|
||||||
compliance:
|
|
||||||
- code: "NOM-013-SSA2-2015"
|
|
||||||
name: "Prevención y control enfermedades bucales"
|
|
||||||
- code: "NOM-004-SSA3-2012"
|
|
||||||
name: "Expediente clínico"
|
|
||||||
- code: "NOM-024-SSA3-2012"
|
|
||||||
name: "Sistemas de información"
|
|
||||||
- code: "LFPDPPP"
|
|
||||||
name: "Ley Federal de Protección de Datos Personales"
|
|
||||||
- code: "COFEPRIS"
|
|
||||||
name: "Registro de establecimientos"
|
|
||||||
|
|
||||||
metadata:
|
|
||||||
created_by: "CLAUDE-CAPVED"
|
|
||||||
created_at: "2026-01-13"
|
|
||||||
propagation_ref: "PROP-CORE-002"
|
|
||||||
related_documents:
|
|
||||||
- "../00-guidelines/HERENCIA-ERP-CORE.md"
|
|
||||||
- "../00-guidelines/HERENCIA-ERP-CLINICAS.md"
|
|
||||||
- "shared/mirrors/erp-core/PROPAGATION-STATUS.yml"
|
|
||||||
@ -1,184 +0,0 @@
|
|||||||
# LESSONS-LEARNED.yml - Lecciones Aprendidas de la Tarea
|
|
||||||
# Version: 1.0.0
|
|
||||||
# Actualizado: 2026-01-18
|
|
||||||
#
|
|
||||||
# Proposito: Documentar aprendizajes para mejorar futuras tareas
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# METADATA
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
metadata:
|
|
||||||
task_id: "TASK-YYYY-MM-DD-NNN"
|
|
||||||
task_title: "Titulo de la tarea"
|
|
||||||
completed_date: "YYYY-MM-DD"
|
|
||||||
author: "Agente"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# RESUMEN EJECUTIVO
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
summary:
|
|
||||||
outcome: "success" # success | partial | failed
|
|
||||||
key_achievement: "Descripcion breve del logro principal"
|
|
||||||
main_challenge: "Descripcion breve del desafio principal"
|
|
||||||
time_deviation: "+2h" # vs estimado (ej: +2h, -1h, on-time)
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# QUE FUNCIONO BIEN
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
what_worked:
|
|
||||||
- id: WW-001
|
|
||||||
category: "process" # process | technical | communication | tooling
|
|
||||||
description: "Descripcion de lo que funciono bien"
|
|
||||||
impact: "high" # high | medium | low
|
|
||||||
replicable: true
|
|
||||||
details: |
|
|
||||||
Contexto adicional sobre por que funciono
|
|
||||||
y como replicarlo en futuras tareas.
|
|
||||||
|
|
||||||
- id: WW-002
|
|
||||||
category: "technical"
|
|
||||||
description: "Descripcion de solucion tecnica efectiva"
|
|
||||||
impact: "medium"
|
|
||||||
replicable: true
|
|
||||||
code_example: |
|
|
||||||
// Ejemplo de codigo si aplica
|
|
||||||
const solution = ...
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# QUE NO FUNCIONO / PROBLEMAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
what_didnt_work:
|
|
||||||
- id: WD-001
|
|
||||||
category: "process"
|
|
||||||
description: "Descripcion del problema encontrado"
|
|
||||||
impact: "high"
|
|
||||||
root_cause: "Causa raiz del problema"
|
|
||||||
resolution: "Como se resolvio o mitigó"
|
|
||||||
prevention: "Como prevenir en el futuro"
|
|
||||||
|
|
||||||
- id: WD-002
|
|
||||||
category: "technical"
|
|
||||||
description: "Problema tecnico encontrado"
|
|
||||||
impact: "medium"
|
|
||||||
root_cause: "Causa raiz"
|
|
||||||
resolution: "Solucion aplicada"
|
|
||||||
prevention: "Medida preventiva"
|
|
||||||
related_docs:
|
|
||||||
- "Link a ADR o documentacion relacionada"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# SORPRESAS / DESCUBRIMIENTOS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
surprises:
|
|
||||||
- id: SU-001
|
|
||||||
type: "positive" # positive | negative | neutral
|
|
||||||
description: "Algo inesperado que se descubrio"
|
|
||||||
impact: "medium"
|
|
||||||
action_taken: "Que se hizo al respecto"
|
|
||||||
follow_up: "Acciones futuras si aplica"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# RECOMENDACIONES PARA FUTURAS TAREAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
recommendations:
|
|
||||||
immediate:
|
|
||||||
- id: REC-I-001
|
|
||||||
description: "Accion inmediata recomendada"
|
|
||||||
priority: "high"
|
|
||||||
owner: "Quien debe ejecutar"
|
|
||||||
|
|
||||||
short_term:
|
|
||||||
- id: REC-S-001
|
|
||||||
description: "Mejora para proximas tareas similares"
|
|
||||||
priority: "medium"
|
|
||||||
estimated_effort: "1h"
|
|
||||||
|
|
||||||
long_term:
|
|
||||||
- id: REC-L-001
|
|
||||||
description: "Mejora sistemica para el proyecto"
|
|
||||||
priority: "low"
|
|
||||||
requires_approval: true
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# ACTUALIZACIONES A PROCESOS/DOCS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
process_updates:
|
|
||||||
triggers:
|
|
||||||
- file: "orchestration/directivas/triggers/TRIGGER-XXX.md"
|
|
||||||
action: "update" # create | update | deprecate
|
|
||||||
description: "Actualizacion sugerida al trigger"
|
|
||||||
|
|
||||||
checklists:
|
|
||||||
- file: "orchestration/directivas/checklists/CHECKLIST-XXX.md"
|
|
||||||
action: "update"
|
|
||||||
description: "Item a agregar al checklist"
|
|
||||||
|
|
||||||
templates:
|
|
||||||
- file: "orchestration/templates/TEMPLATE-XXX.md"
|
|
||||||
action: "update"
|
|
||||||
description: "Mejora al template"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# METRICAS DE LA TAREA
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
task_metrics:
|
|
||||||
time:
|
|
||||||
estimated: "Xh"
|
|
||||||
actual: "Yh"
|
|
||||||
variance: "+/-Zh"
|
|
||||||
|
|
||||||
scope:
|
|
||||||
planned_items: 10
|
|
||||||
completed_items: 10
|
|
||||||
added_items: 2
|
|
||||||
removed_items: 0
|
|
||||||
|
|
||||||
quality:
|
|
||||||
bugs_found: 0
|
|
||||||
rework_required: false
|
|
||||||
first_time_right: true
|
|
||||||
|
|
||||||
complexity:
|
|
||||||
estimated: "medium" # low | medium | high
|
|
||||||
actual: "high"
|
|
||||||
reason_for_variance: "Razon si cambio"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# TAGS PARA BUSQUEDA
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
tags:
|
|
||||||
domains: [database, backend, frontend]
|
|
||||||
topics: [performance, security, refactoring]
|
|
||||||
technologies: [typescript, postgresql, react]
|
|
||||||
patterns: [repository, factory, observer]
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# PROPAGACION
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
propagation:
|
|
||||||
should_propagate: true
|
|
||||||
target_index: "workspace-v2/orchestration/retrospectivas/LECCIONES-INDEX.yml"
|
|
||||||
propagated: false
|
|
||||||
propagated_date: null
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# REFERENCIAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
references:
|
|
||||||
metadata: "./METADATA.yml"
|
|
||||||
subtasks: "./SUBTASKS.yml"
|
|
||||||
related_tasks:
|
|
||||||
- "TASK-YYYY-MM-DD-XXX: Tarea relacionada"
|
|
||||||
external_docs:
|
|
||||||
- "Link a documentacion externa relevante"
|
|
||||||
@ -1,230 +0,0 @@
|
|||||||
# METADATA.yml - Template Unificado de Tarea
|
|
||||||
# Version: 2.0.0
|
|
||||||
# Actualizado: 2026-01-18
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# IDENTIFICACION
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
task:
|
|
||||||
id: "TASK-YYYY-MM-DD-NNN"
|
|
||||||
title: "Titulo descriptivo de la tarea"
|
|
||||||
created: "YYYY-MM-DD"
|
|
||||||
updated: "YYYY-MM-DD"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# CLASIFICACION
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
classification:
|
|
||||||
type: "feature" # feature | bug | refactor | audit | migration | documentation
|
|
||||||
priority: "P1" # P0 (critico) | P1 (alto) | P2 (medio) | P3 (bajo)
|
|
||||||
mode: "FULL" # FULL | QUICK | ANALYSIS | PROPAGATION
|
|
||||||
epic: "EAI-003" # Epica relacionada (si aplica)
|
|
||||||
sprint: "Sprint-XX" # Sprint actual (si aplica)
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# ESTADO
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
status:
|
|
||||||
current: "pending" # pending | in_progress | blocked | completed
|
|
||||||
blocked_by: null # ID de tarea/issue bloqueante
|
|
||||||
completion: 0%
|
|
||||||
last_phase: null # C | A | P | V | E | D
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# DOMINIOS AFECTADOS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
domains:
|
|
||||||
- name: "database"
|
|
||||||
affected: true
|
|
||||||
details: "Descripcion de cambios en BD"
|
|
||||||
|
|
||||||
- name: "backend"
|
|
||||||
affected: true
|
|
||||||
details: "Descripcion de cambios en backend"
|
|
||||||
|
|
||||||
- name: "frontend"
|
|
||||||
affected: false
|
|
||||||
details: null
|
|
||||||
|
|
||||||
- name: "documentation"
|
|
||||||
affected: true
|
|
||||||
details: "Actualizacion de inventarios"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# REQUERIMIENTOS Y DEPENDENCIAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
requirements:
|
|
||||||
functional:
|
|
||||||
- "RF-XXX-001: Descripcion"
|
|
||||||
technical:
|
|
||||||
- "ET-XXX-001: Descripcion"
|
|
||||||
user_stories:
|
|
||||||
- "US-XXX-001: Como usuario quiero..."
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
tasks_required:
|
|
||||||
- "TASK-YYYY-MM-DD-NNN: Tarea previa necesaria"
|
|
||||||
tasks_blocked:
|
|
||||||
- "TASK-YYYY-MM-DD-NNN: Tarea que espera esta"
|
|
||||||
epics_related:
|
|
||||||
- "EAI-003: Gamificacion"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# FASES CAPVED
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
phases:
|
|
||||||
contexto:
|
|
||||||
status: "pending" # pending | in_progress | completed | skipped
|
|
||||||
started: null
|
|
||||||
completed: null
|
|
||||||
file: "01-CONTEXTO.md"
|
|
||||||
checklist: "CHECKLIST-FASE-C.md"
|
|
||||||
|
|
||||||
analisis:
|
|
||||||
status: "pending"
|
|
||||||
started: null
|
|
||||||
completed: null
|
|
||||||
file: "02-ANALISIS.md"
|
|
||||||
checklist: "CHECKLIST-FASE-A.md"
|
|
||||||
|
|
||||||
plan:
|
|
||||||
status: "pending"
|
|
||||||
started: null
|
|
||||||
completed: null
|
|
||||||
file: "03-PLAN.md"
|
|
||||||
checklist: "CHECKLIST-FASE-P.md"
|
|
||||||
|
|
||||||
validacion:
|
|
||||||
status: "pending"
|
|
||||||
started: null
|
|
||||||
completed: null
|
|
||||||
file: "04-VALIDACION.md"
|
|
||||||
checklist: "CHECKLIST-FASE-V.md"
|
|
||||||
|
|
||||||
ejecucion:
|
|
||||||
status: "pending"
|
|
||||||
started: null
|
|
||||||
completed: null
|
|
||||||
file: "05-EJECUCION.md"
|
|
||||||
checklist: "CHECKLIST-FASE-E.md"
|
|
||||||
checkpoints:
|
|
||||||
CP1_database: "pending"
|
|
||||||
CP2_backend: "pending"
|
|
||||||
CP3_frontend: "pending"
|
|
||||||
CP4_coherencia: "pending"
|
|
||||||
|
|
||||||
documentacion:
|
|
||||||
status: "pending"
|
|
||||||
started: null
|
|
||||||
completed: null
|
|
||||||
file: "06-DOCUMENTACION.md"
|
|
||||||
checklist: "CHECKLIST-FASE-D.md"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# SUBTAREAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
subtasks_file: "SUBTASKS.yml"
|
|
||||||
|
|
||||||
subtasks_summary:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
in_progress: 0
|
|
||||||
pending: 0
|
|
||||||
blocked: 0
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# ENTREGABLES
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
deliverables:
|
|
||||||
code:
|
|
||||||
- path: "apps/backend/src/..."
|
|
||||||
type: "new" # new | modified | deleted
|
|
||||||
description: "Descripcion del cambio"
|
|
||||||
|
|
||||||
documentation:
|
|
||||||
- path: "docs/..."
|
|
||||||
type: "modified"
|
|
||||||
description: "Actualizacion de documentacion"
|
|
||||||
|
|
||||||
reports:
|
|
||||||
- name: "REPORT-XXX.md"
|
|
||||||
description: "Reporte generado"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# VALIDACIONES
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
validations:
|
|
||||||
build:
|
|
||||||
backend: null # pass | fail | pending
|
|
||||||
frontend: null
|
|
||||||
database: null
|
|
||||||
|
|
||||||
lint:
|
|
||||||
backend: null
|
|
||||||
frontend: null
|
|
||||||
|
|
||||||
tests:
|
|
||||||
backend: null
|
|
||||||
frontend: null
|
|
||||||
|
|
||||||
coherence:
|
|
||||||
ddl_backend: null
|
|
||||||
backend_frontend: null
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# METRICAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
metrics:
|
|
||||||
time:
|
|
||||||
estimated_hours: null
|
|
||||||
actual_hours: null
|
|
||||||
changes:
|
|
||||||
files_created: 0
|
|
||||||
files_modified: 0
|
|
||||||
files_deleted: 0
|
|
||||||
lines_added: 0
|
|
||||||
lines_removed: 0
|
|
||||||
issues:
|
|
||||||
found: 0
|
|
||||||
fixed: 0
|
|
||||||
deferred: 0
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# AGENTE
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
agent:
|
|
||||||
id: "agente-principal"
|
|
||||||
session: "session-id"
|
|
||||||
workspace: "workspace-v2"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# HISTORIAL
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
changelog:
|
|
||||||
- date: "YYYY-MM-DD"
|
|
||||||
author: "Agente"
|
|
||||||
action: "created"
|
|
||||||
details: "Tarea creada"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# REFERENCIAS
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
references:
|
|
||||||
subtasks: "./SUBTASKS.yml"
|
|
||||||
lessons: "./LESSONS-LEARNED.yml"
|
|
||||||
ssot: "docs/_SSOT/"
|
|
||||||
epic_manifest: "docs/XX-fase-*/EPIC-XXX/EPIC-MANIFEST.yml"
|
|
||||||
checklist_cierre: "orchestration/directivas/checklists/CHECKLIST-CIERRE.md"
|
|
||||||
@ -1,129 +0,0 @@
|
|||||||
# TASK-TEMPLATE-UNIFIED
|
|
||||||
|
|
||||||
**Version:** 2.0.0
|
|
||||||
**Actualizado:** 2026-01-18
|
|
||||||
|
|
||||||
## Proposito
|
|
||||||
|
|
||||||
Template unificado para tareas que integra:
|
|
||||||
- Metadata estructurada (METADATA.yml)
|
|
||||||
- Sistema recursivo de subtareas N niveles (SUBTASKS.yml)
|
|
||||||
- Registro de lecciones aprendidas (LESSONS-LEARNED.yml)
|
|
||||||
|
|
||||||
## Archivos
|
|
||||||
|
|
||||||
| Archivo | Proposito |
|
|
||||||
|---------|-----------|
|
|
||||||
| `METADATA.yml` | Identificacion, clasificacion, estado, fases CAPVED |
|
|
||||||
| `SUBTASKS.yml` | Desglose recursivo hasta 5 niveles |
|
|
||||||
| `LESSONS-LEARNED.yml` | Documentacion de aprendizajes post-tarea |
|
|
||||||
| `README.md` | Este archivo |
|
|
||||||
|
|
||||||
## Como Usar
|
|
||||||
|
|
||||||
### 1. Crear nueva tarea
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Crear carpeta con ID de tarea
|
|
||||||
mkdir orchestration/tareas/TASK-2026-01-18-001
|
|
||||||
|
|
||||||
# Copiar template
|
|
||||||
cp -r orchestration/tareas/_templates/TASK-TEMPLATE-UNIFIED/* orchestration/tareas/TASK-2026-01-18-001/
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Actualizar METADATA.yml
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
task:
|
|
||||||
id: "TASK-2026-01-18-001"
|
|
||||||
title: "Titulo real de la tarea"
|
|
||||||
created: "2026-01-18"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Definir subtareas en SUBTASKS.yml
|
|
||||||
|
|
||||||
Adaptar las subtareas segun los dominios afectados:
|
|
||||||
- Eliminar grupos no necesarios (ej: E.FE si no hay cambios frontend)
|
|
||||||
- Agregar subtareas especificas
|
|
||||||
- Definir criterios de aceptacion
|
|
||||||
|
|
||||||
### 4. Ejecutar tarea siguiendo CAPVED
|
|
||||||
|
|
||||||
1. **C** - Contexto: Vincular con RF/ET/US
|
|
||||||
2. **A** - Analisis: Mapear dependencias e impacto
|
|
||||||
3. **P** - Plan: Detallar subtareas en SUBTASKS.yml
|
|
||||||
4. **V** - Validacion: Gate de aprobacion
|
|
||||||
5. **E** - Ejecucion: Implementar por checkpoints (CP1-CP4)
|
|
||||||
6. **D** - Documentacion: Actualizar inventarios, trazas, lecciones
|
|
||||||
|
|
||||||
### 5. Completar LESSONS-LEARNED.yml
|
|
||||||
|
|
||||||
Al finalizar la tarea:
|
|
||||||
- Documentar que funciono bien
|
|
||||||
- Documentar problemas y resoluciones
|
|
||||||
- Agregar recomendaciones
|
|
||||||
|
|
||||||
## Estructura de Niveles (SUBTASKS.yml)
|
|
||||||
|
|
||||||
```
|
|
||||||
NIVEL 1: FASE
|
|
||||||
├── C (Contexto)
|
|
||||||
├── A (Analisis)
|
|
||||||
├── P (Plan)
|
|
||||||
├── V (Validacion)
|
|
||||||
├── E (Ejecucion) ← NIVEL 2: GRUPO
|
|
||||||
│ ├── E.DB (Database)
|
|
||||||
│ ├── E.BE (Backend) ← NIVEL 3: SUBTAREA
|
|
||||||
│ │ ├── E.BE.01
|
|
||||||
│ │ │ ├── E.BE.01.AC1 ← NIVEL 4: CRITERIO
|
|
||||||
│ │ │ │ └── AC1.1 ← NIVEL 5: SUB-CRITERIO
|
|
||||||
│ │ │ └── E.BE.01.AC2
|
|
||||||
│ │ └── E.BE.02
|
|
||||||
│ ├── E.FE (Frontend)
|
|
||||||
│ └── E.COH (Coherencia)
|
|
||||||
└── D (Documentacion)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Checkpoints de Ejecucion
|
|
||||||
|
|
||||||
| Checkpoint | Validaciones |
|
|
||||||
|------------|--------------|
|
|
||||||
| CP1: Post-Database | DDL ejecuta, recreate-database.sh exitoso |
|
|
||||||
| CP2: Post-Backend | npm run build, lint, test - PASAN |
|
|
||||||
| CP3: Post-Frontend | npm run build, typecheck - PASAN |
|
|
||||||
| CP4: Coherencia | Entity↔DDL, DTO↔Entity, FE↔BE alineados |
|
|
||||||
|
|
||||||
## Estados de Subtareas
|
|
||||||
|
|
||||||
| Estado | Descripcion |
|
|
||||||
|--------|-------------|
|
|
||||||
| `pending` | No iniciado |
|
|
||||||
| `in_progress` | En ejecucion |
|
|
||||||
| `completed` | Terminado exitosamente |
|
|
||||||
| `blocked` | Bloqueado por dependencia |
|
|
||||||
| `skipped` | Omitido (documentar razon) |
|
|
||||||
|
|
||||||
## Integracion con Sistema
|
|
||||||
|
|
||||||
### Actualizar _INDEX.yml al completar
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
tasks:
|
|
||||||
- id: TASK-2026-01-18-001
|
|
||||||
title: "Titulo de la tarea"
|
|
||||||
date: "2026-01-18"
|
|
||||||
status: completed
|
|
||||||
path: "orchestration/tareas/TASK-2026-01-18-001/"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Propagar lecciones al workspace
|
|
||||||
|
|
||||||
Si `propagation.should_propagate: true` en LESSONS-LEARNED.yml:
|
|
||||||
1. Copiar entrada relevante a `workspace-v2/orchestration/retrospectivas/LECCIONES-INDEX.yml`
|
|
||||||
2. Marcar `propagated: true`
|
|
||||||
|
|
||||||
## Referencias
|
|
||||||
|
|
||||||
- SSOT: `docs/_SSOT/`
|
|
||||||
- Checklists CAPVED: `orchestration/directivas/checklists/`
|
|
||||||
- Template anterior: `workspace-v2/orchestration/tareas/_templates/TASK-TEMPLATE/`
|
|
||||||
@ -1,353 +0,0 @@
|
|||||||
# SUBTASKS.yml - Sistema Recursivo de Subtareas (N Niveles)
|
|
||||||
# Version: 1.0.0
|
|
||||||
# Actualizado: 2026-01-18
|
|
||||||
#
|
|
||||||
# ESTRUCTURA DE NIVELES:
|
|
||||||
# Nivel 1: FASE (C, A, P, V, E, D)
|
|
||||||
# Nivel 2: GRUPO/DOMINIO (E.DB, E.BE, E.FE)
|
|
||||||
# Nivel 3: SUBTAREA
|
|
||||||
# Nivel 4: CRITERIO DE ACEPTACION
|
|
||||||
# Nivel 5: SUB-CRITERIO (si necesario)
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# METADATA
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
metadata:
|
|
||||||
task_id: "TASK-YYYY-MM-DD-NNN"
|
|
||||||
version: "1.0.0"
|
|
||||||
max_depth: 5
|
|
||||||
total_items: 0
|
|
||||||
completed_items: 0
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# RESUMEN POR FASE
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
summary:
|
|
||||||
C:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
percentage: 0%
|
|
||||||
A:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
percentage: 0%
|
|
||||||
P:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
percentage: 0%
|
|
||||||
V:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
percentage: 0%
|
|
||||||
E:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
percentage: 0%
|
|
||||||
D:
|
|
||||||
total: 0
|
|
||||||
completed: 0
|
|
||||||
percentage: 0%
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# SUBTAREAS - NIVEL 1: FASES
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
subtasks:
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# FASE C: CONTEXTO
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
- id: "C"
|
|
||||||
tipo: "fase"
|
|
||||||
nombre: "Contexto"
|
|
||||||
status: "pending" # pending | in_progress | completed | blocked | skipped
|
|
||||||
descripcion: "Clasificar y vincular tarea con objetivos del proyecto"
|
|
||||||
children:
|
|
||||||
- id: "C.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Identificar requerimientos relacionados"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "C.01.AC1"
|
|
||||||
descripcion: "RF/ET/US vinculados en METADATA.yml"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "C.02"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Verificar catalogo de funcionalidades"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "C.02.AC1"
|
|
||||||
descripcion: "No hay duplicacion con funcionalidades existentes"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# FASE A: ANALISIS
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
- id: "A"
|
|
||||||
tipo: "fase"
|
|
||||||
nombre: "Analisis"
|
|
||||||
status: "pending"
|
|
||||||
descripcion: "Mapear impacto, dependencias y riesgos"
|
|
||||||
children:
|
|
||||||
- id: "A.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Analizar dependencias de codigo"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "A.01.AC1"
|
|
||||||
descripcion: "Archivos dependientes identificados"
|
|
||||||
status: "pending"
|
|
||||||
- id: "A.01.AC2"
|
|
||||||
descripcion: "Impacto de cambios evaluado"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "A.02"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Identificar riesgos"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "A.02.AC1"
|
|
||||||
descripcion: "Riesgos documentados con mitigacion"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# FASE P: PLAN
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
- id: "P"
|
|
||||||
tipo: "fase"
|
|
||||||
nombre: "Plan"
|
|
||||||
status: "pending"
|
|
||||||
descripcion: "Desglosar subtareas por dominio"
|
|
||||||
children:
|
|
||||||
- id: "P.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Definir subtareas de ejecucion"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "P.01.AC1"
|
|
||||||
descripcion: "Subtareas E.DB, E.BE, E.FE definidas"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "P.02"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Establecer orden de ejecucion"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "P.02.AC1"
|
|
||||||
descripcion: "Dependencias entre subtareas claras"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# FASE V: VALIDACION (Gate)
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
- id: "V"
|
|
||||||
tipo: "fase"
|
|
||||||
nombre: "Validacion Pre-Ejecucion"
|
|
||||||
status: "pending"
|
|
||||||
descripcion: "Gate de validacion antes de ejecutar"
|
|
||||||
children:
|
|
||||||
- id: "V.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Validar alineacion con requerimientos"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "V.01.AC1"
|
|
||||||
descripcion: "Plan alineado con RF/ET"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "V.02"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Aprobar plan de ejecucion"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "V.02.AC1"
|
|
||||||
descripcion: "Plan aprobado para continuar"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# FASE E: EJECUCION (Nivel 2: Grupos por Dominio)
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
- id: "E"
|
|
||||||
tipo: "fase"
|
|
||||||
nombre: "Ejecucion"
|
|
||||||
status: "pending"
|
|
||||||
descripcion: "Implementar cambios por dominio"
|
|
||||||
children:
|
|
||||||
# --- GRUPO E.DB: Database ---
|
|
||||||
- id: "E.DB"
|
|
||||||
tipo: "grupo"
|
|
||||||
dominio: "database"
|
|
||||||
nombre: "Cambios en Base de Datos"
|
|
||||||
status: "pending"
|
|
||||||
checkpoint: "CP1"
|
|
||||||
children:
|
|
||||||
- id: "E.DB.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "[Descripcion de cambio DDL]"
|
|
||||||
status: "pending"
|
|
||||||
dependencias: []
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "E.DB.01.AC1"
|
|
||||||
descripcion: "DDL ejecuta sin errores"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.DB.01.AC2"
|
|
||||||
descripcion: "recreate-database.sh exitoso"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# --- GRUPO E.BE: Backend ---
|
|
||||||
- id: "E.BE"
|
|
||||||
tipo: "grupo"
|
|
||||||
dominio: "backend"
|
|
||||||
nombre: "Cambios en Backend"
|
|
||||||
status: "pending"
|
|
||||||
checkpoint: "CP2"
|
|
||||||
dependencias: ["E.DB"] # Depende de que BD este lista
|
|
||||||
children:
|
|
||||||
- id: "E.BE.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "[Descripcion de cambio backend]"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "E.BE.01.AC1"
|
|
||||||
descripcion: "Entity creada/modificada"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.BE.01.AC2"
|
|
||||||
descripcion: "npm run build - PASA"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.BE.01.AC3"
|
|
||||||
descripcion: "npm run lint - PASA"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.BE.01.AC4"
|
|
||||||
descripcion: "npm run test - PASA"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# --- GRUPO E.FE: Frontend ---
|
|
||||||
- id: "E.FE"
|
|
||||||
tipo: "grupo"
|
|
||||||
dominio: "frontend"
|
|
||||||
nombre: "Cambios en Frontend"
|
|
||||||
status: "pending"
|
|
||||||
checkpoint: "CP3"
|
|
||||||
dependencias: ["E.BE"] # Depende de que backend este listo
|
|
||||||
children:
|
|
||||||
- id: "E.FE.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "[Descripcion de cambio frontend]"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "E.FE.01.AC1"
|
|
||||||
descripcion: "Componente creado/modificado"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.FE.01.AC2"
|
|
||||||
descripcion: "npm run build - PASA"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.FE.01.AC3"
|
|
||||||
descripcion: "npm run typecheck - PASA"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# --- GRUPO E.COH: Coherencia ---
|
|
||||||
- id: "E.COH"
|
|
||||||
tipo: "grupo"
|
|
||||||
dominio: "coherencia"
|
|
||||||
nombre: "Validacion de Coherencia"
|
|
||||||
status: "pending"
|
|
||||||
checkpoint: "CP4"
|
|
||||||
dependencias: ["E.DB", "E.BE", "E.FE"]
|
|
||||||
children:
|
|
||||||
- id: "E.COH.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Verificar coherencia entre capas"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "E.COH.01.AC1"
|
|
||||||
descripcion: "Entity alineada con DDL"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.COH.01.AC2"
|
|
||||||
descripcion: "DTO alineado con Entity"
|
|
||||||
status: "pending"
|
|
||||||
- id: "E.COH.01.AC3"
|
|
||||||
descripcion: "Frontend consume endpoints correctos"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# FASE D: DOCUMENTACION
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
- id: "D"
|
|
||||||
tipo: "fase"
|
|
||||||
nombre: "Documentacion"
|
|
||||||
status: "pending"
|
|
||||||
descripcion: "Actualizar inventarios, trazas y propagar"
|
|
||||||
children:
|
|
||||||
- id: "D.01"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Actualizar inventarios"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "D.01.AC1"
|
|
||||||
descripcion: "DATABASE_INVENTORY.yml actualizado (si aplica)"
|
|
||||||
status: "pending"
|
|
||||||
- id: "D.01.AC2"
|
|
||||||
descripcion: "BACKEND_INVENTORY.yml actualizado (si aplica)"
|
|
||||||
status: "pending"
|
|
||||||
- id: "D.01.AC3"
|
|
||||||
descripcion: "FRONTEND_INVENTORY.yml actualizado (si aplica)"
|
|
||||||
status: "pending"
|
|
||||||
- id: "D.01.AC4"
|
|
||||||
descripcion: "MASTER_INVENTORY.yml actualizado"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "D.02"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Actualizar trazas"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "D.02.AC1"
|
|
||||||
descripcion: "TRAZA-TAREAS-*.md actualizado"
|
|
||||||
status: "pending"
|
|
||||||
- id: "D.02.AC2"
|
|
||||||
descripcion: "_INDEX.yml actualizado"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "D.03"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Registrar lecciones aprendidas"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "D.03.AC1"
|
|
||||||
descripcion: "LESSONS-LEARNED.yml completado"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
- id: "D.04"
|
|
||||||
tipo: "subtarea"
|
|
||||||
titulo: "Ejecutar CHECKLIST-CIERRE.md"
|
|
||||||
status: "pending"
|
|
||||||
acceptance_criteria:
|
|
||||||
- id: "D.04.AC1"
|
|
||||||
descripcion: "Todos los items del checklist pasan"
|
|
||||||
status: "pending"
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# INSTRUCCIONES DE USO
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# 1. Copiar este archivo a la carpeta de la tarea
|
|
||||||
# 2. Actualizar metadata.task_id
|
|
||||||
# 3. Completar/eliminar subtareas segun necesidad
|
|
||||||
# 4. Para agregar niveles adicionales, usar children recursivamente
|
|
||||||
# 5. Actualizar status conforme avanza la ejecucion
|
|
||||||
# 6. Mantener summary actualizado
|
|
||||||
#
|
|
||||||
# ESTADOS:
|
|
||||||
# pending - No iniciado
|
|
||||||
# in_progress - En ejecucion
|
|
||||||
# completed - Terminado exitosamente
|
|
||||||
# blocked - Bloqueado por dependencia
|
|
||||||
# skipped - Omitido (documentar razon)
|
|
||||||
#
|
|
||||||
# CHECKPOINTS (en Fase E):
|
|
||||||
# CP1 - Post-Database: DDL ejecuta, recreate exitoso
|
|
||||||
# CP2 - Post-Backend: build, lint, test pasan
|
|
||||||
# CP3 - Post-Frontend: build, typecheck pasan
|
|
||||||
# CP4 - Coherencia: Capas alineadas
|
|
||||||
Loading…
Reference in New Issue
Block a user