# ═══════════════════════════════════════════════════════════════════════════════ # FRONTEND_INVENTORY.yml - Trading Platform # ═══════════════════════════════════════════════════════════════════════════════ version: "2.0.0" fecha_actualizacion: "2026-01-25" proyecto: "trading-platform" fuente_auditoria: "orchestration/tareas/TASK-2026-01-25-002-FRONTEND-COMPREHENSIVE-AUDIT" # ═══════════════════════════════════════════════════════════════════════════════ # RESUMEN # ═══════════════════════════════════════════════════════════════════════════════ resumen: total_paginas: 32 total_componentes: 123 # 91 reusables + 32 páginas total_stores: 9 # authStore, tradingStore, mlStore, educationStore, paymentsStore, portfolioStore, investmentStore, llmStore, mt4Store total_services: 15 total_hooks: 30+ # useAuth, useTradingData, useVideoPlayer, etc. ubicacion: "apps/frontend/src/" framework: "React 18.2.0" build_tool: "Vite 6.2.0" lenguaje: "TypeScript 5.3.3" progreso_promedio: "38%" componentes_funcionales: "97/123 (79%)" fecha_actualizacion: "2026-01-25" auditoria_completa: "2026-01-25" # ═══════════════════════════════════════════════════════════════════════════════ # PAGINAS POR MODULO # ═══════════════════════════════════════════════════════════════════════════════ paginas: auth: cantidad: 6 lista: - Login.tsx - Register.tsx - ForgotPassword.tsx - VerifyEmail.tsx - ResetPassword.tsx - AuthCallback.tsx dashboard: cantidad: 1 lista: - Dashboard.tsx trading: cantidad: 1 lista: - Trading.tsx ml: cantidad: 1 lista: - MLDashboard.tsx backtesting: cantidad: 1 lista: - BacktestingDashboard.tsx investment: cantidad: 8 lista: - Investment.tsx - Portfolio.tsx - Products.tsx - ProductDetail.tsx # Product detail with performance chart (2026-01-25) - AccountDetail.tsx # Account detail with transactions and distributions (2026-01-25) - Withdrawals.tsx # Global withdrawals list (2026-01-25) - Transactions.tsx # Global transactions history (2026-01-25) - Reports.tsx # Analytics and reports (2026-01-25) education: cantidad: 6 lista: - Courses.tsx - CourseDetail.tsx - MyLearning.tsx - Leaderboard.tsx - Lesson.tsx - Quiz.tsx payments: cantidad: 2 lista: - Pricing.tsx - Billing.tsx admin: cantidad: 4 lista: - AdminDashboard.tsx - MLModelsPage.tsx - AgentsPage.tsx - PredictionsPage.tsx assistant: cantidad: 1 lista: - Assistant.tsx settings: cantidad: 1 lista: - Settings.tsx portfolio: cantidad: 4 lista: - PortfolioDashboard.tsx - CreatePortfolio.tsx - CreateGoal.tsx - EditAllocations.tsx # ═══════════════════════════════════════════════════════════════════════════════ # COMPONENTES # ═══════════════════════════════════════════════════════════════════════════════ componentes: chat: cantidad: 4 lista: - ChatInput.tsx - ChatMessage.tsx - ChatPanel.tsx - ChatWidget.tsx education: cantidad: 6 lista: - AchievementBadge.tsx - CourseCard.tsx - LeaderboardTable.tsx - QuizQuestion.tsx - StreakCounter.tsx - XPProgress.tsx payments: cantidad: 4 lista: - PricingCard.tsx - SubscriptionCard.tsx - UsageProgress.tsx - WalletCard.tsx backtesting: cantidad: 5 lista: - EquityCurveChart.tsx - PerformanceMetricsPanel.tsx - PredictionChart.tsx - StrategyComparisonChart.tsx - TradesTable.tsx admin: cantidad: 2 lista: - AgentStatsCard.tsx - MLModelCard.tsx layout: cantidad: 2 lista: - MainLayout.tsx - AuthLayout.tsx # ═══════════════════════════════════════════════════════════════════════════════ # COMPONENTES POR MODULO (Detalle adicional) # ═══════════════════════════════════════════════════════════════════════════════ componentes_modulos: trading: cantidad: 15 lista: - TradingChart.tsx - OrderBook.tsx - OrderForm.tsx - PositionsPanel.tsx - TradeHistory.tsx - WatchlistPanel.tsx - SymbolSearch.tsx - TimeframeSelector.tsx - IndicatorPanel.tsx - AlertsPanel.tsx # Price alerts management panel (2026-01-25) - TradingStatsPanel.tsx # Trading statistics and metrics (2026-01-25) - OrderBookPanel.tsx # Market depth order book (2026-01-25) - MarketDepth.tsx - QuickTrade.tsx - ChartToolbar.tsx ml: cantidad: 7 lista: - AMDPhaseIndicator.tsx - PredictionCard.tsx - SignalsTimeline.tsx - ConfidenceMeter.tsx - ModelSelector.tsx - EnsemblePanel.tsx - ICTAnalysisPanel.tsx auth: cantidad: 4 lista: - SocialLoginButtons.tsx - PhoneLoginForm.tsx - TwoFactorForm.tsx - PasswordStrengthMeter.tsx assistant: cantidad: 4 lista: - ChatWindow.tsx - ChatMessage.tsx - ChatInput.tsx - SignalCard.tsx portfolio: cantidad: 5 lista: - AllocationChart.tsx # Donut chart de allocaciones - AllocationTable.tsx # Tabla de posiciones - PerformanceChart.tsx # Line chart de rendimiento (canvas) - RebalanceCard.tsx # Card de recomendaciones - GoalCard.tsx # Card de metas financieras investment: cantidad: 2 lista: - DepositForm.tsx # Stripe deposit form with card input - WithdrawForm.tsx # Withdrawal form with bank/crypto options # ═══════════════════════════════════════════════════════════════════════════════ # STATE MANAGEMENT # ═══════════════════════════════════════════════════════════════════════════════ stores: framework: "Zustand 4.4.7" lista: - auth.store.ts - trading.store.ts - dashboard.store.ts - app.store.ts - portfolioStore.ts # Portfolio management con WebSocket (2026-01-25) # ═══════════════════════════════════════════════════════════════════════════════ # SERVICES API # ═══════════════════════════════════════════════════════════════════════════════ services: cantidad: 11 lista: - auth.service.ts - trading.service.ts - ml.service.ts - education.service.ts - investment.service.ts # Investment accounts, products, transactions API (2026-01-25) - payments.service.ts - admin.service.ts - assistant.service.ts - portfolio.service.ts - notification.service.ts - websocket.service.ts # WebSocket connections (trading, ml, portfolio) # ═══════════════════════════════════════════════════════════════════════════════ # HOOKS CUSTOM # ═══════════════════════════════════════════════════════════════════════════════ hooks: cantidad: 3 lista: - useAuth.ts - useTrading.ts - usePortfolioUpdates (websocket.service.ts) # Real-time portfolio updates # ═══════════════════════════════════════════════════════════════════════════════ # RUTAS # ═══════════════════════════════════════════════════════════════════════════════ rutas: publicas: - /login - /register - /forgot-password - /verify-email - /auth/callback protegidas: - /dashboard - /trading - /ml-dashboard - /backtesting - /investment - /investment/portfolio - /investment/products - /investment/products/:productId - /investment/accounts/:accountId - /investment/withdrawals - /investment/transactions - /investment/reports - /portfolio - /portfolio/new - /portfolio/goals/new - /portfolio/:portfolioId/edit - /education/courses - /education/my-learning - /education/leaderboard - /pricing - /billing - /settings - /assistant admin: - /admin - /admin/models - /admin/agents - /admin/predictions fullscreen: - /education/courses/:courseSlug/lesson/:lessonId - /education/courses/:courseSlug/lesson/:lessonId/quiz # ═══════════════════════════════════════════════════════════════════════════════ # LIBRERIAS # ═══════════════════════════════════════════════════════════════════════════════ librerias: core: - "React Router v6" - "TanStack Query (React Query)" - "React Hook Form" - "Zod" ui: - "Tailwind CSS 3.4" - "Lucide React" charts: - "Recharts 3.5" - "Lightweight Charts 4.1" utilities: - "Axios" - "Date-fns" payments: - "Stripe" # ═══════════════════════════════════════════════════════════════════════════════ # AUDITORIA COMPREHENSIVA (2026-01-25) # ═══════════════════════════════════════════════════════════════════════════════ auditoria: fecha: "2026-01-25" tarea: "TASK-2026-01-25-002-FRONTEND-COMPREHENSIVE-AUDIT" metodologia: "CAPVED + 9 agentes paralelos" documentos_generados: 48 total_lineas_analisis: 19117 metricas_globales: total_componentes: 123 total_paginas: 32 total_componentes_reutilizables: 91 total_apis: 113 componentes_con_multimedia: 25 # ~20% completitud_promedio: "38%" componentes_100_funcionales: "97 (79%)" componentes_parciales: "15 (12%)" componentes_no_funcionales: "11 (9%)" progreso_por_epic: OQI-001: nombre: "Fundamentos Auth" componentes: 11 progreso: "70%" gaps_criticos: 3 # P0-P1 esfuerzo_pendiente: "140h" OQI-002: nombre: "Educativo" componentes: 14 progreso: "30%" gaps_criticos: 4 # P0-P1 esfuerzo_pendiente: "280h" componente_destacado: "VideoProgressPlayer (554 líneas, 11 states)" OQI-003: nombre: "Trading Charts" componentes: 37 progreso: "40%" gaps_criticos: 8 # P0-P1 esfuerzo_pendiente: "420h" hub_critico: "tradingStore (25 dependientes)" OQI-004: nombre: "Cuentas Inversión" componentes: 10 progreso: "35%" gaps_criticos: 2 # P0-P1 esfuerzo_pendiente: "180h" OQI-005: nombre: "Pagos Stripe" componentes: 15 progreso: "50%" gaps_criticos: 4 # P0 (PCI-DSS blocker) esfuerzo_pendiente: "200h" OQI-006: nombre: "ML Signals" componentes: 12 progreso: "60%" gaps_criticos: 3 # P1-P2 esfuerzo_pendiente: "140h" OQI-007: nombre: "LLM Strategy Agent" componentes: 11 progreso: "25%" gaps_criticos: 4 # P1-P2 esfuerzo_pendiente: "160h" OQI-008: nombre: "Portfolio Manager" componentes: 9 progreso: "20%" gaps_criticos: 3 # P2-P3 esfuerzo_pendiente: "220h" OQI-009: nombre: "MT4 Gateway" componentes: 3 progreso: "15%" gaps_criticos: 1 # P0 BLOCKER (0% funcional) esfuerzo_pendiente: "180h" multimedia_handling: video: componentes: 2 # VideoProgressPlayer, Lesson formatos: "MP4, WebM" operaciones: "GET (streaming) ✅, POST (upload) ❌" estado: "70%" charts: componentes: 7 tecnologias: - "lightweight-charts 4.1.1 (Canvas)" - "recharts 2.x (SVG)" - "Custom SVG (AllocationChart)" - "Custom Canvas 2D (PerformanceChart)" estado: "90%" images: componentes: 5 formatos: "JPG, PNG" operaciones: "GET (carga) ✅, POST (upload) ❌" optimizaciones_pendientes: - "WebP support" - "Responsive images (srcset)" - "Lazy loading avanzado" - "CDN integration" estado: "60%" icons: total: "120+" librerias: - "Lucide React (~50 icons)" - "Heroicons (~30 icons)" - "Custom SVG (~40 icons)" bundle_impact: "~8 KB (gzip, tree-shaken)" estado: "100%" pdf: componentes: 2 # CertificatePreview, InvoiceDetail operaciones: "GET (preview/download) ⚠️, POST (generate) ❌" estado: "50%" audio: estado: "0% - NO IMPLEMENTADO" componentes_hub: # Alto impacto (≥5 dependientes) - nombre: "authStore" dependientes: 40 riesgo: "CRÍTICO" ubicacion: "stores/auth.store.ts" - nombre: "Button" dependientes: 35 riesgo: "ALTO" ubicacion: "components/ui/Button.tsx" - nombre: "Card" dependientes: 30 riesgo: "ALTO" ubicacion: "components/ui/Card.tsx" - nombre: "tradingStore" dependientes: 25 riesgo: "ALTO" ubicacion: "stores/trading.store.ts" - nombre: "apiClient" dependientes: 90 riesgo: "CRÍTICO" ubicacion: "lib/apiClient.ts" - nombre: "useAuth" dependientes: 30 riesgo: "ALTO" ubicacion: "hooks/useAuth.ts" - nombre: "CandlestickChart" dependientes: 3 riesgo: "MEDIO" ubicacion: "modules/trading/components/CandlestickChart.tsx" dependencias_cross_epic: total: 18 criticas: - origen: "OQI-003" destino: "OQI-006" componente: "CandlestickChartWithML" - origen: "OQI-007" destino: "OQI-003" componente: "SignalExecutionPanel" - origen: "OQI-001" destino: "TODOS" componente: "authStore" gaps_documentacion: especificaciones_tecnicas_faltantes: 8 # ET-* user_stories_faltantes: 8 # US-* swagger_docs_faltantes: 34 # ~30% de 113 APIs module_readmes_faltantes: 8 deuda_tecnica_critica: P0: - issue: "Manual token refresh" ubicacion: "authStore.ts:67" esfuerzo: "60h" - issue: "PCI-DSS non-compliant" ubicacion: "PaymentMethodForm.tsx" esfuerzo: "80h" - issue: "MT4 Gateway stub (0% funcional)" ubicacion: "modules/mt4/" esfuerzo: "180h" P1: - issue: "VideoProgressPlayer sin upload" ubicacion: "modules/education/" esfuerzo: "60h" - issue: "OrderBookPanel polling (no WebSocket)" ubicacion: "modules/trading/components/" esfuerzo: "40h" - issue: "Sin Error Boundaries" ubicacion: "apps/frontend/src/" esfuerzo: "15h" performance: bundle_size_multimedia: "~283 KB (gzip)" # Excelente metricas_actuales: fcp: "~3.5s" tti: "~6s" lcp: "~4.2s" cls: "0.15" metricas_target_q4_2026: fcp: "<1.5s" tti: "<3s" lcp: "<2.5s" cls: "<0.1" security: vulnerabilidades: - tipo: "Tokens en localStorage" owasp: "A02:2021" severidad: "ALTA" - tipo: "No CSRF protection" owasp: "A01:2021" severidad: "ALTA" - tipo: "PCI-DSS non-compliant" severidad: "CRÍTICA" - tipo: "XSS en MarkdownRenderer" owasp: "A03:2021" severidad: "MEDIA" roadmap_propuesto: fase_1_q1_2026: nombre: "Security & Blockers" esfuerzo: "201h" items: - "Auto-refresh tokens (60h)" - "PCI-DSS compliance (80h)" - "Video upload (60h)" fase_2_q2_2026: nombre: "Core Features" esfuerzo: "362h" items: - "MT4 Gateway funcional (180h)" - "Live streaming educativo (80h)" - "WebSocket real-time trading (60h)" - "Portfolio optimizer (80h)" fase_3_q3_2026: nombre: "Scalability & UX" esfuerzo: "380h" items: - "WebP + Lazy loading (60h)" - "Code-splitting (40h)" - "Tests E2E (120h)" - "Error boundaries (15h)" fase_4_q4_2026: nombre: "Advanced Features" esfuerzo: "1514h" items: - "Audio/Podcast (120h)" - "Voice input (50h)" - "Advanced ML models (200h)" referencias_auditoria: executive_summary: "entregables/EXECUTIVE-SUMMARY.md" components_matrix: "entregables/COMPONENTS-MASTER-MATRIX.md" api_contracts: "entregables/API-CONTRACTS-MASTER-MATRIX.md" multimedia_matrix: "entregables/MULTIMEDIA-MASTER-MATRIX.md" dependency_graph: "entregables/DEPENDENCY-GRAPH.md" purge_plan: "entregables/PURGE-PLAN.md" integration_plan: "entregables/INTEGRATION-PLAN.md" recommendations: "entregables/RECOMMENDATIONS.md"