trading-platform/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/02-ANALISIS.md
Adrian Flores Cortes df43dd90cb [F0-F2] feat: Coherence analysis baseline + entity types + frontend stores
FASE 0 - Preparación y Purga:
- Archived 21 completed tasks to _archive/2026-01/
- Marked 4 docs as DEPRECATED
- Created 3 baseline coherence reports

FASE 1 - DDL-Backend Coherence:
- audit.types.ts: +4 types (SystemEvent, TradingAudit, ApiRequestLog, DataAccessLog)
- investment.types.ts: +4 types (RiskQuestionnaire, WithdrawalRequest, DailyPerformance, DistributionHistory)
- entity.types.ts: +5 types (Symbol, TradingBot, TradingSignal, TradingMetrics, PaperBalance)

FASE 2 - Backend-Frontend Coherence:
- investmentStore.ts: New Zustand store with 20+ actions
- mlStore.ts: New Zustand store with signal caching
- alerts.service.ts: New service with 15 functions

FASE 3 - Documentation:
- OQI-009: Updated to 100% coverage, added ET-MKT-004-productos.md
- OQI-010: Created full structure (STATUS.md, ROADMAP-MT4.md, ET-MT4-001-gateway.md)

Coherence Baseline Established:
- DDL-Backend: 31% (target 95%)
- Backend-Frontend: 72% (target 85%)
- Global: 39.6% (target 90%)

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

2.8 KiB

02-ANALISIS - Phase 1 MVP Implementation

Análisis de Dependencias

Servicios Existentes Analizados

  1. WebSocket Manager (src/core/websocket/websocket.server.ts)

    • Método sendToUser(userId, message) disponible
    • Soporte para canales privados (user:*, account:*)
    • Heartbeat y reconexión automática
  2. Email Service (src/modules/auth/services/email.service.ts)

    • Nodemailer configurado
    • Templates HTML existentes
    • Patrón a replicar para notificaciones
  3. Alerts Service (src/modules/trading/services/alerts.service.ts)

    • TODO en línea 280 para integración de notificaciones
    • Método triggerAlert() necesita enviar notificaciones
  4. Product Service (src/modules/investment/services/product.service.ts)

    • Productos Atlas/Orion/Nova con tasas de retorno
    • targetReturnMin/Max para cálculo de distribuciones

Tablas de Base de Datos Esperadas

-- Notificaciones
CREATE TABLE notifications (
  id UUID PRIMARY KEY,
  user_id UUID REFERENCES users(id),
  type VARCHAR(50),
  title VARCHAR(255),
  message TEXT,
  priority VARCHAR(20),
  data JSONB,
  action_url VARCHAR(255),
  icon_type VARCHAR(20),
  channels TEXT[],
  is_read BOOLEAN DEFAULT FALSE,
  read_at TIMESTAMPTZ,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- Push tokens
CREATE TABLE user_push_tokens (
  id UUID PRIMARY KEY,
  user_id UUID REFERENCES users(id),
  token TEXT,
  platform VARCHAR(20),
  is_active BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- Distribution history
CREATE TABLE investment.distribution_history (
  id UUID PRIMARY KEY,
  account_id UUID REFERENCES investment.accounts(id),
  product_id UUID REFERENCES investment.products(id),
  distribution_date DATE,
  gross_amount DECIMAL(18,2),
  fee_amount DECIMAL(18,2),
  net_amount DECIMAL(18,2),
  balance_before DECIMAL(18,2),
  balance_after DECIMAL(18,2),
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- Distribution runs (auditoría)
CREATE TABLE investment.distribution_runs (
  id UUID PRIMARY KEY,
  run_date DATE,
  total_accounts INTEGER,
  successful_count INTEGER,
  failed_count INTEGER,
  total_gross_amount DECIMAL(18,2),
  total_fee_amount DECIMAL(18,2),
  total_net_amount DECIMAL(18,2),
  started_at TIMESTAMPTZ,
  completed_at TIMESTAMPTZ,
  duration_ms INTEGER,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

Patrones Identificados

  1. Service Classes: Singleton con export de instancia
  2. Controllers: Funciones async con AuthenticatedRequest
  3. Routes: Router con authHandler helper
  4. Error Handling: try/catch con logger

Riesgos Identificados

Riesgo Mitigación
Tablas DB no existen Diseño flexible que maneja errores
Push tokens vacíos Log debug, no error
Distribución negativa Skip silencioso en días negativos