# EXECUTION-ORDER.yml - Trading Platform
# Orden de ejecución optimizado considerando dependencias, prioridad y paralelización

metadata:
  fecha: 2026-01-27
  proyecto: trading-platform
  version: 1.0.0
  sistema: SIMCO v4.0.0
  metodologia: "Topological sort by dependencies + priority-driven scheduling"
  fuentes:
    - orchestration/analisis/coherencia/COHERENCE-MASTER-REPORT.md
    - orchestration/PROXIMA-ACCION.md

metricas_globales:
  total_gaps: 18
  gaps_p0: 3
  gaps_p1: 4
  gaps_p2: 5
  inconsistencias_arquitecturales: 2
  esfuerzo_total_horas: 208
  duracion_estimada_semanas: 8

# =============================================================================
# SPRINTS DE EJECUCION
# =============================================================================

sprints:
  # ---------------------------------------------------------------------------
  # SPRINT 1: Bloqueantes P0 - Impiden producción
  # ---------------------------------------------------------------------------
  - sprint: 1
    nombre: "Gaps P0 - Bloqueantes"
    duracion: "2 semanas"
    esfuerzo_total: 54h
    objetivo: "Eliminar todos los bloqueantes que impiden lanzar a producción"

    tareas:
      - id: GAP-P0-001
        nombre: "Password Recovery UI"
        descripcion: "Implementar interfaz de recuperación de contraseña en frontend"
        capa: Frontend
        modulo: OQI-001-Auth
        esfuerzo: 8h
        prioridad: P0
        impacto: "Usuarios no pueden recuperar acceso a sus cuentas"
        dependencias: []
        entregables:
          - components/auth/PasswordRecovery.tsx
          - components/auth/ResetPassword.tsx
          - Integración con /auth/forgot-password endpoint
        paralelo_con: [GAP-P0-002]

      - id: GAP-P0-002
        nombre: "User Profile Service + Endpoints"
        descripcion: "Crear userService.ts backend y endpoints CRUD para user_profiles"
        capa: Backend
        modulo: OQI-001-Auth
        esfuerzo: 6h
        prioridad: P0
        impacto: "No existe gestión de perfiles de usuario"
        dependencias: []
        entregables:
          - apps/backend/src/services/userService.ts
          - GET/PUT /api/users/profile
          - GET /api/users/:id/profile
        paralelo_con: [GAP-P0-001]

      - id: GAP-P0-003-FASE1
        nombre: "Trading Agents UI - Fase 1 (Lista + Detalle)"
        descripcion: "Implementar componentes base para gestión de bots Atlas/Orion/Nova"
        capa: Frontend
        modulo: OQI-003-Trading
        esfuerzo: 20h
        prioridad: P0
        impacto: "Feature core de trading agents sin interfaz - 40h total dividido en 2 fases"
        dependencias: []
        entregables:
          - components/trading/agents/AgentsList.tsx
          - components/trading/agents/AgentDetail.tsx
          - stores/agentsStore.ts (zustand)
        paralelo_con: []
        notas: "Primera mitad de GAP-P0-003. Segunda mitad en Sprint 2."

      - id: GAP-P0-003-FASE2
        nombre: "Trading Agents UI - Fase 2 (Config + Monitor)"
        descripcion: "Completar UI con configuración y monitoreo en tiempo real"
        capa: Frontend
        modulo: OQI-003-Trading
        esfuerzo: 20h
        prioridad: P0
        impacto: "Completar UI de trading agents"
        dependencias: [GAP-P0-003-FASE1]
        entregables:
          - components/trading/agents/AgentConfig.tsx
          - components/trading/agents/AgentMonitor.tsx
          - Real-time updates via WebSocket
        paralelo_con: []
        notas: "Segunda mitad de GAP-P0-003. Depende de fase 1."

  # ---------------------------------------------------------------------------
  # SPRINT 2: Críticos P1 - Afectan funcionalidad core
  # ---------------------------------------------------------------------------
  - sprint: 2
    nombre: "Gaps P1 - Críticos"
    duracion: "2 semanas"
    esfuerzo_total: 76h
    objetivo: "Resolver gaps que afectan funcionalidad crítica de la plataforma"

    tareas:
      - id: GAP-P1-001
        nombre: "Market Data OHLCV Service"
        descripcion: "Crear servicio backend para consultar datos OHLCV de market_data schema"
        capa: Backend
        modulo: OQI-003-Trading
        esfuerzo: 16h
        prioridad: P1
        impacto: "Charts de trading no tienen fuente de datos históricos"
        dependencias: []
        entregables:
          - apps/backend/src/services/marketDataService.ts
          - GET /api/market-data/ohlcv/:symbol
          - Queries optimizadas con índices temporales
        paralelo_con: [GAP-P1-004]
        notas: "Crítico para charts en OQI-003"

      - id: GAP-P1-002
        nombre: "Notifications API Completa"
        descripcion: "Completar endpoints de notificaciones (mark read, delete, preferences)"
        capa: Backend
        modulo: OQI-001-Auth
        esfuerzo: 20h
        prioridad: P1
        impacto: "Push notifications funcionan parcialmente"
        dependencias: []
        entregables:
          - POST /api/notifications/mark-read
          - DELETE /api/notifications/:id
          - GET/PUT /api/notifications/preferences
          - Integración FCM/APNs
        paralelo_con: [GAP-P1-004]

      - id: GAP-P1-003
        nombre: "ML Chart Overlays UI"
        descripcion: "Conectar overlays de predicciones ML en componentes de charts"
        capa: Frontend
        modulo: OQI-006-ML
        esfuerzo: 24h
        prioridad: P1
        impacto: "Visualización de predicciones ML no está conectada a charts"
        dependencias: [GAP-P1-001]
        entregables:
          - components/charts/MLOverlay.tsx
          - Integración con mlService.ts
          - Visualización de signals en lightweight-charts
        paralelo_con: []
        notas: "Depende de Market Data Service"

      - id: GAP-P1-004
        nombre: "2FA Flow Completo"
        descripcion: "Implementar flujo completo de autenticación de dos factores (setup + verify)"
        capa: Fullstack
        modulo: OQI-001-Auth
        esfuerzo: 16h
        prioridad: P1
        impacto: "Seguridad avanzada no disponible para usuarios"
        dependencias: []
        entregables:
          - Backend: POST /api/auth/2fa/setup, POST /api/auth/2fa/verify
          - Frontend: components/auth/TwoFactorSetup.tsx
          - QR code generation + TOTP validation
        paralelo_con: [GAP-P1-001, GAP-P1-002]

  # ---------------------------------------------------------------------------
  # SPRINT 3: Importantes P2 - Mejoran experiencia
  # ---------------------------------------------------------------------------
  - sprint: 3
    nombre: "Gaps P2 - Importantes"
    duracion: "2 semanas"
    esfuerzo_total: 78h
    objetivo: "Implementar funcionalidades que mejoran significativamente la experiencia"

    tareas:
      - id: GAP-P2-001
        nombre: "Audit System Services"
        descripcion: "Crear servicios backend para consultar logs de auditoría"
        capa: Backend
        modulo: Audit
        esfuerzo: 32h
        prioridad: P2
        impacto: "No hay endpoints para consultar auditoría"
        dependencias: []
        entregables:
          - apps/backend/src/services/auditService.ts
          - GET /api/audit/logs (paginado + filtros)
          - GET /api/audit/user/:userId
          - GET /api/audit/entity/:entityType/:entityId
        paralelo_con: [GAP-P2-002, GAP-P2-003]

      - id: GAP-P2-002
        nombre: "Currency Exchange Service"
        descripcion: "Implementar servicio de conversión de monedas y consulta de tasas"
        capa: Backend
        modulo: Financial
        esfuerzo: 16h
        prioridad: P2
        impacto: "Multi-moneda incompleto en la plataforma"
        dependencias: []
        entregables:
          - apps/backend/src/services/currencyService.ts
          - GET /api/currency/rates
          - POST /api/currency/convert
          - Integración con API externa (e.g., exchangerate-api)
        paralelo_con: [GAP-P2-001, GAP-P2-003]

      - id: GAP-P2-003
        nombre: "Risk Assessment Service"
        descripcion: "Conectar cuestionario de evaluación de riesgo con backend"
        capa: Backend
        modulo: OQI-004-Investment
        esfuerzo: 12h
        prioridad: P2
        impacto: "Cuestionario de riesgo existe en DB pero no tiene lógica"
        dependencias: []
        entregables:
          - apps/backend/src/services/riskService.ts
          - GET /api/risk/questionnaire
          - POST /api/risk/assessment (calcular score)
          - PUT /api/users/:id/risk-profile
        paralelo_con: [GAP-P2-001, GAP-P2-002]

      - id: GAP-P2-004
        nombre: "Course Reviews Endpoints"
        descripcion: "Crear endpoints para gestionar reviews de cursos educativos"
        capa: Backend
        modulo: OQI-002-Education
        esfuerzo: 6h
        prioridad: P2
        impacto: "Sistema de reviews no disponible"
        dependencias: []
        entregables:
          - POST /api/education/courses/:id/reviews
          - GET /api/education/courses/:id/reviews
          - PUT /api/education/reviews/:id
        paralelo_con: [GAP-P2-005]

      - id: GAP-P2-005
        nombre: "OAuth Flows Completos"
        descripcion: "Completar flujos de OAuth para Google/Facebook/Apple"
        capa: Frontend
        modulo: OQI-001-Auth
        esfuerzo: 12h
        prioridad: P2
        impacto: "Login social está parcialmente implementado"
        dependencias: []
        entregables:
          - components/auth/OAuthButtons.tsx
          - Callback handlers para cada provider
          - Error handling + fallback flows
        paralelo_con: [GAP-P2-004]

  # ---------------------------------------------------------------------------
  # SPRINT 4: Consolidación Arquitectural
  # ---------------------------------------------------------------------------
  - sprint: 4
    nombre: "Consolidación Arquitectural"
    duracion: "2 semanas"
    esfuerzo_total: "No estimado (refactor)"
    objetivo: "Resolver inconsistencias arquitecturales y mejorar mantenibilidad"

    tareas:
      - id: ARCH-001
        nombre: "Centralizar Acceso Python via Express Gateway"
        descripcion: "Migrar acceso directo Python (3083, 3085) para pasar por Express"
        capa: Backend
        modulo: Architecture
        esfuerzo: "TBD"
        prioridad: P1
        impacto: "Sin auth centralizada, CORS issues, sin rate limiting"
        dependencias: []
        entregables:
          - apps/backend/src/routes/ml.routes.ts (proxy a 3083)
          - apps/backend/src/routes/llm.routes.ts (proxy a 3085)
          - Middleware: auth, rate limiting, logging
        archivos_afectados:
          - apps/frontend/src/services/mlService.ts
          - apps/frontend/src/services/llmAgentService.ts
          - apps/frontend/src/services/backtestService.ts
        paralelo_con: []

      - id: ARCH-002
        nombre: "Migrar Services a apiClient Centralizado"
        descripcion: "Migrar 5 services que no usan apiClient para auto-refresh y retry logic"
        capa: Frontend
        modulo: Architecture
        esfuerzo: "TBD"
        prioridad: P1
        impacto: "Sin auto-refresh tokens, sin retry logic, errores inconsistentes"
        dependencias: [ARCH-001]
        entregables:
          - Refactor portfolio.service.ts
          - Refactor adminService.ts
          - Refactor mlService.ts
          - Refactor llmAgentService.ts
          - Refactor backtestService.ts
        archivos_afectados: 5 archivos en apps/frontend/src/services/
        paralelo_con: []
        notas: "Ejecutar DESPUÉS de ARCH-001 para evitar doble refactor"

      - id: TEST-001
        nombre: "Tests de Integración E2E"
        descripcion: "Crear suite de tests end-to-end para validar flujos críticos"
        capa: Testing
        modulo: QA
        esfuerzo: "TBD"
        prioridad: P2
        impacto: "Validar coherencia completa de la plataforma"
        dependencias: [ARCH-001, ARCH-002]
        entregables:
          - tests/e2e/auth-flow.spec.ts
          - tests/e2e/trading-flow.spec.ts
          - tests/e2e/investment-flow.spec.ts
        paralelo_con: []
        notas: "Ejecutar al final para validar todo"

