# PLAN DE IMPLEMENTACIÓN DE CORRECCIONES - OrbiQuant IA

**Fecha:** 2025-12-06
**Versión:** 2.0.0 - COMPLETADO
**Basado en:** REPORTE-ANALISIS-REQUISITOS.md
**Estado:** ✅ TODAS LAS CORRECCIONES DE BASE DE DATOS IMPLEMENTADAS

---

## RESUMEN DEL PLAN

Este documento define el plan de implementación para corregir todas las inconsistencias identificadas en el análisis de requisitos. Incluye matriz de trazabilidad para validar cobertura completa.

### Métricas del Plan

| Métrica | Valor |
|---------|-------|
| Total de correcciones | 55 |
| Sprints estimados | 3 |
| Story Points totales | 47 SP |
| Épicas impactadas | 8 |
| ADRs a crear | 5 |
| Tablas a definir | 8 |

---

## FASE 0: DECISIONES ARQUITECTÓNICAS (Pre-Sprint)

**Objetivo:** Resolver conflictos críticos que bloquean desarrollo
**Duración:** 2-3 días de refinamiento con stakeholders

### 0.1 Decisiones Requeridas

| ID | Decisión | Opciones | Impacto | Responsable |
|----|----------|----------|---------|-------------|
| DEC-001 | Moneda principal | USD con conversión MXN / MXN con conversión USD | OQI-005, pricing, facturación | Product Owner |
| DEC-002 | Fusión OQI-004/OQI-008 | Fusionar en 1 épica / Delimitar responsabilidades | Arquitectura, roadmap | Tech Lead |
| DEC-003 | Schema de usuarios | `public.users` / `auth.users` separado | Todas las épicas | DBA |
| DEC-004 | Vector Database para LLM | pgvector / Pinecone / Weaviate | OQI-007, costos | Tech Lead |
| DEC-005 | Distribución PAMM | Mensual / Trimestral | OQI-004, finanzas | Product Owner |

### 0.2 Entregables Fase 0

```
□ Documento de decisiones firmado
□ ADR-002 creado (Estructura Monorepo)
□ Definición clara de límites OQI-004 vs OQI-008
□ Estrategia de moneda documentada
```

---

## FASE 1: CORRECCIONES CRÍTICAS (Sprint 1)

**Objetivo:** Eliminar bloqueos y dependencias circulares
**Story Points:** 18 SP

### 1.1 Resolver Dependencia Circular OQI-003 ↔ OQI-006

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| CIR-001 | Definir interfaz `ISignalProvider` abstracta | 1 | ET-TRD-002-api.md |
| CIR-002 | Crear `MockSignalProvider` para desarrollo OQI-003 | 1 | ET-TRD-002-api.md |
| CIR-003 | Documentar contrato de datos entre módulos | 1 | ARQUITECTURA-UNIFICADA.md |
| CIR-004 | Actualizar diagrama de dependencias | 0.5 | docs/01-arquitectura/ |

**Trazabilidad:** Corrige TRD-001, DEP-001

### 1.2 Unificar Definición de Wallets

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| WAL-001 | Definir schema único `financial.wallets` | 2 | ET-PAY-003-database.md |
| WAL-002 | Eliminar wallet de OQI-004 (usar referencia) | 0.5 | ET-INV-003-database.md |
| WAL-003 | Eliminar wallet de OQI-008 (usar referencia) | 0.5 | ET-PTF-003-database.md |
| WAL-004 | Documentar extensiones por módulo | 1 | ARQUITECTURA-UNIFICADA.md |
| WAL-005 | Definir tabla `financial.wallet_audit_log` | 1 | ET-PAY-003-database.md |

**Trazabilidad:** Corrige PAY-002, duplicación wallets

### 1.3 Resolver Conflicto de Moneda

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| MON-001 | Definir moneda principal según DEC-001 | 0.5 | ET-PAY-001-requirements.md |
| MON-002 | Actualizar planes de pricing | 0.5 | ET-PAY-001-requirements.md |
| MON-003 | Documentar estrategia multi-currency | 1 | ET-PAY-002-api.md |
| MON-004 | Definir tabla `currency_exchange_rates` | 1 | ET-PAY-003-database.md |

