Comprehensive analysis of 101 DDL tables across 11 schemas: - Phase 1-2: Schema validation, 37 gaps cataloged (3 resolved) - Phase 3: Integrity audit (80 FKs, 89 CHECKs, 17 issues: 2 CRIT/5 HIGH) - Phase 4: DDL-Backend mapping (84% interfaces, 75% services, 61% controllers) - Phase 5: Documentation purge catalog (201 files analyzed) - Phase 6: Remediation plan (4 sprints, 204h) Key finding: Backend uses raw SQL + pg Pool (NOT TypeORM). 13 deliverables + updated inventories to v2.0.0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
290 lines
7.5 KiB
YAML
290 lines
7.5 KiB
YAML
consolidado_gaps:
|
|
version: 1.0.0
|
|
fecha: "2026-02-04"
|
|
fuentes:
|
|
- TASK-2026-02-03-ANALISIS-DDL-MODELADO
|
|
- TASK-2026-02-03-ANALISIS-FRONTEND-UXUI
|
|
- GAPS-TRACKING.yml
|
|
- CROSS-VALIDATION-GAPS.yml
|
|
|
|
resumen:
|
|
total_gaps: 24
|
|
p0_bloqueantes: 3
|
|
p1_criticos: 6
|
|
p2_importantes: 10
|
|
p3_menores: 5
|
|
story_points_total: 558
|
|
horas_estimadas: 430
|
|
|
|
gaps_p0_bloqueantes:
|
|
- id: GAP-P0-001
|
|
nombre: Password Recovery sin UI
|
|
modulo: OQI-001 Auth
|
|
capa: Frontend
|
|
descripcion: "Backend tiene email.service.ts pero no hay endpoints de reset. Frontend falta PasswordRecovery.tsx y PasswordReset.tsx"
|
|
esfuerzo_horas: 8
|
|
story_points: 8
|
|
dependencias: []
|
|
bloquea: ["User self-service"]
|
|
estado: PENDIENTE
|
|
asignado_a: SUBTASK-002-OQI-001-AUTH
|
|
|
|
- id: GAP-P0-002
|
|
nombre: User Profile Management sin servicio
|
|
modulo: OQI-001 Auth
|
|
capa: Backend
|
|
descripcion: "No existe userService.ts backend. users.controller.ts falta. Frontend sin ProfileSettings component."
|
|
esfuerzo_horas: 6
|
|
story_points: 5
|
|
dependencias: []
|
|
bloquea: ["User cannot update personal data"]
|
|
estado: PENDIENTE
|
|
asignado_a: ST-2.3
|
|
|
|
- id: GAP-P0-003
|
|
nombre: Trading Agents sin UI
|
|
modulo: OQI-003 Trading
|
|
capa: Full Stack
|
|
descripcion: "Backend bots.service.ts 60% completo. Frontend 0%: BotManager.tsx, BotCard, BotConfigWizard, BotMonitoringDashboard todos faltantes."
|
|
esfuerzo_horas: 40
|
|
story_points: 40
|
|
dependencias:
|
|
- ST-3.4
|
|
bloquea: ["Feature vendida no disponible"]
|
|
estado: PENDIENTE
|
|
asignado_a: SUBTASK-003-OQI-003-TRADING
|
|
|
|
gaps_p1_criticos:
|
|
- id: GAP-P1-001
|
|
nombre: Market Data OHLCV Service
|
|
modulo: OQI-003 Trading
|
|
capa: Backend
|
|
descripcion: "DDL market_data.ohlcv_5m/15m existe. NO hay marketData.service.ts ni market-data.controller.ts. Charts bloqueados."
|
|
esfuerzo_horas: 16
|
|
story_points: 16
|
|
dependencias: []
|
|
bloquea:
|
|
- CHAIN-001
|
|
- FE Charts históricos
|
|
- ML Overlays
|
|
estado: PENDIENTE
|
|
asignado_a: ST-2.1
|
|
critico: true
|
|
|
|
- id: GAP-P1-002
|
|
nombre: Notifications sin API Completa
|
|
modulo: Core
|
|
capa: Backend
|
|
descripcion: "DDL OK. Backend falta notification.service.ts completo, push.service.ts, notification.controller.ts"
|
|
esfuerzo_horas: 20
|
|
story_points: 18
|
|
dependencias: []
|
|
bloquea:
|
|
- CHAIN-002
|
|
- Push notifications
|
|
- Trading alerts
|
|
estado: PENDIENTE
|
|
asignado_a: ST-2.2
|
|
|
|
- id: GAP-P1-003
|
|
nombre: ML Chart Overlays sin UI
|
|
modulo: OQI-006 ML
|
|
capa: Frontend
|
|
descripcion: "Backend ML models existen pero frontend no puede visualizar. Faltan MLPredictionOverlay.tsx, SignalMarkers.tsx, ICTConceptsOverlay.tsx"
|
|
esfuerzo_horas: 24
|
|
story_points: 21
|
|
dependencias:
|
|
- GAP-P1-001
|
|
bloquea: ["OQI-006 ↔ OQI-003 integration"]
|
|
estado: PENDIENTE
|
|
asignado_a: SUBTASK-004-OQI-006-ML
|
|
|
|
- id: GAP-P1-004
|
|
nombre: 2FA sin flujo completo
|
|
modulo: OQI-001 Auth
|
|
capa: Full Stack
|
|
descripcion: "Backend twofa.service.ts existe pero faltan setup/verify endpoints. Frontend falta TwoFactorSetup.tsx, TwoFactorVerifyModal.tsx, BackupCodesDisplay.tsx"
|
|
esfuerzo_horas: 16
|
|
story_points: 13
|
|
dependencias: []
|
|
bloquea: ["Enhanced security"]
|
|
estado: PENDIENTE
|
|
asignado_a: ST-2.5
|
|
|
|
- id: GAP-P1-005
|
|
nombre: education.instructors sin tabla
|
|
modulo: OQI-002 Education
|
|
capa: DDL
|
|
descripcion: "Tabla para perfiles de instructores no existe. instructor.service.ts ya creado pero sin tabla."
|
|
esfuerzo_horas: 4
|
|
story_points: 3
|
|
dependencias: []
|
|
bloquea: ["instructor.service.ts"]
|
|
estado: PENDIENTE
|
|
asignado_a: ST-1.1
|
|
|
|
- id: GAP-P1-006
|
|
nombre: course_tags sin campo
|
|
modulo: OQI-002 Education
|
|
capa: DDL
|
|
descripcion: "Campo para filtrado de cursos por tags faltante. tag.service.ts existe."
|
|
esfuerzo_horas: 2
|
|
story_points: 2
|
|
dependencias: []
|
|
bloquea: ["Course filtering"]
|
|
estado: PENDIENTE
|
|
asignado_a: ST-1.2
|
|
|
|
gaps_p2_importantes:
|
|
- id: GAP-P2-001
|
|
nombre: Audit System Service
|
|
modulo: Core
|
|
capa: Backend
|
|
esfuerzo_horas: 32
|
|
story_points: 28
|
|
estado: PENDIENTE
|
|
asignado_a: ST-2.4
|
|
|
|
- id: GAP-P2-002
|
|
nombre: Currency Exchange Service
|
|
modulo: OQI-005 Payments
|
|
capa: Backend
|
|
esfuerzo_horas: 16
|
|
story_points: 13
|
|
estado: PENDIENTE
|
|
|
|
- id: GAP-P2-003
|
|
nombre: Risk Assessment Service
|
|
modulo: OQI-004 Investment
|
|
capa: Backend
|
|
esfuerzo_horas: 12
|
|
story_points: 10
|
|
estado: PENDIENTE
|
|
|
|
- id: GAP-P2-004
|
|
nombre: Course Reviews Endpoints
|
|
modulo: OQI-002 Education
|
|
capa: Backend
|
|
esfuerzo_horas: 6
|
|
story_points: 5
|
|
estado: PENDIENTE
|
|
|
|
- id: GAP-P2-005
|
|
nombre: OAuth Flows Incomplete
|
|
modulo: OQI-001 Auth
|
|
capa: Backend
|
|
esfuerzo_horas: 12
|
|
story_points: 10
|
|
estado: PENDIENTE
|
|
|
|
cadenas_bloqueo:
|
|
CHAIN-001:
|
|
nombre: Market Data Pipeline
|
|
estado: BLOQUEADO_COMPLETO
|
|
secuencia:
|
|
- paso: DDL market_data
|
|
estado: OK
|
|
- paso: Backend Service
|
|
estado: MISSING
|
|
gap: GAP-P1-001
|
|
- paso: API REST
|
|
estado: MISSING
|
|
depende_de: Backend Service
|
|
- paso: Frontend Charts
|
|
estado: BLOCKED
|
|
depende_de: API REST
|
|
- paso: ML Overlays
|
|
estado: BLOCKED
|
|
depende_de: Frontend Charts
|
|
|
|
CHAIN-002:
|
|
nombre: Notifications Pipeline
|
|
estado: BLOQUEADO
|
|
secuencia:
|
|
- paso: DDL auth.notifications
|
|
estado: OK
|
|
- paso: Backend Service
|
|
estado: PARTIAL
|
|
gap: GAP-P1-002
|
|
- paso: API REST
|
|
estado: MISSING
|
|
- paso: Frontend Consumer
|
|
estado: PARTIAL
|
|
|
|
CHAIN-003:
|
|
nombre: Trading Agents E2E
|
|
estado: BLOQUEADO
|
|
secuencia:
|
|
- paso: DDL trading.bots
|
|
estado: OK
|
|
- paso: Backend Service
|
|
estado: PARTIAL_60%
|
|
- paso: API Endpoints
|
|
estado: PARTIAL_40%
|
|
gap: ST-3.4
|
|
- paso: Frontend UI
|
|
estado: MISSING_0%
|
|
gap: GAP-P0-003
|
|
|
|
arquitectura:
|
|
inconsistencias:
|
|
- id: ARCH-001
|
|
nombre: Direct Access to Python Services
|
|
riesgo: ALTO
|
|
descripcion: "Frontend bypasses Express.js para acceder a ML Engine y LLM Agent directamente"
|
|
servicios_afectados:
|
|
- mlService.ts
|
|
- llmAgentService.ts
|
|
- backtestService.ts
|
|
solucion: Crear proxy endpoints en Express
|
|
esfuerzo_horas: 16
|
|
asignado_a: ST-5.1
|
|
|
|
- id: ARCH-002
|
|
nombre: Inconsistent apiClient Usage
|
|
riesgo: MEDIO
|
|
descripcion: "5 servicios no usan apiClient centralizado"
|
|
servicios_afectados:
|
|
- portfolio.service.ts
|
|
- adminService.ts
|
|
- mlService.ts
|
|
- llmAgentService.ts
|
|
- backtestService.ts
|
|
solucion: Refactorizar para usar apiClient
|
|
esfuerzo_horas: 8
|
|
asignado_a: ST-5.2
|
|
|
|
documentacion_obsoleta:
|
|
a_purgar:
|
|
- archivo: orchestration/tareas/TASK-2026-02-03-DDL-VALIDATION/
|
|
razon: Supersedida por ANALISIS-DDL-MODELADO
|
|
accion: MOVER_A_ARCHIVE
|
|
|
|
- archivo: docs/90-transversal/gaps/ANALISIS-GAPS-DOCUMENTACION.md
|
|
razon: Marcado OUTDATED, rutas rotas
|
|
accion: ELIMINAR
|
|
|
|
a_actualizar:
|
|
- archivo: BACKEND_INVENTORY.yml
|
|
gap: Conteo 57→79 endpoints
|
|
|
|
- archivo: FRONTEND_INVENTORY.yml
|
|
gap: Conteo 90→146 componentes
|
|
|
|
- archivo: PROJECT-STATUS.md
|
|
gap: Fecha 2026-01-30
|
|
|
|
metricas_objetivo:
|
|
coherencia_global:
|
|
actual: 81.25%
|
|
objetivo: 95%
|
|
ddl_backend:
|
|
actual: 85%
|
|
objetivo: 98%
|
|
backend_frontend:
|
|
actual: 77.5%
|
|
objetivo: 92%
|
|
test_coverage:
|
|
actual: 15%
|
|
objetivo: 40%
|