# =============================================================================
# GRAFO DE DEPENDENCIAS
# =============================================================================

grafo_dependencias:
  # Sprint 1 - P0
  GAP-P0-001: []  # Independiente - puede ejecutarse en paralelo
  GAP-P0-002: []  # Independiente - puede ejecutarse en paralelo
  GAP-P0-003-FASE1: []  # Independiente
  GAP-P0-003-FASE2: [GAP-P0-003-FASE1]  # Depende de fase 1

  # Sprint 2 - P1
  GAP-P1-001: []  # Independiente
  GAP-P1-002: []  # Independiente
  GAP-P1-003: [GAP-P1-001]  # Necesita Market Data Service
  GAP-P1-004: []  # Independiente

  # Sprint 3 - P2
  GAP-P2-001: []  # Independiente
  GAP-P2-002: []  # Independiente
  GAP-P2-003: []  # Independiente
  GAP-P2-004: []  # Independiente
  GAP-P2-005: []  # Independiente

  # Sprint 4 - Arquitectura
  ARCH-001: []  # Debe ejecutarse primero
  ARCH-002: [ARCH-001]  # Depende de proxy gateway
  TEST-001: [ARCH-001, ARCH-002]  # Depende de refactors completos

# =============================================================================
# RUTAS CRITICAS (Critical Paths)
# =============================================================================

