workspace/core/orchestration/referencias/DEVENV-PORT-STANDARDS.md
2025-12-08 21:15:39 -06:00

7.4 KiB

DEVENV-PORT-STANDARDS

Version: 1.0.0 Fecha: 2025-12-08 Mantenedor: DevEnv Agent


DIRECTIVA OBLIGATORIA

TODOS los agentes DEBEN consultar al agente DevEnv antes de asignar puertos.

El inventario centralizado esta en: @DEVENV_PORTS (core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml)


ESTANDAR BASE

El proyecto gamilit define el estandar base de asignacion de puertos:

Servicio Puerto Patron
Frontend 3005 base + 5
Backend 3006 base + 6

Este patron se replica en todos los proyectos del workspace.


RANGOS POR PROYECTO

Cada proyecto tiene un bloque de 100 puertos reservado:

Proyecto Rango Base Frontend Backend
gamilit 3000-3099 3000 3005 3006
erp-suite 3100-3199 3100 3105 3106
trading-platform 3200-3299* 3200 3100** 4000**
betting-analytics 3300-3399 3300 3305 3306
inmobiliaria-analytics 3400-3499 3400 3405 3406
platform_marketing_content 3500-3599 3500 3505 3506

*Trading-platform tiene rangos extendidos para servicios Python (5000-5099) **Trading-platform ya tenia puertos asignados antes de este estandar


OFFSETS ESTANDAR

Dentro de cada rango de proyecto, se aplican estos offsets:

OFFSETS:
  frontend_web:     +5    # Aplicacion web principal
  backend_api:      +6    # API principal
  frontend_admin:   +7    # Panel de administracion
  backend_ws:       +8    # WebSocket server
  backend_workers:  +9    # Workers/Jobs
  auxiliary:        +10-19 # Servicios auxiliares

Ejemplo para un nuevo proyecto "mi-proyecto" (base 3700):

mi-proyecto:
  frontend_web:     3705
  backend_api:      3706
  frontend_admin:   3707
  backend_ws:       3708
  backend_workers:  3709

BASES DE DATOS

Los puertos de bases de datos se asignan secuencialmente:

Servicio Rango Default
PostgreSQL 5432-5449 5432
Redis 6379-6389 6379
MySQL 3306 3306 (legacy)
MongoDB 27017-27027 27017

Asignacion actual de PostgreSQL:

Puerto Proyecto
5432 Default / gamilit / erp-core
5433 erp-suite/construccion / trading-platform test
5434 erp-suite/vidrio-templado
5436 erp-suite/retail
5437 erp-suite/clinicas
5438 betting-analytics (reservado)
5439 inmobiliaria-analytics (reservado)
5440 platform_marketing_content

PUERTOS RESERVADOS (NO USAR)

Estos puertos estan reservados y no deben usarse:

Puerto Razon
22 SSH
80 HTTP estandar
443 HTTPS estandar
3000 Muy comun en desarrollo, conflictos frecuentes
8080 Muy comun en desarrollo, conflictos frecuentes

PROCESO DE ASIGNACION

1. Nuevo Proyecto

Cuando: Se crea un proyecto nuevo
Quien: Tech-Leader delega a DevEnv
Proceso:
  1. Identificar siguiente rango disponible (bloques de 100)
  2. Asignar puertos segun offsets estandar
  3. Registrar en DEVENV-PORTS-INVENTORY.yml
  4. Crear archivo .env.ports en el proyecto
  5. Comunicar puertos asignados al Tech-Leader

2. Nuevo Servicio en Proyecto Existente

Cuando: Se agrega servicio a proyecto existente
Quien: Agente de capa consulta a DevEnv
Proceso:
  1. Verificar puertos disponibles en rango del proyecto
  2. Asignar siguiente puerto segun tipo de servicio
  3. Actualizar DEVENV-PORTS-INVENTORY.yml
  4. Actualizar .env.ports del proyecto
  5. Comunicar configuracion al agente solicitante

3. Verificacion de Conflictos

# Verificar puerto especifico
lsof -i :3005

# Verificar rango de puertos
for port in {3000..3100}; do
  (echo >/dev/tcp/localhost/$port) 2>/dev/null && echo "Puerto $port en uso"
