trading-platform/orchestration/directivas/DIRECTIVA-STACK-TECNOLOGICO.md

8.1 KiB

DIRECTIVA: Stack Tecnológico OrbiQuant IA

ID: DOQ-002 Tipo: Tecnología Alcance: OrbiQuant IA (trading-platform) Versión: 2.0 Fecha: 2025-12-07 Actualizado desde: orbiquantia (NestJS -> Express.js)

Backend Principal - Express.js

Versiones Requeridas

{
  "node": ">=20.0.0",
  "typescript": "^5.3.0",
  "express": "^4.18.0"
}

Dependencias Core

{
  // Framework
  "express": "^4.18.2",
  "cors": "^2.8.5",
  "helmet": "^7.1.0",
  "compression": "^1.7.4",

  // Routing
  "express-async-errors": "^3.1.1",

  // Autenticación
  "passport": "^0.7.0",
  "passport-jwt": "^4.0.1",
  "passport-local": "^1.0.0",
  "passport-google-oauth20": "^2.0.0",
  "passport-facebook": "^3.0.0",
  "passport-github2": "^0.1.12",
  "jsonwebtoken": "^9.0.2",
  "bcrypt": "^5.1.1",
  "speakeasy": "^2.0.0",
  "qrcode": "^1.5.3",

  // Validación
  "zod": "^3.22.0",

  // Base de Datos
  "pg": "^8.11.0",
  "redis": "^4.6.0",

  // HTTP Client (para ML Services)
  "axios": "^1.6.0",

  // WebSockets
  "socket.io": "^4.7.0",

  // Pagos
  "stripe": "^14.0.0",

  // SMS/WhatsApp
  "twilio": "^4.20.0",

  // Logging
  "winston": "^3.11.0",
  "morgan": "^1.10.0",

  // Configuración
  "dotenv": "^16.3.0"
}

Dependencias Dev

{
  "@types/node": "^20.0.0",
  "@types/express": "^4.17.21",
  "@types/passport-jwt": "^4.0.0",
  "@types/bcrypt": "^5.0.0",
  "@types/cors": "^2.8.17",
  "typescript": "^5.3.0",
  "tsx": "^4.7.0",
  "eslint": "^8.57.0",
  "prettier": "^3.2.0",
  "@typescript-eslint/eslint-plugin": "^7.0.0",
  "@typescript-eslint/parser": "^7.0.0",
  "vitest": "^1.2.0",
  "supertest": "^6.3.0"
}

Frontend - React

Versiones Requeridas

{
  "node": ">=20.0.0",
  "react": "^18.0.0",
  "typescript": "^5.3.0"
}

Dependencias Core

{
  // Framework
  "react": "^18.2.0",
  "react-dom": "^18.2.0",

  // Routing
  "react-router-dom": "^6.22.0",

  // State Management
  "zustand": "^4.5.0",

  // Data Fetching
  "@tanstack/react-query": "^5.20.0",

  // Styling
  "tailwindcss": "^3.4.0",
  "@tailwindcss/forms": "^0.5.0",
  "clsx": "^2.1.0",
  "class-variance-authority": "^0.7.0",

  // UI Components (Shadcn/Radix)
  "@radix-ui/react-dialog": "^1.0.0",
  "@radix-ui/react-dropdown-menu": "^2.0.0",
  "@radix-ui/react-select": "^2.0.0",
  "@radix-ui/react-tabs": "^1.0.0",
  "@radix-ui/react-tooltip": "^1.0.0",
  "@radix-ui/react-avatar": "^1.0.0",
  "@radix-ui/react-checkbox": "^1.0.0",
  "@radix-ui/react-switch": "^1.0.0",
  "@radix-ui/react-progress": "^1.0.0",
  "@radix-ui/react-accordion": "^1.0.0",
  "@radix-ui/react-popover": "^1.0.0",
  "@radix-ui/react-scroll-area": "^1.0.0",

  // Forms
  "react-hook-form": "^7.50.0",
  "zod": "^3.22.0",
  "@hookform/resolvers": "^3.3.0",

  // Charts
  "recharts": "^2.12.0",
  "lightweight-charts": "^4.1.0",

  // Icons
  "lucide-react": "^0.350.0",

  // Animations
  "framer-motion": "^11.0.0",

  // HTTP Client
  "axios": "^1.6.0",

  // Notifications
  "sonner": "^1.4.0",

  // Dates
  "date-fns": "^3.3.0",

  // Payments
  "@stripe/stripe-js": "^3.0.0",
  "@stripe/react-stripe-js": "^2.5.0"
}

Dependencias Dev

{
  "vite": "^5.4.0",
  "@vitejs/plugin-react": "^4.2.0",
  "typescript": "^5.3.0",
  "@types/react": "^18.2.0",
  "@types/react-dom": "^18.2.0",
  "eslint": "^8.57.0",
  "eslint-plugin-react": "^7.33.0",
  "prettier": "^3.2.0",
  "vitest": "^2.0.0",
  "@testing-library/react": "^14.2.0",
  "playwright": "^1.42.0"
}