rutas_criticas:
  - id: RUTA-001
    nombre: "Auth Flow Completo"
    descripcion: "Flujo de autenticación desde registro hasta 2FA"
    path: [GAP-P0-001, GAP-P0-002, GAP-P1-004]
    duracion_total: 30h
    impacto: "Alta - Seguridad y acceso de usuarios"

  - id: RUTA-002
    nombre: "Trading Core"
    descripcion: "Trading agents con datos de mercado y visualización"
    path: [GAP-P0-003-FASE1, GAP-P0-003-FASE2, GAP-P1-001, GAP-P1-003]
    duracion_total: 80h
    impacto: "Crítica - Feature principal de la plataforma"

  - id: RUTA-003
    nombre: "Consolidación Arquitectural"
    descripcion: "Refactor para centralizar acceso y mejorar mantenibilidad"
    path: [ARCH-001, ARCH-002, TEST-001]
    duracion_total: "TBD"
    impacto: "Media - Mejora técnica sin impacto funcional inmediato"

# =============================================================================
# CADENAS DE DEPENDENCIA POR CAPA (DDL -> Backend -> Frontend)
# =============================================================================

cadenas_capas:
  - cadena: CADENA-001
    nombre: "Trading Bots"
    flujo: "DDL(trading.bots) -> Backend(bots.service) -> Frontend(BotManager)"
    estado_actual:
      ddl: "COMPLETO"
      backend: "PARCIAL"
      frontend: "BLOQUEADO (GAP-P0-003)"
    gap_bloqueante: GAP-P0-003-FASE1

  - cadena: CADENA-002
    nombre: "ML Predictions"
    flujo: "DDL(ml.predictions) -> Backend(ml.service) -> Frontend(mlService) -> Charts(overlays)"
    estado_actual:
      ddl: "COMPLETO"
      backend: "COMPLETO"
      frontend: "PARCIAL (GAP-P1-003)"
    gap_bloqueante: GAP-P1-003

  - cadena: CADENA-003
    nombre: "Notifications"
    flujo: "DDL(auth.notifications) -> Backend(notifications) -> Frontend(notification.service) -> Push(FCM)"
    estado_actual:
      ddl: "COMPLETO"
      backend: "PARCIAL (GAP-P1-002)"
      frontend: "COMPLETO"
    gap_bloqueante: GAP-P1-002

  - cadena: CADENA-004
    nombre: "User Profiles"
    flujo: "DDL(auth.user_profiles) -> Backend(userService) -> Frontend(ProfilePage)"
    estado_actual:
      ddl: "COMPLETO"
      backend: "BLOQUEADO (GAP-P0-002)"
      frontend: "COMPLETO"
    gap_bloqueante: GAP-P0-002