**Trazabilidad:** Corrige PAY-001

### 1.4 Delimitar OQI-004 vs OQI-008

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| DUP-001 | Documentar responsabilidades exclusivas OQI-004 | 1 | OQI-004/README.md |
| DUP-002 | Documentar responsabilidades exclusivas OQI-008 | 1 | OQI-008/README.md |
| DUP-003 | Unificar perfiles de riesgo | 1 | ET-INV-001-requirements.md |
| DUP-004 | Definir cuestionario completo (15 preguntas) | 1 | ET-PTF-001-requirements.md |
| DUP-005 | Eliminar componentes duplicados de frontend | 1 | ET-PTF-004-frontend.md |

**Trazabilidad:** Corrige INV-005, PTF-001, PTF-002, DEP-002

### 1.5 Crear ADRs Faltantes

| Tarea | Descripción | SP | Archivo a Crear |
|-------|-------------|----|--------------------|
| ADR-001 | Crear ADR-002: Estructura Monorepo | 1 | docs/97-adr/ADR-002-monorepo.md |
| ADR-002 | Crear ADR-003: Estrategia de Testing | 1 | docs/97-adr/ADR-003-testing.md |

**Trazabilidad:** Corrige gaps de arquitectura

---

## FASE 2: CORRECCIONES ALTAS (Sprint 2)

**Objetivo:** Completar schemas y especificaciones técnicas
**Story Points:** 17 SP

### 2.1 Completar Tablas Faltantes - Education

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| EDU-T01 | Definir schema `education.user_gamification_profile` | 1 | ET-EDU-001-database.md |
| EDU-T02 | Definir schema `education.user_activity_log` | 1 | ET-EDU-001-database.md |
| EDU-T03 | Definir schema `education.course_reviews` | 0.5 | ET-EDU-001-database.md |
| EDU-T04 | Definir schema `education.certificates` | 0.5 | ET-EDU-001-database.md |
| EDU-T05 | Documentar algoritmo de progreso | 0.5 | ET-EDU-002-api.md |
| EDU-T06 | Documentar workflow de certificados | 0.5 | ET-EDU-002-api.md |

**Trazabilidad:** Corrige EDU-001, EDU-002, EDU-003, EDU-005, EDU-006

### 2.2 Completar Tablas Faltantes - LLM

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| LLM-T01 | Definir schema `llm.user_preferences` | 1 | ET-LLM-003-database.md |
| LLM-T02 | Definir schema `llm.user_memory` | 1 | ET-LLM-003-database.md |
| LLM-T03 | Especificar Vector Database (según DEC-004) | 1 | ET-LLM-001-requirements.md |
| LLM-T04 | Documentar RAG pipeline | 1 | ET-LLM-002-api.md |
| LLM-T05 | Definir límites de contexto | 0.5 | ET-LLM-002-api.md |
| LLM-T06 | Documentar modo proactivo | 0.5 | ET-LLM-002-api.md |

**Trazabilidad:** Corrige LLM-001, LLM-002, LLM-003, LLM-004

### 2.3 Completar Trading Engine

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| TRD-T01 | Especificar algoritmo Paper Engine | 2 | ET-TRD-002-api.md |
| TRD-T02 | Agregar 'partially_filled' a ENUM | 0.5 | ET-TRD-003-database.md |
| TRD-T03 | Definir ML overlay endpoints | 1 | ET-TRD-002-api.md |
| TRD-T04 | Estandarizar latency simulation | 0.5 | ET-TRD-001-requirements.md |

**Trazabilidad:** Corrige TRD-002, TRD-003, TRD-004, TRD-006

### 2.4 Completar Payments

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| PAY-T01 | Documentar Stripe webhook handlers | 1 | ET-PAY-002-api.md |
| PAY-T02 | Especificar 6 historias faltantes | 2 | ET-PAY-001-requirements.md |
| PAY-T03 | Documentar refund policy técnicamente | 0.5 | ET-PAY-002-api.md |