ML Engine - FastAPI (Python)

Versiones Requeridas

python: ">=3.11,<3.13"
cuda: ">=12.0"  # Opcional para GPU

Ambiente Conda

name: orbiquantia-ml
channels:
  - pytorch
  - nvidia
  - conda-forge
  - defaults
dependencies:
  - python=3.11
  - pytorch=2.5.0
  - pytorch-cuda=12.1
  - cudatoolkit=12.1
  - pip

Dependencias Python (requirements.txt)

# API Framework
fastapi>=0.115.0
uvicorn[standard]>=0.32.0
websockets>=13.0
httpx>=0.28.0

# ML Core
torch>=2.5.0
xgboost>=2.1.0
scikit-learn>=1.5.0

# Data Processing
pandas>=2.2.0
numpy>=1.26.0
ta-lib>=0.4.32
pandas-ta>=0.3.14b
pyarrow>=17.0.0

# Database
pymysql>=1.1.0
sqlalchemy>=2.0.0

# Validation
pydantic>=2.10.0

# Configuration
pyyaml>=6.0.0
python-dotenv>=1.0.0

# Logging
loguru>=0.7.0

# Monitoring
wandb>=0.19.0
tensorboard>=2.18.0

# Serialization
joblib>=1.4.0

# Development
pytest>=8.3.0
black>=24.0.0
isort>=5.13.0
mypy>=1.8.0

Dependencias Opcionales (GPU)

# GPU Acceleration
nvidia-cuda-runtime-cu12>=12.0.0
nvidia-cudnn-cu12>=9.0.0

Bases de Datos

PostgreSQL 15+

version: "15"
extensions:
  - uuid-ossp
  - pgcrypto
  - btree_gin
  - pg_trgm
features:
  - Row Level Security (RLS)
  - JSON/JSONB support
  - Full-text search
  - Partitioning (si necesario)
schemas:
  - public        # Users, profiles, auth
  - education     # Courses, lessons, quizzes
  - trading       # Watchlists, orders, positions
  - investment    # Products, accounts, transactions
  - financial     # Subscriptions, wallets, billing
  - ml            # Models, predictions, signals
  - audit         # Audit logs, events

MySQL 8+

version: "8.0"
charset: utf8mb4
collation: utf8mb4_unicode_ci
purpose: Historical trading data (OHLCV)
features:
  - JSON support
  - Window functions
  - CTEs

Redis 7+

version: "7.x"
purpose:
  - Session storage
  - Rate limiting
  - Caching
  - Real-time pub/sub

DevOps

Docker

docker: ">=24.0.0"
docker-compose: ">=2.24.0"

Node.js Runtime

node: "20.x LTS"
npm: ">=10.0.0"

Python Runtime

miniconda: "latest"
python: "3.11.x"

Estructura de Configuración

Backend (Express.js)

apps/backend/
├── .env                    # Variables de entorno
├── .env.example            # Template
├── tsconfig.json          # TypeScript config
├── package.json           # Dependencies
└── src/
    └── config/
        └── index.ts       # Configuración centralizada

Frontend (React)

apps/frontend/
├── .env                    # Variables de entorno
├── .env.example            # Template
├── vite.config.ts         # Vite config
├── tsconfig.json          # TypeScript config
├── tailwind.config.ts     # Tailwind config
├── postcss.config.js      # PostCSS config
└── package.json           # Dependencies

ML Engine (FastAPI)

apps/ml-engine/
├── .env                    # Variables de entorno
├── .env.example            # Template
├── environment.yml         # Conda environment
├── requirements.txt        # Pip dependencies
├── pyproject.toml         # Project config
└── config/
    ├── trading.yaml       # Trading params
    ├── models.yaml        # Model config
    └── database.yaml      # Database config

Comandos de Desarrollo

Backend (Express.js)

# Desarrollo
npm run dev

# Build
npm run build

# Start producción
npm start

# Test
npm run test
npm run test:watch

# Lint
npm run lint
npm run lint:fix

# Format
npm run format

Frontend

# Desarrollo
npm run dev

# Build
npm run build

# Preview
npm run preview

# Test
npm run test
npm run test:e2e

# Lint
npm run lint

ML Engine

# Activar ambiente
conda activate orbiquantia-ml

# Desarrollo
uvicorn src.api.main:app --reload --port 8000

# Test
pytest tests/

# Lint
black src/
isort src/
mypy src/

Reglas de Versionado

  1. Semantic Versioning: MAJOR.MINOR.PATCH
  2. Lockfiles: package-lock.json, conda-lock.yml
  3. Actualización de dependencias: Mensual para patches, trimestral para minor
  4. Breaking changes: Solo en releases major planificados

Comparación con orbiquantia (versión anterior)

Aspecto orbiquantia trading-platform
Backend Framework NestJS 11.x Express.js 4.18.x
ORM TypeORM Raw SQL + pg
Validation class-validator Zod
Logger NestJS Logger Winston
React Version 19.x 18.x
State Management Zustand 5.x Zustand 4.x

Migrado desde orbiquantia y actualizado para Express.js