template-saas/orchestration/GUIA-ORQUESTACION-SUBAGENTES.md
rckrdmrd 50a821a415
Some checks failed
CI / Backend CI (push) Has been cancelled
CI / Frontend CI (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / CI Summary (push) Has been cancelled
[SIMCO-V38] feat: Actualizar a SIMCO v3.8.0
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Actualizaciones de configuracion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:08 -06:00

743 lines
22 KiB
Markdown

# GUIA DE ORQUESTACION DE SUBAGENTES
**Proyecto:** template-saas
**Version:** 1.0.0
**Fecha:** 2026-01-10
**Autor:** Arquitecto de Soluciones / Tech Lead
---
## TABLA DE CONTENIDOS
1. [Introduccion](#1-introduccion)
2. [Perfiles de Agentes](#2-perfiles-de-agentes)
3. [Protocolo de Asignacion](#3-protocolo-de-asignacion)
4. [Templates de Tareas](#4-templates-de-tareas)
5. [Flujo de Ejecucion](#5-flujo-de-ejecucion)
6. [Validacion y Aceptacion](#6-validacion-y-aceptacion)
7. [Actualizacion de Inventarios](#7-actualizacion-de-inventarios)
8. [Ejemplos Practicos](#8-ejemplos-practicos)
---
## 1. INTRODUCCION
### 1.1 Proposito
Esta guia define el proceso para orquestar multiples subagentes de desarrollo en el proyecto template-saas, maximizando la eficiencia y manteniendo la coherencia del codigo.
### 1.2 Principios
1. **Contexto Completo**: Cada agente recibe toda la informacion necesaria
2. **Independencia**: Tareas paralelas no tienen dependencias entre si
3. **Validacion Continua**: Cada entrega es validada antes de continuar
4. **Trazabilidad**: Todo queda documentado en inventarios y trazas
### 1.3 Documentos de Referencia
| Documento | Proposito |
|-----------|-----------|
| `ANALISIS-MAESTRO-TEMPLATE-SAAS.md` | Estado actual y requerimientos |
| `planes/PLAN-SPRINT-{N}-*.md` | Plan detallado de cada sprint |
| `PROJECT-STATUS.md` | Estado general del proyecto |
| `PROXIMA-ACCION.md` | Siguiente tarea a ejecutar |
| `inventarios/*.yml` | Estado de cada capa |
---
## 2. PERFILES DE AGENTES
### 2.1 Database-Agent
**Responsabilidades:**
- Creacion y modificacion de DDL
- Implementacion de RLS policies
- Creacion de funciones y triggers
- Seeds de datos
**Contexto Requerido:**
```yaml
archivos_obligatorios:
- orchestration/inventarios/DATABASE_INVENTORY.yml
- apps/database/ddl/schemas/{schema}/
- docs/00-vision-general/ARQUITECTURA-MULTI-TENANT.md
```
**Comandos Frecuentes:**
```bash
cd apps/database/scripts && ./drop-and-recreate-database.sh
psql -d template_saas_platform -f nuevo_archivo.sql
```
**Entregables Tipicos:**
- `apps/database/ddl/schemas/{schema}/tables/*.sql`
- `apps/database/ddl/schemas/{schema}/functions/*.sql`
- `apps/database/ddl/schemas/{schema}/rls-policies/*.sql`
- `apps/database/seeds/prod/*.sql`
---
### 2.2 Backend-Agent
**Responsabilidades:**
- Modulos NestJS (controller, service, module)
- DTOs y validaciones
- Tests unitarios
- Integraciones con servicios externos
**Contexto Requerido:**
```yaml
archivos_obligatorios:
- orchestration/inventarios/BACKEND_INVENTORY.yml
- apps/backend/src/modules/{modulo}/
- apps/backend/src/shared/
```
**Comandos Frecuentes:**
```bash
cd apps/backend && npm run test
cd apps/backend && npm run test:cov
cd apps/backend && npm run lint
cd apps/backend && npm run build
```
**Entregables Tipicos:**
- `apps/backend/src/modules/{modulo}/{modulo}.controller.ts`
- `apps/backend/src/modules/{modulo}/{modulo}.service.ts`
- `apps/backend/src/modules/{modulo}/{modulo}.module.ts`
- `apps/backend/src/modules/{modulo}/dto/*.dto.ts`
- `apps/backend/src/modules/{modulo}/entities/*.entity.ts`
- `apps/backend/src/modules/{modulo}/__tests__/*.spec.ts`
---
### 2.3 Frontend-Agent
**Responsabilidades:**
- Componentes React
- Paginas y rutas
- Hooks personalizados
- Stores Zustand
- Tests de componentes
**Contexto Requerido:**
```yaml
archivos_obligatorios:
- orchestration/inventarios/FRONTEND_INVENTORY.yml
- apps/frontend/src/pages/
- apps/frontend/src/shared/
- apps/frontend/src/hooks/
```
**Comandos Frecuentes:**
```bash
cd apps/frontend && npm run dev
cd apps/frontend && npm run test
cd apps/frontend && npm run build
cd apps/frontend && npm run lint
```
**Entregables Tipicos:**
- `apps/frontend/src/pages/{pagina}Page.tsx`
- `apps/frontend/src/components/{componente}/{Componente}.tsx`
- `apps/frontend/src/hooks/use{Hook}.ts`
- `apps/frontend/src/stores/{store}.store.ts`
- `apps/frontend/src/__tests__/*.spec.tsx`
---
### 2.4 QA-Agent
**Responsabilidades:**
- Tests end-to-end (Playwright)
- Validacion de flujos completos
- Reporte de bugs
- Verificacion de criterios de aceptacion
**Contexto Requerido:**
```yaml
archivos_obligatorios:
- apps/backend/package.json
- apps/frontend/package.json
- criterios_aceptacion del plan
```
**Comandos Frecuentes:**
```bash
cd apps/backend && npm run test:e2e
npx playwright test
npx playwright test --ui
```
**Entregables Tipicos:**
- `e2e/{flujo}.spec.ts`
- `e2e/fixtures/{fixture}.ts`
- Reportes de validacion
---
### 2.5 Docs-Agent
**Responsabilidades:**
- Documentacion tecnica
- ADRs (Architecture Decision Records)
- Guias de desarrollo
- Actualizacion de READMEs
**Contexto Requerido:**
```yaml
archivos_obligatorios:
- docs/_MAP.md
- docs/00-vision-general/
- codigo implementado a documentar
```
**Entregables Tipicos:**
- `docs/01-modulos/SAAS-{NNN}-{modulo}.md`
- `docs/architecture/adr/ADR-{NNN}-{decision}.md`
- `docs/95-guias-desarrollo/{guia}.md`
---
### 2.6 DevOps-Agent
**Responsabilidades:**
- CI/CD pipelines
- Docker configurations
- Environment setup
- Deployment scripts
**Contexto Requerido:**
```yaml
archivos_obligatorios:
- .github/workflows/
- docker-compose.yml
- Dockerfile
- orchestration/inventarios/DEVENV-*.yml
```
**Entregables Tipicos:**
- `.github/workflows/{workflow}.yml`
- `Dockerfile`
- `docker-compose.yml`
- Scripts de deployment
---
## 3. PROTOCOLO DE ASIGNACION
### 3.1 Flujo de Asignacion
```
┌─────────────────────────────────────────────────────────────┐
│ ORQUESTADOR │
├─────────────────────────────────────────────────────────────┤
│ 1. Consultar ANALISIS-MAESTRO │
│ 2. Seleccionar siguiente Sprint del backlog │
│ 3. Identificar tareas del Sprint │
│ 4. Determinar dependencias entre tareas │
│ 5. Agrupar tareas paralelas │
│ 6. Asignar perfil de agente a cada tarea │
│ 7. Preparar contexto para cada agente │
│ 8. Ejecutar asignaciones │
└─────────────────────────────────────────────────────────────┘
```
### 3.2 Determinacion de Paralelismo
**Tareas Paralelas (pueden ejecutarse simultaneamente):**
- No comparten archivos de escritura
- No hay dependencia de datos entre ellas
- Pertenecen a modulos diferentes
**Tareas Secuenciales (deben esperar):**
- Una tarea necesita el output de otra
- Modifican los mismos archivos
- Hay dependencia logica
### 3.3 Preparacion de Contexto
Para cada tarea, preparar:
```yaml
contexto_tarea:
# Identificacion
id: "TST-001"
nombre: "Tests Auth Module Adicionales"
sprint: "Sprint 1"
sp: 2
# Agente asignado
agente: "Backend-Agent"
# Archivos que DEBE leer antes de empezar
archivos_leer:
- "apps/backend/src/modules/auth/services/auth.service.ts"
- "apps/backend/src/modules/auth/__tests__/auth.service.spec.ts"
- "orchestration/inventarios/BACKEND_INVENTORY.yml"
# Dependencias (tareas que deben completarse antes)
dependencias: []
# Archivos que debe crear/modificar
entregables:
- "apps/backend/src/modules/auth/__tests__/token.service.spec.ts"
- "apps/backend/src/modules/auth/__tests__/oauth.service.spec.ts"
# Criterios para considerar la tarea completada
criterios_aceptacion:
- "Todos los tests pasan"
- "Cobertura modulo auth >= 85%"
- "No hay tests flaky"
# Comandos de validacion
comandos_validacion:
- "cd apps/backend && npm run test -- --testPathPattern=auth"
- "cd apps/backend && npm run test:cov"
```
---
## 4. TEMPLATES DE TAREAS
### 4.1 Template: Tarea de Backend
```markdown
# TAREA: {ID}
## Informacion General
- **Agente:** Backend-Agent
- **Sprint:** {N}
- **SP:** {N}
- **Dependencias:** {lista o "Ninguna"}
## Contexto
Lee los siguientes archivos antes de comenzar:
- `{archivo1}`
- `{archivo2}`
Consulta el inventario:
- `orchestration/inventarios/BACKEND_INVENTORY.yml`
## Objetivo
{Descripcion clara del objetivo}
## Entregables
Crear/modificar los siguientes archivos:
1. `{ruta/archivo1.ts}`
2. `{ruta/archivo2.ts}`
## Especificacion Detallada
### {Archivo1}
{Descripcion de lo que debe contener}
### {Archivo2}
{Descripcion de lo que debe contener}
## Criterios de Aceptacion
- [ ] {Criterio 1}
- [ ] {Criterio 2}
- [ ] {Criterio 3}
## Validacion
Ejecutar estos comandos para validar:
```bash
{comando1}
{comando2}
```
## Post-Ejecucion
Actualizar:
- [ ] `orchestration/inventarios/BACKEND_INVENTORY.yml`
- [ ] `orchestration/trazas/TRAZA-TAREAS-BACKEND.md`
```
### 4.2 Template: Tarea de Frontend
```markdown
# TAREA: {ID}
## Informacion General
- **Agente:** Frontend-Agent
- **Sprint:** {N}
- **SP:** {N}
- **Dependencias:** {lista o "Ninguna"}
## Contexto
Lee los siguientes archivos antes de comenzar:
- `{archivo1}`
- `{archivo2}`
Revisa componentes existentes en:
- `apps/frontend/src/shared/components/`
## Objetivo
{Descripcion clara del objetivo}
## Entregables
1. `apps/frontend/src/pages/{Pagina}Page.tsx`
2. `apps/frontend/src/hooks/use{Hook}.ts`
## Especificacion de UI
### Layout
{Descripcion del layout}
### Componentes
- **{Componente1}:** {descripcion}
- **{Componente2}:** {descripcion}
### Estados
- Loading
- Error
- Empty
- Success
## Criterios de Aceptacion
- [ ] {Criterio 1}
- [ ] {Criterio 2}
## Validacion
```bash
cd apps/frontend && npm run build
cd apps/frontend && npm run lint
```
```
### 4.3 Template: Tarea de Database
```markdown
# TAREA: {ID}
## Informacion General
- **Agente:** Database-Agent
- **Sprint:** {N}
- **SP:** {N}
- **Dependencias:** {lista o "Ninguna"}
## Contexto
Revisar schema existente:
- `apps/database/ddl/schemas/{schema}/`
Consultar arquitectura:
- `docs/00-vision-general/ARQUITECTURA-MULTI-TENANT.md`
## Objetivo
{Descripcion clara del objetivo}
## Entregables
1. `apps/database/ddl/schemas/{schema}/tables/{tabla}.sql`
2. `apps/database/ddl/schemas/{schema}/rls-policies/{policy}.sql`
## Especificacion DDL
### Tabla: {nombre}
```sql
CREATE TABLE {schema}.{nombre} (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES tenants.tenants(id),
-- columnas
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
```
### RLS Policy
```sql
ALTER TABLE {schema}.{nombre} ENABLE ROW LEVEL SECURITY;
CREATE POLICY "{nombre}_tenant_isolation" ON {schema}.{nombre}
USING (tenant_id = current_setting('app.current_tenant_id')::UUID);
```
## Criterios de Aceptacion
- [ ] Script ejecuta sin errores
- [ ] RLS policy activa
- [ ] Indices creados
## Validacion
```bash
cd apps/database/scripts && ./drop-and-recreate-database.sh
psql -d template_saas_platform -c "\d {schema}.{nombre}"
```
```
---
## 5. FLUJO DE EJECUCION
### 5.1 Diagrama de Flujo
```
┌──────────────────────────────────────────────────────────────────┐
│ INICIO DE SPRINT │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ │
│ │ 1. PLANIFICAR │ │
│ │ - Leer plan │ │
│ │ - Identificar │ │
│ │ tareas │ │
│ └───────┬────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 2. ASIGNAR TAREAS PARALELAS │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Tarea 1 │ │ Tarea 2 │ │ Tarea 3 │ │ Tarea 4 │ │ │
│ │ │ Agent A │ │ Agent B │ │ Agent A │ │ Agent B │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ │ │ │ │ │ │ │
│ │ └────────────┴────────────┴────────────┘ │ │
│ │ │ │ │
│ └─────────────────────────┼───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 3. VALIDAR ENTREGABLES │ │
│ │ - Ejecutar tests │ │
│ │ - Verificar criterios │ │
│ │ - Review de codigo │ │
│ └────────────────────────┬────────────────────────────────┘ │
│ │ │
│ ┌──────────────┴──────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────────┐ ┌────────────┐ │
│ │ PASA │ │ NO PASA │ │
│ └──────┬─────┘ └──────┬─────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 4. ACTUALIZAR │ │ 4b. CORREGIR │ │
│ │ INVENTARIOS │ │ (loop) │ │
│ └────────┬─────────┘ └──────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 5. SIGUIENTE │ │
│ │ SPRINT │ │
│ └──────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
```
### 5.2 Secuencia de Comandos
```bash
# 1. Antes de asignar tareas
cd /home/isem/workspace-v1/projects/template-saas
# 2. Verificar estado actual
cat orchestration/PROJECT-STATUS.md
cat orchestration/PROXIMA-ACCION.md
# 3. Leer plan del sprint
cat orchestration/planes/PLAN-SPRINT-{N}-*.md
# 4. Ejecutar tareas (por cada agente)
# ... asignar tareas segun templates ...
# 5. Validar resultados
cd apps/backend && npm run test
cd apps/frontend && npm run build
# 6. Actualizar inventarios
# ... actualizar archivos YML ...
# 7. Actualizar status
# ... actualizar PROJECT-STATUS.md ...
```
---
## 6. VALIDACION Y ACEPTACION
### 6.1 Checklist de Validacion por Capa
#### Backend
- [ ] `npm run lint` pasa sin errores
- [ ] `npm run build` compila exitosamente
- [ ] `npm run test` todos los tests pasan
- [ ] Coverage >= objetivo (usualmente 80%)
- [ ] No hay warnings de TypeScript
#### Frontend
- [ ] `npm run lint` pasa sin errores
- [ ] `npm run build` compila exitosamente
- [ ] `npm run test` todos los tests pasan
- [ ] No hay errores de consola en navegador
#### Database
- [ ] Script DDL ejecuta sin errores
- [ ] `drop-and-recreate-database.sh` exitoso
- [ ] RLS policies creadas y activas
- [ ] Seeds ejecutan correctamente
### 6.2 Criterios de Aceptacion Globales
1. **Funcionalidad**: El codigo hace lo que se espera
2. **Tests**: Coverage cumple objetivo
3. **Calidad**: Sin errores de lint ni warnings
4. **Documentacion**: Inventarios actualizados
5. **Integracion**: No rompe funcionalidad existente
---
## 7. ACTUALIZACION DE INVENTARIOS
### 7.1 Inventarios a Actualizar
Despues de cada tarea completada:
| Inventario | Cuando Actualizar |
|------------|-------------------|
| `DATABASE_INVENTORY.yml` | Nueva tabla/funcion/policy |
| `BACKEND_INVENTORY.yml` | Nuevo modulo/servicio/test |
| `FRONTEND_INVENTORY.yml` | Nueva pagina/componente/hook |
| `MASTER_INVENTORY.yml` | Cambio de estado de modulo |
| `PROJECT-STATUS.md` | Fin de sprint |
| `PROXIMA-ACCION.md` | Cada tarea completada |
### 7.2 Formato de Actualizacion
```yaml
# Ejemplo: Actualizar BACKEND_INVENTORY.yml
# Antes
modulos:
- nombre: "auth"
estado: "completado"
tests: 45
# Despues
modulos:
- nombre: "auth"
estado: "completado"
tests: 65 # +20 tests nuevos
```
### 7.3 Actualizacion de Trazas
```markdown
# orchestration/trazas/TRAZA-TAREAS-BACKEND.md
## Sprint 1
### TST-001: Tests Auth Module Adicionales
- **Fecha:** 2026-01-10
- **Agente:** Backend-Agent
- **Estado:** COMPLETADO
- **Entregables:**
- apps/backend/src/modules/auth/__tests__/token.service.spec.ts
- apps/backend/src/modules/auth/__tests__/oauth.service.spec.ts
- **Metricas:**
- Tests nuevos: 20
- Coverage auth: 70% -> 85%
```
---
## 8. EJEMPLOS PRACTICOS
### 8.1 Ejemplo: Asignacion de Sprint Completo
```markdown
# Sprint 1: Test Coverage
## Tareas Paralelas (Grupo 1)
### Agente Backend-Agent #1
Ejecutar TST-001 (Tests Auth)
- Leer: auth.service.ts, auth.service.spec.ts
- Crear: token.service.spec.ts, oauth.service.spec.ts, mfa.service.spec.ts
- Validar: npm run test -- --testPathPattern=auth
### Agente Backend-Agent #2
Ejecutar TST-002 (Tests Billing)
- Leer: billing.service.ts, subscription.service.ts
- Crear: stripe-webhooks.spec.ts, invoice.service.spec.ts
- Validar: npm run test -- --testPathPattern=billing
## Tareas Paralelas (Grupo 2)
### Agente Backend-Agent #1
Ejecutar TST-003 (Tests Notifications)
- Leer: notification-queue.service.ts, notifications.gateway.ts
- Crear: notification-queue.service.spec.ts, notifications.gateway.spec.ts
- Validar: npm run test -- --testPathPattern=notifications
### Agente Backend-Agent #2
Ejecutar TST-004 (Tests Storage)
- Leer: storage.service.ts, s3.service.ts
- Crear: s3.service.spec.ts, storage.controller.spec.ts
- Validar: npm run test -- --testPathPattern=storage
## Validacion Final
### QA-Agent
- Ejecutar: npm run test (todos los tests)
- Verificar: Coverage >= 80%
- Actualizar: PROJECT-STATUS.md
```
### 8.2 Ejemplo: Mensaje de Asignacion a Agente
```
TAREA: TST-001 - Tests Auth Module Adicionales
Agente: Backend-Agent
Sprint: 1
SP: 2
CONTEXTO:
Lee estos archivos antes de comenzar:
1. apps/backend/src/modules/auth/services/auth.service.ts
2. apps/backend/src/modules/auth/services/token.service.ts
3. apps/backend/src/modules/auth/services/oauth.service.ts
4. apps/backend/src/modules/auth/__tests__/auth.service.spec.ts (referencia)
OBJETIVO:
Crear tests unitarios adicionales para el modulo de autenticacion,
cubriendo token.service, oauth.service y mfa.service.
ENTREGABLES:
1. apps/backend/src/modules/auth/__tests__/token.service.spec.ts
2. apps/backend/src/modules/auth/__tests__/oauth.service.spec.ts
3. apps/backend/src/modules/auth/__tests__/mfa.service.spec.ts
CASOS DE TEST REQUERIDOS:
[Ver lista detallada en PLAN-SPRINT-1-TESTS.md seccion TST-001]
CRITERIOS DE ACEPTACION:
- Todos los tests pasan
- Cobertura modulo auth >= 85%
- No hay tests flaky
- Mocks correctamente implementados
VALIDACION:
cd apps/backend && npm run test -- --testPathPattern=auth
cd apps/backend && npm run test:cov
POST-EJECUCION:
Reportar:
- Numero de tests creados
- Coverage alcanzado
- Cualquier issue encontrado
```
---
## CONTROL DE VERSIONES
| Version | Fecha | Cambios |
|---------|-------|---------|
| 1.0.0 | 2026-01-10 | Version inicial |
---
**Creado:** 2026-01-10
**Sistema:** NEXUS v4.0 | SIMCO