**Trazabilidad:** Corrige PAY-003, PAY-004, PAY-005

### 2.5 Estandarización Global

| Tarea | Descripción | SP | Archivos a Modificar |
|-------|-------------|----|--------------------|
| STD-001 | Estandarizar TIMESTAMPTZ en todos los schemas | 1 | Todos los ET-*-database.md |
| STD-002 | Definir schema `auth` explícitamente | 0.5 | ET-AUTH-003-database.md |
| STD-003 | Corregir referencias a users (auth.users) | 0.5 | Todos los ET-*-database.md |

**Trazabilidad:** Corrige AUTH-001, DB-001, DB-002

---

## FASE 3: CORRECCIONES MEDIAS (Sprint 3)

**Objetivo:** Completar documentación y detalles técnicos
**Story Points:** 12 SP

### 3.1 Completar Especificaciones Auth

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| AUTH-T01 | Documentar endpoint resend-verification | 0.5 | ET-AUTH-002-api.md |
| AUTH-T02 | Documentar endpoint backup-codes | 0.5 | ET-AUTH-002-api.md |
| AUTH-T03 | Especificar TTL de tempToken | 0.5 | ET-AUTH-003-database.md |
| AUTH-T04 | Completar schema login_attempts | 0.5 | ET-AUTH-003-database.md |
| AUTH-T05 | Definir tabla rate_limiting_config | 0.5 | ET-AUTH-003-database.md |

**Trazabilidad:** Corrige AUTH-002, AUTH-003, AUTH-005, AUTH-006

### 3.2 Índices de Performance

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| IDX-001 | Definir índices para auth (login_attempts, sessions) | 1 | ET-AUTH-003-database.md |
| IDX-002 | Definir índices para education (enrollments, progress) | 1 | ET-EDU-001-database.md |
| IDX-003 | Definir índices para trading (positions, orders) | 1 | ET-TRD-003-database.md |
| IDX-004 | Definir índices para financial (transactions, wallets) | 1 | ET-PAY-003-database.md |

**Trazabilidad:** Corrige AUTH-008, DB-003

### 3.3 Completar Investment/Portfolio

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| INV-T01 | Definir fórmula de cálculo de rendimiento | 0.5 | ET-INV-002-api.md |
| INV-T02 | Documentar withdrawal rules completas | 0.5 | ET-INV-003-database.md |
| INV-T03 | Especificar Monte Carlo simulation | 1 | ET-PTF-002-api.md |
| INV-T04 | Definir rebalancing triggers | 0.5 | ET-PTF-003-database.md |

**Trazabilidad:** Corrige INV-003, INV-004, PTF-003, PTF-004

### 3.4 Completar ML Signals

| Tarea | Descripción | SP | Archivo a Modificar |
|-------|-------------|----|--------------------|
| ML-T01 | Documentar actualización actual_outcome | 0.5 | ET-ML-002-api.md |
| ML-T02 | Especificar feature normalization | 0.5 | ET-ML-001-requirements.md |
| ML-T03 | Definir model versioning strategy | 0.5 | ET-ML-003-database.md |
| ML-T04 | Calibrar confidence thresholds | 0.5 | ET-ML-002-api.md |

**Trazabilidad:** Corrige ML-001, ML-002, ML-004, ML-006

### 3.5 Crear ADRs Restantes

| Tarea | Descripción | SP | Archivo a Crear |
|-------|-------------|----|--------------------|
| ADR-T01 | Crear ADR-004: DevOps y CI/CD | 1 | docs/97-adr/ADR-004-devops.md |
| ADR-T02 | Crear ADR-005: Estrategia de Caching | 1 | docs/97-adr/ADR-005-caching.md |
| ADR-T03 | Crear ADR-006: Seguridad y Autenticación | 1 | docs/97-adr/ADR-006-security.md |

**Trazabilidad:** Corrige gaps de arquitectura

