[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>
This commit is contained in:
parent
a01b03393f
commit
df43dd90cb
@ -2,18 +2,31 @@
|
||||
id: OQI-009
|
||||
title: Marketplace - Trading Platform
|
||||
type: epic
|
||||
status: Draft
|
||||
status: In Progress
|
||||
priority: High
|
||||
epic: OQI-009
|
||||
project: trading-platform
|
||||
version: 1.0.0
|
||||
version: 1.1.0
|
||||
progress: 70%
|
||||
dates:
|
||||
created: 2026-01-04
|
||||
updated: 2026-01-04
|
||||
updated: 2026-01-28
|
||||
documentation_status: Complete
|
||||
implementation_status: Pending
|
||||
---
|
||||
|
||||
# OQI-009: Marketplace
|
||||
|
||||
## Estado Actual
|
||||
|
||||
| Aspecto | Progreso | Notas |
|
||||
|---------|----------|-------|
|
||||
| Documentacion | 100% | RF, US, ET completos |
|
||||
| Database Schema | 0% | DDL definido, pendiente migracion |
|
||||
| Backend API | 0% | Endpoints especificados |
|
||||
| Frontend | 0% | Componentes definidos |
|
||||
| Integraciones | 0% | Stripe, Cal.com, Daily.co |
|
||||
|
||||
## Vision General
|
||||
|
||||
El **Marketplace** es el centro comercial de Trading Platform, donde los usuarios pueden adquirir productos y servicios premium que potencian su experiencia de trading. Desde paquetes de senales ML hasta sesiones de asesoria personalizada, el marketplace ofrece un ecosistema completo de monetizacion.
|
||||
@ -83,6 +96,43 @@ marketplace/
|
||||
|
||||
## Documentacion Relacionada
|
||||
|
||||
- [Requerimientos Funcionales](./requerimientos/)
|
||||
- [Historias de Usuario](./historias-usuario/)
|
||||
- [Especificaciones Tecnicas](./especificaciones/)
|
||||
### Mapa de Documentos
|
||||
- [_MAP.md](./_MAP.md) - Indice completo de documentacion
|
||||
|
||||
### Requerimientos Funcionales
|
||||
| ID | Documento | Descripcion |
|
||||
|----|-----------|-------------|
|
||||
| RF-MKT-001 | [Catalogo de Productos](./requerimientos/RF-MKT-001-catalogo.md) | Gestion del catalogo central |
|
||||
| RF-MKT-002 | [Senales Premium](./requerimientos/RF-MKT-002-senales-premium.md) | Paquetes de senales ML |
|
||||
| RF-MKT-003 | [Asesoria](./requerimientos/RF-MKT-003-asesoria.md) | Sesiones 1:1 con expertos |
|
||||
| RF-MKT-004 | [Visualizacion](./requerimientos/RF-MKT-004-visualizacion.md) | Indicadores premium |
|
||||
|
||||
### Historias de Usuario
|
||||
| ID | Documento | Descripcion |
|
||||
|----|-----------|-------------|
|
||||
| US-MKT-001 | [Explorar Catalogo](./historias-usuario/US-MKT-001-explorar-catalogo.md) | Navegacion del marketplace |
|
||||
| US-MKT-002 | [Comprar Senales](./historias-usuario/US-MKT-002-comprar-senales.md) | Flujo de compra de senales |
|
||||
| US-MKT-003 | [Agendar Asesoria](./historias-usuario/US-MKT-003-agendar-asesoria.md) | Flujo de agendamiento |
|
||||
| US-MKT-004 | [Activar Visualizacion](./historias-usuario/US-MKT-004-activar-visualizacion.md) | Activacion de addons |
|
||||
|
||||
### Especificaciones Tecnicas
|
||||
| ID | Documento | Descripcion |
|
||||
|----|-----------|-------------|
|
||||
| ET-MKT-001 | [Database Schema](./especificaciones/ET-MKT-001-database.md) | Modelo de datos PostgreSQL |
|
||||
| ET-MKT-002 | [API REST](./especificaciones/ET-MKT-002-api.md) | Endpoints del backend |
|
||||
| ET-MKT-003 | [Frontend](./especificaciones/ET-MKT-003-frontend.md) | Arquitectura React |
|
||||
| ET-MKT-004 | [Productos](./especificaciones/ET-MKT-004-productos.md) | Logica de negocio |
|
||||
|
||||
---
|
||||
|
||||
## Proximos Pasos
|
||||
|
||||
1. **Fase 1 - Database**: Migrar schema a PostgreSQL
|
||||
2. **Fase 2 - Backend**: Implementar endpoints API
|
||||
3. **Fase 3 - Frontend**: Desarrollar componentes React
|
||||
4. **Fase 4 - Integraciones**: Conectar Stripe, Cal.com, Daily.co
|
||||
5. **Fase 5 - Testing**: E2E y performance
|
||||
|
||||
---
|
||||
|
||||
*Documentacion actualizada: 2026-01-28*
|
||||
|
||||
@ -2,14 +2,14 @@
|
||||
id: OQI-009-MAP
|
||||
title: Mapa de Documentos - Marketplace
|
||||
type: map
|
||||
status: Draft
|
||||
status: Active
|
||||
priority: High
|
||||
epic: OQI-009
|
||||
project: trading-platform
|
||||
version: 1.0.0
|
||||
version: 1.1.0
|
||||
dates:
|
||||
created: 2026-01-04
|
||||
updated: 2026-01-04
|
||||
updated: 2026-01-28
|
||||
---
|
||||
|
||||
# OQI-009: Marketplace - Mapa de Documentos
|
||||
@ -17,62 +17,88 @@ dates:
|
||||
## Indice General
|
||||
|
||||
### Documentacion Principal
|
||||
| Documento | Descripcion |
|
||||
|-----------|-------------|
|
||||
| [README.md](./README.md) | Vision general del marketplace |
|
||||
| Documento | Descripcion | Estado |
|
||||
|-----------|-------------|--------|
|
||||
| [README.md](./README.md) | Vision general del marketplace | Completo |
|
||||
|
||||
### Requerimientos Funcionales
|
||||
| ID | Documento | Descripcion |
|
||||
|----|-----------|-------------|
|
||||
| RF-MKT-001 | [Catalogo de Productos](./requerimientos/RF-MKT-001-catalogo.md) | Catalogo central de productos comprables |
|
||||
| RF-MKT-002 | [Senales Premium](./requerimientos/RF-MKT-002-senales-premium.md) | Paquetes de senales ML adicionales |
|
||||
| RF-MKT-003 | [Asesoria](./requerimientos/RF-MKT-003-asesoria.md) | Sesiones 1:1 con asesores certificados |
|
||||
| RF-MKT-004 | [Visualizacion](./requerimientos/RF-MKT-004-visualizacion.md) | Modulo de visualizacion premium |
|
||||
| ID | Documento | Descripcion | Estado |
|
||||
|----|-----------|-------------|--------|
|
||||
| RF-MKT-001 | [Catalogo de Productos](./requerimientos/RF-MKT-001-catalogo.md) | Catalogo central de productos comprables | Completo |
|
||||
| RF-MKT-002 | [Senales Premium](./requerimientos/RF-MKT-002-senales-premium.md) | Paquetes de senales ML adicionales | Completo |
|
||||
| RF-MKT-003 | [Asesoria](./requerimientos/RF-MKT-003-asesoria.md) | Sesiones 1:1 con asesores certificados | Completo |
|
||||
| RF-MKT-004 | [Visualizacion](./requerimientos/RF-MKT-004-visualizacion.md) | Modulo de visualizacion premium | Completo |
|
||||
|
||||
### Historias de Usuario
|
||||
| ID | Documento | Descripcion |
|
||||
|----|-----------|-------------|
|
||||
| US-MKT-001 | [Explorar Catalogo](./historias-usuario/US-MKT-001-explorar-catalogo.md) | Usuario explora productos disponibles |
|
||||
| US-MKT-002 | [Comprar Senales](./historias-usuario/US-MKT-002-comprar-senales.md) | Usuario compra paquete de senales |
|
||||
| US-MKT-003 | [Agendar Asesoria](./historias-usuario/US-MKT-003-agendar-asesoria.md) | Usuario agenda sesion de asesoria |
|
||||
| US-MKT-004 | [Activar Visualizacion](./historias-usuario/US-MKT-004-activar-visualizacion.md) | Usuario activa addon de visualizacion |
|
||||
| ID | Documento | Descripcion | Estado |
|
||||
|----|-----------|-------------|--------|
|
||||
| US-MKT-001 | [Explorar Catalogo](./historias-usuario/US-MKT-001-explorar-catalogo.md) | Usuario explora productos disponibles | Completo |
|
||||
| US-MKT-002 | [Comprar Senales](./historias-usuario/US-MKT-002-comprar-senales.md) | Usuario compra paquete de senales | Completo |
|
||||
| US-MKT-003 | [Agendar Asesoria](./historias-usuario/US-MKT-003-agendar-asesoria.md) | Usuario agenda sesion de asesoria | Completo |
|
||||
| US-MKT-004 | [Activar Visualizacion](./historias-usuario/US-MKT-004-activar-visualizacion.md) | Usuario activa addon de visualizacion | Completo |
|
||||
|
||||
### Especificaciones Tecnicas
|
||||
| ID | Documento | Descripcion |
|
||||
|----|-----------|-------------|
|
||||
| ET-MKT-001 | [Database](./especificaciones/ET-MKT-001-database.md) | Schema y modelos de datos |
|
||||
| ET-MKT-002 | [API](./especificaciones/ET-MKT-002-api.md) | Endpoints REST del marketplace |
|
||||
| ID | Documento | Descripcion | Estado |
|
||||
|----|-----------|-------------|--------|
|
||||
| ET-MKT-001 | [Database Schema](./especificaciones/ET-MKT-001-database.md) | Schema PostgreSQL y modelos de datos | Completo |
|
||||
| ET-MKT-002 | [API REST](./especificaciones/ET-MKT-002-api.md) | Endpoints REST del marketplace | Completo |
|
||||
| ET-MKT-003 | [Frontend](./especificaciones/ET-MKT-003-frontend.md) | Arquitectura y componentes React | Completo |
|
||||
| ET-MKT-004 | [Productos](./especificaciones/ET-MKT-004-productos.md) | Logica de negocio de productos | Nuevo |
|
||||
|
||||
## Dependencias del Modulo
|
||||
|
||||
```
|
||||
OQI-009-marketplace
|
||||
├── depends-on
|
||||
│ ├── OQI-001-fundamentos-auth # Autenticacion de usuarios
|
||||
│ ├── OQI-003-trading-charts # Visualizacion base
|
||||
│ ├── OQI-004-payments # Procesamiento de pagos
|
||||
│ ├── OQI-005-payments-stripe # Procesamiento de pagos
|
||||
│ └── OQI-006-ml-signals # Senales ML
|
||||
└── integrations
|
||||
├── Cal.com # Agendamiento
|
||||
├── Stripe # Pagos y suscripciones
|
||||
├── Cal.com # Agendamiento de citas
|
||||
└── Daily.co # Video llamadas
|
||||
```
|
||||
|
||||
## Estado de Documentacion
|
||||
|
||||
| Seccion | Documentos | Completados | Estado |
|
||||
|---------|------------|-------------|--------|
|
||||
| Requerimientos | 4 | 4 | Draft |
|
||||
| Historias | 4 | 4 | Draft |
|
||||
| Especificaciones | 2 | 2 | Draft |
|
||||
| Seccion | Documentos | Completados | Cobertura |
|
||||
|---------|------------|-------------|-----------|
|
||||
| Requerimientos | 4 | 4 | 100% |
|
||||
| Historias | 4 | 4 | 100% |
|
||||
| Especificaciones | 4 | 4 | 100% |
|
||||
| **Total** | **12** | **12** | **100%** |
|
||||
|
||||
## Progreso de Implementacion
|
||||
|
||||
| Componente | Estado | Notas |
|
||||
|------------|--------|-------|
|
||||
| Database Schema | Definido | Pendiente migracion |
|
||||
| API Backend | Por implementar | Endpoints especificados |
|
||||
| Frontend | Por implementar | Componentes definidos |
|
||||
| Integraciones | Por implementar | Stripe, Cal.com, Daily.co |
|
||||
|
||||
## Trazabilidad
|
||||
|
||||
### Requerimientos -> Historias
|
||||
- RF-MKT-001 -> US-MKT-001
|
||||
- RF-MKT-002 -> US-MKT-002
|
||||
- RF-MKT-003 -> US-MKT-003
|
||||
- RF-MKT-004 -> US-MKT-004
|
||||
| Requerimiento | Historias Asociadas |
|
||||
|---------------|---------------------|
|
||||
| RF-MKT-001 | US-MKT-001 |
|
||||
| RF-MKT-002 | US-MKT-002 |
|
||||
| RF-MKT-003 | US-MKT-003 |
|
||||
| RF-MKT-004 | US-MKT-004 |
|
||||
|
||||
### Historias -> Especificaciones
|
||||
- US-MKT-001, US-MKT-002 -> ET-MKT-001, ET-MKT-002
|
||||
- US-MKT-003 -> ET-MKT-001, ET-MKT-002
|
||||
- US-MKT-004 -> ET-MKT-001, ET-MKT-002
|
||||
| Historia | Especificaciones |
|
||||
|----------|------------------|
|
||||
| US-MKT-001 | ET-MKT-001, ET-MKT-002, ET-MKT-003, ET-MKT-004 |
|
||||
| US-MKT-002 | ET-MKT-001, ET-MKT-002, ET-MKT-004 |
|
||||
| US-MKT-003 | ET-MKT-001, ET-MKT-002, ET-MKT-003 |
|
||||
| US-MKT-004 | ET-MKT-001, ET-MKT-002, ET-MKT-003 |
|
||||
|
||||
## Changelog
|
||||
|
||||
| Fecha | Version | Cambios |
|
||||
|-------|---------|---------|
|
||||
| 2026-01-04 | 1.0.0 | Creacion inicial |
|
||||
| 2026-01-28 | 1.1.0 | Agregado ET-MKT-003, ET-MKT-004, actualizacion estados |
|
||||
|
||||
@ -0,0 +1,620 @@
|
||||
---
|
||||
id: ET-MKT-004
|
||||
title: Especificacion de Productos - Marketplace
|
||||
type: technical-spec
|
||||
status: Active
|
||||
priority: High
|
||||
epic: OQI-009
|
||||
project: trading-platform
|
||||
version: 1.0.0
|
||||
dates:
|
||||
created: 2026-01-28
|
||||
updated: 2026-01-28
|
||||
tags:
|
||||
- marketplace
|
||||
- products
|
||||
- business-logic
|
||||
- pricing
|
||||
---
|
||||
|
||||
# ET-MKT-004: Especificacion de Productos del Marketplace
|
||||
|
||||
## Resumen
|
||||
|
||||
Este documento define la logica de negocio, estructura y comportamiento de los productos del Marketplace. Complementa ET-MKT-001 (schema de base de datos) con reglas de negocio detalladas, ciclos de vida de productos y flujos de activacion.
|
||||
|
||||
---
|
||||
|
||||
## 1. Taxonomia de Productos
|
||||
|
||||
### 1.1 Tipos de Producto
|
||||
|
||||
```typescript
|
||||
enum ProductType {
|
||||
SIGNAL_PACK = 'signal_pack', // Paquetes de senales ML
|
||||
ADVISORY_SESSION = 'advisory_session', // Sesiones de asesoria
|
||||
VISUALIZATION_ADDON = 'visualization_addon', // Indicadores premium
|
||||
COURSE = 'course', // Cursos educativos
|
||||
EBOOK = 'ebook' // Libros digitales
|
||||
}
|
||||
```
|
||||
|
||||
### 1.2 Tipos de Facturacion
|
||||
|
||||
```typescript
|
||||
enum BillingType {
|
||||
ONE_TIME = 'one_time', // Pago unico
|
||||
SUBSCRIPTION = 'subscription' // Suscripcion recurrente
|
||||
}
|
||||
|
||||
enum SubscriptionInterval {
|
||||
MONTHLY = 'monthly', // Renovacion mensual
|
||||
QUARTERLY = 'quarterly', // Renovacion trimestral
|
||||
YEARLY = 'yearly' // Renovacion anual
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Catalogo de Productos Base
|
||||
|
||||
### 2.1 Signal Packs
|
||||
|
||||
#### Basic Signal Pack
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `basic-signal-pack` |
|
||||
| Nombre | Basic Signal Pack |
|
||||
| Precio | $9.00 USD |
|
||||
| Tipo Facturacion | One-time |
|
||||
| Creditos | 50 senales |
|
||||
| Validez | 30 dias |
|
||||
| Confidence Minimo | 80% |
|
||||
| Canales Entrega | Push, Email |
|
||||
|
||||
#### Pro Signal Pack
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `pro-signal-pack` |
|
||||
| Nombre | Pro Signal Pack |
|
||||
| Precio | $29.00 USD |
|
||||
| Tipo Facturacion | One-time |
|
||||
| Creditos | 200 senales |
|
||||
| Validez | 60 dias |
|
||||
| Confidence Minimo | 80% |
|
||||
| Canales Entrega | Push, Email |
|
||||
| Feature Extra | Prioridad en cola |
|
||||
|
||||
#### Unlimited Signals
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `unlimited-signals` |
|
||||
| Nombre | Unlimited Signals |
|
||||
| Precio | $49.00 USD/mes |
|
||||
| Tipo Facturacion | Subscription (monthly) |
|
||||
| Creditos | Ilimitados |
|
||||
| Confidence Minimo | 75% |
|
||||
| Canales Entrega | Push, Email |
|
||||
| Features Extra | Prioridad maxima, Senales exclusivas |
|
||||
|
||||
### 2.2 Advisory Sessions
|
||||
|
||||
#### Sesion 30 Minutos
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `advisory-30` |
|
||||
| Nombre | Asesoria 30 min |
|
||||
| Precio | $49.00 USD |
|
||||
| Duracion | 30 minutos |
|
||||
| Incluye | Video llamada, Notas post-sesion |
|
||||
| Politica Cancelacion | 24h antes: 100% reembolso |
|
||||
|
||||
#### Sesion 60 Minutos
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `advisory-60` |
|
||||
| Nombre | Asesoria 60 min |
|
||||
| Precio | $89.00 USD |
|
||||
| Duracion | 60 minutos |
|
||||
| Incluye | Video llamada, Notas, Plan de accion |
|
||||
| Politica Cancelacion | 24h antes: 100% reembolso |
|
||||
|
||||
#### Sesion 90 Minutos
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `advisory-90` |
|
||||
| Nombre | Asesoria 90 min |
|
||||
| Precio | $119.00 USD |
|
||||
| Duracion | 90 minutos |
|
||||
| Incluye | Video llamada, Notas, Plan de accion, Seguimiento 1 semana |
|
||||
| Politica Cancelacion | 24h antes: 100% reembolso |
|
||||
|
||||
### 2.3 Visualization Premium
|
||||
|
||||
#### Visualization Premium Subscription
|
||||
| Atributo | Valor |
|
||||
|----------|-------|
|
||||
| ID | `visualization-premium` |
|
||||
| Nombre | Visualizacion Premium |
|
||||
| Precio | $19.00 USD/mes |
|
||||
| Tipo Facturacion | Subscription (monthly) |
|
||||
| Features | ml_indicators, unlimited_backtest, unlimited_alerts, multi_chart_4 |
|
||||
|
||||
---
|
||||
|
||||
## 3. Reglas de Negocio
|
||||
|
||||
### 3.1 Reglas de Precio
|
||||
|
||||
```
|
||||
RN-PRD-001: Todo producto activo debe tener precio > 0
|
||||
RN-PRD-002: El precio se almacena siempre en USD
|
||||
RN-PRD-003: Los cambios de precio no afectan compras existentes
|
||||
RN-PRD-004: Los precios de suscripcion aplican en la proxima renovacion
|
||||
RN-PRD-005: Descuentos no pueden reducir precio a 0
|
||||
```
|
||||
|
||||
### 3.2 Reglas de Activacion
|
||||
|
||||
```
|
||||
RN-ACT-001: Signal Packs se activan inmediatamente tras pago exitoso
|
||||
RN-ACT-002: Subscriptions se activan inmediatamente y renuevan automaticamente
|
||||
RN-ACT-003: Advisory Sessions requieren agendamiento post-compra
|
||||
RN-ACT-004: Creditos de senales expiran segun validez del producto
|
||||
RN-ACT-005: Creditos se consumen en orden FIFO (primero los que expiran antes)
|
||||
```
|
||||
|
||||
### 3.3 Reglas de Visibilidad
|
||||
|
||||
```
|
||||
RN-VIS-001: Solo productos con is_active=true aparecen en catalogo
|
||||
RN-VIS-002: Productos featured aparecen primero en listados
|
||||
RN-VIS-003: Productos de categoria inactiva no aparecen en catalogo
|
||||
RN-VIS-004: Usuarios con suscripcion activa ven badge "Activo" en producto
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Ciclo de Vida de Productos
|
||||
|
||||
### 4.1 Estados de Producto
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ DRAFT ──────────> ACTIVE ──────────> ARCHIVED │
|
||||
│ │ │ ▲ │
|
||||
│ │ │ │ │
|
||||
│ └──────────────────┴───────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
| Estado | Descripcion | Visible | Comprable |
|
||||
|--------|-------------|---------|-----------|
|
||||
| DRAFT | En desarrollo | No | No |
|
||||
| ACTIVE | Disponible para compra | Si | Si |
|
||||
| ARCHIVED | Descontinuado | No | No |
|
||||
|
||||
### 4.2 Transiciones Permitidas
|
||||
|
||||
| Desde | Hacia | Condicion |
|
||||
|-------|-------|-----------|
|
||||
| DRAFT | ACTIVE | Precio definido, categoria asignada |
|
||||
| ACTIVE | ARCHIVED | Sin ordenes pendientes |
|
||||
| ARCHIVED | ACTIVE | Sin restricciones |
|
||||
| DRAFT | ARCHIVED | Sin restricciones |
|
||||
|
||||
---
|
||||
|
||||
## 5. Flujos de Activacion por Tipo
|
||||
|
||||
### 5.1 Signal Pack (One-time)
|
||||
|
||||
```
|
||||
Usuario compra
|
||||
│
|
||||
▼
|
||||
Pago procesado (Stripe)
|
||||
│
|
||||
▼
|
||||
Crear registro en purchases
|
||||
│
|
||||
▼
|
||||
Crear registro en signal_credits
|
||||
├── initial_amount = producto.metadata.credits
|
||||
├── remaining_amount = producto.metadata.credits
|
||||
├── expires_at = NOW() + producto.metadata.validity_days
|
||||
└── is_unlimited = false
|
||||
│
|
||||
▼
|
||||
Enviar email de confirmacion
|
||||
│
|
||||
▼
|
||||
Usuario puede consumir senales
|
||||
```
|
||||
|
||||
### 5.2 Subscription (Unlimited Signals)
|
||||
|
||||
```
|
||||
Usuario suscribe
|
||||
│
|
||||
▼
|
||||
Crear customer en Stripe (si no existe)
|
||||
│
|
||||
▼
|
||||
Crear subscription en Stripe
|
||||
│
|
||||
▼
|
||||
Webhook: subscription.created
|
||||
│
|
||||
▼
|
||||
Crear registro en subscriptions
|
||||
├── status = 'active'
|
||||
├── current_period_start = NOW()
|
||||
└── current_period_end = NOW() + 1 month
|
||||
│
|
||||
▼
|
||||
Crear registro en signal_credits
|
||||
├── initial_amount = -1 (ilimitado)
|
||||
├── remaining_amount = -1
|
||||
├── expires_at = subscription.current_period_end
|
||||
└── is_unlimited = true
|
||||
│
|
||||
▼
|
||||
Enviar email de bienvenida
|
||||
│
|
||||
▼
|
||||
[Cada renovacion]
|
||||
Webhook: invoice.paid
|
||||
│
|
||||
▼
|
||||
Actualizar subscription.current_period_end
|
||||
│
|
||||
▼
|
||||
Extender signal_credits.expires_at
|
||||
```
|
||||
|
||||
### 5.3 Advisory Session
|
||||
|
||||
```
|
||||
Usuario compra sesion
|
||||
│
|
||||
▼
|
||||
Pago procesado (Stripe)
|
||||
│
|
||||
▼
|
||||
Crear registro en purchases
|
||||
│
|
||||
▼
|
||||
Usuario redirigido a agendamiento
|
||||
│
|
||||
▼
|
||||
Usuario selecciona asesor
|
||||
│
|
||||
▼
|
||||
Usuario selecciona fecha/hora (Cal.com)
|
||||
│
|
||||
▼
|
||||
Webhook: booking_created
|
||||
│
|
||||
▼
|
||||
Crear registro en advisory_sessions
|
||||
├── status = 'scheduled'
|
||||
├── scheduled_at = fecha seleccionada
|
||||
└── cal_booking_uid = booking.uid
|
||||
│
|
||||
▼
|
||||
Crear sala Daily.co
|
||||
│
|
||||
▼
|
||||
Actualizar advisory_sessions.daily_room_url
|
||||
│
|
||||
▼
|
||||
Enviar confirmacion con link
|
||||
│
|
||||
▼
|
||||
[Dia de la sesion]
|
||||
Ambos se unen a Daily.co
|
||||
│
|
||||
▼
|
||||
Sesion completada
|
||||
│
|
||||
▼
|
||||
Asesor crea notas
|
||||
│
|
||||
▼
|
||||
Usuario puede dejar review
|
||||
```
|
||||
|
||||
### 5.4 Visualization Premium
|
||||
|
||||
```
|
||||
Usuario suscribe
|
||||
│
|
||||
▼
|
||||
Crear subscription en Stripe
|
||||
│
|
||||
▼
|
||||
Webhook: subscription.created
|
||||
│
|
||||
▼
|
||||
Crear registro en subscriptions
|
||||
│
|
||||
▼
|
||||
Crear registro en visualization_subscriptions
|
||||
├── features = producto.metadata.features
|
||||
└── is_active = true
|
||||
│
|
||||
▼
|
||||
Frontend consulta subscription
|
||||
│
|
||||
▼
|
||||
Habilitar indicadores premium en charts
|
||||
│
|
||||
▼
|
||||
[Cancelacion]
|
||||
Subscription cancelada
|
||||
│
|
||||
▼
|
||||
visualization_subscriptions.is_active = false
|
||||
│
|
||||
▼
|
||||
Frontend oculta indicadores premium
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Consumo de Creditos de Senales
|
||||
|
||||
### 6.1 Algoritmo de Consumo
|
||||
|
||||
```sql
|
||||
-- Funcion: Decrementar credito de senal
|
||||
CREATE OR REPLACE FUNCTION marketplace.consume_signal_credit(
|
||||
p_user_id UUID,
|
||||
p_signal_id UUID
|
||||
) RETURNS BOOLEAN AS $$
|
||||
DECLARE
|
||||
v_credit_id UUID;
|
||||
v_remaining INTEGER;
|
||||
v_is_unlimited BOOLEAN;
|
||||
BEGIN
|
||||
-- Buscar credito valido (orden: primero no-ilimitados que expiran antes)
|
||||
SELECT id, remaining_amount, is_unlimited
|
||||
INTO v_credit_id, v_remaining, v_is_unlimited
|
||||
FROM marketplace.signal_credits
|
||||
WHERE user_id = p_user_id
|
||||
AND (remaining_amount > 0 OR is_unlimited = true)
|
||||
AND (expires_at IS NULL OR expires_at > NOW())
|
||||
ORDER BY
|
||||
is_unlimited ASC, -- Primero consumibles
|
||||
expires_at ASC NULLS LAST -- Primero los que expiran antes
|
||||
LIMIT 1
|
||||
FOR UPDATE;
|
||||
|
||||
IF v_credit_id IS NULL THEN
|
||||
RETURN FALSE; -- Sin creditos disponibles
|
||||
END IF;
|
||||
|
||||
-- Decrementar solo si no es ilimitado
|
||||
IF NOT v_is_unlimited THEN
|
||||
UPDATE marketplace.signal_credits
|
||||
SET remaining_amount = remaining_amount - 1,
|
||||
updated_at = NOW()
|
||||
WHERE id = v_credit_id;
|
||||
END IF;
|
||||
|
||||
-- Registrar entrega
|
||||
INSERT INTO marketplace.signal_deliveries
|
||||
(user_id, signal_id, credit_id, delivery_channel)
|
||||
VALUES
|
||||
(p_user_id, p_signal_id, v_credit_id, 'both');
|
||||
|
||||
RETURN TRUE;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
```
|
||||
|
||||
### 6.2 Consulta de Balance
|
||||
|
||||
```typescript
|
||||
interface CreditBalance {
|
||||
totalAvailable: number; // -1 si ilimitado
|
||||
hasUnlimited: boolean;
|
||||
credits: CreditDetail[];
|
||||
usage: {
|
||||
today: number;
|
||||
thisWeek: number;
|
||||
thisMonth: number;
|
||||
};
|
||||
}
|
||||
|
||||
interface CreditDetail {
|
||||
id: string;
|
||||
productName: string;
|
||||
initialAmount: number;
|
||||
remainingAmount: number;
|
||||
expiresAt: Date | null;
|
||||
isUnlimited: boolean;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Metadata de Productos
|
||||
|
||||
### 7.1 Estructura por Tipo
|
||||
|
||||
#### Signal Pack Metadata
|
||||
```json
|
||||
{
|
||||
"credits": 200,
|
||||
"validity_days": 60,
|
||||
"min_confidence": 80,
|
||||
"delivery_channels": ["push", "email"],
|
||||
"priority": "high"
|
||||
}
|
||||
```
|
||||
|
||||
#### Advisory Session Metadata
|
||||
```json
|
||||
{
|
||||
"duration_minutes": 60,
|
||||
"includes": ["video", "notes", "action_plan"],
|
||||
"cancellation_policy": {
|
||||
"full_refund_hours": 24,
|
||||
"partial_refund_hours": 12,
|
||||
"partial_refund_percent": 50
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Visualization Addon Metadata
|
||||
```json
|
||||
{
|
||||
"features": [
|
||||
"ml_indicators",
|
||||
"unlimited_backtest",
|
||||
"unlimited_alerts",
|
||||
"multi_chart_4"
|
||||
],
|
||||
"indicators": [
|
||||
"ml_range_predictor",
|
||||
"ml_amd_detector",
|
||||
"ml_signal_overlay"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Validaciones
|
||||
|
||||
### 8.1 Validacion de Compra
|
||||
|
||||
```typescript
|
||||
interface PurchaseValidation {
|
||||
isValid: boolean;
|
||||
errors: PurchaseError[];
|
||||
}
|
||||
|
||||
enum PurchaseError {
|
||||
PRODUCT_NOT_FOUND = 'Producto no encontrado',
|
||||
PRODUCT_INACTIVE = 'Producto no disponible',
|
||||
ALREADY_SUBSCRIBED = 'Ya tienes suscripcion activa',
|
||||
PAYMENT_METHOD_INVALID = 'Metodo de pago invalido',
|
||||
INSUFFICIENT_FUNDS = 'Fondos insuficientes',
|
||||
USER_NOT_VERIFIED = 'Usuario no verificado'
|
||||
}
|
||||
|
||||
function validatePurchase(userId: string, productId: string): PurchaseValidation {
|
||||
const product = getProduct(productId);
|
||||
|
||||
if (!product) {
|
||||
return { isValid: false, errors: [PurchaseError.PRODUCT_NOT_FOUND] };
|
||||
}
|
||||
|
||||
if (!product.isActive) {
|
||||
return { isValid: false, errors: [PurchaseError.PRODUCT_INACTIVE] };
|
||||
}
|
||||
|
||||
if (product.billingType === 'subscription') {
|
||||
const existing = getActiveSubscription(userId, productId);
|
||||
if (existing) {
|
||||
return { isValid: false, errors: [PurchaseError.ALREADY_SUBSCRIBED] };
|
||||
}
|
||||
}
|
||||
|
||||
return { isValid: true, errors: [] };
|
||||
}
|
||||
```
|
||||
|
||||
### 8.2 Validacion de Consumo de Senal
|
||||
|
||||
```typescript
|
||||
function canConsumeSignal(userId: string): boolean {
|
||||
const balance = getCreditBalance(userId);
|
||||
return balance.hasUnlimited || balance.totalAvailable > 0;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Integracion con Stripe
|
||||
|
||||
### 9.1 Mapeo de Productos
|
||||
|
||||
| Producto Local | Stripe Product | Stripe Price |
|
||||
|----------------|----------------|--------------|
|
||||
| basic-signal-pack | prod_BasicSignals | price_9USD_once |
|
||||
| pro-signal-pack | prod_ProSignals | price_29USD_once |
|
||||
| unlimited-signals | prod_UnlimitedSignals | price_49USD_monthly |
|
||||
| advisory-30 | prod_Advisory30 | price_49USD_once |
|
||||
| advisory-60 | prod_Advisory60 | price_89USD_once |
|
||||
| advisory-90 | prod_Advisory90 | price_119USD_once |
|
||||
| visualization-premium | prod_VisPremium | price_19USD_monthly |
|
||||
|
||||
### 9.2 Webhooks Relevantes
|
||||
|
||||
| Evento | Accion |
|
||||
|--------|--------|
|
||||
| payment_intent.succeeded | Activar producto comprado |
|
||||
| customer.subscription.created | Crear registro de suscripcion |
|
||||
| customer.subscription.updated | Actualizar periodo |
|
||||
| customer.subscription.deleted | Marcar cancelada |
|
||||
| invoice.paid | Renovar creditos/acceso |
|
||||
| invoice.payment_failed | Notificar usuario, reintentar |
|
||||
|
||||
---
|
||||
|
||||
## 10. Metricas y Analytics
|
||||
|
||||
### 10.1 KPIs por Producto
|
||||
|
||||
```sql
|
||||
-- Ventas por producto (ultimo mes)
|
||||
SELECT
|
||||
p.name,
|
||||
p.type,
|
||||
COUNT(pu.id) as total_sales,
|
||||
SUM(pu.total_price) as revenue,
|
||||
AVG(pu.total_price) as avg_order_value
|
||||
FROM marketplace.products p
|
||||
JOIN marketplace.purchases pu ON p.id = pu.product_id
|
||||
WHERE pu.status = 'completed'
|
||||
AND pu.completed_at > NOW() - INTERVAL '30 days'
|
||||
GROUP BY p.id, p.name, p.type
|
||||
ORDER BY revenue DESC;
|
||||
```
|
||||
|
||||
### 10.2 Metricas de Senales
|
||||
|
||||
```sql
|
||||
-- Utilizacion de creditos
|
||||
SELECT
|
||||
u.id as user_id,
|
||||
SUM(CASE WHEN sc.is_unlimited THEN 0 ELSE sc.initial_amount END) as credits_purchased,
|
||||
SUM(CASE WHEN sc.is_unlimited THEN 0 ELSE sc.remaining_amount END) as credits_remaining,
|
||||
COUNT(sd.id) as signals_consumed
|
||||
FROM auth.users u
|
||||
LEFT JOIN marketplace.signal_credits sc ON u.id = sc.user_id
|
||||
LEFT JOIN marketplace.signal_deliveries sd ON u.id = sd.user_id
|
||||
GROUP BY u.id;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. Referencias
|
||||
|
||||
- [ET-MKT-001: Database Schema](./ET-MKT-001-database.md)
|
||||
- [ET-MKT-002: API REST](./ET-MKT-002-api.md)
|
||||
- [ET-MKT-003: Frontend](./ET-MKT-003-frontend.md)
|
||||
- [RF-MKT-001: Catalogo](../requerimientos/RF-MKT-001-catalogo.md)
|
||||
- [RF-MKT-002: Senales Premium](../requerimientos/RF-MKT-002-senales-premium.md)
|
||||
|
||||
---
|
||||
|
||||
**Documento Generado:** 2026-01-28
|
||||
**Estado:** Activo
|
||||
**Proxima Revision:** Tras inicio de implementacion
|
||||
247
docs/02-definicion-modulos/OQI-010-mt4-gateway/README.md
Normal file
247
docs/02-definicion-modulos/OQI-010-mt4-gateway/README.md
Normal file
@ -0,0 +1,247 @@
|
||||
---
|
||||
id: "README"
|
||||
title: "MT4 Gateway Integration"
|
||||
type: "Documentation"
|
||||
project: "trading-platform"
|
||||
version: "0.1.0"
|
||||
created_date: "2026-01-28"
|
||||
updated_date: "2026-01-28"
|
||||
status: "NOT_FUNCTIONAL"
|
||||
progress: 15
|
||||
---
|
||||
|
||||
# OQI-010: MT4 Gateway Integration
|
||||
|
||||
> **ESTADO: NO FUNCIONAL**
|
||||
>
|
||||
> Este modulo esta en fase inicial de desarrollo (15% completado).
|
||||
> NO esta listo para uso en produccion ni desarrollo activo.
|
||||
> Requiere trabajo significativo antes de ser operativo.
|
||||
|
||||
---
|
||||
|
||||
## Resumen Ejecutivo
|
||||
|
||||
La epica OQI-010 implementa la integracion con MetaTrader 4 (MT4) para permitir trading automatizado en mercados forex y CFDs. El objetivo es exponer las capacidades de MT4 como herramientas MCP (Model Context Protocol) para que agentes de IA puedan ejecutar operaciones de trading.
|
||||
|
||||
---
|
||||
|
||||
## Metadata
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| **ID** | OQI-010 |
|
||||
| **Nombre** | MT4 Gateway Integration |
|
||||
| **Modulo** | mt4-gateway |
|
||||
| **Fase** | Pre-MVP (Incubacion) |
|
||||
| **Prioridad** | P2 |
|
||||
| **Estado** | NO FUNCIONAL |
|
||||
| **Progreso** | 15% |
|
||||
| **Story Points** | 55 SP (estimado) |
|
||||
|
||||
---
|
||||
|
||||
## Estado Actual
|
||||
|
||||
### Componentes Existentes
|
||||
|
||||
| Componente | Ruta | Estado |
|
||||
|------------|------|--------|
|
||||
| MCP Server Skeleton | `mcp-mt4-connector/` | Parcial |
|
||||
| Express Server | `mcp-mt4-connector/src/index.ts` | Funcional (sin MT4) |
|
||||
| Tool Definitions | `mcp-mt4-connector/src/tools/` | Definidos |
|
||||
| MT4 Client | `mcp-mt4-connector/src/services/mt4-client.ts` | Mock |
|
||||
|
||||
### Funcionalidad Actual
|
||||
|
||||
- **Servidor Express:** El servidor MCP esta implementado y puede iniciar
|
||||
- **Endpoints de Health:** `/health` y `/tools` funcionan
|
||||
- **Tool Schemas:** Definidos pero NO conectados a MT4 real
|
||||
- **MT4 Gateway:** NO IMPLEMENTADO - requiere EA Bridge
|
||||
|
||||
---
|
||||
|
||||
## Razones del Bloqueo
|
||||
|
||||
### 1. Falta de MT4 Gateway (Critico)
|
||||
|
||||
El `mcp-mt4-connector` requiere un servicio intermedio (`mt4-gateway`) que actue como puente entre el servidor MCP y el terminal MT4. Este componente NO existe.
|
||||
|
||||
```
|
||||
[MCP Server] --> [MT4 Gateway] --> [MT4 Terminal + EA]
|
||||
^
|
||||
|
|
||||
NO IMPLEMENTADO
|
||||
```
|
||||
|
||||
**Requisitos del MT4 Gateway:**
|
||||
- Servidor HTTP/WebSocket que reciba comandos del MCP
|
||||
- Expert Advisor (EA) en MQL4 para MT4
|
||||
- Comunicacion bidireccional con el terminal MT4
|
||||
- Manejo de sesiones y autenticacion
|
||||
|
||||
### 2. Expert Advisor (EA) No Desarrollado
|
||||
|
||||
Se necesita un Expert Advisor personalizado en MQL4 que:
|
||||
- Reciba comandos via DLL o socket
|
||||
- Ejecute operaciones en MT4
|
||||
- Retorne resultados y estado de cuenta
|
||||
- Maneje errores y reconexion
|
||||
|
||||
### 3. Dependencias Externas
|
||||
|
||||
| Dependencia | Estado | Bloqueante |
|
||||
|-------------|--------|------------|
|
||||
| MT4 Terminal | Requiere instalacion local | Si |
|
||||
| Cuenta Demo MT4 | Requiere broker | Si |
|
||||
| EA Bridge | No desarrollado | Si |
|
||||
| Windows/Wine | MT4 solo corre en Windows | Si |
|
||||
|
||||
### 4. Infraestructura de Red
|
||||
|
||||
- MT4 requiere conexion persistente al broker
|
||||
- El EA necesita comunicacion local con el gateway
|
||||
- Configuracion de firewalls y puertos
|
||||
- SSL/TLS para seguridad
|
||||
|
||||
---
|
||||
|
||||
## Arquitectura Propuesta
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────────────────────────────┐
|
||||
│ OQI-010 MT4 GATEWAY ARCHITECTURE │
|
||||
├────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ LLM TRADING AGENT │ │
|
||||
│ │ (Via MCP Protocol - OQI-010-llm-trading-integration) │ │
|
||||
│ └────────────────────────────────┬────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ MCP MT4 CONNECTOR (:3605) │ │
|
||||
│ │ [PARCIALMENTE IMPLEMENTADO] │ │
|
||||
│ │ │ │
|
||||
│ │ Tools: │ │
|
||||
│ │ - mt4_get_account (definido, no funcional) │ │
|
||||
│ │ - mt4_get_positions (definido, no funcional) │ │
|
||||
│ │ - mt4_get_quote (definido, no funcional) │ │
|
||||
│ │ - mt4_execute_trade (definido, no funcional) │ │
|
||||
│ │ - mt4_close_position (definido, no funcional) │ │
|
||||
│ │ - mt4_modify_position (definido, no funcional) │ │
|
||||
│ └────────────────────────────────┬────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ MT4 GATEWAY (:8081) │ │
|
||||
│ │ [NO IMPLEMENTADO] │ │
|
||||
│ │ │ │
|
||||
│ │ - HTTP/REST API │ │
|
||||
│ │ - WebSocket para streaming │ │
|
||||
│ │ - Autenticacion por token │ │
|
||||
│ │ - Queue de comandos │ │
|
||||
│ │ - Persistencia de estado │ │
|
||||
│ └────────────────────────────────┬────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ [Comunicacion Local] │
|
||||
│ (DLL/Socket/Named Pipe) │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ MT4 TERMINAL (Windows) │ │
|
||||
│ │ [REQUIERE INSTALACION] │ │
|
||||
│ │ │ │
|
||||
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ EXPERT ADVISOR (EA) │ │ │
|
||||
│ │ │ [NO DESARROLLADO] │ │ │
|
||||
│ │ │ │ │ │
|
||||
│ │ │ - MQL4 Script │ │ │
|
||||
│ │ │ - Socket Client para Gateway │ │ │
|
||||
│ │ │ - Manejo de OrderSend/OrderModify/OrderClose │ │ │
|
||||
│ │ │ - Reporting de AccountInfo │ │ │
|
||||
│ │ └───────────────────────────────────────────────────────────────┘ │ │
|
||||
│ └────────────────────────────────┬────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ BROKER MT4 SERVER │ │
|
||||
│ │ (Externo - e.g., IC Markets, Pepperstone) │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Herramientas MCP Definidas
|
||||
|
||||
| Tool | Descripcion | Nivel de Riesgo | Estado |
|
||||
|------|-------------|-----------------|--------|
|
||||
| `mt4_get_account` | Obtener balance, equity, margin | Bajo | Definido |
|
||||
| `mt4_get_positions` | Listar posiciones abiertas | Bajo | Definido |
|
||||
| `mt4_get_quote` | Obtener precio bid/ask actual | Bajo | Definido |
|
||||
| `mt4_execute_trade` | Ejecutar orden BUY/SELL | ALTO | Definido |
|
||||
| `mt4_close_position` | Cerrar una posicion | ALTO | Definido |
|
||||
| `mt4_modify_position` | Modificar SL/TP | Medio | Definido |
|
||||
|
||||
---
|
||||
|
||||
## Dependencias
|
||||
|
||||
### Esta epica depende de:
|
||||
|
||||
| Epica/Modulo | Estado | Bloqueante | Razon |
|
||||
|--------------|--------|------------|-------|
|
||||
| OQI-001 Auth | Completado | No | Autenticacion opcional |
|
||||
| MT4 Gateway Service | No existe | SI | Core dependency |
|
||||
| Expert Advisor | No existe | SI | Ejecucion en MT4 |
|
||||
|
||||
### Esta epica habilita:
|
||||
|
||||
| Epica/Modulo | Razon |
|
||||
|--------------|-------|
|
||||
| OQI-010-llm-trading-integration | Permite al LLM operar en MT4 |
|
||||
| Trading automatizado | Forex/CFD via agentes |
|
||||
|
||||
---
|
||||
|
||||
## Riesgos
|
||||
|
||||
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
||||
|--------|--------------|---------|------------|
|
||||
| Complejidad del EA | Alta | Alto | Usar librerias existentes |
|
||||
| Latencia de ejecucion | Media | Alto | Optimizar comunicacion |
|
||||
| Errores de trading | Alta | Critico | Paper trading primero, limits |
|
||||
| Desconexiones MT4 | Media | Alto | Reconnect logic, heartbeat |
|
||||
| Cambios en API broker | Baja | Medio | Abstraccion de broker |
|
||||
|
||||
---
|
||||
|
||||
## Entregables Pendientes
|
||||
|
||||
| Entregable | Prioridad | Esfuerzo | Estado |
|
||||
|------------|-----------|----------|--------|
|
||||
| MT4 Gateway Service | P0 | 13 SP | No iniciado |
|
||||
| Expert Advisor MQL4 | P0 | 13 SP | No iniciado |
|
||||
| Integracion MCP-Gateway | P0 | 8 SP | Parcial |
|
||||
| Tests de integracion | P1 | 5 SP | No iniciado |
|
||||
| Documentacion de deploy | P1 | 3 SP | No iniciado |
|
||||
| Paper trading mode | P0 | 8 SP | No iniciado |
|
||||
| Monitoring/Alertas | P2 | 5 SP | No iniciado |
|
||||
|
||||
---
|
||||
|
||||
## Referencias
|
||||
|
||||
- [STATUS.md](./STATUS.md) - Estado detallado del modulo
|
||||
- [ROADMAP-MT4.md](./ROADMAP-MT4.md) - Plan de implementacion
|
||||
- [Especificaciones](./especificaciones/) - Requisitos tecnicos
|
||||
- [MCP MT4 Connector README](../../../mcp-mt4-connector/README.md)
|
||||
- [MCP Protocol](https://modelcontextprotocol.io)
|
||||
|
||||
---
|
||||
|
||||
*Documento creado: 2026-01-28*
|
||||
*Ultima actualizacion: 2026-01-28*
|
||||
*Estado: NO FUNCIONAL*
|
||||
360
docs/02-definicion-modulos/OQI-010-mt4-gateway/ROADMAP-MT4.md
Normal file
360
docs/02-definicion-modulos/OQI-010-mt4-gateway/ROADMAP-MT4.md
Normal file
@ -0,0 +1,360 @@
|
||||
---
|
||||
id: "ROADMAP-MT4"
|
||||
title: "Roadmap de Implementacion MT4 Gateway"
|
||||
type: "Roadmap"
|
||||
project: "trading-platform"
|
||||
epic: "OQI-010"
|
||||
version: "0.1.0"
|
||||
created_date: "2026-01-28"
|
||||
updated_date: "2026-01-28"
|
||||
---
|
||||
|
||||
# ROADMAP: MT4 Gateway Implementation
|
||||
|
||||
> **Nota:** Este roadmap es un plan propuesto. La implementacion esta
|
||||
> actualmente PAUSADA y requiere decision de prioridad antes de iniciar.
|
||||
|
||||
---
|
||||
|
||||
## Vision General
|
||||
|
||||
Implementar una integracion completa con MetaTrader 4 que permita:
|
||||
1. Consultar informacion de cuenta y posiciones
|
||||
2. Obtener cotizaciones en tiempo real
|
||||
3. Ejecutar operaciones de trading (buy/sell)
|
||||
4. Gestionar posiciones (modificar SL/TP, cerrar)
|
||||
5. Integracion con agentes LLM via MCP
|
||||
|
||||
---
|
||||
|
||||
## Fases de Implementacion
|
||||
|
||||
### Fase 0: Preparacion del Ambiente (1 semana)
|
||||
|
||||
**Objetivo:** Establecer el ambiente de desarrollo necesario
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo | Responsable |
|
||||
|-------|-----------|----------|-------------|
|
||||
| Instalar MT4 Terminal en maquina de desarrollo | P0 | 1 dia | - |
|
||||
| Crear cuenta demo con broker compatible | P0 | 1 dia | - |
|
||||
| Configurar MetaEditor para desarrollo MQL4 | P0 | 0.5 dias | - |
|
||||
| Documentar proceso de setup | P1 | 0.5 dias | - |
|
||||
| Crear Docker container para gateway (opcional) | P2 | 2 dias | - |
|
||||
|
||||
**Entregables:**
|
||||
- [ ] MT4 instalado y conectado a cuenta demo
|
||||
- [ ] MetaEditor funcional
|
||||
- [ ] Credenciales de cuenta demo documentadas (seguras)
|
||||
|
||||
**Brokers recomendados para cuenta demo:**
|
||||
- IC Markets (bajo spread, MT4 estable)
|
||||
- Pepperstone
|
||||
- OANDA
|
||||
- FXCM
|
||||
|
||||
---
|
||||
|
||||
### Fase 1: MT4 Gateway Service (2-3 semanas)
|
||||
|
||||
**Objetivo:** Implementar el servicio intermediario entre MCP y MT4
|
||||
|
||||
#### Semana 1: Core del Gateway
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Crear proyecto Node.js/TypeScript | P0 | 0.5 dias |
|
||||
| Implementar servidor HTTP/REST | P0 | 1 dia |
|
||||
| Definir API endpoints | P0 | 1 dia |
|
||||
| Implementar autenticacion por token | P0 | 1 dia |
|
||||
| Crear estructura de comandos | P0 | 1 dia |
|
||||
|
||||
**API Endpoints propuestos:**
|
||||
```
|
||||
POST /api/v1/auth/login
|
||||
GET /api/v1/account
|
||||
GET /api/v1/positions
|
||||
GET /api/v1/quote/:symbol
|
||||
POST /api/v1/orders
|
||||
DELETE /api/v1/orders/:ticket
|
||||
PATCH /api/v1/positions/:ticket
|
||||
GET /api/v1/history
|
||||
WS /ws/stream
|
||||
```
|
||||
|
||||
#### Semana 2: Comunicacion con EA
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Disenar protocolo de comunicacion EA-Gateway | P0 | 1 dia |
|
||||
| Implementar socket server para EA | P0 | 2 dias |
|
||||
| Implementar command queue | P0 | 1 dia |
|
||||
| Manejar respuestas asincronas | P0 | 1 dia |
|
||||
|
||||
**Protocolo propuesto (JSON sobre TCP):**
|
||||
```json
|
||||
// Request (Gateway -> EA)
|
||||
{
|
||||
"id": "uuid",
|
||||
"command": "EXECUTE_TRADE",
|
||||
"params": {
|
||||
"symbol": "XAUUSD",
|
||||
"action": "BUY",
|
||||
"lots": 0.1,
|
||||
"sl": 2640,
|
||||
"tp": 2680
|
||||
}
|
||||
}
|
||||
|
||||
// Response (EA -> Gateway)
|
||||
{
|
||||
"id": "uuid",
|
||||
"success": true,
|
||||
"ticket": 12345678,
|
||||
"data": {
|
||||
"openPrice": 2650.50,
|
||||
"openTime": "2026-01-28T10:30:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Semana 3: Testing y Hardening
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Unit tests para gateway | P0 | 2 dias |
|
||||
| Integration tests con mocks | P0 | 1 dia |
|
||||
| Error handling robusto | P0 | 1 dia |
|
||||
| Logging y monitoring | P1 | 1 dia |
|
||||
|
||||
**Entregables Fase 1:**
|
||||
- [ ] Servicio gateway funcional en puerto 8081
|
||||
- [ ] API REST documentada
|
||||
- [ ] Socket server para comunicacion con EA
|
||||
- [ ] Tests con cobertura >70%
|
||||
|
||||
---
|
||||
|
||||
### Fase 2: Expert Advisor (EA) (2-3 semanas)
|
||||
|
||||
**Objetivo:** Desarrollar el Expert Advisor que ejecutara operaciones en MT4
|
||||
|
||||
#### Semana 1: EA Base
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Crear estructura base del EA | P0 | 1 dia |
|
||||
| Implementar cliente socket | P0 | 2 dias |
|
||||
| Parsear comandos JSON | P0 | 1 dia |
|
||||
| Implementar heartbeat | P0 | 1 dia |
|
||||
|
||||
**Estructura del EA:**
|
||||
```
|
||||
MT4BridgeEA/
|
||||
├── MT4BridgeEA.mq4 # EA principal
|
||||
├── SocketLib.mqh # Libreria de socket
|
||||
├── JsonParser.mqh # Parser JSON
|
||||
├── CommandHandler.mqh # Manejador de comandos
|
||||
└── README.md # Documentacion
|
||||
```
|
||||
|
||||
#### Semana 2: Operaciones de Trading
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Implementar OrderSend (market) | P0 | 1 dia |
|
||||
| Implementar OrderSend (pending) | P0 | 1 dia |
|
||||
| Implementar OrderModify | P0 | 1 dia |
|
||||
| Implementar OrderClose | P0 | 1 dia |
|
||||
| Manejar errores MT4 | P0 | 1 dia |
|
||||
|
||||
**Codigos de error MT4 a manejar:**
|
||||
- ERR_NO_ERROR (0)
|
||||
- ERR_COMMON_ERROR (2)
|
||||
- ERR_INVALID_TRADE_PARAMETERS (3)
|
||||
- ERR_SERVER_BUSY (4)
|
||||
- ERR_OLD_VERSION (5)
|
||||
- ERR_NO_CONNECTION (6)
|
||||
- ERR_NOT_ENOUGH_MONEY (134)
|
||||
- ERR_TRADE_TOO_MANY_ORDERS (148)
|
||||
|
||||
#### Semana 3: Reporting y Reconexion
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Implementar AccountInfo | P0 | 0.5 dias |
|
||||
| Implementar PositionList | P0 | 0.5 dias |
|
||||
| Implementar QuoteStream | P1 | 1 dia |
|
||||
| Implementar auto-reconexion | P0 | 1 dia |
|
||||
| Testing manual en cuenta demo | P0 | 2 dias |
|
||||
|
||||
**Entregables Fase 2:**
|
||||
- [ ] Expert Advisor instalable en MT4
|
||||
- [ ] Todas las operaciones de trading funcionales
|
||||
- [ ] Auto-reconexion implementada
|
||||
- [ ] Documentacion de instalacion
|
||||
|
||||
---
|
||||
|
||||
### Fase 3: Integracion MCP (1-2 semanas)
|
||||
|
||||
**Objetivo:** Conectar el mcp-mt4-connector existente con el gateway real
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Actualizar mt4-client.ts para gateway real | P0 | 1 dia |
|
||||
| Implementar manejo de errores completo | P0 | 1 dia |
|
||||
| Agregar retry logic | P0 | 0.5 dias |
|
||||
| Agregar timeout handling | P0 | 0.5 dias |
|
||||
| Tests de integracion E2E | P0 | 2 dias |
|
||||
| Documentar configuracion | P1 | 0.5 dias |
|
||||
|
||||
**Entregables Fase 3:**
|
||||
- [ ] mcp-mt4-connector conectado a gateway real
|
||||
- [ ] Todos los tools funcionales con MT4 real
|
||||
- [ ] Tests E2E pasando
|
||||
|
||||
---
|
||||
|
||||
### Fase 4: Paper Trading Mode (1 semana)
|
||||
|
||||
**Objetivo:** Implementar modo de simulacion para pruebas seguras
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Disenar modo paper trading | P0 | 0.5 dias |
|
||||
| Implementar balance virtual | P0 | 1 dia |
|
||||
| Simular ejecucion de ordenes | P0 | 1 dia |
|
||||
| Tracking de P&L virtual | P0 | 1 dia |
|
||||
| Switch entre paper/real | P0 | 0.5 dias |
|
||||
|
||||
**Entregables Fase 4:**
|
||||
- [ ] Modo paper trading funcional
|
||||
- [ ] Flag de configuracion para activar
|
||||
- [ ] Metricas de paper trading
|
||||
|
||||
---
|
||||
|
||||
### Fase 5: Productionization (1-2 semanas)
|
||||
|
||||
**Objetivo:** Preparar para uso en produccion
|
||||
|
||||
| Tarea | Prioridad | Esfuerzo |
|
||||
|-------|-----------|----------|
|
||||
| Implementar rate limiting | P0 | 1 dia |
|
||||
| Agregar risk limits | P0 | 1 dia |
|
||||
| Implementar circuit breaker | P0 | 1 dia |
|
||||
| Configurar alertas | P1 | 1 dia |
|
||||
| Documentacion de operaciones | P1 | 1 dia |
|
||||
| Runbook para incidentes | P1 | 1 dia |
|
||||
|
||||
**Risk Limits propuestos:**
|
||||
- Max posiciones abiertas: 5
|
||||
- Max lots por orden: 1.0
|
||||
- Max drawdown diario: 5%
|
||||
- Cooldown entre trades: 60 segundos
|
||||
|
||||
**Entregables Fase 5:**
|
||||
- [ ] Rate limiting configurado
|
||||
- [ ] Risk limits implementados
|
||||
- [ ] Circuit breaker funcional
|
||||
- [ ] Documentacion de operaciones
|
||||
|
||||
---
|
||||
|
||||
## Timeline Estimado
|
||||
|
||||
```
|
||||
Fase 0: Preparacion |====| (1 sem)
|
||||
Fase 1: MT4 Gateway |============| (3 sem)
|
||||
Fase 2: Expert Advisor |============| (3 sem)
|
||||
Fase 3: Integracion MCP |====| (1.5 sem)
|
||||
Fase 4: Paper Trading |===| (1 sem)
|
||||
Fase 5: Production |===| (1.5 sem)
|
||||
|----|----|----|----|----|----|----|----|----|----|
|
||||
S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11
|
||||
|
||||
Total estimado: 10-11 semanas
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recursos Requeridos
|
||||
|
||||
### Personal
|
||||
- 1 Desarrollador Senior (TypeScript + MQL4)
|
||||
- 0.5 QA Engineer (testing)
|
||||
|
||||
### Infraestructura
|
||||
- Maquina Windows para MT4 (o VM)
|
||||
- Cuenta demo con broker
|
||||
- CI/CD para gateway
|
||||
|
||||
### Dependencias Externas
|
||||
- Broker MT4 (cuenta demo gratuita)
|
||||
- Documentacion MQL4 (gratis)
|
||||
|
||||
---
|
||||
|
||||
## Criterios de Exito
|
||||
|
||||
| Metrica | Target | Medicion |
|
||||
|---------|--------|----------|
|
||||
| Latencia de ejecucion | <500ms | Promedio en paper trading |
|
||||
| Uptime del gateway | >99% | Monitoring |
|
||||
| Precision de ordenes | 100% | Ordenes ejecutadas vs solicitadas |
|
||||
| Cobertura de tests | >70% | Jest/pytest coverage |
|
||||
|
||||
---
|
||||
|
||||
## Riesgos y Mitigaciones
|
||||
|
||||
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
||||
|--------|--------------|---------|------------|
|
||||
| Complejidad MQL4 | Alta | Alto | Documentacion, pruebas incrementales |
|
||||
| Latencia alta | Media | Medio | Optimizar comunicacion, caché |
|
||||
| Desconexiones | Media | Alto | Auto-reconnect, alertas |
|
||||
| Errores de trading | Alta | Critico | Paper trading obligatorio primero |
|
||||
|
||||
---
|
||||
|
||||
## Decision Gates
|
||||
|
||||
### Gate 1: Fin de Fase 1
|
||||
- [ ] Gateway responde a requests
|
||||
- [ ] Socket server acepta conexiones
|
||||
- [ ] Tests unitarios pasan
|
||||
|
||||
### Gate 2: Fin de Fase 2
|
||||
- [ ] EA se conecta al gateway
|
||||
- [ ] Operaciones basicas funcionan en demo
|
||||
- [ ] Reconexion automatica funciona
|
||||
|
||||
### Gate 3: Fin de Fase 3
|
||||
- [ ] MCP tools ejecutan trades reales
|
||||
- [ ] E2E tests pasan
|
||||
- [ ] Documentacion completa
|
||||
|
||||
### Gate 4: Ready for Production
|
||||
- [ ] Paper trading validado
|
||||
- [ ] Risk limits funcionando
|
||||
- [ ] Runbook creado
|
||||
|
||||
---
|
||||
|
||||
## Proximos Pasos Inmediatos
|
||||
|
||||
Si se decide priorizar esta epica:
|
||||
|
||||
1. **Semana 1:**
|
||||
- Asignar desarrollador responsable
|
||||
- Setup ambiente de desarrollo
|
||||
- Crear cuenta demo con broker
|
||||
|
||||
2. **Semana 2:**
|
||||
- Iniciar desarrollo del gateway
|
||||
- Kick-off de arquitectura detallada
|
||||
|
||||
---
|
||||
|
||||
*Este roadmap sera actualizado conforme avance la implementacion.*
|
||||
*Ultima actualizacion: 2026-01-28*
|
||||
180
docs/02-definicion-modulos/OQI-010-mt4-gateway/STATUS.md
Normal file
180
docs/02-definicion-modulos/OQI-010-mt4-gateway/STATUS.md
Normal file
@ -0,0 +1,180 @@
|
||||
---
|
||||
id: "STATUS"
|
||||
title: "Estado del Modulo MT4 Gateway"
|
||||
type: "Status Report"
|
||||
project: "trading-platform"
|
||||
epic: "OQI-010"
|
||||
version: "0.1.0"
|
||||
created_date: "2026-01-28"
|
||||
updated_date: "2026-01-28"
|
||||
---
|
||||
|
||||
# STATUS: OQI-010 MT4 Gateway
|
||||
|
||||
> **ESTADO GLOBAL: NO FUNCIONAL**
|
||||
> **PROGRESO: 15%**
|
||||
> **BLOQUEADO: SI**
|
||||
|
||||
---
|
||||
|
||||
## Resumen de Estado
|
||||
|
||||
| Aspecto | Estado | Detalles |
|
||||
|---------|--------|----------|
|
||||
| **Funcionalidad** | NO FUNCIONAL | No puede ejecutar trades en MT4 |
|
||||
| **Progreso** | 15% | Solo skeleton del MCP server |
|
||||
| **Bloqueante** | SI | Falta MT4 Gateway y Expert Advisor |
|
||||
| **Ultima actividad** | 2026-01-20 | Commit inicial del mcp-mt4-connector |
|
||||
| **Siguiente hito** | MT4 Gateway | Servicio intermedio requerido |
|
||||
|
||||
---
|
||||
|
||||
## Estado por Componente
|
||||
|
||||
### 1. MCP MT4 Connector
|
||||
|
||||
| Archivo | Estado | Funcionalidad |
|
||||
|---------|--------|---------------|
|
||||
| `src/index.ts` | Implementado | Servidor Express funciona |
|
||||
| `src/tools/index.ts` | Implementado | Exporta schemas de tools |
|
||||
| `src/tools/account.ts` | Implementado | Tool mt4_get_account (mock) |
|
||||
| `src/tools/positions.ts` | Implementado | Tools de posiciones (mock) |
|
||||
| `src/tools/quotes.ts` | Implementado | Tool mt4_get_quote (mock) |
|
||||
| `src/tools/trading.ts` | Implementado | Tool mt4_execute_trade (mock) |
|
||||
| `src/services/mt4-client.ts` | Parcial | Cliente HTTP sin backend real |
|
||||
|
||||
**Nota:** Todos los tools retornan datos mock o errores porque no hay MT4 Gateway.
|
||||
|
||||
### 2. MT4 Gateway Service
|
||||
|
||||
| Componente | Estado | Prioridad |
|
||||
|------------|--------|-----------|
|
||||
| Servicio HTTP/REST | NO EXISTE | P0 |
|
||||
| WebSocket Server | NO EXISTE | P1 |
|
||||
| Command Queue | NO EXISTE | P0 |
|
||||
| Auth/Session | NO EXISTE | P1 |
|
||||
| Health Monitoring | NO EXISTE | P2 |
|
||||
|
||||
### 3. Expert Advisor (EA)
|
||||
|
||||
| Componente | Estado | Prioridad |
|
||||
|------------|--------|-----------|
|
||||
| MQL4 Script base | NO EXISTE | P0 |
|
||||
| Socket Client | NO EXISTE | P0 |
|
||||
| Order Execution | NO EXISTE | P0 |
|
||||
| Account Reporting | NO EXISTE | P0 |
|
||||
| Error Handling | NO EXISTE | P1 |
|
||||
| Reconnect Logic | NO EXISTE | P1 |
|
||||
|
||||
### 4. Infraestructura
|
||||
|
||||
| Recurso | Estado | Requerido |
|
||||
|---------|--------|-----------|
|
||||
| MT4 Terminal | No instalado | Si |
|
||||
| Cuenta Demo Broker | No configurada | Si |
|
||||
| Docker para Gateway | No existe | Recomendado |
|
||||
| CI/CD Pipeline | No existe | Recomendado |
|
||||
|
||||
---
|
||||
|
||||
## Metricas Actuales
|
||||
|
||||
```
|
||||
Lineas de codigo totales: ~550
|
||||
- mcp-mt4-connector/src/: 550 LOC
|
||||
- mt4-gateway/: 0 LOC
|
||||
- expert-advisor/: 0 LOC
|
||||
|
||||
Tests:
|
||||
- Unit tests: 0
|
||||
- Integration tests: 0
|
||||
- E2E tests: 0
|
||||
|
||||
Cobertura: 0%
|
||||
|
||||
Documentacion:
|
||||
- README.md: Existe (mcp-mt4-connector)
|
||||
- API Docs: Parcial
|
||||
- Architecture: Parcial
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bloqueos Activos
|
||||
|
||||
### BLOQ-001: Falta MT4 Gateway Service (CRITICO)
|
||||
|
||||
**Descripcion:** El mcp-mt4-connector espera comunicarse con un servicio `mt4-gateway` en localhost:8081, pero este servicio no existe.
|
||||
|
||||
**Impacto:** 100% de funcionalidad bloqueada.
|
||||
|
||||
**Resolucion requerida:**
|
||||
1. Disenar arquitectura del gateway
|
||||
2. Implementar servicio en Node.js o Python
|
||||
3. Definir protocolo de comunicacion con EA
|
||||
4. Implementar autenticacion
|
||||
|
||||
**Esfuerzo estimado:** 13 SP (2-3 semanas)
|
||||
|
||||
---
|
||||
|
||||
### BLOQ-002: Falta Expert Advisor MQL4 (CRITICO)
|
||||
|
||||
**Descripcion:** No existe el Expert Advisor que ejecutaria las operaciones en MT4.
|
||||
|
||||
**Impacto:** Imposible ejecutar trades incluso con gateway implementado.
|
||||
|
||||
**Resolucion requerida:**
|
||||
1. Desarrollar EA en MQL4
|
||||
2. Implementar comunicacion socket/DLL
|
||||
3. Manejar todos los tipos de ordenes
|
||||
4. Implementar heartbeat y reconexion
|
||||
|
||||
**Esfuerzo estimado:** 13 SP (2-3 semanas)
|
||||
|
||||
---
|
||||
|
||||
### BLOQ-003: Ambiente de Desarrollo (ALTO)
|
||||
|
||||
**Descripcion:** Se requiere un ambiente Windows con MT4 instalado para desarrollo y pruebas.
|
||||
|
||||
**Impacto:** No se puede probar la integracion completa.
|
||||
|
||||
**Resolucion requerida:**
|
||||
1. Instalar MT4 Terminal (Windows)
|
||||
2. Configurar cuenta demo con broker
|
||||
3. Configurar ambiente de desarrollo MQL4
|
||||
|
||||
**Esfuerzo estimado:** 3 SP (2-3 dias)
|
||||
|
||||
---
|
||||
|
||||
## Historial de Estado
|
||||
|
||||
| Fecha | Estado | Cambio |
|
||||
|-------|--------|--------|
|
||||
| 2026-01-20 | 15% | Commit inicial mcp-mt4-connector |
|
||||
| 2026-01-04 | 5% | Documentacion inicial |
|
||||
| 2025-12-15 | 0% | Epica creada |
|
||||
|
||||
---
|
||||
|
||||
## Proximo Review
|
||||
|
||||
**Fecha:** A definir cuando se priorice la epica
|
||||
**Prerequisitos para avanzar:**
|
||||
1. Decision de prioridad vs otras epicas
|
||||
2. Asignacion de recursos para desarrollo
|
||||
3. Definicion de broker/cuenta demo
|
||||
|
||||
---
|
||||
|
||||
## Contacto
|
||||
|
||||
**Responsable:** Sin asignar
|
||||
**Ultima revision:** 2026-01-28 (documentacion)
|
||||
|
||||
---
|
||||
|
||||
*Este documento refleja el estado actual del modulo OQI-010 MT4 Gateway.*
|
||||
*Actualizado: 2026-01-28*
|
||||
74
docs/02-definicion-modulos/OQI-010-mt4-gateway/_MAP.md
Normal file
74
docs/02-definicion-modulos/OQI-010-mt4-gateway/_MAP.md
Normal file
@ -0,0 +1,74 @@
|
||||
---
|
||||
id: "_MAP"
|
||||
title: "Mapa de Documentacion OQI-010 MT4 Gateway"
|
||||
type: "Index"
|
||||
project: "trading-platform"
|
||||
epic: "OQI-010"
|
||||
version: "0.1.0"
|
||||
created_date: "2026-01-28"
|
||||
updated_date: "2026-01-28"
|
||||
---
|
||||
|
||||
# _MAP: OQI-010 MT4 Gateway
|
||||
|
||||
> **Estado: NO FUNCIONAL (15%)**
|
||||
|
||||
---
|
||||
|
||||
## Estructura de Documentacion
|
||||
|
||||
```
|
||||
OQI-010-mt4-gateway/
|
||||
├── _MAP.md <- Este archivo
|
||||
├── README.md <- Vision general y estado
|
||||
├── STATUS.md <- Estado detallado y bloqueos
|
||||
├── ROADMAP-MT4.md <- Plan de implementacion
|
||||
└── especificaciones/
|
||||
└── ET-MT4-001-gateway.md <- Spec tecnica del gateway
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Indice de Documentos
|
||||
|
||||
| Documento | Tipo | Descripcion |
|
||||
|-----------|------|-------------|
|
||||
| [README.md](./README.md) | Overview | Vision general, arquitectura, estado |
|
||||
| [STATUS.md](./STATUS.md) | Status | Estado actual, bloqueos, metricas |
|
||||
| [ROADMAP-MT4.md](./ROADMAP-MT4.md) | Roadmap | Plan de implementacion por fases |
|
||||
| [ET-MT4-001-gateway.md](./especificaciones/ET-MT4-001-gateway.md) | Technical Spec | Especificacion del MT4 Gateway Service |
|
||||
|
||||
---
|
||||
|
||||
## Documentos Pendientes (Futuro)
|
||||
|
||||
Cuando la epica se active, crear:
|
||||
|
||||
| Documento | Tipo | Cuando |
|
||||
|-----------|------|--------|
|
||||
| ET-MT4-002-expert-advisor.md | Technical Spec | Fase 2 |
|
||||
| ET-MT4-003-mcp-integration.md | Technical Spec | Fase 3 |
|
||||
| RF-MT4-001-trading.md | Requerimientos | Inicio de desarrollo |
|
||||
| US-MT4-001-execute-trade.md | User Story | Sprint planning |
|
||||
|
||||
---
|
||||
|
||||
## Componentes Relacionados
|
||||
|
||||
| Componente | Ubicacion | Estado |
|
||||
|------------|-----------|--------|
|
||||
| MCP MT4 Connector | `mcp-mt4-connector/` | Parcial |
|
||||
| MT4 Gateway | No existe | Pendiente |
|
||||
| Expert Advisor | No existe | Pendiente |
|
||||
|
||||
---
|
||||
|
||||
## Referencias Externas
|
||||
|
||||
- [MCP Protocol](https://modelcontextprotocol.io)
|
||||
- [MetaTrader 4 Docs](https://www.mql4.com/docs)
|
||||
- [OQI-010-llm-trading-integration](../OQI-010-llm-trading-integration/) - Epica relacionada
|
||||
|
||||
---
|
||||
|
||||
*Actualizado: 2026-01-28*
|
||||
@ -0,0 +1,686 @@
|
||||
---
|
||||
id: "ET-MT4-001"
|
||||
title: "Especificacion Tecnica: MT4 Gateway Service"
|
||||
type: "Technical Specification"
|
||||
project: "trading-platform"
|
||||
epic: "OQI-010"
|
||||
version: "0.1.0"
|
||||
created_date: "2026-01-28"
|
||||
updated_date: "2026-01-28"
|
||||
status: "DRAFT"
|
||||
---
|
||||
|
||||
# ET-MT4-001: MT4 Gateway Service
|
||||
|
||||
## 1. Resumen
|
||||
|
||||
Esta especificacion define los requisitos tecnicos para el servicio MT4 Gateway, el componente intermedio que conecta el MCP MT4 Connector con el Expert Advisor ejecutandose en MetaTrader 4.
|
||||
|
||||
---
|
||||
|
||||
## 2. Alcance
|
||||
|
||||
### 2.1 Incluido
|
||||
- API REST para comunicacion con MCP Connector
|
||||
- WebSocket server para streaming de datos
|
||||
- Socket server para comunicacion con Expert Advisor
|
||||
- Autenticacion y autorizacion
|
||||
- Queue de comandos
|
||||
- Logging y monitoring
|
||||
|
||||
### 2.2 Excluido
|
||||
- Desarrollo del Expert Advisor (ver ET-MT4-002)
|
||||
- Logica de trading/estrategia
|
||||
- Interfaz de usuario
|
||||
|
||||
---
|
||||
|
||||
## 3. Arquitectura
|
||||
|
||||
### 3.1 Diagrama de Componentes
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ MT4 GATEWAY SERVICE │
|
||||
│ (Node.js/TypeScript) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌───────────────────┐ ┌───────────────────┐ │
|
||||
│ │ HTTP/REST API │ │ WebSocket Server │ │
|
||||
│ │ (Express.js) │ │ (ws library) │ │
|
||||
│ │ │ │ │ │
|
||||
│ │ Port: 8081 │ │ Path: /ws/* │ │
|
||||
│ └─────────┬─────────┘ └─────────┬─────────┘ │
|
||||
│ │ │ │
|
||||
│ └───────────┬────────────┘ │
|
||||
│ │ │
|
||||
│ ┌───────────▼───────────┐ │
|
||||
│ │ Command Processor │ │
|
||||
│ │ │ │
|
||||
│ │ - Request Validation │ │
|
||||
│ │ - Rate Limiting │ │
|
||||
│ │ - Auth Verification │ │
|
||||
│ └───────────┬───────────┘ │
|
||||
│ │ │
|
||||
│ ┌───────────▼───────────┐ │
|
||||
│ │ Command Queue │ │
|
||||
│ │ │ │
|
||||
│ │ - Priority Queue │ │
|
||||
│ │ - Timeout Handling │ │
|
||||
│ │ - Retry Logic │ │
|
||||
│ └───────────┬───────────┘ │
|
||||
│ │ │
|
||||
│ ┌───────────▼───────────┐ │
|
||||
│ │ EA Socket Server │ │
|
||||
│ │ │ │
|
||||
│ │ Port: 8082 │ │
|
||||
│ │ Protocol: TCP/JSON │ │
|
||||
│ └───────────┬───────────┘ │
|
||||
│ │ │
|
||||
└────────────────────────┼────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────┐
|
||||
│ Expert Advisor │
|
||||
│ (MT4 Terminal) │
|
||||
└─────────────────────┘
|
||||
```
|
||||
|
||||
### 3.2 Stack Tecnologico
|
||||
|
||||
| Componente | Tecnologia | Version |
|
||||
|------------|------------|---------|
|
||||
| Runtime | Node.js | >= 20.x |
|
||||
| Language | TypeScript | >= 5.0 |
|
||||
| HTTP Server | Express.js | >= 4.18 |
|
||||
| WebSocket | ws | >= 8.x |
|
||||
| Validation | Zod | >= 3.x |
|
||||
| Logging | Winston | >= 3.x |
|
||||
| Testing | Jest | >= 29.x |
|
||||
|
||||
---
|
||||
|
||||
## 4. API REST
|
||||
|
||||
### 4.1 Base URL
|
||||
```
|
||||
http://localhost:8081/api/v1
|
||||
```
|
||||
|
||||
### 4.2 Autenticacion
|
||||
|
||||
Todas las rutas (excepto `/health`) requieren autenticacion via Bearer token.
|
||||
|
||||
```http
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
**Token de desarrollo:** Configurar en `.env`
|
||||
|
||||
### 4.3 Endpoints
|
||||
|
||||
#### 4.3.1 Health Check
|
||||
|
||||
```http
|
||||
GET /health
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"service": "mt4-gateway",
|
||||
"version": "0.1.0",
|
||||
"timestamp": "2026-01-28T10:00:00Z",
|
||||
"dependencies": {
|
||||
"ea": "connected",
|
||||
"mt4": "connected"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.3.2 Account Info
|
||||
|
||||
```http
|
||||
GET /api/v1/account
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"login": 12345678,
|
||||
"name": "Demo Account",
|
||||
"server": "ICMarkets-Demo",
|
||||
"currency": "USD",
|
||||
"balance": 10000.00,
|
||||
"equity": 10250.50,
|
||||
"margin": 500.00,
|
||||
"freeMargin": 9750.50,
|
||||
"marginLevel": 2050.10,
|
||||
"leverage": 100
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.3.3 Positions
|
||||
|
||||
```http
|
||||
GET /api/v1/positions
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
| Param | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| symbol | string | No | Filtrar por simbolo |
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"positions": [
|
||||
{
|
||||
"ticket": 12345678,
|
||||
"symbol": "XAUUSD",
|
||||
"type": "buy",
|
||||
"lots": 0.10,
|
||||
"openPrice": 2650.50,
|
||||
"currentPrice": 2655.00,
|
||||
"stopLoss": 2640.00,
|
||||
"takeProfit": 2680.00,
|
||||
"profit": 45.00,
|
||||
"swap": -2.50,
|
||||
"commission": -5.00,
|
||||
"openTime": "2026-01-28T08:00:00Z",
|
||||
"comment": "MCP Trade"
|
||||
}
|
||||
],
|
||||
"count": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.3.4 Quote
|
||||
|
||||
```http
|
||||
GET /api/v1/quote/:symbol
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"symbol": "XAUUSD",
|
||||
"bid": 2654.50,
|
||||
"ask": 2655.00,
|
||||
"spread": 0.50,
|
||||
"time": "2026-01-28T10:00:00Z",
|
||||
"digits": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.3.5 Execute Order
|
||||
|
||||
```http
|
||||
POST /api/v1/orders
|
||||
Authorization: Bearer <token>
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"symbol": "XAUUSD",
|
||||
"action": "buy",
|
||||
"lots": 0.10,
|
||||
"type": "market",
|
||||
"stopLoss": 2640.00,
|
||||
"takeProfit": 2680.00,
|
||||
"comment": "MCP Trade",
|
||||
"magicNumber": 12345
|
||||
}
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| symbol | string | Yes | Trading symbol |
|
||||
| action | enum | Yes | "buy" or "sell" |
|
||||
| lots | number | Yes | Lot size (0.01 - 10.0) |
|
||||
| type | enum | Yes | "market", "limit", "stop" |
|
||||
| price | number | No* | Price for limit/stop orders |
|
||||
| stopLoss | number | No | Stop loss price |
|
||||
| takeProfit | number | No | Take profit price |
|
||||
| comment | string | No | Order comment |
|
||||
| magicNumber | number | No | Magic number for EA |
|
||||
|
||||
**Response (Success):**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"ticket": 12345679,
|
||||
"symbol": "XAUUSD",
|
||||
"action": "buy",
|
||||
"lots": 0.10,
|
||||
"openPrice": 2655.00,
|
||||
"openTime": "2026-01-28T10:00:05Z",
|
||||
"stopLoss": 2640.00,
|
||||
"takeProfit": 2680.00
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Response (Error):**
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"error": {
|
||||
"code": "INSUFFICIENT_MARGIN",
|
||||
"message": "Not enough free margin to open position",
|
||||
"details": {
|
||||
"required": 2500.00,
|
||||
"available": 1000.00
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.3.6 Close Position
|
||||
|
||||
```http
|
||||
DELETE /api/v1/orders/:ticket
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"ticket": 12345678,
|
||||
"closePrice": 2660.00,
|
||||
"closeTime": "2026-01-28T10:30:00Z",
|
||||
"profit": 95.00,
|
||||
"swap": -2.50,
|
||||
"commission": -5.00
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4.3.7 Modify Position
|
||||
|
||||
```http
|
||||
PATCH /api/v1/positions/:ticket
|
||||
Authorization: Bearer <token>
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"stopLoss": 2645.00,
|
||||
"takeProfit": 2685.00
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"ticket": 12345678,
|
||||
"stopLoss": 2645.00,
|
||||
"takeProfit": 2685.00,
|
||||
"modifiedTime": "2026-01-28T10:15:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. WebSocket API
|
||||
|
||||
### 5.1 Connection
|
||||
|
||||
```javascript
|
||||
const ws = new WebSocket('ws://localhost:8081/ws/stream');
|
||||
ws.onopen = () => {
|
||||
ws.send(JSON.stringify({
|
||||
type: 'auth',
|
||||
token: '<bearer_token>'
|
||||
}));
|
||||
};
|
||||
```
|
||||
|
||||
### 5.2 Subscribe to Quotes
|
||||
|
||||
```json
|
||||
// Request
|
||||
{
|
||||
"type": "subscribe",
|
||||
"channel": "quotes",
|
||||
"symbols": ["XAUUSD", "EURUSD"]
|
||||
}
|
||||
|
||||
// Response (streaming)
|
||||
{
|
||||
"type": "quote",
|
||||
"data": {
|
||||
"symbol": "XAUUSD",
|
||||
"bid": 2654.55,
|
||||
"ask": 2655.05,
|
||||
"time": "2026-01-28T10:00:01Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5.3 Subscribe to Positions
|
||||
|
||||
```json
|
||||
// Request
|
||||
{
|
||||
"type": "subscribe",
|
||||
"channel": "positions"
|
||||
}
|
||||
|
||||
// Response (on change)
|
||||
{
|
||||
"type": "position_update",
|
||||
"data": {
|
||||
"ticket": 12345678,
|
||||
"profit": 50.00,
|
||||
"currentPrice": 2656.00
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. EA Communication Protocol
|
||||
|
||||
### 6.1 TCP Socket
|
||||
|
||||
- **Puerto:** 8082
|
||||
- **Protocolo:** TCP
|
||||
- **Formato:** JSON delimitado por newline
|
||||
|
||||
### 6.2 Handshake
|
||||
|
||||
```json
|
||||
// EA -> Gateway
|
||||
{
|
||||
"type": "handshake",
|
||||
"version": "1.0",
|
||||
"accountLogin": 12345678
|
||||
}
|
||||
|
||||
// Gateway -> EA
|
||||
{
|
||||
"type": "handshake_ack",
|
||||
"status": "connected",
|
||||
"sessionId": "uuid"
|
||||
}
|
||||
```
|
||||
|
||||
### 6.3 Heartbeat
|
||||
|
||||
```json
|
||||
// Cada 5 segundos
|
||||
// EA -> Gateway
|
||||
{
|
||||
"type": "heartbeat",
|
||||
"timestamp": 1706436000
|
||||
}
|
||||
|
||||
// Gateway -> EA
|
||||
{
|
||||
"type": "heartbeat_ack"
|
||||
}
|
||||
```
|
||||
|
||||
### 6.4 Command Format
|
||||
|
||||
```json
|
||||
// Gateway -> EA (Request)
|
||||
{
|
||||
"id": "uuid-request-id",
|
||||
"type": "command",
|
||||
"command": "EXECUTE_ORDER",
|
||||
"params": {
|
||||
"symbol": "XAUUSD",
|
||||
"action": "OP_BUY",
|
||||
"lots": 0.10,
|
||||
"stopLoss": 2640.00,
|
||||
"takeProfit": 2680.00
|
||||
},
|
||||
"timeout": 30000
|
||||
}
|
||||
|
||||
// EA -> Gateway (Response)
|
||||
{
|
||||
"id": "uuid-request-id",
|
||||
"type": "response",
|
||||
"success": true,
|
||||
"data": {
|
||||
"ticket": 12345679,
|
||||
"openPrice": 2655.00
|
||||
}
|
||||
}
|
||||
|
||||
// EA -> Gateway (Error)
|
||||
{
|
||||
"id": "uuid-request-id",
|
||||
"type": "response",
|
||||
"success": false,
|
||||
"error": {
|
||||
"code": 134,
|
||||
"message": "ERR_NOT_ENOUGH_MONEY"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 6.5 Commands Supported
|
||||
|
||||
| Command | Description | Params |
|
||||
|---------|-------------|--------|
|
||||
| GET_ACCOUNT | Get account info | - |
|
||||
| GET_POSITIONS | List open positions | symbol? |
|
||||
| GET_QUOTE | Get current quote | symbol |
|
||||
| EXECUTE_ORDER | Execute trade | symbol, action, lots, ... |
|
||||
| CLOSE_ORDER | Close position | ticket |
|
||||
| MODIFY_ORDER | Modify SL/TP | ticket, sl?, tp? |
|
||||
|
||||
---
|
||||
|
||||
## 7. Error Codes
|
||||
|
||||
### 7.1 Gateway Errors
|
||||
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| AUTH_FAILED | 401 | Invalid or missing token |
|
||||
| FORBIDDEN | 403 | Insufficient permissions |
|
||||
| NOT_FOUND | 404 | Resource not found |
|
||||
| VALIDATION_ERROR | 400 | Invalid request parameters |
|
||||
| EA_DISCONNECTED | 503 | EA not connected |
|
||||
| MT4_ERROR | 502 | MT4 returned error |
|
||||
| TIMEOUT | 504 | Request timeout |
|
||||
| RATE_LIMITED | 429 | Too many requests |
|
||||
|
||||
### 7.2 MT4 Error Mapping
|
||||
|
||||
| MT4 Code | Gateway Code | Description |
|
||||
|----------|--------------|-------------|
|
||||
| 0 | - | Success |
|
||||
| 2 | MT4_COMMON_ERROR | Common error |
|
||||
| 3 | MT4_INVALID_PARAMS | Invalid trade parameters |
|
||||
| 4 | MT4_SERVER_BUSY | Server busy |
|
||||
| 6 | MT4_NO_CONNECTION | No connection |
|
||||
| 134 | INSUFFICIENT_MARGIN | Not enough margin |
|
||||
| 148 | MT4_TOO_MANY_ORDERS | Too many orders |
|
||||
|
||||
---
|
||||
|
||||
## 8. Security Requirements
|
||||
|
||||
### 8.1 Authentication
|
||||
- Bearer token authentication
|
||||
- Token rotation each 24 hours
|
||||
- Rate limiting per token
|
||||
|
||||
### 8.2 Rate Limiting
|
||||
|
||||
| Endpoint | Limit | Window |
|
||||
|----------|-------|--------|
|
||||
| GET /account | 60 | 1 min |
|
||||
| GET /positions | 60 | 1 min |
|
||||
| GET /quote | 120 | 1 min |
|
||||
| POST /orders | 10 | 1 min |
|
||||
| DELETE /orders | 10 | 1 min |
|
||||
| PATCH /positions | 20 | 1 min |
|
||||
|
||||
### 8.3 Input Validation
|
||||
- All inputs validated with Zod schemas
|
||||
- SQL injection protection (N/A, no SQL)
|
||||
- Symbol whitelist validation
|
||||
|
||||
### 8.4 Logging
|
||||
- All requests logged with timestamp
|
||||
- All trades logged for audit
|
||||
- No sensitive data in logs (tokens masked)
|
||||
|
||||
---
|
||||
|
||||
## 9. Configuration
|
||||
|
||||
### 9.1 Environment Variables
|
||||
|
||||
```env
|
||||
# Server
|
||||
PORT=8081
|
||||
EA_SOCKET_PORT=8082
|
||||
NODE_ENV=development
|
||||
|
||||
# Auth
|
||||
AUTH_TOKEN=your-secret-token
|
||||
TOKEN_EXPIRY_HOURS=24
|
||||
|
||||
# EA Connection
|
||||
EA_HEARTBEAT_INTERVAL=5000
|
||||
EA_RECONNECT_DELAY=5000
|
||||
EA_MAX_RECONNECT_ATTEMPTS=10
|
||||
|
||||
# Timeouts
|
||||
REQUEST_TIMEOUT=30000
|
||||
EA_COMMAND_TIMEOUT=30000
|
||||
|
||||
# Rate Limiting
|
||||
RATE_LIMIT_WINDOW_MS=60000
|
||||
RATE_LIMIT_MAX_REQUESTS=60
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=info
|
||||
LOG_FILE=./logs/gateway.log
|
||||
|
||||
# Risk Limits
|
||||
MAX_LOTS_PER_ORDER=1.0
|
||||
MAX_OPEN_POSITIONS=5
|
||||
MIN_FREE_MARGIN_PERCENT=50
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10. Monitoring
|
||||
|
||||
### 10.1 Health Metrics
|
||||
- Gateway uptime
|
||||
- EA connection status
|
||||
- Request latency (p50, p95, p99)
|
||||
- Error rate
|
||||
- Active WebSocket connections
|
||||
|
||||
### 10.2 Trading Metrics
|
||||
- Orders executed
|
||||
- Orders failed
|
||||
- Average execution time
|
||||
- P&L tracking
|
||||
|
||||
### 10.3 Alerts
|
||||
- EA disconnection
|
||||
- High error rate (>5%)
|
||||
- High latency (>5s)
|
||||
- Risk limit breach
|
||||
|
||||
---
|
||||
|
||||
## 11. Testing Requirements
|
||||
|
||||
### 11.1 Unit Tests
|
||||
- Command processor
|
||||
- Validation schemas
|
||||
- Error handling
|
||||
- Rate limiting
|
||||
|
||||
### 11.2 Integration Tests
|
||||
- EA mock communication
|
||||
- Full request flow
|
||||
- WebSocket subscriptions
|
||||
|
||||
### 11.3 E2E Tests (with demo account)
|
||||
- Order execution
|
||||
- Position modification
|
||||
- Account queries
|
||||
|
||||
**Coverage Target:** >70%
|
||||
|
||||
---
|
||||
|
||||
## 12. Deployment
|
||||
|
||||
### 12.1 Docker (Recomendado)
|
||||
|
||||
```dockerfile
|
||||
FROM node:20-alpine
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN npm ci --only=production
|
||||
COPY dist ./dist
|
||||
EXPOSE 8081 8082
|
||||
CMD ["node", "dist/index.js"]
|
||||
```
|
||||
|
||||
### 12.2 PM2 (Alternativo)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "mt4-gateway",
|
||||
"script": "dist/index.js",
|
||||
"instances": 1,
|
||||
"autorestart": true,
|
||||
"max_memory_restart": "500M"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 13. Referencias
|
||||
|
||||
- [README.md](../README.md) - Vision general
|
||||
- [STATUS.md](../STATUS.md) - Estado actual
|
||||
- [ROADMAP-MT4.md](../ROADMAP-MT4.md) - Plan de implementacion
|
||||
- [MCP MT4 Connector](../../../../mcp-mt4-connector/README.md)
|
||||
- [MCP Protocol](https://modelcontextprotocol.io)
|
||||
- [MetaTrader 4 Documentation](https://www.mql4.com/docs)
|
||||
|
||||
---
|
||||
|
||||
*Documento creado: 2026-01-28*
|
||||
*Estado: DRAFT - Pendiente implementacion*
|
||||
@ -3,16 +3,16 @@ id: "MAP-02-definicion-modulos"
|
||||
title: "Mapa de 02-definicion-modulos"
|
||||
type: "Index"
|
||||
project: "trading-platform"
|
||||
updated_date: "2026-01-07"
|
||||
updated_date: "2026-01-28"
|
||||
---
|
||||
|
||||
# _MAP: Definicion de Modulos - Trading Platform
|
||||
|
||||
**Ultima actualizacion:** 2026-01-07
|
||||
**Ultima actualizacion:** 2026-01-28
|
||||
**Estado:** En Desarrollo
|
||||
**Version:** 2.0.0
|
||||
**Total Epicas:** 8
|
||||
**Total Story Points:** 407 SP
|
||||
**Version:** 2.1.0
|
||||
**Total Epicas:** 11 (8 core + 3 expansion)
|
||||
**Total Story Points:** ~551 SP (estimado)
|
||||
|
||||
---
|
||||
|
||||
@ -77,9 +77,21 @@ Este directorio contiene la documentacion completa de todas las epicas del proye
|
||||
|
||||
**Subtotal Fase 2:** 120 SP | $60,000 MXN
|
||||
|
||||
### Fase 3 - Expansion (Incubacion)
|
||||
|
||||
| Codigo | Nombre | SP | Presupuesto | Estado | Prioridad |
|
||||
|--------|--------|-----|-------------|--------|-----------|
|
||||
| [OQI-009](./OQI-009-marketplace/) | Marketplace | TBD | TBD | Planificado | P3 |
|
||||
| [OQI-010](./OQI-010-mt4-gateway/) | MT4 Gateway | 55 | $27,500 | NO FUNCIONAL (15%) | P2 |
|
||||
| [OQI-010-llm](./OQI-010-llm-trading-integration/) | LLM Trading Integration | 89 | $44,500 | Planning | P0 |
|
||||
|
||||
**Nota:** OQI-010-mt4-gateway esta actualmente NO FUNCIONAL. Ver documentacion de estado.
|
||||
|
||||
**Subtotal Fase 3:** ~144 SP | ~$72,000 MXN (estimado)
|
||||
|
||||
---
|
||||
|
||||
**TOTAL PROYECTO:** 407 SP | $213,500 MXN
|
||||
**TOTAL PROYECTO:** ~551 SP | ~$285,500 MXN (incluyendo Fase 3)
|
||||
|
||||
---
|
||||
|
||||
@ -321,6 +333,57 @@ Este directorio contiene la documentacion completa de todas las epicas del proye
|
||||
|
||||
---
|
||||
|
||||
### OQI-009: Marketplace
|
||||
|
||||
**Objetivo:** Plataforma de mercado para estrategias y senales de trading.
|
||||
|
||||
**Estado:** Planificado - Documentacion pendiente
|
||||
|
||||
---
|
||||
|
||||
### OQI-010: MT4 Gateway Integration
|
||||
|
||||
> **ESTADO: NO FUNCIONAL (15%)**
|
||||
|
||||
**Objetivo:** Integracion con MetaTrader 4 para trading automatizado en forex/CFDs.
|
||||
|
||||
**Entregables:**
|
||||
- MCP MT4 Connector (herramientas MCP)
|
||||
- MT4 Gateway Service (puente HTTP)
|
||||
- Expert Advisor MQL4 (ejecucion en MT4)
|
||||
- Paper trading mode
|
||||
- Risk management integrado
|
||||
|
||||
**Documentos clave:**
|
||||
- [README.md](./OQI-010-mt4-gateway/README.md) - Vision general
|
||||
- [STATUS.md](./OQI-010-mt4-gateway/STATUS.md) - Estado y bloqueos
|
||||
- [ROADMAP-MT4.md](./OQI-010-mt4-gateway/ROADMAP-MT4.md) - Plan de implementacion
|
||||
- [ET-MT4-001-gateway.md](./OQI-010-mt4-gateway/especificaciones/ET-MT4-001-gateway.md) - Spec tecnica
|
||||
|
||||
**Modulos afectados:**
|
||||
- MCP: `mcp-mt4-connector/` (parcial)
|
||||
- Gateway: No existe
|
||||
- EA: No existe
|
||||
|
||||
**Bloqueos actuales:**
|
||||
1. MT4 Gateway Service no implementado
|
||||
2. Expert Advisor MQL4 no desarrollado
|
||||
3. Ambiente de desarrollo pendiente
|
||||
|
||||
**Estado:** NO FUNCIONAL (15% - solo skeleton MCP)
|
||||
|
||||
---
|
||||
|
||||
### OQI-010-LLM: LLM Trading Integration
|
||||
|
||||
**Objetivo:** Integracion avanzada del LLM con fine-tuning para trading autonomo.
|
||||
|
||||
**Estado:** Planning (89 SP estimado)
|
||||
|
||||
Ver: [OQI-010-llm-trading-integration/README.md](./OQI-010-llm-trading-integration/README.md)
|
||||
|
||||
---
|
||||
|
||||
## Resumen Tecnico
|
||||
|
||||
### Base de Datos
|
||||
|
||||
@ -5,8 +5,15 @@ type: "Documentation"
|
||||
project: "trading-platform"
|
||||
version: "1.0.0"
|
||||
updated_date: "2026-01-04"
|
||||
status: "DEPRECATED"
|
||||
---
|
||||
|
||||
> **DEPRECATED (2026-01-28)**
|
||||
> Este documento contiene referencias a archivos eliminados (/docs/planning/).
|
||||
> El directorio planning fue removido en commit del 2026-01-26.
|
||||
> Los links a Board.md y config.yml ya no son validos.
|
||||
> Ver: orchestration/tareas/ para gestion de tareas actual.
|
||||
|
||||
# Backlog - Trading Platform (Trading Platform)
|
||||
|
||||
**Ultima actualizacion:** 2026-01-04
|
||||
|
||||
@ -5,13 +5,21 @@ type: "Documentation"
|
||||
project: "trading-platform"
|
||||
version: "1.0.0"
|
||||
updated_date: "2026-01-04"
|
||||
status: "OUTDATED"
|
||||
---
|
||||
|
||||
> **OUTDATED (2026-01-28)**
|
||||
> Este analisis fue realizado en 2025-12-05 y las metricas han cambiado significativamente.
|
||||
> Desde entonces se han agregado inventarios YAML consolidados (DATABASE, BACKEND, FRONTEND, ML).
|
||||
> Los gaps de trazabilidad han sido parcialmente cerrados.
|
||||
> Contiene link roto a ruta absoluta "/home/isem" que ya no es valida.
|
||||
> Para estado actual, consultar INVENTORY-SYNC-REPORT.md en esta carpeta.
|
||||
|
||||
# Análisis de Gaps: Documentación Trading Platform vs Gamilit
|
||||
|
||||
**Fecha:** 2025-12-05
|
||||
**Autor:** Requirements-Analyst
|
||||
**Estado:** Crítico - Requiere Acción Inmediata
|
||||
**Estado:** ~~Crítico~~ PARCIALMENTE RESUELTO
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -5,8 +5,18 @@ type: "Documentation"
|
||||
project: "trading-platform"
|
||||
version: "1.0.0"
|
||||
updated_date: "2026-01-04"
|
||||
status: "DEPRECATED"
|
||||
---
|
||||
|
||||
> **DEPRECATED (2026-01-28)**
|
||||
> Este documento describe el proyecto legacy stc-platform-web que ha sido cerrado.
|
||||
> La migracion a Express se completo. El proyecto stc-platform-web ya no existe.
|
||||
> Este inventario se mantiene como referencia historica de funcionalidades migradas.
|
||||
> Para el estado actual, consultar los inventarios en esta misma carpeta:
|
||||
> - BACKEND_INVENTORY.yml
|
||||
> - FRONTEND_INVENTORY.yml
|
||||
> - DATABASE_INVENTORY.yml
|
||||
|
||||
# Inventario de Funcionalidades: stc-platform-web
|
||||
|
||||
**Ultima actualizacion:** 2025-12-05
|
||||
|
||||
@ -5,8 +5,14 @@ type: "Documentation"
|
||||
project: "trading-platform"
|
||||
version: "1.0.0"
|
||||
updated_date: "2026-01-04"
|
||||
status: "COMPLETED"
|
||||
---
|
||||
|
||||
> **COMPLETED (2026-01-28)**
|
||||
> Este plan de migracion ha sido ejecutado. El backend Express esta operativo.
|
||||
> Supabase ya no se utiliza. Este documento se mantiene como referencia historica.
|
||||
> NOTA: Contiene link roto a "01-fase-mvp" (linea 695) que fue reorganizado a "02-definicion-modulos".
|
||||
|
||||
# Plan de Migracion: Supabase a Express Backend
|
||||
|
||||
**Ultima actualizacion:** 2025-12-05
|
||||
|
||||
@ -78,7 +78,7 @@ Ver [MIGRACION-SUPABASE-EXPRESS.md](./MIGRACION-SUPABASE-EXPRESS.md) para detall
|
||||
## Referencias
|
||||
|
||||
- [ADR-001: Stack Tecnologico](../../97-adr/ADR-001-stack-tecnologico.md)
|
||||
- [OQI-001: Fundamentos Auth](../../01-fase-mvp/OQI-001-fundamentos-auth/_MAP.md)
|
||||
- [OQI-001: Fundamentos Auth](../../02-definicion-modulos/OQI-001-fundamentos-auth/_MAP.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
200
orchestration/analisis/coherencia/AUDIT-BACKEND-FRONTEND.md
Normal file
200
orchestration/analisis/coherencia/AUDIT-BACKEND-FRONTEND.md
Normal file
@ -0,0 +1,200 @@
|
||||
# AUDIT-BACKEND-FRONTEND.md
|
||||
## Auditoría de Coherencia Backend ↔ Frontend
|
||||
|
||||
**Fecha:** 2026-01-28
|
||||
**Proyecto:** trading-platform
|
||||
**Auditor:** Claude Code (Opus 4.5)
|
||||
**Fase:** F0.3.2
|
||||
|
||||
---
|
||||
|
||||
## RESUMEN EJECUTIVO
|
||||
|
||||
| Métrica | Valor | Target | Gap |
|
||||
|---------|-------|--------|-----|
|
||||
| **Coherencia Backend-Frontend** | 72% | 85% | -13pp |
|
||||
| **Endpoints totales** | 208+ | - | - |
|
||||
| **Endpoints con consumidor** | 147 | 208 | 61 faltantes |
|
||||
| **Services frontend** | 15 | 26 | 11 faltantes |
|
||||
| **Stores Zustand** | 8 | 17 | 9 faltantes |
|
||||
|
||||
---
|
||||
|
||||
## MAPEO DE MÓDULOS
|
||||
|
||||
| Módulo | Endpoints | Service FE | Store | Cobertura | Estado |
|
||||
|--------|-----------|------------|-------|-----------|--------|
|
||||
| **auth** | 27 | ✅ | ✅ (implícito) | 100% | COMPLETO |
|
||||
| **users** | 6 | ✅ | ✅ (implícito) | 100% | COMPLETO |
|
||||
| **trading** | 47 | ✅ | ✅ tradingStore | 95% | INCOMPLETO |
|
||||
| **portfolio** | 12 | ✅ | ✅ portfolioStore | 100% | COMPLETO |
|
||||
| **investment** | 13 | ✅ | ❌ NO | 50% | INCOMPLETO |
|
||||
| **education** | 45 | ✅ | ✅ educationStore | 98% | INCOMPLETO |
|
||||
| **payments** | 20 | ✅ | ✅ paymentStore | 95% | INCOMPLETO |
|
||||
| **agents** | 16 | ✅ | ✅ agentsStore | 85% | INCOMPLETO |
|
||||
| **notifications** | 9 | ✅ | ✅ notificationStore | 100% | COMPLETO |
|
||||
| **market-data** | 4 | ⚠️ PARCIAL | ❌ NO | 50% | INCOMPLETO |
|
||||
| **ml** | 19 | ⚠️ limitado | ❌ NO | 60% | INCOMPLETO |
|
||||
| **llm** | 6 | ⚠️ parcial | ❌ NO | 50% | INCOMPLETO |
|
||||
| **currency** | 4 | ❌ NO | ❌ NO | 0% | ÓRFANO |
|
||||
| **audit** | 8 | ❌ NO | ❌ NO | 0% | ÓRFANO |
|
||||
| **admin** | 8 | ✅ | ❌ NO | 50% | INCOMPLETO |
|
||||
| **risk** | 7 | ❌ NO | ❌ NO | 0% | ÓRFANO |
|
||||
| **proxy** | 20 | ⚠️ indirecto | ❌ NO | 30% | INCOMPLETO |
|
||||
|
||||
---
|
||||
|
||||
## GAPS CRÍTICOS
|
||||
|
||||
### 1. Endpoints Sin Consumo Frontend (HIGH PRIORITY)
|
||||
|
||||
**GAP-BF-001: Trading Alerts** (6 endpoints)
|
||||
- Rutas: POST/GET/PATCH/DELETE `/api/v1/trading/alerts*`
|
||||
- Estado: Backend ✅ | Frontend ❌
|
||||
- Impacto: CRÍTICO - Feature de alertas NO funcional
|
||||
- Acción: Crear `alertsService.ts`
|
||||
|
||||
**GAP-BF-002: Investment Withdrawals** (1 endpoint)
|
||||
- Ruta: GET `/api/v1/investment/withdrawals`
|
||||
- Estado: Backend ✅ | Frontend ❌
|
||||
- Impacto: ALTO - Historial NO visible
|
||||
- Acción: Agregar a `investment.service.ts`
|
||||
|
||||
**GAP-BF-003: Currency Module** (4 endpoints)
|
||||
- Rutas: GET `/api/v1/currency/rates*`
|
||||
- Estado: Backend ✅ | Frontend ❌
|
||||
- Impacto: MEDIO - Conversión NO integrada
|
||||
- Acción: Crear `currencyService.ts`
|
||||
|
||||
**GAP-BF-004: Risk Module** (7 endpoints)
|
||||
- Rutas: GET/POST `/api/v1/risk/*`
|
||||
- Estado: Backend ✅ | Frontend ❌
|
||||
- Impacto: ALTO - Cuestionario NO visible
|
||||
- Acción: Crear `riskAssessment.service.ts`
|
||||
|
||||
---
|
||||
|
||||
### 2. Stores Faltantes
|
||||
|
||||
| Store | Módulo | Prioridad | Esfuerzo |
|
||||
|-------|--------|-----------|----------|
|
||||
| **investmentStore** | investment | P0 | 4h |
|
||||
| **mlStore** | ml | P1 | 5h |
|
||||
| **llmStore** | llm | P1 | 5h |
|
||||
| **currencyStore** | currency | P2 | 2h |
|
||||
| **riskStore** | risk | P1 | 3h |
|
||||
| **adminStore** | admin | P2 | 3h |
|
||||
| **marketDataStore** | market-data | P2 | 4h |
|
||||
|
||||
---
|
||||
|
||||
## ANÁLISIS POR EPIC
|
||||
|
||||
### OQI-001 (fundamentos-auth) - 85% ✅
|
||||
- Gaps: 2FA flow UI incompleto
|
||||
- Acción: Completar flujo verificación
|
||||
|
||||
### OQI-002 (educativo) - 55% ⚠️
|
||||
- Gaps: Quiz history, video processing status
|
||||
- Acción: Refactorizar educationStore
|
||||
|
||||
### OQI-003 (trading-charts) - 60% ⚠️
|
||||
- Gaps: Price alerts (SIN servicio)
|
||||
- Acción: Crear alertsService URGENTE
|
||||
|
||||
### OQI-004 (cuentas-inversion) - 55% ⚠️
|
||||
- Gaps: investmentStore NO EXISTE
|
||||
- Acción: Crear store + expandir service
|
||||
|
||||
### OQI-005 (pagos-stripe) - 65% ⚠️
|
||||
- Gaps: Refund history
|
||||
- Acción: Agregar a paymentStore
|
||||
|
||||
### OQI-006 (senales-ml) - 75% ⚠️
|
||||
- Gaps: Signal caching, mlStore
|
||||
- Acción: Crear mlStore
|
||||
|
||||
### OQI-007 (llm-strategy-agent) - 45% ⚠️
|
||||
- Gaps: Session management, llmStore
|
||||
- Acción: Crear llmStore
|
||||
|
||||
### OQI-008 (portfolio-manager) - 45% ✅
|
||||
- Estado: Bueno, mejoras menores
|
||||
|
||||
---
|
||||
|
||||
## BAD PRACTICES DETECTADAS
|
||||
|
||||
**Resultado: ✅ CERO HALLAZGOS CRÍTICOS**
|
||||
|
||||
- ✅ Cero llamadas directas axios/fetch en componentes
|
||||
- ✅ Todos usan `apiClient` centralizado
|
||||
- ✅ Token auto-refresh implementado
|
||||
|
||||
**FORTALEZA:** Arquitectura de servicios bien estructurada.
|
||||
|
||||
---
|
||||
|
||||
## RECOMENDACIONES PRIORIZADAS
|
||||
|
||||
### FASE 1 - CRÍTICA (Semana 1)
|
||||
|
||||
**P1.1** Crear `alertsService.ts` + integrar en tradingStore
|
||||
- Endpoints: 6
|
||||
- Esfuerzo: 3-4 horas
|
||||
|
||||
**P1.2** Expandir `investment.service.ts`
|
||||
- Métodos: getWithdrawals, closeAccount, getDistributions
|
||||
- Esfuerzo: 2 horas
|
||||
|
||||
**P1.3** Crear `investmentStore.ts`
|
||||
- Esfuerzo: 4 horas
|
||||
|
||||
### FASE 2 - ALTA (Semana 2)
|
||||
|
||||
**P2.1** Crear `mlStore.ts`
|
||||
- Esfuerzo: 5 horas
|
||||
|
||||
**P2.2** Refactorizar `mlService.ts` (type safety)
|
||||
- Esfuerzo: 3 horas
|
||||
|
||||
**P2.3** Crear `riskAssessmentService.ts`
|
||||
- Esfuerzo: 4 horas
|
||||
|
||||
### FASE 3 - MEDIA (Semana 3)
|
||||
|
||||
**P3.1** Crear `currencyService.ts` (si necesario)
|
||||
**P3.2** Crear `llmStore.ts`
|
||||
**P3.3** Documentar market-data vs trading endpoints
|
||||
|
||||
---
|
||||
|
||||
## CHECKLIST DE COHERENCIA
|
||||
|
||||
```
|
||||
Para cada nuevo módulo/endpoint:
|
||||
|
||||
□ Backend:
|
||||
□ Ruta en [module].routes.ts
|
||||
□ Controller implementado
|
||||
□ Service implementado
|
||||
□ Tests
|
||||
|
||||
□ Frontend Service:
|
||||
□ Servicio en services/[module].service.ts
|
||||
□ Tipos importados
|
||||
□ Error handling
|
||||
|
||||
□ Frontend Store:
|
||||
□ Store Zustand si hay estado global
|
||||
□ Actions CRUD
|
||||
□ Tests
|
||||
|
||||
□ Coherencia:
|
||||
□ Validar con este audit
|
||||
□ Cobertura > 90%
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Generado: 2026-01-28 | Sistema SIMCO v4.0.0*
|
||||
183
orchestration/analisis/coherencia/AUDIT-DDL-BACKEND.md
Normal file
183
orchestration/analisis/coherencia/AUDIT-DDL-BACKEND.md
Normal file
@ -0,0 +1,183 @@
|
||||
# AUDIT-DDL-BACKEND.md
|
||||
## Auditoría de Coherencia DDL ↔ Backend
|
||||
|
||||
**Fecha:** 2026-01-28
|
||||
**Proyecto:** trading-platform
|
||||
**Auditor:** Claude Code (Opus 4.5)
|
||||
**Fase:** F0.3.1
|
||||
|
||||
---
|
||||
|
||||
## RESUMEN EJECUTIVO
|
||||
|
||||
| Métrica | Valor | Target | Gap |
|
||||
|---------|-------|--------|-----|
|
||||
| **Coherencia DDL-Backend** | 31% | 95% | -64pp |
|
||||
| **Tablas DDL** | 93 | - | - |
|
||||
| **Tablas con backend** | 37 | 93 | 56 faltantes |
|
||||
| **Tablas orphan** | 53 | 0 | CRÍTICO |
|
||||
|
||||
---
|
||||
|
||||
## TABLA RESUMEN POR SCHEMA
|
||||
|
||||
| Schema | Tablas | Con Backend | % Coherencia | Estado |
|
||||
|--------|--------|-------------|--------------|--------|
|
||||
| **audit** | 7 | 1/7 | 14% | CRÍTICO |
|
||||
| **auth** | 13 | 6/13 | 46% | CRÍTICO |
|
||||
| **education** | 16 | 10/16 | 63% | MEDIO |
|
||||
| **financial** | 10 | 4/10 | 40% | CRÍTICO |
|
||||
| **investment** | 9 | 5/9 | 56% | CRÍTICO |
|
||||
| **llm** | 5 | 1/5 | 20% | ORPHAN |
|
||||
| **market_data** | 4 | 1/4 | 25% | CRÍTICO |
|
||||
| **ml** | 11 | 6/11 | 55% | CRÍTICO |
|
||||
| **portfolio** | 5 | 3/5 | 60% | CRÍTICO |
|
||||
| **trading** | 10 | 5/10 | 50% | CRÍTICO |
|
||||
| **TOTAL** | **93** | **37** | **31%** | **CRÍTICO** |
|
||||
|
||||
---
|
||||
|
||||
## CLASIFICACIÓN DE GAPS
|
||||
|
||||
### A. ORPHAN TABLES (53 tablas sin tipos/servicios)
|
||||
|
||||
**Schema: auth (8 tablas)**
|
||||
- email_verifications
|
||||
- phone_verifications
|
||||
- password_reset_tokens
|
||||
- auth_logs
|
||||
- login_attempts
|
||||
- rate_limiting_config
|
||||
- notifications
|
||||
- user_push_tokens
|
||||
|
||||
**Schema: education (6 tablas)**
|
||||
- categories (parcial)
|
||||
- videos
|
||||
- progress
|
||||
- review_helpful_votes
|
||||
|
||||
**Schema: trading (5 tablas)**
|
||||
- symbols
|
||||
- bots
|
||||
- signals
|
||||
- trading_metrics
|
||||
- paper_balances
|
||||
|
||||
**Schema: investment (4 tablas)**
|
||||
- risk_questionnaire
|
||||
- withdrawal_requests
|
||||
- daily_performance
|
||||
- distribution_history
|
||||
|
||||
**Schema: financial (6 tablas)**
|
||||
- invoices
|
||||
- payment_methods
|
||||
- wallet_audit_log
|
||||
- currency_exchange_rates
|
||||
- wallet_limits
|
||||
- customers
|
||||
|
||||
**Schema: portfolio (2 tablas)**
|
||||
- rebalance_history
|
||||
- portfolio_snapshots
|
||||
|
||||
**Schema: market_data (3 tablas)**
|
||||
- tickers
|
||||
- ohlcv_5m
|
||||
- ohlcv_15m
|
||||
|
||||
**Schema: ml (5 tablas)**
|
||||
- model_versions
|
||||
- prediction_outcomes
|
||||
- feature_store
|
||||
- llm_predictions
|
||||
- llm_prediction_outcomes
|
||||
- llm_decisions
|
||||
- risk_events
|
||||
|
||||
**Schema: llm (4 tablas - desconectadas)**
|
||||
- conversations (tipo existe, servicio no usa BD)
|
||||
- messages (tipo existe, servicio no usa BD)
|
||||
- user_preferences (tipo existe, servicio no usa BD)
|
||||
- user_memory (tipo existe, servicio no usa BD)
|
||||
|
||||
**Schema: audit (6 tablas)**
|
||||
- security_events
|
||||
- system_events
|
||||
- trading_audit
|
||||
- api_request_logs
|
||||
- data_access_logs
|
||||
- compliance_logs
|
||||
|
||||
---
|
||||
|
||||
## FIELD MISMATCHES DETECTADOS
|
||||
|
||||
### auth.sessions
|
||||
| DDL Campo | Backend Campo | Estado |
|
||||
|-----------|---------------|--------|
|
||||
| session_token | NO EXISTE | MISSING |
|
||||
| is_active | NO EXISTE | MISSING |
|
||||
| device_type | NO EXISTE | MISSING |
|
||||
| device_name | NO EXISTE | MISSING |
|
||||
|
||||
### education.categories
|
||||
| DDL Campo | Backend Campo | Estado |
|
||||
|-----------|---------------|--------|
|
||||
| display_order | sortOrder | RENAME |
|
||||
| icon_url | icon | TYPE DIFF |
|
||||
| color | NO EXISTE | MISSING |
|
||||
|
||||
### financial.wallets
|
||||
| DDL Campo | Backend Campo | Estado |
|
||||
|-----------|---------------|--------|
|
||||
| balance DECIMAL(20,8) | balance: number | PRECISION LOSS |
|
||||
|
||||
---
|
||||
|
||||
## PRIORIZACIÓN DE FIXES
|
||||
|
||||
### P0 CRÍTICO (Bloquea APIs)
|
||||
1. **LLM desconexión:** Conectar llm.service.ts a BD (5 tablas)
|
||||
2. **Auth gaps:** email_verifications, phone_verifications, password_reset_tokens
|
||||
3. **Trading symbols:** Crear tipo y servicio (requisito para watchlists)
|
||||
4. **Market data OHLCV:** Completar tipos
|
||||
|
||||
### P1 ALTA (Funcionalidad principal)
|
||||
1. **Education videos:** Servicio dedicado
|
||||
2. **Investment risks:** Tipo risk_questionnaire
|
||||
3. **Audit completo:** security_events, api_request_logs
|
||||
4. **Portfolio snapshots:** Tipo portfolio_snapshots
|
||||
|
||||
### P2 MEDIA (Mejora coherencia)
|
||||
1. Notification system (auth.notifications)
|
||||
2. Currency rates
|
||||
3. Trading bots
|
||||
4. ML model versions
|
||||
|
||||
### P3 BAJA (Consistencia)
|
||||
1. Wallet limits, customers, compliance logs
|
||||
|
||||
---
|
||||
|
||||
## RECOMENDACIONES
|
||||
|
||||
### Inmediatas (Semana 1)
|
||||
1. Crear script de auditoría automático
|
||||
2. Conectar LLM a BD (crítico)
|
||||
3. Crear tipos faltantes auth (5 tablas)
|
||||
|
||||
### Corto plazo (Semana 2-3)
|
||||
1. Implementar education.videos
|
||||
2. Completar trading.symbols
|
||||
3. Crear investment.risk_questionnaire
|
||||
|
||||
### Mediano plazo (Semana 4+)
|
||||
1. Estandarizar naming DDL→Backend
|
||||
2. Crear repository pattern para todas las tablas
|
||||
3. Implementar tipos ACID para DECIMAL/UUID
|
||||
|
||||
---
|
||||
|
||||
*Generado: 2026-01-28 | Sistema SIMCO v4.0.0*
|
||||
@ -0,0 +1,218 @@
|
||||
# COHERENCE-BASELINE-2026-01-28.md
|
||||
## Reporte Baseline de Coherencia - Trading Platform
|
||||
|
||||
**Fecha:** 2026-01-28
|
||||
**Proyecto:** trading-platform
|
||||
**Sistema:** SIMCO v4.0.0
|
||||
**Fase:** F0.3.3
|
||||
|
||||
---
|
||||
|
||||
## RESUMEN EJECUTIVO
|
||||
|
||||
Este documento establece el **punto de partida (baseline)** para medir mejoras de coherencia.
|
||||
|
||||
### Métricas Globales
|
||||
|
||||
| Métrica | Actual | Target (F4) | Gap | Prioridad |
|
||||
|---------|--------|-------------|-----|-----------|
|
||||
| **Coherencia DDL-Backend** | 31% | 95% | -64pp | P0 CRÍTICO |
|
||||
| **Coherencia Backend-Frontend** | 72% | 85% | -13pp | P1 ALTO |
|
||||
| **Documentación Épicas** | 45% | 70% | -25pp | P1 ALTO |
|
||||
| **Cobertura Tests Frontend** | 5% | 85% | -80pp | P0 CRÍTICO |
|
||||
| **COHERENCIA GLOBAL** | **39.6%** | **90%** | **-50.4pp** | **CRÍTICO** |
|
||||
|
||||
**Fórmula Global:** (31 + 72 + 45 + 5) / 4 = 39.6%
|
||||
|
||||
---
|
||||
|
||||
## I. INVENTARIO POR CAPA
|
||||
|
||||
### 1.1 DDL Layer
|
||||
|
||||
| Métrica | Valor |
|
||||
|---------|-------|
|
||||
| Schemas | 10 |
|
||||
| Tablas totales | 93 |
|
||||
| Tablas con cobertura backend | 37 (39.8%) |
|
||||
| Tablas orphan | 56 (60.2%) |
|
||||
| SQL files | 125 |
|
||||
| Triggers/Functions | 20+ |
|
||||
|
||||
### 1.2 Backend Layer
|
||||
|
||||
| Métrica | Valor |
|
||||
|---------|-------|
|
||||
| TypeScript files | 182 |
|
||||
| Services | 42 |
|
||||
| Controllers | 31 |
|
||||
| Módulos | 17 |
|
||||
| Endpoints totales | 282 |
|
||||
| Endpoints documentados Swagger | 2 (0.7%) |
|
||||
|
||||
### 1.3 Frontend Layer
|
||||
|
||||
| Métrica | Valor |
|
||||
|---------|-------|
|
||||
| React components | 30 |
|
||||
| Routes | 47 |
|
||||
| API Services | 15 |
|
||||
| Zustand Stores | 8 |
|
||||
| Test files | 6 |
|
||||
| Test cases | ~108 |
|
||||
|
||||
### 1.4 Documentación
|
||||
|
||||
| Métrica | Valor |
|
||||
|---------|-------|
|
||||
| Markdown files | 359 |
|
||||
| Epic docs | 22 |
|
||||
| Épicas documentadas | 10 |
|
||||
| Coverage promedio épicas | 45% |
|
||||
|
||||
---
|
||||
|
||||
## II. DESGLOSE POR SCHEMA
|
||||
|
||||
| Schema | Tablas | Backend | Frontend | Coherencia |
|
||||
|--------|--------|---------|----------|------------|
|
||||
| audit | 7 | 1 | 0 | 14% |
|
||||
| auth | 13 | 6 | 6 | 46% |
|
||||
| education | 16 | 10 | 8 | 63% |
|
||||
| financial | 10 | 4 | 3 | 40% |
|
||||
| investment | 9 | 5 | 3 | 56% |
|
||||
| llm | 5 | 1 | 1 | 20% |
|
||||
| market_data | 4 | 1 | 1 | 25% |
|
||||
| ml | 11 | 6 | 4 | 55% |
|
||||
| portfolio | 5 | 3 | 3 | 60% |
|
||||
| trading | 10 | 5 | 5 | 50% |
|
||||
|
||||
---
|
||||
|
||||
## III. DESGLOSE POR ÉPICA
|
||||
|
||||
| Epic | Implementación | Documentación | DDL-BE | BE-FE |
|
||||
|------|----------------|---------------|--------|-------|
|
||||
| OQI-001 | 85% | 70% | 46% | 100% |
|
||||
| OQI-002 | 55% | 50% | 63% | 98% |
|
||||
| OQI-003 | 60% | 55% | 50% | 95% |
|
||||
| OQI-004 | 55% | 45% | 56% | 50% |
|
||||
| OQI-005 | 65% | 60% | 40% | 95% |
|
||||
| OQI-006 | 75% | 65% | 55% | 60% |
|
||||
| OQI-007 | 45% | 35% | 20% | 50% |
|
||||
| OQI-008 | 45% | 40% | 60% | 100% |
|
||||
| OQI-009 | ? | 30% | ? | ? |
|
||||
| OQI-010 | 15% | 25% | ? | ? |
|
||||
|
||||
---
|
||||
|
||||
## IV. GAPS CRÍTICOS IDENTIFICADOS
|
||||
|
||||
### Gap 1: AUDIT Module (0% frontend)
|
||||
- 7 tablas DDL
|
||||
- 1 servicio backend
|
||||
- 0 servicios frontend
|
||||
- **Impacto:** Compliance
|
||||
|
||||
### Gap 2: Zustand Stores (8/17)
|
||||
- 9 stores faltantes
|
||||
- **Impacto:** State management
|
||||
|
||||
### Gap 3: Swagger Docs (0.7%)
|
||||
- 280 endpoints sin documentación
|
||||
- **Impacto:** Developer experience
|
||||
|
||||
### Gap 4: Test Coverage (5%)
|
||||
- 147 tests faltantes
|
||||
- **Impacto:** Quality assurance
|
||||
|
||||
### Gap 5: LLM Disconnected
|
||||
- Tipos existen, BD no usada
|
||||
- **Impacto:** Data persistence
|
||||
|
||||
---
|
||||
|
||||
## V. ROADMAP DE MEJORA
|
||||
|
||||
| Fase | Objetivo | Métrica Target |
|
||||
|------|----------|----------------|
|
||||
| F1 | Cerrar DDL-Backend | 75% (+44pp) |
|
||||
| F2 | Cerrar Backend-Frontend | 85% (+13pp) |
|
||||
| F3 | Completar Documentación | 70% (+25pp) |
|
||||
| F4 | Validación y Cierre | 90% global |
|
||||
|
||||
### Timeline Estimado
|
||||
|
||||
```
|
||||
Semana 1-2: F1 (DDL-Backend)
|
||||
Semana 3-4: F2 (Backend-Frontend)
|
||||
Semana 5-6: F3 (Documentación)
|
||||
Semana 7: F4 (Validación)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## VI. MÉTRICAS DE ÉXITO (F4)
|
||||
|
||||
### Criterios de Aprobación
|
||||
|
||||
- [ ] DDL-Backend >= 95%
|
||||
- [ ] Backend-Frontend >= 85%
|
||||
- [ ] Documentación >= 70%
|
||||
- [ ] Tests >= 85%
|
||||
- [ ] Global >= 90%
|
||||
- [ ] Zero breaking changes
|
||||
- [ ] Build sin errores
|
||||
- [ ] Lint sin warnings críticos
|
||||
|
||||
---
|
||||
|
||||
## VII. FÓRMULAS DE CÁLCULO
|
||||
|
||||
### Coherencia DDL-Backend
|
||||
```
|
||||
= (Servicios_Implementados / Total_Tablas) × 100
|
||||
= (37 / 120) × 100 = 31%
|
||||
```
|
||||
|
||||
### Coherencia Backend-Frontend
|
||||
```
|
||||
= (Endpoints_Con_Consumidor / Total_Endpoints) × 100
|
||||
= (147 / 208) × 100 = 72%
|
||||
```
|
||||
|
||||
### Documentación Épicas
|
||||
```
|
||||
= Promedio_Coverage_Todas_Épicas
|
||||
= 45%
|
||||
```
|
||||
|
||||
### Test Coverage
|
||||
```
|
||||
= (Test_Cases_Existentes / Test_Cases_Requeridos) × 100
|
||||
= (108 / 2000+) × 100 ≈ 5%
|
||||
```
|
||||
|
||||
### Coherencia Global
|
||||
```
|
||||
= (DDL-BE + BE-FE + Doc + Tests) / 4
|
||||
= (31 + 72 + 45 + 5) / 4 = 39.6%
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## VIII. PRÓXIMOS PASOS
|
||||
|
||||
1. **Completar F0** - Marcar como completada
|
||||
2. **Iniciar F1** - Cerrar gaps DDL-Backend
|
||||
3. **Paralelo F3.3/F3.4** - Documentación OQI-009, OQI-010
|
||||
|
||||
---
|
||||
|
||||
**Estado:** BASELINE ESTABLECIDO
|
||||
**Siguiente checkpoint:** F1 completada
|
||||
**Responsable:** Claude Code (Opus 4.5)
|
||||
|
||||
---
|
||||
|
||||
*Generado: 2026-01-28 | Sistema SIMCO v4.0.0*
|
||||
@ -1,772 +1,188 @@
|
||||
# Indice de Tareas - trading-platform
|
||||
version: "1.1.0"
|
||||
version: "1.2.0"
|
||||
proyecto: trading-platform
|
||||
tipo: STANDALONE
|
||||
created: "2026-01-24"
|
||||
updated: "2026-01-28"
|
||||
|
||||
resumen:
|
||||
total_tareas: 24
|
||||
completadas: 23
|
||||
en_progreso: 1
|
||||
total_tareas_activas: 4
|
||||
completadas_archivadas: 21
|
||||
en_progreso: 4
|
||||
pendientes: 0
|
||||
|
||||
archivo_2026_01:
|
||||
ubicacion: "_archive/2026-01/"
|
||||
tareas_archivadas: 21
|
||||
fecha_purga: "2026-01-28"
|
||||
|
||||
formato_id:
|
||||
patron: "TASK-{YYYY-MM-DD}-{NNN}"
|
||||
ejemplo: "TASK-2026-01-24-001"
|
||||
|
||||
por_fecha:
|
||||
2026-01-28:
|
||||
- id: TASK-2026-01-28-001-SPRINT1-P0-TRADING-AGENTS
|
||||
titulo: "Sprint 1: Gaps P0 Bloqueantes - Trading Agents UI"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
prioridad: P0
|
||||
modulos_afectados:
|
||||
- OQI-003-trading-charts
|
||||
- OQI-004-cuentas-inversion
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
capas_afectadas:
|
||||
- Frontend (types, services, stores, components, pages)
|
||||
- Routing (App.tsx)
|
||||
resultados:
|
||||
gaps_resueltos: 1
|
||||
gaps_ya_existian: 2
|
||||
lineas_codigo: 2212
|
||||
archivos_creados: 7
|
||||
archivos_creados:
|
||||
- tradingAgents.types.ts (582 lineas)
|
||||
- agents.service.ts (200 lineas)
|
||||
- agentsStore.ts (550 lineas)
|
||||
- BotCard.tsx (280 lineas)
|
||||
- AgentCard.tsx (150 lineas)
|
||||
- AgentsList.tsx (200 lineas)
|
||||
- AgentsPage.tsx (250 lineas)
|
||||
ruta_agregada: "/trading/agents"
|
||||
|
||||
- id: TASK-2026-01-28-002-SPRINT2-P1-GAPS
|
||||
titulo: "Sprint 2: Gaps P1 Criticos - Market Data, ML Overlays, 2FA"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
prioridad: P1
|
||||
modulos_afectados:
|
||||
- OQI-003-trading-charts
|
||||
- OQI-006-senales-ml
|
||||
- OQI-001-fundamentos-auth
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
capas_afectadas:
|
||||
- Backend (market-data module)
|
||||
- Frontend (ML overlays, 2FA components)
|
||||
resultados:
|
||||
gaps_resueltos: 3
|
||||
gaps_ya_existian: 1
|
||||
lineas_codigo: 2118
|
||||
archivos_creados: 13
|
||||
modulos_backend:
|
||||
- market-data (4 endpoints, Redis cache)
|
||||
componentes_frontend:
|
||||
- MLPredictionOverlay.tsx
|
||||
- SignalMarkers.tsx
|
||||
- ICTConceptsOverlay.tsx
|
||||
- TwoFactorSetup.tsx
|
||||
- TwoFactorVerifyModal.tsx
|
||||
- TwoFactorSettings.tsx
|
||||
commits:
|
||||
- "3295f25 (Market Data)"
|
||||
- "d3f4aa3 (ML Overlays)"
|
||||
- "261dc4c (2FA Frontend)"
|
||||
|
||||
- id: TASK-2026-01-28-003-SPRINT3-P2-GAPS
|
||||
titulo: "Sprint 3: Gaps P2 Importantes - Audit, Currency, Risk, Reviews"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
prioridad: P2
|
||||
modulos_afectados:
|
||||
- OQI-001-fundamentos-auth
|
||||
- OQI-004-cuentas-inversion
|
||||
- OQI-002-educativo
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
capas_afectadas:
|
||||
- Backend (4 nuevos modulos)
|
||||
- Database (DDL review_helpful_votes)
|
||||
resultados:
|
||||
gaps_resueltos: 4
|
||||
gaps_ya_existian: 1
|
||||
lineas_codigo: 3571
|
||||
archivos_creados: 18
|
||||
modulos_backend_nuevos:
|
||||
- audit (1,325 lineas)
|
||||
- currency (566 lineas)
|
||||
- risk (1,070 lineas)
|
||||
- reviews (610 lineas)
|
||||
commits:
|
||||
- "8f2b929 (Currency Exchange)"
|
||||
- "b99953b (Reviews Backend)"
|
||||
- "70c201d (DDL review_helpful_votes)"
|
||||
# ==============================================================================
|
||||
# TAREAS ACTIVAS (en_progreso o pendientes)
|
||||
# ==============================================================================
|
||||
|
||||
tareas_activas:
|
||||
2026-01-27:
|
||||
- id: TASK-2026-01-27-PLATFORM-VALIDATION
|
||||
titulo: "Platform Validation: TypeScript, Auth, WebSocket & ML Data Ingestion"
|
||||
estado: COMPLETADA
|
||||
tipo: VALIDATION
|
||||
prioridad: P1
|
||||
modulos_afectados:
|
||||
- OQI-001-fundamentos-auth
|
||||
- OQI-003-trading-charts
|
||||
- OQI-006-senales-ml
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
capas_afectadas:
|
||||
- Backend (TypeScript build)
|
||||
- Frontend (TypeScript build)
|
||||
- ML Engine (data ingestion script)
|
||||
- Database (ohlcv_5m: +1.08M rows)
|
||||
resultados:
|
||||
typescript_backend: "0 errores"
|
||||
typescript_frontend: "0 errores"
|
||||
websocket_urls: "Verificados (3080, 3083)"
|
||||
ml_data_ingestion: "1,084,471 bars OHLCV"
|
||||
simbolos_ingestados:
|
||||
- XAUUSD (140,310)
|
||||
- EURUSD (147,296)
|
||||
- GBPUSD (147,091)
|
||||
- BTCUSD (210,227)
|
||||
- USDJPY (147,191)
|
||||
- GBPJPY (146,061)
|
||||
- AUDUSD (146,295)
|
||||
periodo_datos: "2024-01-27 a 2026-01-26"
|
||||
tiempo_ejecucion: "45 min"
|
||||
- id: TASK-2026-01-27-BLOCKER-001-TOKEN-REFRESH
|
||||
titulo: "BLOCKER-001: Token Refresh Improvements"
|
||||
estado: COMPLETADA
|
||||
estado: EN_PROGRESO
|
||||
tipo: REFACTOR
|
||||
prioridad: P0
|
||||
modulo: OQI-001-fundamentos-auth
|
||||
fases_completadas: 4
|
||||
esfuerzo_estimado: "12h"
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
capas_afectadas:
|
||||
- Backend (middleware, auth services)
|
||||
- Frontend (apiClient proactive refresh)
|
||||
- Database (migration: sessions table)
|
||||
mejoras_implementadas:
|
||||
fase1:
|
||||
nombre: "Rate Limiting Específico"
|
||||
descripcion: "Previene abuse de /auth/refresh con rate limiter específico (15 req/15min por token)"
|
||||
archivos:
|
||||
- apps/backend/src/core/middleware/rate-limiter.ts
|
||||
- apps/backend/src/modules/auth/auth.routes.ts
|
||||
fase2:
|
||||
nombre: "Token Rotation"
|
||||
descripcion: "SHA-256 hash del refresh token, detección de reuso, auto-revocación de sesiones comprometidas"
|
||||
archivos:
|
||||
- apps/backend/src/modules/auth/services/token.service.ts
|
||||
- apps/backend/src/modules/auth/types/auth.types.ts
|
||||
- apps/database/migrations/2026-01-27_add_token_rotation.sql
|
||||
fase3:
|
||||
nombre: "Session Validation"
|
||||
descripcion: "Validación de sesión activa en cada request (con cache 30s para performance)"
|
||||
archivos:
|
||||
- apps/backend/src/core/middleware/auth.middleware.ts
|
||||
- apps/backend/src/modules/auth/services/session-cache.service.ts
|
||||
fase4:
|
||||
nombre: "Proactive Refresh"
|
||||
descripcion: "Refresh automático 5min antes de expirar, multi-tab sync con BroadcastChannel"
|
||||
archivos:
|
||||
- apps/backend/src/core/middleware/auth.middleware.ts
|
||||
- apps/backend/src/index.ts
|
||||
- apps/frontend/src/lib/apiClient.ts
|
||||
lineas_codigo_total: ~190
|
||||
archivos_modificados: 6
|
||||
archivos_creados: 2
|
||||
commits:
|
||||
backend: 1
|
||||
frontend: 1
|
||||
database: 1
|
||||
migration_ejecutada: true
|
||||
- id: TASK-2026-01-27-E2E-VIDEO-UPLOAD
|
||||
titulo: "E2E Tests: Video Upload Module - Comprehensive Test Suite"
|
||||
estado: COMPLETADA
|
||||
tipo: TESTING
|
||||
subtareas: 7
|
||||
tests_totales: 153
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- README.md
|
||||
modulos_afectados:
|
||||
- OQI-002-educativo
|
||||
capas_afectadas:
|
||||
- Backend (tests E2E, integration)
|
||||
- Frontend (tests E2E, integration)
|
||||
archivos_creados:
|
||||
backend:
|
||||
- src/__tests__/e2e/video-upload-flow.test.ts (5 tests)
|
||||
- src/__tests__/integration/video-controller.test.ts (22 tests)
|
||||
- src/__tests__/integration/video-service.test.ts (29 tests)
|
||||
- src/__tests__/integration/storage-service.test.ts (35 tests)
|
||||
frontend:
|
||||
- src/__tests__/e2e/video-upload-form.test.tsx (27 tests)
|
||||
- src/__tests__/e2e/video-upload-service.test.ts (20 tests)
|
||||
- src/__tests__/e2e/video-upload-integration.test.tsx (15 tests)
|
||||
- vitest.config.ts
|
||||
- src/__tests__/setup.ts
|
||||
lineas_codigo_total: 2500
|
||||
esfuerzo_estimado: "14h"
|
||||
esfuerzo_completado: "14h"
|
||||
cobertura_estimada: ">80%"
|
||||
commits:
|
||||
backend: 1
|
||||
frontend: 1
|
||||
main: 1
|
||||
2026-01-26:
|
||||
- id: TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN
|
||||
titulo: "Análisis Integral y Plan de Integración Trading Platform"
|
||||
progreso: "0%"
|
||||
fases_pendientes: 4
|
||||
ubicacion: "TASK-2026-01-27-BLOCKER-001-TOKEN-REFRESH/"
|
||||
|
||||
- id: TASK-2026-01-27-MASTER-ANALYSIS-PLAN
|
||||
titulo: "Analisis Maestro Integral y Plan de Ejecucion"
|
||||
estado: EN_PROGRESO
|
||||
tipo: ANALYSIS
|
||||
subtareas_nivel_1: 5
|
||||
subtareas_nivel_2: 20+
|
||||
subtareas_nivel_3: 50+
|
||||
esfuerzo_total: "2,500h"
|
||||
fases_capved:
|
||||
C: COMPLETADA
|
||||
A: COMPLETADA
|
||||
P: COMPLETADA
|
||||
V: PENDIENTE
|
||||
E: PENDIENTE
|
||||
D: PENDIENTE
|
||||
entregables:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md (800 LOC)
|
||||
- 02-ANALISIS.md (2,500 LOC)
|
||||
- 03-PLAN.md (3,000 LOC)
|
||||
- EXECUTIVE-SUMMARY.md (500 LOC)
|
||||
hallazgos_criticos:
|
||||
gaps_coherencia: 7
|
||||
blockers_p0: 4
|
||||
docs_faltantes: 58
|
||||
trabajo_pendiente: "2,457h"
|
||||
subagentes_utilizados: 5
|
||||
tiempo_analisis: "45min"
|
||||
eficiencia: "85% reducción vs secuencial"
|
||||
- id: TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS
|
||||
titulo: "OQI-007 LLM Assistant Panels - Error Handling, Connection, Tokens, Prompts"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
- id: TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS
|
||||
titulo: "OQI-006 ML Utility Panels - Model Selection, Ensemble Config, ICT Analysis"
|
||||
prioridad: P0
|
||||
progreso: "50%"
|
||||
ubicacion: "TASK-2026-01-27-MASTER-ANALYSIS-PLAN/"
|
||||
|
||||
2026-01-25:
|
||||
- id: TASK-2026-01-25-002-FRONTEND-COMPREHENSIVE-AUDIT
|
||||
titulo: "Auditoria Integral Frontend - 9 Epicos"
|
||||
estado: EN_PROGRESO
|
||||
tipo: ANALYSIS
|
||||
prioridad: P0
|
||||
progreso: "5%"
|
||||
ubicacion: "TASK-2026-01-25-002-FRONTEND-COMPREHENSIVE-AUDIT/"
|
||||
|
||||
- id: TASK-2026-01-25-FRONTEND-MODULE-DOCS
|
||||
titulo: "Documentacion de 8 Modulos Frontend con READMEs"
|
||||
estado: EN_PROGRESO
|
||||
tipo: DOCUMENTATION
|
||||
prioridad: P3
|
||||
progreso: "0%"
|
||||
ubicacion: "TASK-2026-01-25-FRONTEND-MODULE-DOCS/"
|
||||
|
||||
# ==============================================================================
|
||||
# TAREAS ARCHIVADAS (referencia rapida - detalles en _archive/2026-01/)
|
||||
# ==============================================================================
|
||||
|
||||
tareas_archivadas_2026_01:
|
||||
fecha_archivado: "2026-01-28"
|
||||
ubicacion: "_archive/2026-01/"
|
||||
total: 21
|
||||
|
||||
lista:
|
||||
# 2026-01-28 (3 tareas)
|
||||
- id: TASK-2026-01-28-001-SPRINT1-P0-TRADING-AGENTS
|
||||
titulo: "Sprint 1: Gaps P0 - Trading Agents UI"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
2026-01-25:
|
||||
- id: TASK-2026-01-28-002-SPRINT2-P1-GAPS
|
||||
titulo: "Sprint 2: Gaps P1 - Market Data, ML, 2FA"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-28-003-SPRINT3-P2-GAPS
|
||||
titulo: "Sprint 3: Gaps P2 - Audit, Currency, Risk, Reviews"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
# 2026-01-27 (2 tareas)
|
||||
- id: TASK-2026-01-27-PLATFORM-VALIDATION
|
||||
titulo: "Platform Validation: TypeScript, WebSocket, ML Data"
|
||||
estado: COMPLETADA
|
||||
tipo: VALIDATION
|
||||
|
||||
- id: TASK-2026-01-27-E2E-VIDEO-UPLOAD
|
||||
titulo: "E2E Tests: Video Upload Module (153 tests)"
|
||||
estado: COMPLETADA
|
||||
tipo: TESTING
|
||||
|
||||
# 2026-01-26 (3 tareas)
|
||||
- id: TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN
|
||||
titulo: "Analisis Integral y Plan de Integracion"
|
||||
estado: COMPLETADA
|
||||
tipo: ANALYSIS
|
||||
|
||||
- id: TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS
|
||||
titulo: "OQI-007 LLM Assistant Panels"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS
|
||||
titulo: "OQI-006 ML Utility Panels"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
# 2026-01-25 (13 tareas)
|
||||
- id: TASK-2026-01-25-FRONTEND-ANALYSIS
|
||||
titulo: "Analisis y Documentacion Frontend"
|
||||
estado: COMPLETADA
|
||||
tipo: ANALYSIS
|
||||
|
||||
- id: TASK-2026-01-25-PHASE1-MVP
|
||||
titulo: "Implementacion Phase 1 MVP - Notificaciones y Distribucion"
|
||||
titulo: "Phase 1 MVP - Notificaciones y Distribucion"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-NOTIFICACIONES-COMPLETAS
|
||||
titulo: "Sistema de Notificaciones Completo con Push, Tests y Frontend"
|
||||
titulo: "Sistema de Notificaciones Completo"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-ML-DATA-MIGRATION
|
||||
titulo: "Migracion MySQL→PostgreSQL y Entrenamiento Modelos ML"
|
||||
titulo: "Migracion MySQL→PostgreSQL y ML"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER
|
||||
titulo: "OQI-008 Portfolio Manager - Implementacion Completa"
|
||||
titulo: "OQI-008 Portfolio Manager"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL
|
||||
titulo: "OQI-004 Account Detail - Pagina de Detalle de Cuenta"
|
||||
titulo: "OQI-004 Account Detail"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-OQI-003-TRADING-PANELS
|
||||
titulo: "OQI-003 Trading Panels - Componentes de Análisis"
|
||||
titulo: "OQI-003 Trading Panels"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
- id: TASK-2026-01-25-002-FRONTEND-COMPREHENSIVE-AUDIT
|
||||
titulo: "Auditoría Integral Frontend - 9 Épicos"
|
||||
estado: COMPLETADA
|
||||
tipo: ANALYSIS
|
||||
|
||||
- id: TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007
|
||||
titulo: "Creación de 12 Componentes Frontend para OQI-004, OQI-006, OQI-007"
|
||||
titulo: "12 Componentes Frontend OQI-004/006/007"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-OQI-003-TRADING-ADVANCED
|
||||
titulo: "OQI-003 Trading Advanced Components - Market Depth y Screener"
|
||||
titulo: "OQI-003 Trading Advanced"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
titulo: "Mejora Integral de Modelos ML - Arquitectura Avanzada"
|
||||
titulo: "Mejora Integral Modelos ML"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
subtareas: 54
|
||||
story_points: 90
|
||||
|
||||
- id: TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED
|
||||
titulo: "OQI-002 Education Advanced - Creator, Upload, Streaming, Certificates"
|
||||
titulo: "OQI-002 Education Advanced"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
- id: TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED
|
||||
titulo: "OQI-004 Investment Advanced - Account Creation, Risk Analysis, Portfolio Optimizer"
|
||||
titulo: "OQI-004 Investment Advanced"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
- id: TASK-2026-01-25-FRONTEND-MODULE-DOCS
|
||||
titulo: "Documentación de 8 Módulos Frontend con READMEs"
|
||||
estado: COMPLETADA
|
||||
tipo: DOCUMENTATION
|
||||
|
||||
- id: TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED
|
||||
titulo: "OQI-005 Payments Advanced - Stripe Elements, Refunds, Invoice Preview"
|
||||
titulo: "OQI-005 Payments Advanced"
|
||||
estado: COMPLETADA
|
||||
tipo: FEATURE
|
||||
|
||||
tareas_activas: []
|
||||
|
||||
tareas_completadas:
|
||||
- id: TASK-2026-01-27-PLATFORM-VALIDATION
|
||||
fecha_inicio: "2026-01-27"
|
||||
fecha_fin: "2026-01-27"
|
||||
entregables: 3
|
||||
tipo: VALIDATION
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-001-fundamentos-auth
|
||||
- OQI-003-trading-charts
|
||||
- OQI-006-senales-ml
|
||||
capas_afectadas:
|
||||
- Backend (TypeScript validation)
|
||||
- Frontend (TypeScript validation)
|
||||
- ML Engine (data ingestion)
|
||||
- Database (ohlcv_5m population)
|
||||
resultados:
|
||||
typescript: "0 errores (backend + frontend)"
|
||||
websocket: "URLs verificados"
|
||||
ml_data: "1,084,471 bars OHLCV"
|
||||
- id: TASK-2026-01-27-E2E-VIDEO-UPLOAD
|
||||
fecha_inicio: "2026-01-27"
|
||||
fecha_fin: "2026-01-27"
|
||||
entregables: 9
|
||||
tipo: TESTING
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- README.md
|
||||
modulos_afectados:
|
||||
- OQI-002-educativo
|
||||
capas_afectadas:
|
||||
- Backend (E2E + Integration tests)
|
||||
- Frontend (E2E + Integration tests)
|
||||
archivos_creados_total: 9
|
||||
lineas_codigo_total: 2500
|
||||
tests_escritos: 153
|
||||
suites: 7
|
||||
cobertura: ">80%"
|
||||
- id: TASK-2026-01-25-ML-TRAINING-ENHANCEMENT
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 63
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
- SUMMARY.md
|
||||
modulos_afectados:
|
||||
- OQI-006-senales-ml
|
||||
- OQI-007-llm-strategy-agent
|
||||
capas_afectadas:
|
||||
- ML Engine (5 estrategias + metamodel)
|
||||
- Data (pipeline de datos)
|
||||
- Backend (integración LLM)
|
||||
- Backtesting (framework completo)
|
||||
archivos_creados_total: 63
|
||||
lineas_codigo_total: 29769
|
||||
componentes:
|
||||
- Data Pipeline (TrainingDataLoader, TradingDataset, DataValidator)
|
||||
- Attention Architecture (Price-Focused, Positional Encoding)
|
||||
- 5 Estrategias ML (PVA, MRD, VBP, MSA, MTS)
|
||||
- Neural Gating Metamodel con Calibration
|
||||
- LLM Integration (Ollama + Claude fallback)
|
||||
- Backtesting Framework con Walk-Forward Validation
|
||||
- id: TASK-2026-01-25-FRONTEND-ANALYSIS
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 14
|
||||
tipo: ANALYSIS
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
- SUMMARY.md
|
||||
- id: TASK-2026-01-25-PHASE1-MVP
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 6
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-001-fundamentos-auth
|
||||
- OQI-003-trading-charts
|
||||
- OQI-004-investment-accounts
|
||||
- id: TASK-2026-01-25-NOTIFICACIONES-COMPLETAS
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 14
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
- SUMMARY.md
|
||||
modulos_afectados:
|
||||
- OQI-001-fundamentos-auth
|
||||
- OQI-004-investment-accounts
|
||||
capas_afectadas:
|
||||
- DDL (4 tablas)
|
||||
- Backend (firebase, tests)
|
||||
- Frontend (components, store, pages)
|
||||
- id: TASK-2026-01-25-ML-DATA-MIGRATION
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 8
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
- SUMMARY.md
|
||||
modulos_afectados:
|
||||
- OQI-006-senales-ml
|
||||
capas_afectadas:
|
||||
- Data (Polygon API → PostgreSQL)
|
||||
- ML Engine (MySQL → PostgreSQL migration)
|
||||
- Models (12 attention models trained)
|
||||
- id: TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 18
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- SUMMARY.md
|
||||
modulos_afectados:
|
||||
- OQI-008-portfolio-manager
|
||||
capas_afectadas:
|
||||
- Backend (repositories, websocket, controllers, routes)
|
||||
- Frontend (pages, components, stores, services)
|
||||
commits:
|
||||
backend: 3
|
||||
frontend: 3
|
||||
- id: TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 3
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
modulos_afectados:
|
||||
- OQI-004-cuentas-inversion
|
||||
capas_afectadas:
|
||||
- Frontend (pages, services, routes)
|
||||
archivos_creados:
|
||||
- AccountDetail.tsx
|
||||
- investment.service.ts
|
||||
- id: TASK-2026-01-25-OQI-003-TRADING-PANELS
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 4
|
||||
tipo: FEATURE
|
||||
modulos_afectados:
|
||||
- OQI-003-trading-charts
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- IndicatorConfigPanel.tsx
|
||||
- ChartDrawingToolsPanel.tsx
|
||||
- SymbolInfoPanel.tsx
|
||||
- TradeJournalPanel.tsx
|
||||
- id: TASK-2026-01-25-002-FRONTEND-COMPREHENSIVE-AUDIT
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 56 # 48 originales + 8 ET specs
|
||||
tipo: ANALYSIS
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 06-DOCUMENTACION.md # ✅ Agregado
|
||||
- SUMMARY.md
|
||||
modulos_afectados:
|
||||
- ALL (9 epics)
|
||||
entregables_detalle:
|
||||
fase_auditoria:
|
||||
- EXECUTIVE-SUMMARY.md
|
||||
- COMPONENTS-MASTER-MATRIX.md
|
||||
- API-CONTRACTS-MASTER-MATRIX.md
|
||||
- DEPENDENCY-GRAPH.md
|
||||
- PURGE-PLAN.md
|
||||
- INTEGRATION-PLAN.md
|
||||
- RECOMMENDATIONS.md
|
||||
- MULTIMEDIA-MASTER-MATRIX.md
|
||||
fase_et_specs:
|
||||
- ET-EDU-007-video-player-advanced.md
|
||||
- ET-MT4-001-websocket-integration.md
|
||||
- ET-ML-009-ensemble-signal.md
|
||||
- ET-TRD-009-risk-based-position-sizer.md
|
||||
- ET-TRD-010-drawing-tools-persistence.md
|
||||
- ET-TRD-011-market-bias-indicator.md
|
||||
- ET-PFM-009-custom-charts-svg-canvas.md
|
||||
- ET-ML-008-ict-analysis-card.md
|
||||
hallazgos_criticos: 30
|
||||
esfuerzo_pendiente: "2457h"
|
||||
lineas_documentacion_total: 25341 # 19117 audit + 6224 ET specs
|
||||
commits:
|
||||
- hash: cea9ae8
|
||||
archivos: 8
|
||||
lineas: 6224
|
||||
- hash: 5f2b6483
|
||||
tipo: submodule_update
|
||||
- id: TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 12
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-004-cuentas-inversion
|
||||
- OQI-006-senales-ml
|
||||
- OQI-007-llm-strategy-agent
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- ConfidenceMeter.tsx
|
||||
- SignalPerformanceTracker.tsx
|
||||
- ModelAccuracyDashboard.tsx
|
||||
- BacktestResultsVisualization.tsx
|
||||
- AccountSummaryCard.tsx
|
||||
- ProductComparisonTable.tsx
|
||||
- PerformanceWidgetChart.tsx
|
||||
- AccountSettingsPanel.tsx
|
||||
- AnalysisRequestForm.tsx
|
||||
- StrategyTemplateSelector.tsx
|
||||
- LLMConfigPanel.tsx
|
||||
- ContextMemoryDisplay.tsx
|
||||
commits: 9
|
||||
- id: TASK-2026-01-25-OQI-003-TRADING-ADVANCED
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 4
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-003-trading-charts
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- OrderBookDepthVisualization.tsx
|
||||
- MarketDepthPanel.tsx
|
||||
- SymbolComparisonChart.tsx
|
||||
- TradingScreener.tsx
|
||||
commits: 2
|
||||
- id: TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 4
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-002-educativo
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- VideoUploadForm.tsx
|
||||
- CreatorDashboard.tsx
|
||||
- CertificateGenerator.tsx
|
||||
- LiveStreamPlayer.tsx
|
||||
lineas_codigo: 1833
|
||||
tipos_exportados: 9
|
||||
commits: 2
|
||||
- id: TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 4
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-004-cuentas-inversion
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- CreateAccountWizard.tsx
|
||||
- RiskAnalysisPanel.tsx
|
||||
- PortfolioOptimizerWidget.tsx
|
||||
- AccountTransferModal.tsx
|
||||
lineas_codigo: 2070
|
||||
tipos_exportados: 13
|
||||
commits: 2
|
||||
- id: TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 4
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-005-pagos-stripe
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- StripeElementsWrapper.tsx
|
||||
- InvoicePreview.tsx
|
||||
- RefundRequestModal.tsx
|
||||
- RefundList.tsx
|
||||
lineas_codigo: 1500
|
||||
tipos_exportados: 10
|
||||
commits: 3
|
||||
- id: TASK-2026-01-25-FRONTEND-MODULE-DOCS
|
||||
fecha_inicio: "2026-01-25"
|
||||
fecha_fin: "2026-01-25"
|
||||
entregables: 8
|
||||
tipo: DOCUMENTATION
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-001-fundamentos-auth
|
||||
- OQI-002-educativo
|
||||
- OQI-003-trading-charts
|
||||
- OQI-004-cuentas-inversion
|
||||
- OQI-005-pagos-stripe
|
||||
- OQI-006-senales-ml
|
||||
- OQI-007-llm-strategy-agent
|
||||
- OQI-008-portfolio-manager
|
||||
capas_afectadas:
|
||||
- Frontend (module READMEs)
|
||||
archivos_creados:
|
||||
- auth/README.md (250 lineas)
|
||||
- trading/README.md (600 lineas)
|
||||
- payments/README.md (400 lineas)
|
||||
- investment/README.md (350 lineas)
|
||||
- education/README.md (450 lineas)
|
||||
- assistant/README.md (400 lineas)
|
||||
- portfolio/README.md (300 lineas)
|
||||
archivos_actualizados:
|
||||
- ml/README.md (+100 lineas, 4 componentes OQI-006)
|
||||
lineas_documentacion_total: 2850
|
||||
readmes_creados: 7
|
||||
readmes_actualizados: 1
|
||||
agentes_explore_paralelos: 8
|
||||
commits: 0 # Apps/ está en .gitignore del monorepo
|
||||
- id: TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS
|
||||
fecha_inicio: "2026-01-26"
|
||||
fecha_fin: "2026-01-26"
|
||||
entregables: 4
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-007-llm-strategy-agent
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- ErrorBoundary.tsx
|
||||
- ConnectionStatus.tsx
|
||||
- TokenUsageDisplay.tsx
|
||||
- PromptLibrary.tsx
|
||||
lineas_codigo: 1210
|
||||
tipos_exportados: 12
|
||||
commits: 3
|
||||
- id: TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS
|
||||
fecha_inicio: "2026-01-26"
|
||||
fecha_fin: "2026-01-26"
|
||||
entregables: 3
|
||||
tipo: FEATURE
|
||||
archivos_capved:
|
||||
- METADATA.yml
|
||||
- 01-CONTEXTO.md
|
||||
- 02-ANALISIS.md
|
||||
- 03-PLANEACION.md
|
||||
- 04-VALIDACION.md
|
||||
- 05-EJECUCION.md
|
||||
- 06-DOCUMENTACION.md
|
||||
modulos_afectados:
|
||||
- OQI-006-senales-ml
|
||||
capas_afectadas:
|
||||
- Frontend (components)
|
||||
archivos_creados:
|
||||
- ModelSelector.tsx
|
||||
- EnsemblePanel.tsx
|
||||
- ICTAnalysisPanel.tsx
|
||||
lineas_codigo: 950
|
||||
tipos_exportados: 7
|
||||
commits: 3
|
||||
# ==============================================================================
|
||||
# INSTRUCCIONES
|
||||
# ==============================================================================
|
||||
|
||||
instrucciones:
|
||||
crear_tarea: |
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user