🚀 Enjambre Semi-Autónomo DELTA

Fecha Inicio: 2026-08-25 11:45:35 -0300

Fecha Final: 2026-09-08 14:35:00 -0300

Duración: 14 días calendario (10 días hábiles efectivos)

Estado: PRODUCTO BASE 100% COMPLETO Y DESPLEGADO (:8090)

Costo Total: USD 0

Sistema de Gestión Integral para Peluquería · AFIP · Stock · Turnero
14Días Calendario
7+1Agentes + Founder
30+Issues Cerrados
26+PRs Mergeados
155Tests Frontend
162Tests Backend
0Vulns Críticas
$0Costo Salarial

📊 Resumen Ejecutivo

Un Founder humano dirigió un enjambre semi-autónomo de 7 agentes de IA, creados como usuarios Linux bare-metal con un playbook de Ansible (setup_users.yml), equipo DELTA, coordinados por correo electrónico (Postfix) para construir un sistema enterprise-grade de gestión integral para peluquería con integración AFIP (WSFE), facturación electrónica, turnero público, remitos mixtos y auditoría de seguridad.

Definición Semi-Autónomo: El enjambre requiere la presencia activa del Founder humano para definir visión estratégica, aprobar PRDs, autorizar merges a main, y resolver bloqueos. Sin el Founder, el enjambre NO avanza. Con el Founder, multiplica su productividad 6-8x.

👥 Composición del Enjambre

RolAgenteResponsabilidad
Founder (Humano)root@mtk.orgVisión, aprobación de PRDs, autorización de merges, resolución de conflictos
Product Managerpm_agent_delta@mtk.orgOrquestador central: PRDs, issues, coordinación devs, QA, security
Backend Developerdev_backend_delta@mtk.orgImplementación server-side (Express + PostgreSQL)
Frontend Developerdev_frontend_delta@mtk.orgImplementación client-side (React + Vite)
QA Engineerqa_agent_delta@mtk.orgRevisión de PRs, validación de ACs, E2E
Security Auditorsecurity_agent_delta@mtk.orgAuditorías de seguridad pre-merge, npm audit, secretos
CI/CD Agentci_cd_agent_delta@mtk.orgBuilds, tests automatizados, deploy Docker, Nginx
Documentation Agentdoc_agent_delta@mtk.orgADRs, API_SPEC, ISO checklists, README

🔧 Stack Tecnológico

ComponenteTecnologíaPropósito
Orquestación de agentesOpenCode (modelos free)Ejecución de agentes
ComunicaciónPostfix + .forwardCorreos entre agentes (event-driven)
RepositorioGitea (127.0.0.1:3000)Código, issues, PRs (repo ID: 12)
Backend del productoNode.js 22 + Express + PostgreSQLAPI REST, migraciones 001-006
Frontend del productoReact + Vite + Tailwind CSSSPA, panel admin, portal público
Reverse ProxyNginxÚnico punto de entrada (:8090)
ContenedorizaciónDocker + Docker ComposeDespliegue reproducible
Contratos de agentessystem-prompt.xml (RFC 2119)Reglas estrictas por agente
ProvisionamientoAnsible (setup_users.yml)Creación de equipos replicables

✨ Módulos Implementados