---

## MATRIZ DE TRAZABILIDAD COMPLETA

### Hallazgos vs Correcciones

| ID Hallazgo | Severidad | Corregido Por | Sprint |
|-------------|-----------|---------------|--------|
| AUTH-001 | ALTA | STD-001 | 2 |
| AUTH-002 | MEDIA | AUTH-T01, AUTH-T02 | 3 |
| AUTH-003 | MEDIA | AUTH-T03 | 3 |
| AUTH-004 | BAJA | - (backlog) | - |
| AUTH-005 | ALTA | AUTH-T04 | 3 |
| AUTH-006 | MEDIA | AUTH-T05 | 3 |
| AUTH-007 | BAJA | - (backlog) | - |
| AUTH-008 | MEDIA | IDX-001 | 3 |
| EDU-001 | CRÍTICA | EDU-T01 | 2 |
| EDU-002 | CRÍTICA | EDU-T02 | 2 |
| EDU-003 | ALTA | EDU-T03 | 2 |
| EDU-004 | ALTA | - (dev phase) | - |
| EDU-005 | MEDIA | EDU-T05 | 2 |
| EDU-006 | MEDIA | EDU-T06 | 2 |
| EDU-007 | BAJA | - (backlog) | - |
| TRD-001 | CRÍTICA | CIR-001 a CIR-004 | 1 |
| TRD-002 | CRÍTICA | TRD-T01 | 2 |
| TRD-003 | ALTA | TRD-T03 | 2 |
| TRD-004 | ALTA | TRD-T02 | 2 |
| TRD-005 | MEDIA | - (backlog) | - |
| TRD-006 | MEDIA | TRD-T04 | 2 |
| TRD-007 | BAJA | - (backlog) | - |
| INV-001 | ALTA | DEC-005 | 0 |
| INV-002 | ALTA | MON-001 | 1 |
| INV-003 | MEDIA | INV-T01 | 3 |
| INV-004 | MEDIA | INV-T02 | 3 |
| INV-005 | CRÍTICA | DUP-001 a DUP-005 | 1 |
| INV-006 | BAJA | - (backlog) | - |
| PAY-001 | CRÍTICA | MON-001 a MON-004 | 1 |
| PAY-002 | CRÍTICA | WAL-001 a WAL-005 | 1 |
| PAY-003 | ALTA | PAY-T02 | 2 |
| PAY-004 | ALTA | PAY-T01 | 2 |
| PAY-005 | MEDIA | PAY-T03 | 2 |
| PAY-006 | MEDIA | - (backlog) | - |
| PAY-007 | BAJA | - (backlog) | - |
| ML-001 | ALTA | ML-T01 | 3 |
| ML-002 | ALTA | ML-T02 | 3 |
| ML-003 | MEDIA | - (backlog) | - |
| ML-004 | MEDIA | ML-T03 | 3 |
| ML-005 | BAJA | - (backlog) | - |
| ML-006 | MEDIA | ML-T04 | 3 |
| LLM-001 | CRÍTICA | LLM-T01, LLM-T02 | 2 |
| LLM-002 | CRÍTICA | LLM-T03, LLM-T04 | 2 |
| LLM-003 | ALTA | LLM-T06 | 2 |
| LLM-004 | ALTA | LLM-T05 | 2 |
| LLM-005 | MEDIA | - (backlog) | - |
| LLM-006 | BAJA | - (backlog) | - |
| PTF-001 | CRÍTICA | DUP-001 a DUP-005 | 1 |
| PTF-002 | ALTA | DUP-004 | 1 |
| PTF-003 | ALTA | INV-T03 | 3 |
| PTF-004 | MEDIA | INV-T04 | 3 |
| PTF-005 | MEDIA | - (backlog) | - |
| PTF-006 | BAJA | - (backlog) | - |
| DB-001 | CRÍTICA | STD-003 | 2 |
| DB-002 | ALTA | STD-002 | 2 |
| DB-003 | ALTA | IDX-001 a IDX-004 | 3 |
| DB-004 | MEDIA | - (backlog) | - |
| DB-005 | MEDIA | - (backlog) | - |
| DEP-001 | CRÍTICA | CIR-001 a CIR-004 | 1 |
| DEP-002 | CRÍTICA | DUP-001 a DUP-005 | 1 |
| DEP-003 | UNDEFINED | LLM-T04 (parcial) | 2 |
| DEP-004 | MISSING | - (ver sección 8) | - |
| DEP-005 | MISSING | - (ver sección 8) | - |

