trading-platform/docs/95-guias-desarrollo/PUERTOS-SERVICIOS.md
rckrdmrd c1b5081208 feat(ml): Complete FASE 11 - BTCUSD update and comprehensive documentation alignment
ML Engine Updates:
- Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records
- Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence)
- Backtest results: +176.71R profit with aggressive_filter strategy

Documentation Consolidation:
- Created docs/99-analisis/_MAP.md index with 13 new analysis documents
- Consolidated inventories: removed duplicates from orchestration/inventarios/
- Updated ML_INVENTORY.yml with BTCUSD metrics and training results
- Added execution reports: FASE11-BTCUSD, correction issues, alignment validation

Architecture & Integration:
- Updated all module documentation with NEXUS v3.4 frontmatter
- Fixed _MAP.md indexes across all folders
- Updated orchestration plans and traces

Files: 229 changed, 5064 insertions(+), 1872 deletions(-)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 09:31:29 -06:00

410 lines
11 KiB
Markdown

---
id: "PUERTOS-SERVICIOS"
title: "PUERTOS DE SERVICIOS - TRADING PLATFORM"
type: "Documentation"
project: "trading-platform"
version: "1.0.0"
updated_date: "2026-01-07"
---
# PUERTOS DE SERVICIOS - TRADING PLATFORM
**Documento:** Asignación de Puertos para Desarrollo y Producción
**Proyecto:** Trading Platform
**Fecha:** 2025-12-05
**Estado:** Activo
---
## ÍNDICE
1. [Resumen Ejecutivo](#resumen-ejecutivo)
2. [Tabla de Puertos](#tabla-de-puertos)
3. [Servicios Detallados](#servicios-detallados)
4. [Configuración por Entorno](#configuración-por-entorno)
5. [Verificación de Puertos](#verificación-de-puertos)
6. [Troubleshooting](#troubleshooting)
---
## RESUMEN EJECUTIVO
Este documento centraliza la asignación de puertos para todos los servicios del proyecto Trading Platform. Los puertos están organizados por bloques funcionales para facilitar la gestión de firewall y evitar conflictos.
### Principios de Asignación
- **Rango 3100-3199**: Servicios de Frontend (React/Vite)
- **Rango 4000-4099**: Servicios Backend (Node.js/Express)
- **Rango 5000-5099**: Servicios Python (FastAPI/AsyncIO)
- **Rango 5432-5433**: PostgreSQL (principal y testing)
- **Puerto 6379**: Redis (estándar)
- **Rango 8000-8099**: CI/CD y herramientas externas
- **Rango 9000-9099**: Monitoreo (Prometheus, Grafana)
### Archivo de Configuración Central
Todos los puertos están definidos en:
```
/home/isem/workspace/projects/trading-platform/.env.ports
```
---
## TABLA DE PUERTOS
### Servicios de Aplicación
| Servicio | Puerto | Protocolo | Estado | Descripción |
|----------|--------|-----------|--------|-------------|
| **Frontend Web** | 3100 | HTTP | Activo | Aplicación React principal (Vite dev server) |
| **Frontend Admin** | 3101 | HTTP | Reservado | Panel de administración (futuro) |
| **Frontend Preview** | 4173 | HTTP | Dev | Preview de build de Vite |
| **Backend API** | 4000 | HTTP | Activo | API REST principal (Express) |
| **Backend WebSocket** | 4001 | WS | Activo | WebSocket para real-time updates |
| **Backend Webhooks** | 4002 | HTTP | Reservado | Endpoint para webhooks externos |
| **ML Engine** | 5000 | HTTP | Activo | API de predicciones (FastAPI) |
| **Data Service** | 5001 | TCP | Activo | Sincronización de datos de mercado |
| **LLM Agent** | 5002 | HTTP | Planeado | Asistente inteligente (FastAPI) |
| **Portfolio Manager** | 5003 | HTTP | Planeado | Gestión de portafolios (FastAPI) |
### Infraestructura
| Servicio | Puerto | Protocolo | Estado | Descripción |
|----------|--------|-----------|--------|-------------|
| **PostgreSQL** | 5432 | TCP | Activo | Base de datos principal |
| **PostgreSQL Test** | 5433 | TCP | Dev | Instancia para testing |
| **Redis** | 6379 | TCP | Activo | Cache y message queues |
| **MySQL (Legacy)** | 3306 | TCP | Temporal | Solo para migración |
### CI/CD y Monitoreo
| Servicio | Puerto | Protocolo | Estado | Descripción |
|----------|--------|-----------|--------|-------------|
| **Jenkins** | 8080 | HTTP | Planeado | CI/CD pipeline |
| **Jenkins Agent** | 50000 | TCP | Planeado | Comunicación con agentes |
| **Prometheus** | 9090 | HTTP | Opcional | Métricas del sistema |
| **Grafana** | 3200 | HTTP | Opcional | Dashboards de monitoreo |
### Herramientas de Desarrollo
| Servicio | Puerto | Protocolo | Estado | Descripción |
|----------|--------|-----------|--------|-------------|
| **PgAdmin** | 5050 | HTTP | Opcional | Administración de PostgreSQL |
| **Mailhog SMTP** | 1025 | SMTP | Opcional | Testing de emails (SMTP) |
| **Mailhog Web** | 8025 | HTTP | Opcional | Testing de emails (Web UI) |
---
## SERVICIOS DETALLADOS
### Frontend Services
#### 1. Frontend Web (React + Vite)
- **Puerto**: `3100`
- **Comando Dev**: `npm run dev -- --port 3100`
- **URL**: `http://localhost:3100`
- **Variables de Entorno**:
```bash
VITE_API_URL=http://localhost:4000/api/v1
VITE_WS_URL=ws://localhost:4001
```
#### 2. Frontend Admin Panel (Futuro)
- **Puerto**: `3101`
- **Estado**: Reservado para separación de panel admin
- **URL**: `http://localhost:3101`
### Backend Services
#### 1. Backend API (Express)
- **Puerto**: `4000`
- **Archivo**: `/apps/backend/src/index.ts`
- **Comando**: `npm run dev`
- **Endpoints**:
- API REST: `http://localhost:4000/api/v1`
- Health: `http://localhost:4000/health`
- Docs: `http://localhost:4000/api/v1/docs`
- **Variables de Entorno**:
```bash
PORT=4000
DB_PORT=5432
REDIS_PORT=6379
ML_ENGINE_URL=http://localhost:5000
```
#### 2. WebSocket Server
- **Puerto**: `4001`
- **Protocolo**: WebSocket (WS/WSS)
- **Uso**: Real-time charts, notifications, live prices
- **Conexión**: `ws://localhost:4001`
### Python Services
#### 1. ML Engine (FastAPI)
- **Puerto**: `5000`
- **Archivo**: `/apps/ml-engine/src/api/main.py`
- **Comando**: `uvicorn src.api.main:app --host 0.0.0.0 --port 5000 --reload`
- **Endpoints**:
- API Docs: `http://localhost:5000/docs`
- Health: `http://localhost:5000/health`
- Predictions: `http://localhost:5000/predict/range`
- **Modelos Servidos**:
- Range Predictor (ΔHigh/ΔLow)
- TP/SL Classifier
- Signal Generator
#### 2. Data Service (Python AsyncIO)
- **Puerto**: `5001`
- **Archivo**: `/apps/data-service/src/main.py`
- **Comando**: `python -m src.main`
- **Funciones**:
- Sync de datos de Polygon.io cada 5min
- Tracking de spreads desde MT4/MetaAPI
- Entrenamiento de modelos de ajuste de precios
- **Variables de Entorno**:
```bash
POLYGON_API_KEY=your_key
METAAPI_TOKEN=your_token
SYNC_INTERVAL_MINUTES=5
```
#### 3. LLM Agent API (Futuro)
- **Puerto**: `5002`
- **Estado**: Planeado (Módulo OQI-007)
- **Función**: Asistente inteligente con Claude/GPT
#### 4. Portfolio Manager (Futuro)
- **Puerto**: `5003`
- **Estado**: Planeado (Módulo OQI-008)
- **Función**: Gestión de portafolios de inversión
### Infrastructure Services
#### 1. PostgreSQL
- **Puerto**: `5432`
- **Estado**: ACTIVO (No cambiar)
- **Conexión**: `postgresql://trading_user:password@localhost:5432/trading_data`
- **Schemas**:
- `users` - Usuarios y autenticación
- `market_data` - Datos de mercado
- `trading` - Señales y operaciones
- `education` - Contenido educativo
- `investment` - Cuentas de inversión
- `payments` - Suscripciones y pagos
- `broker_integration` - Integración con brokers
#### 2. Redis
- **Puerto**: `6379`
- **Estado**: ACTIVO (No cambiar)
- **Conexión**: `redis://localhost:6379`
- **Uso**:
- Session storage
- Cache de queries
- Message queues para jobs
- Rate limiting
---
## CONFIGURACIÓN POR ENTORNO
### Desarrollo Local
Crear archivo `.env` en la raíz del proyecto:
```bash
# Copiar plantilla de puertos
cp .env.ports .env.local
# Variables de entorno específicas
NODE_ENV=development
POSTGRES_PASSWORD=trading_dev_2025
JWT_ACCESS_SECRET=your-secret-min-32-chars
JWT_REFRESH_SECRET=your-secret-min-32-chars
STRIPE_SECRET_KEY=sk_test_...
POLYGON_API_KEY=your_polygon_key
```
### Docker Compose
El archivo `docker-compose.yml` usa los mismos puertos:
```bash
# Iniciar todos los servicios
docker-compose up -d
# Iniciar con herramientas de desarrollo
docker-compose --profile dev-tools up -d
# Ver logs
docker-compose logs -f backend
# Detener
docker-compose down
```
### Producción (Jenkins)
Jenkins usará los mismos puertos. Configurar en `.env.production`:
```bash
NODE_ENV=production
FRONTEND_WEB_PORT=3100
BACKEND_API_PORT=4000
ML_ENGINE_PORT=5000
POSTGRES_PORT=5432
REDIS_PORT=6379
```
---
## VERIFICACIÓN DE PUERTOS
### Comandos Útiles
#### Listar puertos en uso
```bash
# Todos los puertos TCP/UDP en escucha
ss -tuln | grep LISTEN
# Específico de un puerto
ss -tuln | grep :4000
# Usando netstat (si está instalado)
netstat -tuln | grep LISTEN
```
#### Verificar servicio en puerto
```bash
# Verificar con curl
curl http://localhost:4000/health
# Verificar con telnet
telnet localhost 4000
# Verificar proceso usando puerto
lsof -i :4000
```
#### Matar proceso en puerto
```bash
# Encontrar PID
lsof -t -i :4000
# Matar proceso
kill -9 $(lsof -t -i :4000)
```
### Script de Verificación
Crear `/scripts/check-ports.sh`:
```bash
#!/bin/bash
echo "=== Trading Platform Port Status ==="
echo ""
declare -A services=(
["Frontend Web"]="3100"
["Backend API"]="4000"
["Backend WS"]="4001"
["ML Engine"]="5000"
["Data Service"]="5001"
["PostgreSQL"]="5432"
["Redis"]="6379"
)
for service in "${!services[@]}"; do
port=${services[$service]}
if ss -tuln | grep -q ":$port "; then
echo "✓ $service (port $port) - RUNNING"
else
echo "✗ $service (port $port) - NOT RUNNING"
fi
done
```
Ejecutar:
```bash
chmod +x scripts/check-ports.sh
./scripts/check-ports.sh
```
---
## TROUBLESHOOTING
### Problema: Puerto ya en uso
**Síntoma**: Error `EADDRINUSE` o `Address already in use`
**Solución**:
```bash
# 1. Identificar proceso
lsof -i :3100
# 2. Matar proceso
kill -9 <PID>
# 3. Usar puerto alternativo temporalmente
PORT=3200 npm run dev
```
### Problema: No se puede conectar al servicio
**Verificar**:
1. Servicio está corriendo: `ss -tuln | grep :4000`
2. Firewall permite conexión: `sudo ufw status`
3. Variables de entorno correctas: `echo $BACKEND_API_PORT`
4. Logs del servicio: `docker-compose logs backend`
### Problema: CORS en desarrollo
**Causa**: Frontend en puerto diferente al configurado
**Solución**: Actualizar `CORS_ORIGINS` en backend `.env`:
```bash
CORS_ORIGINS=http://localhost:3100,http://localhost:4173
```
### Problema: WebSocket no conecta
**Verificar**:
1. Backend WS está corriendo en puerto 4001
2. Frontend usa `ws://` (no `wss://`) en desarrollo
3. No hay proxy inverso bloqueando WS
---
## ACTUALIZACIÓN DE PUERTOS
Si necesitas cambiar un puerto:
1. **Actualizar** `/home/isem/workspace/projects/trading-platform/.env.ports`
2. **Actualizar** este documento
3. **Actualizar** `docker-compose.yml`
4. **Actualizar** archivos `.env` de cada servicio:
- `/apps/backend/.env`
- `/apps/frontend/.env`
- `/apps/ml-engine/.env`
- `/apps/data-service/.env`
5. **Reiniciar** servicios afectados
6. **Notificar** al equipo del cambio
---
## REFERENCIAS
- **Archivo de puertos**: `/home/isem/workspace/projects/trading-platform/.env.ports`
- **Docker Compose**: `/home/isem/workspace/projects/trading-platform/docker-compose.yml`
- **Config Backend**: `/home/isem/workspace/projects/trading-platform/apps/backend/.env.example`
- **Config Frontend**: `/home/isem/workspace/projects/trading-platform/apps/frontend/vite.config.ts`
- **Config ML Engine**: `/home/isem/workspace/projects/trading-platform/apps/ml-engine/src/api/main.py`
- **Config Data Service**: `/home/isem/workspace/projects/trading-platform/apps/data-service/src/main.py`
---
**Última Actualización**: 2025-12-05
**Mantenedor**: DevEnv Agent
**Contacto**: Equipo de Desarrollo Trading Platform