diff --git a/docs/02-definicion-modulos/OQI-009-marketplace/README.md b/docs/02-definicion-modulos/OQI-009-marketplace/README.md index d11024d..640b94d 100644 --- a/docs/02-definicion-modulos/OQI-009-marketplace/README.md +++ b/docs/02-definicion-modulos/OQI-009-marketplace/README.md @@ -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* diff --git a/docs/02-definicion-modulos/OQI-009-marketplace/_MAP.md b/docs/02-definicion-modulos/OQI-009-marketplace/_MAP.md index eeefb42..a04e5a5 100644 --- a/docs/02-definicion-modulos/OQI-009-marketplace/_MAP.md +++ b/docs/02-definicion-modulos/OQI-009-marketplace/_MAP.md @@ -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 | diff --git a/docs/02-definicion-modulos/OQI-009-marketplace/especificaciones/ET-MKT-004-productos.md b/docs/02-definicion-modulos/OQI-009-marketplace/especificaciones/ET-MKT-004-productos.md new file mode 100644 index 0000000..90c5191 --- /dev/null +++ b/docs/02-definicion-modulos/OQI-009-marketplace/especificaciones/ET-MKT-004-productos.md @@ -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 diff --git a/docs/02-definicion-modulos/OQI-010-mt4-gateway/README.md b/docs/02-definicion-modulos/OQI-010-mt4-gateway/README.md new file mode 100644 index 0000000..673cbfe --- /dev/null +++ b/docs/02-definicion-modulos/OQI-010-mt4-gateway/README.md @@ -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* diff --git a/docs/02-definicion-modulos/OQI-010-mt4-gateway/ROADMAP-MT4.md b/docs/02-definicion-modulos/OQI-010-mt4-gateway/ROADMAP-MT4.md new file mode 100644 index 0000000..6edf5c1 --- /dev/null +++ b/docs/02-definicion-modulos/OQI-010-mt4-gateway/ROADMAP-MT4.md @@ -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* diff --git a/docs/02-definicion-modulos/OQI-010-mt4-gateway/STATUS.md b/docs/02-definicion-modulos/OQI-010-mt4-gateway/STATUS.md new file mode 100644 index 0000000..91ddadd --- /dev/null +++ b/docs/02-definicion-modulos/OQI-010-mt4-gateway/STATUS.md @@ -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* diff --git a/docs/02-definicion-modulos/OQI-010-mt4-gateway/_MAP.md b/docs/02-definicion-modulos/OQI-010-mt4-gateway/_MAP.md new file mode 100644 index 0000000..8538088 --- /dev/null +++ b/docs/02-definicion-modulos/OQI-010-mt4-gateway/_MAP.md @@ -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* diff --git a/docs/02-definicion-modulos/OQI-010-mt4-gateway/especificaciones/ET-MT4-001-gateway.md b/docs/02-definicion-modulos/OQI-010-mt4-gateway/especificaciones/ET-MT4-001-gateway.md new file mode 100644 index 0000000..5457f05 --- /dev/null +++ b/docs/02-definicion-modulos/OQI-010-mt4-gateway/especificaciones/ET-MT4-001-gateway.md @@ -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 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 +``` + +**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 +``` + +**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 +``` + +**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 +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 +``` + +**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 +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: '' + })); +}; +``` + +### 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* diff --git a/docs/02-definicion-modulos/_MAP.md b/docs/02-definicion-modulos/_MAP.md index f545ad1..8576af6 100644 --- a/docs/02-definicion-modulos/_MAP.md +++ b/docs/02-definicion-modulos/_MAP.md @@ -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 diff --git a/docs/04-fase-backlog/README.md b/docs/04-fase-backlog/README.md index 8504ce7..b8e0980 100644 --- a/docs/04-fase-backlog/README.md +++ b/docs/04-fase-backlog/README.md @@ -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 diff --git a/docs/90-transversal/gaps/ANALISIS-GAPS-DOCUMENTACION.md b/docs/90-transversal/gaps/ANALISIS-GAPS-DOCUMENTACION.md index 92ae149..cc5c593 100644 --- a/docs/90-transversal/gaps/ANALISIS-GAPS-DOCUMENTACION.md +++ b/docs/90-transversal/gaps/ANALISIS-GAPS-DOCUMENTACION.md @@ -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 --- diff --git a/docs/90-transversal/inventarios/INVENTARIO-STC-PLATFORM-WEB.md b/docs/90-transversal/inventarios/INVENTARIO-STC-PLATFORM-WEB.md index 979222d..73bec8e 100644 --- a/docs/90-transversal/inventarios/INVENTARIO-STC-PLATFORM-WEB.md +++ b/docs/90-transversal/inventarios/INVENTARIO-STC-PLATFORM-WEB.md @@ -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 diff --git a/docs/90-transversal/inventarios/MIGRACION-SUPABASE-EXPRESS.md b/docs/90-transversal/inventarios/MIGRACION-SUPABASE-EXPRESS.md index 511ce8f..cf3596d 100644 --- a/docs/90-transversal/inventarios/MIGRACION-SUPABASE-EXPRESS.md +++ b/docs/90-transversal/inventarios/MIGRACION-SUPABASE-EXPRESS.md @@ -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 diff --git a/docs/90-transversal/inventarios/_MAP.md b/docs/90-transversal/inventarios/_MAP.md index e42995a..7fd9e97 100644 --- a/docs/90-transversal/inventarios/_MAP.md +++ b/docs/90-transversal/inventarios/_MAP.md @@ -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) --- diff --git a/orchestration/analisis/coherencia/AUDIT-BACKEND-FRONTEND.md b/orchestration/analisis/coherencia/AUDIT-BACKEND-FRONTEND.md new file mode 100644 index 0000000..b057057 --- /dev/null +++ b/orchestration/analisis/coherencia/AUDIT-BACKEND-FRONTEND.md @@ -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* diff --git a/orchestration/analisis/coherencia/AUDIT-DDL-BACKEND.md b/orchestration/analisis/coherencia/AUDIT-DDL-BACKEND.md new file mode 100644 index 0000000..104462a --- /dev/null +++ b/orchestration/analisis/coherencia/AUDIT-DDL-BACKEND.md @@ -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* diff --git a/orchestration/analisis/coherencia/COHERENCE-BASELINE-2026-01-28.md b/orchestration/analisis/coherencia/COHERENCE-BASELINE-2026-01-28.md new file mode 100644 index 0000000..0881e34 --- /dev/null +++ b/orchestration/analisis/coherencia/COHERENCE-BASELINE-2026-01-28.md @@ -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* diff --git a/orchestration/tareas/_INDEX.yml b/orchestration/tareas/_INDEX.yml index 6f591d7..ff39c91 100644 --- a/orchestration/tareas/_INDEX.yml +++ b/orchestration/tareas/_INDEX.yml @@ -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: | diff --git a/orchestration/tareas/2026-01-28/TASK-001-SPRINT1-P0-TRADING-AGENTS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-001-SPRINT1-P0-TRADING-AGENTS/METADATA.yml similarity index 100% rename from orchestration/tareas/2026-01-28/TASK-001-SPRINT1-P0-TRADING-AGENTS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-001-SPRINT1-P0-TRADING-AGENTS/METADATA.yml diff --git a/orchestration/tareas/2026-01-28/TASK-002-SPRINT2-P1-GAPS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-002-SPRINT2-P1-GAPS/METADATA.yml similarity index 100% rename from orchestration/tareas/2026-01-28/TASK-002-SPRINT2-P1-GAPS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-002-SPRINT2-P1-GAPS/METADATA.yml diff --git a/orchestration/tareas/2026-01-28/TASK-003-SPRINT3-P2-GAPS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-003-SPRINT3-P2-GAPS/METADATA.yml similarity index 100% rename from orchestration/tareas/2026-01-28/TASK-003-SPRINT3-P2-GAPS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-003-SPRINT3-P2-GAPS/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-ANALYSIS/SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-ANALYSIS/SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-FRONTEND-COMPONENTS-OQI-004-006-007/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-DATA-MIGRATION/SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-DATA-MIGRATION/SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-ML-TRAINING-ENHANCEMENT/SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-NOTIFICACIONES-COMPLETAS/SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-002-EDUCATION-ADVANCED/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-ADVANCED/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-PANELS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-PANELS/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-003-TRADING-PANELS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-003-TRADING-PANELS/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-ACCOUNT-DETAIL/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-004-INVESTMENT-ADVANCED/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-005-PAYMENTS-ADVANCED/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-OQI-008-PORTFOLIO-MANAGER/SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-25-PHASE1-MVP/SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-25-PHASE1-MVP/SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/03-PLAN.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/03-PLAN.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/03-PLAN.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/03-PLAN.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/CLOSURE-REPORT.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/CLOSURE-REPORT.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/CLOSURE-REPORT.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/CLOSURE-REPORT.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY-ST1-ST3.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY-ST1-ST3.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY-ST1-ST3.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY-ST1-ST3.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/EXECUTIVE-SUMMARY.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/PENDING-TASKS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/PENDING-TASKS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/PENDING-TASKS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/PENDING-TASKS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST3.2-REORGANIZATION-ANALYSIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST3.2-REORGANIZATION-ANALYSIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST3.2-REORGANIZATION-ANALYSIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST3.2-REORGANIZATION-ANALYSIS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.1-AUTO-REFRESH-PROGRESS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.1-AUTO-REFRESH-PROGRESS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.1-AUTO-REFRESH-PROGRESS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.1-AUTO-REFRESH-PROGRESS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-COMPLETE.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-COMPLETE.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-COMPLETE.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-COMPLETE.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-CONTEXT-ANALYSIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-CONTEXT-ANALYSIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-CONTEXT-ANALYSIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-CONTEXT-ANALYSIS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-PROGRESS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-PROGRESS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-PROGRESS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.2-PCI-DSS-PROGRESS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-COMPLETE.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-COMPLETE.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-COMPLETE.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-COMPLETE.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-PROGRESS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-PROGRESS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-PROGRESS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/ST4.3-VIDEO-UPLOAD-PROGRESS.md diff --git a/orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/VALIDATION-DOCUMENTACION-SIMCO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/VALIDATION-DOCUMENTACION-SIMCO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/VALIDATION-DOCUMENTACION-SIMCO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-ANALYSIS-INTEGRATION-PLAN/VALIDATION-DOCUMENTACION-SIMCO.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-006-ML-UTILITY-PANELS/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/02-ANALISIS.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/02-ANALISIS.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/02-ANALISIS.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/02-ANALISIS.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/03-PLANEACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/03-PLANEACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/03-PLANEACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/03-PLANEACION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/04-VALIDACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/04-VALIDACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/04-VALIDACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/04-VALIDACION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-26-OQI-007-LLM-ASSISTANT-PANELS/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/01-CONTEXTO.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/01-CONTEXTO.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/01-CONTEXTO.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/01-CONTEXTO.md diff --git a/orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/METADATA.yml diff --git a/orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/README.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/README.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-E2E-VIDEO-UPLOAD/README.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-E2E-VIDEO-UPLOAD/README.md diff --git a/orchestration/tareas/TASK-2026-01-27-PLATFORM-VALIDATION/05-EJECUCION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-PLATFORM-VALIDATION/05-EJECUCION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-PLATFORM-VALIDATION/05-EJECUCION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-PLATFORM-VALIDATION/05-EJECUCION.md diff --git a/orchestration/tareas/TASK-2026-01-27-PLATFORM-VALIDATION/06-DOCUMENTACION.md b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-PLATFORM-VALIDATION/06-DOCUMENTACION.md similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-PLATFORM-VALIDATION/06-DOCUMENTACION.md rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-PLATFORM-VALIDATION/06-DOCUMENTACION.md diff --git a/orchestration/tareas/TASK-2026-01-27-PLATFORM-VALIDATION/METADATA.yml b/orchestration/tareas/_archive/2026-01/TASK-2026-01-27-PLATFORM-VALIDATION/METADATA.yml similarity index 100% rename from orchestration/tareas/TASK-2026-01-27-PLATFORM-VALIDATION/METADATA.yml rename to orchestration/tareas/_archive/2026-01/TASK-2026-01-27-PLATFORM-VALIDATION/METADATA.yml