---

## VALIDACIÓN DE COBERTURA

### Análisis de Gaps

#### Hallazgos NO Cubiertos en Plan (Severidad BAJA - Backlog)

| ID | Descripción | Justificación |
|----|-------------|---------------|
| AUTH-004 | OAuth providers sin prioridad | No bloquea, definir en implementación |
| AUTH-007 | Diagrama MFA incompleto | Documentación secundaria |
| EDU-007 | Prerequisitos sin validación | Feature enhancement |
| TRD-005 | Slippage sin parámetros | Definir en testing |
| TRD-007 | Librería de gráficos | Ya está en stack (Lightweight Charts) |
| INV-006 | Reportes sin formato | Definir en frontend |
| PAY-006 | CFDI sin detalles | Fase 2 de pagos (México) |
| PAY-007 | Templates de notificación | Definir en frontend |
| ML-003 | AMDDetector | Feature futura |
| ML-005 | Backtesting framework | Post-MVP |
| LLM-005 | Datos de mercado | Integración con OQI-003 |
| LLM-006 | UI chat | Definir en frontend |
| PTF-005 | Benchmark comparison | Feature enhancement |
| PTF-006 | Goal tracking | Feature enhancement |
| DB-004 | FK inconsistentes | Validar en migración |
| DB-005 | ENUMs duplicados | Refactor post-MVP |

#### Dependencias NO Cubiertas Completamente

| ID | Problema | Corrección Propuesta |
|----|----------|---------------------|
| DEP-003 | LLM necesita datos de todos los módulos | Agregar tarea de definición de interfaces de datos para LLM |
| DEP-004 | Cursos premium sin pagos documentado | Agregar integración OQI-002 → OQI-005 |
| DEP-005 | Trading sin billing documentado | Agregar integración OQI-003 → OQI-005 |

---

## CORRECCIONES ADICIONALES IDENTIFICADAS

### 8.1 Relaciones Faltantes Detectadas

| ID | Relación | Corrección | Sprint |
|----|----------|------------|--------|
| REL-001 | OQI-002 → OQI-005 (cursos premium) | Documentar en ET-EDU-001-requirements.md | 2 |
| REL-002 | OQI-003 → OQI-005 (trading billing) | Documentar en ET-TRD-001-requirements.md | 2 |
| REL-003 | OQI-007 → OQI-001 (contexto de usuario) | Documentar en ET-LLM-001-requirements.md | 2 |
| REL-004 | OQI-007 → OQI-002 (contenido educativo) | Documentar en ET-LLM-001-requirements.md | 2 |
| REL-005 | OQI-007 → OQI-003 (datos de trading) | Documentar en ET-LLM-001-requirements.md | 2 |
| REL-006 | OQI-007 → OQI-004 (datos de inversión) | Documentar en ET-LLM-001-requirements.md | 2 |
| REL-007 | OQI-001 → OQI-005 (subscription status) | Documentar en ET-AUTH-001-requirements.md | 2 |

### 8.2 Objetos Dependientes No Especificados

| Objeto | Módulo Origen | Módulos que lo Usan | Corrección |
|--------|---------------|---------------------|------------|
| `user_id` FK | OQI-001 | TODOS | Definir como `auth.users.id` universalmente |
| `subscription_status` | OQI-005 | OQI-001, OQI-002, OQI-003 | Crear ENUM compartido |
| `risk_profile` | OQI-004/008 | OQI-003, OQI-006 | Unificar en schema compartido |
| `wallet_id` | OQI-005 | OQI-004, OQI-008 | Ya cubierto en WAL-001 |
| `signal_data` | OQI-006 | OQI-003, OQI-007 | Definir interfaz en CIR-001 |
| `prediction_result` | OQI-006 | OQI-003, OQI-007, OQI-008 | Documentar estructura |