# =============================================================================
# ESTRATEGIA DE PARALELIZACION
# =============================================================================

estrategia_paralelizacion:
  descripcion: "Maximizar eficiencia ejecutando tareas independientes en paralelo"

  sprint_1_paralelo:
    grupo_1:
      tareas: [GAP-P0-001, GAP-P0-002]
      razon: "Frontend y Backend independientes"
      recursos: "2 desarrolladores"
    grupo_2:
      tareas: [GAP-P0-003-FASE1]
      razon: "Después de grupo 1, tarea larga (20h)"
      recursos: "1 desarrollador"

  sprint_2_paralelo:
    grupo_1:
      tareas: [GAP-P1-001, GAP-P1-002, GAP-P1-004]
      razon: "3 tareas backend independientes"
      recursos: "3 desarrolladores"
    grupo_2:
      tareas: [GAP-P1-003]
      razon: "Espera a GAP-P1-001 completarse"
      recursos: "1 desarrollador"
      dependencia_bloqueante: GAP-P1-001

  sprint_3_paralelo:
    grupo_1:
      tareas: [GAP-P2-001, GAP-P2-002, GAP-P2-003]
      razon: "3 tareas backend independientes"
      recursos: "3 desarrolladores"
    grupo_2:
      tareas: [GAP-P2-004, GAP-P2-005]
      razon: "2 tareas independientes (backend + frontend)"
      recursos: "2 desarrolladores"

  sprint_4_secuencial:
    razon: "Refactors arquitecturales deben ser secuenciales para evitar conflictos"
    orden: [ARCH-001, ARCH-002, TEST-001]