done

# Puertos en docker
docker ps --format "{{.Ports}}"

# Todos los puertos escuchando
netstat -tlnp | grep LISTEN

TEMPLATE: .env.ports

Cada proyecto debe tener un archivo .env.ports en su raiz:

# =============================================================================
# {NOMBRE_PROYECTO} - PORT ASSIGNMENTS
# =============================================================================
# Archivo centralizado de asignacion de puertos
# Gestionado por: DevEnv Agent
# Fecha: {FECHA_CREACION}
# Rango asignado: {RANGO}
# =============================================================================

# FRONTEND
FRONTEND_PORT={BASE+5}
FRONTEND_ADMIN_PORT={BASE+7}

# BACKEND
BACKEND_API_PORT={BASE+6}
BACKEND_WS_PORT={BASE+8}
BACKEND_WORKERS_PORT={BASE+9}

# DATABASES (si son especificos del proyecto)
POSTGRES_PORT={ASIGNADO}
REDIS_PORT={ASIGNADO}

# =============================================================================
# NOTAS
# =============================================================================
# - Estos puertos estan registrados en @DEVENV_PORTS
# - Cualquier cambio debe ser coordinado con DevEnv Agent
# - No modificar sin actualizar el inventario central
# =============================================================================

ERP-SUITE: Sub-Rangos para Verticales

El proyecto erp-suite tiene sub-rangos para cada vertical:

erp-suite:
  base: 3100

  verticales:
    erp-core:
      range: "3100-3119"
      backend: 3100

    construccion:
      range: "3120-3139"
      backend: 3120
      postgresql: 5433

    vidrio-templado:
      range: "3140-3159"
      backend: 3140
      frontend: 5175
      postgresql: 5434

    mecanicas-diesel:
      range: "3160-3179"
      backend: 3160

    retail:
      range: "3180-3199"
      backend: 3180
      frontend: 5177
      postgresql: 5436

    clinicas:
      range: "3200-3219"  # Extension del rango
      backend: 3200
      frontend: 5178
      dicom: 4242
      postgresql: 5437

TRADING-PLATFORM: Rangos Extendidos

Trading-platform tiene una estructura especial con servicios Python:

trading-platform:
  frontend_services: "3100-3199"
    frontend_web: 3100
    frontend_admin: 3101
    frontend_preview: 4173

  backend_node: "4000-4099"
    backend_api: 4000
    backend_ws: 4001
    backend_webhooks: 4002

  python_services: "5000-5099"
    ml_engine: 5000
    data_service: 5001
    llm_agent: 5002
    portfolio_manager: 5003

ALIAS RELEVANTES

@DEVENV_PORTS: "core/orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml"
@DEVENV_STANDARDS: "core/orchestration/referencias/DEVENV-PORT-STANDARDS.md"
@DEVENV_PROFILE: "core/orchestration/agents/perfiles/PERFIL-DEVENV.md"

RESUMEN VISUAL

PUERTOS ASIGNADOS POR PROYECTO
==============================

3000 ----[GAMILIT]---- 3099
     |-- FE: 3005
     |-- BE: 3006

3100 ----[ERP-SUITE]---- 3219
     |-- core: 3100-3119
     |-- construccion: 3120-3139
     |-- vidrio-templado: 3140-3159
     |-- mecanicas: 3160-3179
     |-- retail: 3180-3199
     |-- clinicas: 3200-3219

3200 ----[TRADING-PLATFORM]---- (extendido)
     |-- FE: 3100-3199
     |-- BE Node: 4000-4099
     |-- Python: 5000-5099

3300 ----[BETTING-ANALYTICS]---- 3399
     |-- FE: 3305 (reservado)
     |-- BE: 3306 (reservado)

3400 ----[INMOBILIARIA-ANALYTICS]---- 3499
     |-- FE: 3405 (reservado)
     |-- BE: 3406 (reservado)

3500 ----[PLATFORM-MARKETING]---- 3599
     |-- FE: 3505
     |-- BE: 3506

BASES DE DATOS
==============
5432-5449: PostgreSQL (por proyecto)
6379-6389: Redis (por proyecto)

Version: 1.0.0 | Sistema: SIMCO + DevEnv | Tipo: Referencia