1/8 Gestión de Clientes y Mascotas (Issues #1-#5, #67)

CRUD completo, historial, contactos, mascotas vinculadas

✅ Backend + Frontend completos · API /api/v1/contacts y /api/v1/pets

2/8 Turnero y Agenda (Issues #41, #74, #84-#88)

Reserva de turnos, calendario, disponibilidad, estados, WebSocket

✅ Portal público /public/booking · Panel admin con vista ASC · Fix zona horaria GMT-3

3/8 Peluquería: Servicios y Productos (Issues #9, #45, #67)

Catálogo de servicios, productos con stock, tabla de pricing

✅ UI catálogo · Gestión de inventario · Precios configurables

4/8 Remitos Mixtos (Issues #14, #70, #76, #79, #91)

Servicios + productos en mismo comprobante, validación stock diferenciada

✅ precio_unitario opcional para servicios · Fix P0 JOIN services→servicios · Render HTML imprimible

5/8 Facturación AFIP - Etapa D (Issues #103, #104, #113, #119)

Mock WSFE, CAE, comprobantes electrónicos, datos fiscales

✅ AFIP_MODE=mock configurable · Namespace SOAP corregido · Visor de comprobantes

6/8 Ciclo de Pagos (Issues #109, #130)

Pagos parciales/totales, comprobantes de depósito, saldo pendiente

✅ Estados: pendiente → parcial → pagado · Cancelación/nota de crédito

7/8 Analytics / KPIs (Issues #97, #99, #100)

Dashboard de métricas, ingresos, retención, clientes activos

✅ Endpoints /analytics/summary, /ingresos, /retention · Fix contrato 14 campos

8/8 Portal Público y Configuración (Issues #17, #39, #122-#124)

Autogestión de turnos, upload comprobantes, logo, CUIT, punto venta

✅ SPA en /public/* · Panel config con upload de logo · Fail-fast si falta JWT_SECRET

📈 Métricas REALES del Proyecto

MétricaValor Real
Duración calendario14 días (25 Ago - 08 Sep 2026)
Días hábiles efectivos10 días (sáb/dom inactivos)
Horas efectivas/día6 horas (limitado por rate limiting de OpenCode)
Costo totalUSD 0 (modelos free, bare-metal)
Módulos entregados8/8 (100%)
Issues cerrados30+ (extraídos de Gitea API)
PRs mergeados26+ (con revisión de QA)
Tests automatizados317 (155 frontend + 162 backend)
Vulnerabilidades finales0 críticas/altas, 2 medios documentados
Auditorías de seguridad3 (Issues #16, #113, #146 - todas APROBADAS)
ADRs generados2+ (ADR_001, ADR_002)
Endpoints documentados40+ (API_SPEC.md)
ISO 2501018 completados de 32 items (56%)
SHA final de mainDespliegue estable en puerto :8090

⚖️ Comparativa: Enjambre vs Equipo Humano

👥 Equipo Humano Típico (5-6 devs LATAM)

  • 30-45 días de duración
  • USD 15k-50k costo salarial
  • 60-70% cobertura tests
  • Documentación 30-50% (desactualizada)
  • Auditoría manual al final
  • Trazabilidad parcial (Jira + Git)
  • 2-4 features por sprint (2 semanas)

🤖 Enjambre DELTA (REAL)

  • 14 días calendario (10 hábiles)
  • USD 0 costo salarial
  • 317 tests (100% core)
  • Documentación 100% auto-generada
  • Auditoría continua e integrada
  • 100% trazabilidad forense
  • 8 módulos completos en 14 días

Tabla Comparativa Detallada

DimensiónEnjambre DELTAEquipo Humano
Horas productivas/día6h (rate limited)6-7h efectivas
Disponibilidad semanal5 días (lun-vie)5 días
ParalelizaciónBackend + Frontend simultáneoLimitado por dependencias
Context switchingInstantáneo (leer system-prompt)15-30 min por interrupción
Tests por feature15-20 automáticos5-10 (si hay tiempo)
Auditoría de seguridadSiempre pre-mergePeriódica (quarterly)
Documentación100% (ADRs, specs, ISO)30-50%
Deuda técnicaTrackeada en issuesA menudo invisible

💰 Costos REALES

ConceptoEnjambre DELTAEquipo Humano (LATAM)
SalariosUSD 0USD 3,000-8,000/dev/mes
Costo por móduloUSD 0 (solo tiempo del Founder)USD 2,000-6,000
Overhead de gestión1 persona (Founder part-time)PM + Scrum Master + Tech Lead
Onboarding0 (system-prompt.xml)1-3 meses por dev
Rotación0USD 5,000-15,000 por reemplazo
Costo total 14 díasUSD 0USD 15,000-50,000

🔥 Incidentes y Lecciones Aprendidas

🔴 Incidente P0: JOIN a Tabla Inexistente (Issue #70 - 02 Sep)

Qué pasó: Todos los remitos fallaban con HTTP 500. El código en remito.service.js:69 ejecutaba LEFT JOIN services, pero la migración 003 de PostgreSQL había creado la tabla en español: servicios.

Resolución: PR #71 (commit 44560cb). El dev_backend_delta corrigió el JOIN y agregó tests de integración con DB real. Tiempo de resolución: < 2 horas desde el reporte del Founder.

Lección: Los 57 tests unitarios pasaban porque no cubrían el endpoint real de remitos con service_id. Se agregó test de integración contra DB real.

🟡 Desalineación de Contrato Frontend/Backend (Issue #100 - 03 Sep)

Qué pasó: El dashboard de Analytics mostraba ceros en todas las métricas. El backend devolvía completados, pero el frontend (PR #99) esperaba turnos_completados. Lo mismo con ingresos_total vs total_ingresos.

Resolución: PR #100. El backend ajustó 14 campos para alinearse estrictamente al contrato del frontend.

Lección: QA + Security actúan como red de seguridad para contratos malinterpretados. La validación de contratos debe ser explícita en el system-prompt.

🔵 Error de Protocolo de Base de Datos (Issue #101 - 04 Sep)

Qué pasó: Endpoint /ingresos devolvía error Postgres 08P01. La query porServicio recibía parámetros de fecha, pero la cadena SQL no tenía los placeholders $N para bindearlos.

Resolución: Se corrigió el bind de parámetros y se agregó el LEFT JOIN con la tabla remitos.

🟡 Incidente de Seguridad: CORS y JWT (Issues #16, #113, #146)

Hallazgos:

  • app.use(cors()) sin restricción de orígenes (server/src/app.js:20)
  • JWT_SECRET hardcodeado por defecto: process.env.JWT_SECRET || 'dev_secret_change_me' (server/src/config.js:19)
  • Falta de package-lock.json en cliente (causando ENOLOCK en npm audit)

Resolución: PR #18 y PR #134. Se implementó fail-fast en producción (la app aborta si no hay JWT_SECRET) y se documentaron los hallazgos medios en un Issue de Gitea.

🔵 Validación de Entrada Pública (Issue #133 - 07 Sep)

Qué pasó: El endpoint público /availability devolvía 500 ante fechas malformadas.

Resolución: Validación estricta de formato YYYY-MM-DD, devolviendo 400 en lugar de 500. Protege la base de datos de errores de parseo y evita exposición de stack traces.

📅 Línea de Tiempo del Proyecto

25 Ago 2026 · Día 1
Setup y Primera Auditoría
  • Creación de usuarios Gitea (11:45:35 -0300)
  • Envío de system-prompt.xml a todos los agentes
  • PR #6 y #14 rechazados por QA (tests insuficientes, ~30% coverage). Corregido a 30 tests (~85%).
  • Doc Agent genera README, API_SPEC, ADR_001, ISO_25010 (PR #15)
  • Issue #16: Auditoría inicial reporta CORS abierto y DB password hardcoded
26-27 Ago · Días 2-3
Módulos Core + Infraestructura
  • PR #9 mergeado: Backend Peluquería (6/6 tests)
  • PR #18: Fix security backend (4 hallazgos corregidos)
  • PR #30: Exponer solo nginx al host + whitelist CORS (Issue #29)
  • PR #39: Fix Jest config (setupFilesAfterEnv) → 63/63 tests
28-31 Ago · Días 4-7
Turnero y Portal Público
  • PR #41: Turnero con detalle, calendario y estados
  • PR #45: UI Catálogo de Servicios
  • Despliegue exitoso en puerto :8090
  • Login funcional punta a punta vía Nginx
01-03 Sep · Días 8-10
Integración y Bugs Críticos
  • Issue #70 (P0): JOIN a tabla inexistente services → servicios. Fix urgente en PR #71.
  • PR #77, #78, #79: Turnero lista, RemitoForm precio, Remitos mixtos
  • Issue #100: Contrato frontend/backend desalineado (14 campos en analytics)
  • Issue #101: /ingresos devuelve 500 (Postgres 08P01)
  • PR #119: Namespace SOAP corregido
04-07 Sep · Días 11-14
Etapa D: AFIP + Pagos + Hardening
  • PR #104: Facturación AFIP (WSFE mock), visor de comprobantes
  • PR #108: Ciclo de pagos (parciales/totales)
  • PR #134: Audit #113 hardening (test order-dependent corregido)
  • Issue #133/135: Validación de fechas en /availability (400 vs 500)
  • Tests finales: 155/155 frontend, 162/162 backend
08 Sep 2026 · Cierre
Auditoría Final y Despliegue
  • Issue #146: Auditoría final de seguridad. Resultado: 0 críticos/altos, 2 medios documentados
  • Despliegue estable en puerto :8090
  • Cierre oficial del proyecto

📦 Entregables del Proyecto

Código

Documentación

Procesos

🧮 Fórmula Real del Modelo Semi-Autónomo

1 Founder estratégico (humano, part-time)
× 6 horas productivas/día (rate limited)
× 7 agentes multiplicadores
÷ USD 0 de costo salarial
= Output de 5-6 devs senior por USD 0

El enjambre NO reemplaza al humano. Lo potencia.

El Founder es el cuello de botella y el factor crítico de calidad. Sin su visión, aprobación y corrección, el enjambre no produce nada útil. Con su dirección, produce a velocidad y consistencia imposibles para un equipo humano del mismo costo.

⚠️ Limitaciones REALES del Enjambre

LimitaciónImpacto RealMitigación
Rate limiting de OpenCode6h productivas/día, luego ban temporalPausar y reanudar al día siguiente
Dependencia del FounderSin humano activo, el enjambre NO avanzaFounder debe estar presente para aprobar
Sábados y domingos inactivos0 productividad fines de semanaDiseño consciente (no es bug, es feature)
Contexto limitado por ventana6h/día = ~36h totales en 14 díasPriorización estricta de tareas

🚫 Lo que el Enjambre NO Puede Hacer

CapacidadRequierePor qué
Visión estratégicaHumano (Founder)Los agentes ejecutan, no inventan dirección
Juicio de negocioFounderDecidir qué feature importa más
Creatividad disruptivaHumanosLos agentes replican patrones conocidos
NegociaciónHumanosSoft skills, empatía
Aprobación finalFounderGatekeeper obligatorio por diseño
Resolución de conflictosFounderCuando algo se rompe inesperadamente
Definición de UXHumanosEmpatía con usuarios reales

✅ Conclusión

El Enjambre Semi-Autónomo DELTA demostró que 1 humano + 7 agentes de IA puede construir un producto enterprise-grade completo en 14 días, con calidad superior a la de un equipo humano típico, a costo cero.

La clave no es la autonomía total (que no existe), sino la semi-autonomía dirigida: el humano aporta visión, juicio y aprobación; los agentes aportan velocidad, consistencia y ejecución incansable dentro de los límites del rate limiting.

El producto resultante está listo para ser reutilizado como base de futuros proyectos. El playbook de Ansible (setup_users.yml) lo hace portable y permite crear distintos equipos por proyecto.