# =============================================================================
# CHECKPOINTS DE VALIDACION
# =============================================================================

checkpoints:
  - id: CP-01
    nombre: "Sprint 1 Completado"
    criterios:
      - "GAP-P0-001, GAP-P0-002, GAP-P0-003 resueltos"
      - "0 gaps bloqueantes (P0)"
      - "Build exitoso en backend + frontend"
      - "Tests unitarios pasan"
    salida_esperada: "Plataforma lista para producción mínima viable"

  - id: CP-02
    nombre: "Sprint 2 Completado"
    criterios:
      - "GAP-P1-001 a GAP-P1-004 resueltos"
      - "Cobertura DDL-Backend >= 95%"
      - "Market data service funcional"
      - "2FA operativo"
    salida_esperada: "Funcionalidad crítica completa"

  - id: CP-03
    nombre: "Sprint 3 Completado"
    criterios:
      - "GAP-P2-001 a GAP-P2-005 resueltos"
      - "Audit system operativo"
      - "Multi-moneda funcional"
      - "OAuth completo"
    salida_esperada: "Experiencia de usuario mejorada"

  - id: CP-04
    nombre: "Sprint 4 Completado"
    criterios:
      - "Todos los servicios usan apiClient"
      - "Acceso Python centralizado via Express"
      - "Tests E2E pasan al 100%"
      - "Coherencia global >= 95%"
    salida_esperada: "Arquitectura consolidada y mantenible"

# =============================================================================
# METRICAS DE PROGRESO
# =============================================================================

metricas_progreso:
  estado_inicial:
    fecha: "2026-01-27"
    coherencia_global: 81.25%
    gaps_p0: 3
    gaps_p1: 4
    gaps_p2: 5
    servicios_apiClient: 64%

  targets:
    cp01:
      coherencia_global: 87%
      gaps_p0: 0
      gaps_p1: 4
      gaps_p2: 5

    cp02:
      coherencia_global: 92%
      gaps_p0: 0
      gaps_p1: 0
      gaps_p2: 5

    cp03:
      coherencia_global: 97%
      gaps_p0: 0
      gaps_p1: 0
      gaps_p2: 0

    cp04:
      coherencia_global: 98%
      gaps_p0: 0
      gaps_p1: 0
      gaps_p2: 0
      servicios_apiClient: 100%
      acceso_python_centralizado: 100%