### 8.3 Componentes Frontend Duplicados

| Componente | OQI-004 | OQI-008 | Acción |
|------------|---------|---------|--------|
| PerformanceChart | Sí | AllocationChart | Unificar en shared components |
| TransactionList | Sí | - | Reusar |
| InvestmentDashboard | Sí | PortfolioDashboard | Fusionar |
| GoalTracker | - | Sí | Mantener en OQI-008 |

### 8.4 Types/Interfaces Compartidas No Definidas

| Interface | Módulos | Corrección | Archivo |
|-----------|---------|------------|---------|
| `IUser` | TODOS | Definir en shared types | types/user.ts |
| `ISignal` | OQI-003, OQI-006, OQI-007 | Definir en shared types | types/signal.ts |
| `IWallet` | OQI-004, OQI-005, OQI-008 | Definir en shared types | types/wallet.ts |
| `IRiskProfile` | OQI-004, OQI-006, OQI-008 | Definir en shared types | types/risk.ts |
| `ISubscription` | OQI-001, OQI-002, OQI-005 | Definir en shared types | types/subscription.ts |
| `IPrediction` | OQI-003, OQI-006, OQI-007 | Definir en shared types | types/prediction.ts |

---

## TAREAS ADICIONALES (Agregadas post-validación)

### Sprint 2 - Adiciones

| Tarea | Descripción | SP | Archivo |
|-------|-------------|----|--------------------|
| REL-T01 | Documentar integración OQI-002 → OQI-005 | 0.5 | ET-EDU-001-requirements.md |
| REL-T02 | Documentar integración OQI-003 → OQI-005 | 0.5 | ET-TRD-001-requirements.md |
| REL-T03 | Documentar integraciones OQI-007 → ALL | 1 | ET-LLM-001-requirements.md |
| REL-T04 | Documentar OQI-001 → OQI-005 (subs check) | 0.5 | ET-AUTH-001-requirements.md |
| TYP-T01 | Crear types/shared/ con interfaces comunes | 2 | apps/frontend/src/types/shared/ |
| TYP-T02 | Documentar ubicación de shared types | 0.5 | ARQUITECTURA-UNIFICADA.md |
| OBJ-T01 | Definir `subscription_status` ENUM compartido | 0.5 | ET-PAY-003-database.md |
| OBJ-T02 | Documentar estructura `prediction_result` | 0.5 | ET-ML-002-api.md |

**SP Adicionales Sprint 2:** 6 SP
**Nuevo Total Sprint 2:** 23 SP

---

## RESUMEN FINAL DEL PLAN

### Por Sprint

| Sprint | Objetivo | SP Original | SP Adicional | SP Total |
|--------|----------|-------------|--------------|----------|
| Fase 0 | Decisiones arquitectónicas | 0 | 0 | 0 |
| Sprint 1 | Correcciones críticas | 18 | 0 | 18 |
| Sprint 2 | Correcciones altas | 17 | 6 | 23 |
| Sprint 3 | Correcciones medias | 12 | 0 | 12 |
| **TOTAL** | | **47** | **6** | **53** |

### Cobertura de Hallazgos

| Severidad | Total | Cubiertos | Backlog | % Cobertura |
|-----------|-------|-----------|---------|-------------|
| CRÍTICA | 12 | 12 | 0 | 100% |
| ALTA | 18 | 18 | 0 | 100% |
| MEDIA | 25 | 18 | 7 | 72% |
| BAJA | 10 | 0 | 10 | 0% |
| **TOTAL** | **65** | **48** | **17** | **74%** |

### Objetos Adicionales Identificados