# =============================================================================
# RIESGOS Y MITIGACIONES
# =============================================================================

riesgos:
  - id: RISK-001
    descripcion: "GAP-P0-003 es muy grande (40h) - riesgo de bloquear sprint 1"
    probabilidad: Media
    impacto: Alto
    mitigacion: "Dividido en 2 fases (20h cada una) - fase 2 puede ir a sprint 2 si es necesario"

  - id: RISK-002
    descripcion: "ARCH-001 puede generar regresiones en frontend"
    probabilidad: Media
    impacto: Medio
    mitigacion: "Ejecutar después de todos los gaps funcionales - sprint 4 dedicado"

  - id: RISK-003
    descripcion: "Dependencia de GAP-P1-001 bloquea GAP-P1-003"
    probabilidad: Baja
    impacto: Medio
    mitigacion: "GAP-P1-001 tiene prioridad en sprint 2 - ejecutar primero"

  - id: RISK-004
    descripcion: "Falta estimación en tareas de refactor (ARCH-001, ARCH-002)"
    probabilidad: Alta
    impacto: Bajo
    mitigacion: "Sprint 4 es flexible - puede extenderse si es necesario"

# =============================================================================
# RECURSOS RECOMENDADOS
# =============================================================================

recursos_recomendados:
  equipo_minimo:
    - rol: "Backend Developer"
      cantidad: 2
      skills: "TypeScript, Express.js, PostgreSQL"

    - rol: "Frontend Developer"
      cantidad: 2
      skills: "React, TypeScript, Zustand, TanStack Query"

    - rol: "QA Engineer"
      cantidad: 1
      skills: "E2E testing, Playwright/Cypress"

  equipo_optimo:
    - rol: "Backend Developer"
      cantidad: 3
      razon: "Permite paralelizar tareas backend en sprint 2 y 3"

    - rol: "Frontend Developer"
      cantidad: 2
      razon: "Suficiente para tareas frontend en paralelo"

    - rol: "QA Engineer"
      cantidad: 1
      razon: "Validación continua durante sprints"

    - rol: "DevOps/Architect"
      cantidad: 1
      razon: "Para sprint 4 (consolidación arquitectural)"

# =============================================================================
# NOTAS FINALES
# =============================================================================

notas_finales:
  - "Este plan es DINAMICO - debe ajustarse según descubrimientos durante ejecución"
  - "Priorizar SIEMPRE gaps P0 antes de avanzar a P1"
  - "Validar build + tests después de CADA tarea completada"
  - "Documentar cambios arquitecturales en ADR (Architecture Decision Records)"
  - "Mantener COHERENCE-MASTER-REPORT.md actualizado con progreso"
  - "Los refactors arquitecturales (Sprint 4) NO deben bloquear lanzamiento si P0/P1/P2 están resueltos"
  - "Considerar lanzamiento gradual: MVP con P0 -> Feature complete con P1 -> Polish con P2"

# =============================================================================
# REFERENCIAS
# =============================================================================

referencias:
  - archivo: orchestration/analisis/coherencia/COHERENCE-MASTER-REPORT.md
    descripcion: "Reporte maestro de coherencia con todos los gaps identificados"

  - archivo: orchestration/analisis/coherencia/GAPS-TRACKING.yml
    descripcion: "Tracking detallado de cada gap"

  - archivo: orchestration/PROXIMA-ACCION.md
    descripcion: "Estado actual y próxima acción inmediata"

  - archivo: orchestration/analisis/coherencia/DDL-BACKEND-COHERENCE.yml
    descripcion: "Mapeo DDL -> Backend con gaps identificados"

  - archivo: orchestration/analisis/coherencia/BACKEND-FRONTEND-COHERENCE.yml
    descripcion: "Mapeo Backend -> Frontend con gaps identificados"

---
# Generado por: Claude Code (Opus 4.5)
# Sistema: SIMCO v4.0.0
# Fecha: 2026-01-27
# Version: 1.0.0