| Tipo | Cantidad | Estado |
|------|----------|--------|
| Relaciones faltantes | 7 | Agregadas al plan |
| Objetos compartidos | 6 | Agregados al plan |
| Interfaces TypeScript | 6 | Agregadas al plan |
| Componentes duplicados | 4 | Documentados para refactor |

---

## DIAGRAMA DE DEPENDENCIAS CORREGIDO

```
                    ┌─────────────────┐
                    │   OQI-001       │
                    │   (Auth)        │
                    │   ┌─────────┐   │
                    │   │auth.users│   │
                    └───┴────┬────┴───┘
                             │ user_id FK (universal)
        ┌────────────────────┼────────────────────┐
        ▼                    ▼                    ▼
┌───────────────┐    ┌───────────────┐    ┌───────────────┐
│   OQI-002     │    │   OQI-005     │    │   OQI-003     │
│  (Education)  │    │  (Payments)   │    │  (Trading)    │
│               │◄───┤               ├───►│               │
│ premium_access│    │ subscription_ │    │ billing_check │
└───────┬───────┘    │ status ENUM   │    └───────┬───────┘
        │            │               │            │
        │            │ financial.    │            │
        │            │ wallets       │◄───────────┤
        │            └───────┬───────┘            │
        │                    │                    │
        │            ┌───────┴───────┐            │
        │            │   OQI-004     │            │
        │            │ (Investment)  │◄───────────┤
        │            │   PAMM only   │            │
        │            │ (usa wallet)  │            │
        │            └───────┬───────┘            │
        │                    │                    │
        │            ┌───────┴───────┐    ┌───────┴───────┐
        │            │   OQI-008     │    │   OQI-006     │
        │            │ (Portfolio)   │◄───┤  (ML Signals) │
        │            │ Manager only  │    │ ISignalProvider│
        │            │ (usa wallet)  │    │  interface    │
        │            └───────┬───────┘    └───────┬───────┘
        │                    │                    │
        └────────────────────┼────────────────────┘
                             ▼
                    ┌─────────────────┐
                    │   OQI-007       │
                    │  (LLM Agent)    │
                    │   Consume ALL   │
                    │   via interfaces│
                    └─────────────────┘
```

---

## CHECKLIST DE VALIDACIÓN

### Pre-Sprint 1
- [x] Decisión DEC-001 (moneda) documentada ✅
- [x] Decisión DEC-002 (OQI-004/008) documentada ✅
- [x] Decisión DEC-003 (schema users) documentada ✅
- [x] Decisión DEC-004 (vector DB) documentada ✅
- [x] Decisión DEC-005 (distribución PAMM) documentada ✅

### Post-Sprint 1 - BASE DE DATOS ✅
- [x] Dependencia circular resuelta (trading.signals como interfaz)
- [x] Wallets unificadas (financial.wallets)
- [x] Moneda definida (USD primario, currency_exchange_rates)
- [x] OQI-004/008 delimitadas (PAMM vs Portfolio separados)
- [x] ADR-002 a ADR-007 creados

### Correcciones DDL Implementadas (2025-12-06) ✅
- [x] Todas las tablas faltantes definidas (67 tablas en 8 schemas)
- [x] trading.paper_balances creado
- [x] trading functions (initialize/reset/update balance)
- [x] financial.customers creado
- [x] financial.payment_methods creado
- [x] investment.withdrawal_requests creado
- [x] investment.daily_performance creado
- [x] auth.phone_channel enum agregado
- [x] auth.users.backup_codes agregado
- [x] trading.positions campos parciales agregados
- [x] Migrations legacy eliminados (política Carga Limpia)

### Pendiente (Sprints siguientes)
- [ ] Trading engine especificado (documentación API)
- [ ] LLM pipeline documentado
- [ ] Types compartidos definidos (TypeScript)
- [ ] Índices de performance validados en producción
- [ ] Endpoints auth completados (implementación)

---

*Plan generado por Requirements-Analyst Agent*
*Validado contra REPORTE-ANALISIS-REQUISITOS.md*
*OrbiQuant IA - Trading Platform*
