trading-platform/docs/90-transversal/inventarios/FRONTEND_INVENTORY.yml
Adrian Flores Cortes a01b03393f docs: Complete Sprint 4 (ARCH-001, ARCH-002) documentation
- Update PROXIMA-ACCION.md with Sprint 4 completion
- Add checkpoints for architecture unification
- Update metrics (Coherencia Backend-Frontend: 90%)
- Update inventory files with new modules

Sprint 4 completed:
- ARCH-001: Express proxy gateway (1,132 LOC backend)
- ARCH-002: Frontend services migration (4 services, 32 endpoints)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:44:39 -06:00

1226 lines
37 KiB
YAML

# ============================================================================
# FRONTEND_INVENTORY.yml - Trading Platform Trading Platform
# ============================================================================
# Proposito: Inventario consolidado de todos los componentes del frontend
# Ultima actualizacion: 2025-12-05
# Version: 1.0.0
# ============================================================================
version: "1.2.0"
project: "Trading Platform"
framework: "React 18 + TypeScript + Vite"
styling: "TailwindCSS + shadcn/ui"
state_management: "Zustand"
last_updated: "2026-01-28"
# ============================================================================
# RESUMEN EJECUTIVO
# ============================================================================
summary:
total_features: 9 # auth, dashboard, education, trading, investment, settings, notifications, payments, ml
total_pages: 19 # +1 AgentsPage
total_components: 106 # +16 nuevos (Sprint 1-2)
total_hooks: 4 # +1 useMlOverlayData
total_stores: 3 # +1 agentsStore
status: "En desarrollo (OQI-003 al 80%)"
# ============================================================================
# ESTRUCTURA DE DIRECTORIOS
# ============================================================================
structure:
root: "apps/frontend/src"
directories:
- path: components/
purpose: "Componentes compartidos (layout)"
- path: modules/
purpose: "Features organizados por dominio"
- path: hooks/
purpose: "Custom hooks compartidos"
status: "Pendiente"
- path: stores/
purpose: "Zustand stores"
status: "Pendiente"
- path: types/
purpose: "Tipos TypeScript compartidos"
status: "Pendiente"
- path: lib/
purpose: "Utilidades y helpers"
status: "Pendiente"
# ============================================================================
# FEATURES (MODULOS)
# ============================================================================
features:
# --------------------------------------------------------------------------
# AUTH - Autenticacion
# --------------------------------------------------------------------------
- name: auth
path: modules/auth/
epic: OQI-001
status: implemented
description: "Login, registro, OAuth, 2FA"
pages:
- name: Login.tsx
route: /login
description: "Pagina de login"
rf: RF-AUTH-002
- name: Register.tsx
route: /register
description: "Pagina de registro"
rf: RF-AUTH-002
- name: ForgotPassword.tsx
route: /forgot-password
description: "Solicitar reset de password"
rf: RF-AUTH-002
- name: ResetPassword.tsx
route: /reset-password
description: "Completar reset de password"
rf: RF-AUTH-002
- name: VerifyEmail.tsx
route: /verify-email
description: "Verificacion de email"
rf: RF-AUTH-002
- name: AuthCallback.tsx
route: /auth/callback
description: "Callback de OAuth"
rf: RF-AUTH-001
components:
- name: SocialLoginButtons.tsx
purpose: "Botones de login social (Google, Facebook, X, Apple, GitHub)"
rf: RF-AUTH-001
- name: PhoneLoginForm.tsx
purpose: "Formulario de login por telefono"
rf: RF-AUTH-002
# --------------------------------------------------------------------------
# DASHBOARD - Panel principal
# --------------------------------------------------------------------------
- name: dashboard
path: modules/dashboard/
epic: OQI-001
status: structure_only
description: "Panel principal del usuario"
pages:
- name: Dashboard.tsx
route: /dashboard
description: "Dashboard principal"
components_planned:
- name: PortfolioSummary.tsx
purpose: "Resumen de portfolio"
- name: RecentActivity.tsx
purpose: "Actividad reciente"
- name: QuickActions.tsx
purpose: "Acciones rapidas"
# --------------------------------------------------------------------------
# EDUCATION - Cursos
# --------------------------------------------------------------------------
- name: education
path: modules/education/
epic: OQI-002
status: structure_only
description: "Catalogo y detalle de cursos"
pages:
- name: Courses.tsx
route: /courses
description: "Catalogo de cursos"
rf: RF-EDU-001
- name: CourseDetail.tsx
route: /courses/:slug
description: "Detalle de curso"
rf: RF-EDU-002
pages_planned:
- name: LessonViewer.tsx
route: /courses/:slug/lessons/:lessonId
description: "Visor de leccion"
- name: QuizPage.tsx
route: /courses/:slug/quizzes/:quizId
description: "Pagina de quiz"
- name: MyLearning.tsx
route: /my-learning
description: "Mis cursos inscritos"
components_planned:
- name: CourseCard.tsx
purpose: "Tarjeta de curso"
- name: LessonList.tsx
purpose: "Lista de lecciones"
- name: VideoPlayer.tsx
purpose: "Reproductor de video"
- name: QuizForm.tsx
purpose: "Formulario de quiz"
- name: ProgressBar.tsx
purpose: "Barra de progreso"
# --------------------------------------------------------------------------
# TRADING - Trading y charts
# --------------------------------------------------------------------------
- name: trading
path: modules/trading/
epic: OQI-003
status: structure_only
description: "Charts, watchlists, paper trading"
pages:
- name: Trading.tsx
route: /trading
description: "Pagina principal de trading"
rf: RF-TRD-001
pages_planned:
- name: PaperTrading.tsx
route: /trading/paper
description: "Paper trading"
- name: Signals.tsx
route: /trading/signals
description: "Senales ML"
components:
# Core Trading Components
- name: TradingChart.tsx
purpose: "Chart con Lightweight Charts"
rf: RF-TRD-003
- name: CandlestickChart.tsx
purpose: "Chart de velas basico"
- name: CandlestickChartWithML.tsx
purpose: "Chart de velas con overlay ML"
rf: RF-TRD-003
- name: ChartToolbar.tsx
purpose: "Toolbar de herramientas del chart"
- name: OrderForm.tsx
purpose: "Formulario de ordenes"
- name: PositionsList.tsx
purpose: "Lista de posiciones abiertas"
- name: TradesHistory.tsx
purpose: "Historial de trades"
# Watchlist Components
- name: WatchlistSidebar.tsx
purpose: "Sidebar de watchlist"
- name: WatchlistItem.tsx
purpose: "Item individual de watchlist"
- name: AddSymbolModal.tsx
purpose: "Modal para agregar simbolo"
# Account & Stats
- name: AccountSummary.tsx
purpose: "Resumen de cuenta"
- name: TradingStatsPanel.tsx
purpose: "Panel de estadisticas de trading"
# Panel Components
- name: MLSignalsPanel.tsx
purpose: "Panel de senales ML"
rf: RF-TRD-003
- name: AlertsPanel.tsx
purpose: "Panel de alertas de precio"
- name: OrderBookPanel.tsx
purpose: "Panel de order book"
- name: PaperTradingPanel.tsx
purpose: "Panel de paper trading"
# Utility
- name: ExportButton.tsx
purpose: "Boton para exportar datos"
# MT4 Gateway Components (OQI-009)
- name: MT4ConnectionStatus.tsx
purpose: "Indicador de conexion MT4 con info de cuenta"
epic: OQI-009
rf: RF-MT4-001
created: "2026-01-25"
- name: LivePositionCard.tsx
purpose: "Tarjeta de posicion en vivo con P&L y acciones"
epic: OQI-009
rf: RF-MT4-002
created: "2026-01-25"
- name: RiskMonitor.tsx
purpose: "Dashboard de gestion de riesgo con metricas"
epic: OQI-009
rf: RF-MT4-003
created: "2026-01-25"
- name: index.ts
purpose: "Exports de componentes de trading"
# Chart Analysis Components (OQI-003)
- name: IndicatorConfigPanel.tsx
purpose: "Configuracion avanzada de indicadores tecnicos"
epic: OQI-003
rf: RF-TRD-006
created: "2026-01-25"
- name: ChartDrawingToolsPanel.tsx
purpose: "Herramientas de dibujo para analisis tecnico"
epic: OQI-003
rf: RF-TRD-007
created: "2026-01-25"
- name: SymbolInfoPanel.tsx
purpose: "Panel de informacion completa del simbolo"
epic: OQI-003
rf: RF-TRD-008
created: "2026-01-25"
- name: TradeJournalPanel.tsx
purpose: "Journal de trades con analisis y notas"
epic: OQI-003
rf: RF-TRD-009
# Advanced Market Depth Components (OQI-003)
- name: OrderBookDepthVisualization.tsx
purpose: "Visualizacion grafica de profundidad del order book"
epic: OQI-003
rf: RF-TRD-010
created: "2026-01-25"
lines: 420
- name: MarketDepthPanel.tsx
purpose: "Panel completo de market depth con tabla y filtros"
epic: OQI-003
rf: RF-TRD-011
created: "2026-01-25"
lines: 380
- name: SymbolComparisonChart.tsx
purpose: "Chart de comparacion multi-simbolo con normalizacion"
epic: OQI-003
rf: RF-TRD-012
created: "2026-01-25"
lines: 450
- name: TradingScreener.tsx
purpose: "Screener avanzado con filtros y presets"
epic: OQI-003
rf: RF-TRD-013
created: "2026-01-25"
lines: 500
created: "2026-01-25"
- name: QuickOrderPanel.tsx
purpose: "Panel compacto para ordenes rapidas one-click"
epic: OQI-009
rf: RF-MT4-004
created: "2026-01-25"
- name: TradeExecutionHistory.tsx
purpose: "Historial de trades de sesion con estadisticas"
epic: OQI-009
rf: RF-MT4-005
created: "2026-01-25"
- name: TradingMetricsCard.tsx
purpose: "Metricas diarias de trading y rendimiento"
epic: OQI-009
rf: RF-MT4-006
created: "2026-01-25"
- name: MT4LiveTradesPanel.tsx
purpose: "Dashboard de posiciones en tiempo real con P&L y metricas agregadas"
epic: OQI-009
rf: RF-MT4-008
created: "2026-01-25"
- name: PositionModifierDialog.tsx
purpose: "Modal para modificar SL/TP en posiciones abiertas con preview"
epic: OQI-009
rf: RF-MT4-009
created: "2026-01-25"
- name: RiskBasedPositionSizer.tsx
purpose: "Calculadora de tamano de posicion basada en riesgo"
epic: OQI-009
rf: RF-MT4-010
created: "2026-01-25"
- name: TradeAlertsNotificationCenter.tsx
purpose: "Hub unificado de notificaciones de eventos MT4"
epic: OQI-009
rf: RF-MT4-011
created: "2026-01-25"
hooks:
- name: useMT4WebSocket.ts
path: modules/trading/hooks/useMT4WebSocket.ts
purpose: "Hook para conexion WebSocket MT4 en tiempo real"
epic: OQI-009
rf: RF-MT4-007
created: "2026-01-25"
exports:
- useMT4WebSocket
- MT4AccountInfo (type)
- MT4Position (type)
- MT4Order (type)
# Trading Agents Components (Sprint 1, 2026-01-28)
agents_components:
- name: tradingAgents.types.ts
path: types/tradingAgents.types.ts
purpose: "Tipos TypeScript completos para trading bots"
epic: OQI-003
created: "2026-01-28"
lines: 582
- name: agents.service.ts
path: services/agents.service.ts
purpose: "API service layer para agentes"
epic: OQI-003
created: "2026-01-28"
lines: 200
- name: BotCard.tsx
path: modules/trading/components/agents/BotCard.tsx
purpose: "Tarjeta de bot con metricas y controles"
epic: OQI-003
created: "2026-01-28"
lines: 280
- name: AgentCard.tsx
path: modules/trading/components/agents/AgentCard.tsx
purpose: "Tarjeta de agente con estado y acciones"
epic: OQI-003
created: "2026-01-28"
lines: 150
- name: AgentsList.tsx
path: modules/trading/components/agents/AgentsList.tsx
purpose: "Lista con filtros y busqueda de agentes"
epic: OQI-003
created: "2026-01-28"
lines: 200
- name: AgentsPage.tsx
path: modules/trading/pages/AgentsPage.tsx
purpose: "Pagina principal de trading agents"
route: /trading/agents
epic: OQI-003
created: "2026-01-28"
lines: 250
# ML Chart Overlays (Sprint 2, 2026-01-28)
ml_overlay_components:
- name: mlOverlay.types.ts
path: types/mlOverlay.types.ts
purpose: "Tipos MLPrediction, SignalMarker, ICTConcept"
epic: OQI-006
created: "2026-01-28"
lines: 108
- name: MLPredictionOverlay.tsx
path: modules/trading/components/charts/overlays/MLPredictionOverlay.tsx
purpose: "Overlay de predicciones ML en charts"
epic: OQI-006
created: "2026-01-28"
lines: 102
- name: SignalMarkers.tsx
path: modules/trading/components/charts/overlays/SignalMarkers.tsx
purpose: "Marcadores de senales en charts"
epic: OQI-006
created: "2026-01-28"
lines: 72
- name: ICTConceptsOverlay.tsx
path: modules/trading/components/charts/overlays/ICTConceptsOverlay.tsx
purpose: "Overlay de conceptos ICT/SMC"
epic: OQI-006
created: "2026-01-28"
lines: 134
# 2FA Components (Sprint 2, 2026-01-28)
twofa_components:
- name: TwoFactorSetup.tsx
path: modules/auth/components/TwoFactorSetup.tsx
purpose: "Wizard de 3 pasos para configurar 2FA"
epic: OQI-001
created: "2026-01-28"
lines: 356
- name: TwoFactorVerifyModal.tsx
path: modules/auth/components/TwoFactorVerifyModal.tsx
purpose: "Modal de verificacion 2FA en login"
epic: OQI-001
created: "2026-01-28"
lines: 208
- name: TwoFactorSettings.tsx
path: modules/settings/components/TwoFactorSettings.tsx
purpose: "Panel de configuracion 2FA en settings"
epic: OQI-001
created: "2026-01-28"
lines: 398
components_planned:
- name: AMDZoneIndicator.tsx
purpose: "Indicador de zonas AMD"
- name: LiveTradingPanel.tsx
purpose: "Panel principal de trading en vivo MT4"
epic: OQI-009
# --------------------------------------------------------------------------
# INVESTMENT - Cuentas de inversion
# --------------------------------------------------------------------------
- name: investment
path: modules/investment/
epic: OQI-004
status: implemented
description: "Productos, cuentas, rendimiento"
created: "2026-01-25"
pages:
- name: Investment.tsx
route: /investment
description: "Pagina de inversiones"
rf: RF-INV-001
pages_planned:
- name: Products.tsx
route: /investment/products
description: "Catalogo de productos"
- name: AccountDetail.tsx
route: /investment/accounts/:id
description: "Detalle de cuenta"
- name: OpenAccount.tsx
route: /investment/open-account
description: "Abrir cuenta nueva"
components:
# Form Components (existing)
- name: DepositForm.tsx
purpose: "Formulario de deposito con integracion Stripe"
rf: RF-INV-002
- name: WithdrawForm.tsx
purpose: "Formulario de retiro (banco/crypto)"
rf: RF-INV-003
# Account Components (OQI-004)
- name: AccountSummaryCard.tsx
purpose: "Tarjeta resumen de cuenta de inversion con metricas clave"
epic: OQI-004
rf: RF-INV-004
created: "2026-01-25"
- name: ProductComparisonTable.tsx
purpose: "Tabla comparativa de productos Atlas/Orion/Nova"
epic: OQI-004
rf: RF-INV-005
created: "2026-01-25"
- name: PerformanceWidgetChart.tsx
purpose: "Grafico sparkline de rendimiento para embeber en cards"
epic: OQI-004
rf: RF-INV-006
created: "2026-01-25"
- name: AccountSettingsPanel.tsx
purpose: "Panel de configuracion de cuenta (distribucion, reinversion, alertas)"
epic: OQI-004
rf: RF-INV-007
created: "2026-01-25"
- name: index.ts
purpose: "Exports de componentes de investment"
components_planned:
- name: ProductCard.tsx
purpose: "Tarjeta de producto (Atlas/Orion/Nova)"
- name: BotSelector.tsx
purpose: "Selector de bot/agente"
# --------------------------------------------------------------------------
# SETTINGS - Configuracion
# --------------------------------------------------------------------------
- name: settings
path: modules/settings/
epic: OQI-001
status: structure_only
description: "Configuracion de usuario"
pages:
- name: Settings.tsx
route: /settings
description: "Pagina de configuracion"
pages_planned:
- name: Profile.tsx
route: /settings/profile
description: "Editar perfil"
- name: Security.tsx
route: /settings/security
description: "Seguridad y 2FA"
- name: Notifications.tsx
route: /settings/notifications
description: "Preferencias de notificaciones"
- name: Billing.tsx
route: /settings/billing
description: "Suscripcion y pagos"
# --------------------------------------------------------------------------
# NOTIFICATIONS - Centro de notificaciones
# --------------------------------------------------------------------------
- name: notifications
path: modules/notifications/
epic: OQI-001
status: implemented
description: "Centro de notificaciones con bell, dropdown y pagina completa"
created: "2026-01-25"
pages:
- name: NotificationsPage.tsx
route: /notifications
description: "Pagina completa de notificaciones con filtros"
rf: RF-AUTH-001
components:
- name: NotificationBell.tsx
purpose: "Icono de campana con badge de no leidas"
rf: RF-AUTH-001
- name: NotificationDropdown.tsx
purpose: "Dropdown con ultimas 10 notificaciones"
rf: RF-AUTH-001
- name: NotificationItem.tsx
purpose: "Item individual de notificacion"
rf: RF-AUTH-001
- name: index.ts
purpose: "Exports de componentes"
store:
- name: notificationStore.ts
path: stores/notificationStore.ts
purpose: "Estado de notificaciones con Zustand"
state:
- notifications
- unreadCount
- preferences
- loading
- error
actions:
- fetchNotifications()
- fetchUnreadCount()
- markAsRead(id)
- markAllAsRead()
- addNotification(notification)
- initializeWebSocket()
service:
- name: notification.service.ts
path: services/notification.service.ts
purpose: "API client para notificaciones"
methods:
- getNotifications(params)
- getUnreadCount()
- markAsRead(id)
- markAllAsRead()
- getPreferences()
- updatePreferences(data)
# --------------------------------------------------------------------------
# PAYMENTS - Pagos y Stripe
# --------------------------------------------------------------------------
- name: payments
path: modules/payments/
epic: OQI-005
status: implemented
description: "Planes, suscripciones, checkout, wallet"
created: "2026-01-25"
pages:
- name: Pricing.tsx
route: /pricing
description: "Catalogo de planes de suscripcion"
rf: RF-PAY-001
- name: Billing.tsx
route: /billing, /settings/billing
description: "Gestion de suscripcion, metodos de pago, facturas y wallet"
rf: RF-PAY-002
- name: CheckoutSuccess.tsx
route: /payments/success
description: "Pagina de confirmacion de pago exitoso"
rf: RF-PAY-003
- name: CheckoutCancel.tsx
route: /payments/cancel
description: "Pagina de cancelacion de checkout"
rf: RF-PAY-003
components:
- name: PricingCard.tsx
path: components/payments/PricingCard.tsx
purpose: "Tarjeta de plan con features y precio"
rf: RF-PAY-001
- name: SubscriptionCard.tsx
path: components/payments/SubscriptionCard.tsx
purpose: "Tarjeta de suscripcion activa"
rf: RF-PAY-002
- name: WalletCard.tsx
path: components/payments/WalletCard.tsx
purpose: "Tarjeta de wallet con balance y transacciones"
rf: RF-PAY-004
- name: UsageProgress.tsx
path: components/payments/UsageProgress.tsx
purpose: "Barras de progreso de uso de features"
rf: RF-PAY-002
- name: WalletDepositModal.tsx
path: components/payments/WalletDepositModal.tsx
purpose: "Modal para depositar fondos al wallet"
rf: RF-PAY-004
- name: WalletWithdrawModal.tsx
path: components/payments/WalletWithdrawModal.tsx
purpose: "Modal para retirar fondos del wallet"
rf: RF-PAY-004
- name: index.ts
path: components/payments/index.ts
purpose: "Exports de componentes de payments"
- name: CouponForm.tsx
path: components/payments/CouponForm.tsx
purpose: "Formulario para aplicar codigos de descuento"
rf: RF-PAY-005
created: "2026-01-25"
- name: PaymentMethodForm.tsx
path: components/payments/PaymentMethodForm.tsx
purpose: "Formulario para agregar metodos de pago con validacion de tarjeta"
rf: RF-PAY-002
created: "2026-01-25"
- name: BillingInfoForm.tsx
path: components/payments/BillingInfoForm.tsx
purpose: "Formulario para editar direccion de facturacion e info fiscal"
rf: RF-PAY-002
created: "2026-01-25"
- name: TransactionHistory.tsx
path: components/payments/TransactionHistory.tsx
purpose: "Historial de transacciones de wallet con filtros y paginacion"
rf: RF-PAY-004
created: "2026-01-25"
store:
- name: paymentStore.ts
path: stores/paymentStore.ts
purpose: "Estado de pagos y suscripciones con Zustand"
state:
- currentSubscription
- paymentMethods
- invoices
- usageStats
- wallet
- walletTransactions
- loading states
actions:
- fetchCurrentSubscription()
- fetchPaymentMethods()
- fetchInvoices()
- fetchUsageStats()
- fetchWallet()
- cancelSubscription()
- reactivateSubscription()
- setDefaultPaymentMethod()
- removePaymentMethod()
- downloadInvoice()
- openBillingPortal()
service:
- name: payment.service.ts
path: services/payment.service.ts
purpose: "API client para pagos y Stripe"
methods:
- getSubscription()
- getPaymentMethods()
- getInvoices()
- createCheckoutSession()
- cancelSubscription()
- getWallet()
- depositToWallet()
- withdrawFromWallet()
# --------------------------------------------------------------------------
# ML - Machine Learning Signals
# --------------------------------------------------------------------------
- name: ml
path: modules/ml/
epic: OQI-006
status: implemented
description: "ML predictions, signals, confidence, backtesting"
created: "2026-01-25"
components:
# Core ML Components (existing)
- name: AMDPhaseIndicator.tsx
purpose: "Indicador de fases AMD (Accumulation, Manipulation, Distribution)"
rf: RF-ML-001
- name: PredictionCard.tsx
purpose: "Tarjeta de prediccion con direccion y confianza"
rf: RF-ML-001
- name: SignalsTimeline.tsx
purpose: "Timeline de senales generadas"
rf: RF-ML-002
- name: AccuracyMetrics.tsx
purpose: "Metricas de precision de modelos"
rf: RF-ML-003
- name: ICTAnalysisCard.tsx
purpose: "Analisis ICT/SMC con zonas de liquidez"
rf: RF-ML-004
- name: EnsembleSignalCard.tsx
purpose: "Senal consolidada de ensemble de modelos"
rf: RF-ML-005
- name: TradeExecutionModal.tsx
purpose: "Modal para ejecutar trade basado en senal"
rf: RF-ML-006
# Confidence & Performance Components (OQI-006)
- name: ConfidenceMeter.tsx
purpose: "Medidor avanzado de confianza con modelo agreement y feature importance"
epic: OQI-006
rf: RF-ML-007
created: "2026-01-25"
- name: SignalPerformanceTracker.tsx
purpose: "Tracker de historial y performance de senales con filtros y estadisticas"
epic: OQI-006
rf: RF-ML-008
created: "2026-01-25"
- name: ModelAccuracyDashboard.tsx
purpose: "Dashboard de precision individual de modelos con comparacion"
epic: OQI-006
rf: RF-ML-009
created: "2026-01-25"
- name: BacktestResultsVisualization.tsx
purpose: "Visualizacion de resultados de backtesting con trades y returns mensuales"
epic: OQI-006
rf: RF-ML-010
created: "2026-01-25"
- name: index.ts
purpose: "Exports de componentes ML"
# ============================================================================
# COMPONENTES COMPARTIDOS
# ============================================================================
shared_components:
layout:
- name: MainLayout.tsx
path: components/layout/MainLayout.tsx
purpose: "Layout principal con sidebar"
- name: AuthLayout.tsx
path: components/layout/AuthLayout.tsx
purpose: "Layout para paginas de auth"
planned:
- name: Navbar.tsx
purpose: "Barra de navegacion"
- name: Sidebar.tsx
purpose: "Menu lateral"
- name: Footer.tsx
purpose: "Pie de pagina"
- name: LoadingSpinner.tsx
purpose: "Indicador de carga"
- name: ErrorBoundary.tsx
purpose: "Manejo de errores"
- name: Modal.tsx
purpose: "Componente modal base"
- name: Toast.tsx
purpose: "Notificaciones toast"
# ============================================================================
# ROUTING
# ============================================================================
routing:
file: App.tsx
routes:
public:
- path: /login
component: Login
- path: /register
component: Register
- path: /forgot-password
component: ForgotPassword
- path: /reset-password
component: ResetPassword
- path: /verify-email
component: VerifyEmail
- path: /auth/callback
component: AuthCallback
protected:
- path: /dashboard
component: Dashboard
- path: /courses
component: Courses
- path: /courses/:slug
component: CourseDetail
- path: /trading
component: Trading
- path: /trading/agents
component: AgentsPage
created: "2026-01-28"
- path: /investment
component: Investment
- path: /settings
component: Settings
- path: /notifications
component: NotificationsPage
- path: /settings/notifications
component: NotificationsPage
- path: /pricing
component: Pricing
- path: /billing
component: Billing
- path: /settings/billing
component: Billing
- path: /payments/success
component: CheckoutSuccess
- path: /payments/cancel
component: CheckoutCancel
# ============================================================================
# STORES (ZUSTAND)
# ============================================================================
stores:
implemented:
- name: notificationStore
path: stores/notificationStore.ts
purpose: "Estado de notificaciones"
state:
- notifications
- unreadCount
- preferences
- loading
- error
actions:
- fetchNotifications()
- fetchUnreadCount()
- markAsRead()
- markAllAsRead()
- addNotification()
- initializeWebSocket()
created: "2026-01-25"
- name: chatStore
path: stores/chatStore.ts
purpose: "Estado de LLM Copilot chat"
state:
- sessions
- currentSessionId
- messages
- loading
- isOpen
- error
actions:
- createNewSession()
- loadSessions()
- loadSession()
- sendMessage()
- deleteSession()
- toggleChat()
created: "2026-01-25"
- name: agentsStore
path: stores/agentsStore.ts
purpose: "Estado de trading agents y bots"
lines: 550
state:
- agents
- bots
- selectedAgent
- selectedBot
- filters
- loading
- error
actions:
- fetchAgents()
- fetchBots()
- createAgent()
- updateAgent()
- deleteAgent()
- startBot()
- stopBot()
- updateBotConfig()
created: "2026-01-28"
sprint: "Sprint 1 - P0"
planned:
- name: authStore
purpose: "Estado de autenticacion"
state:
- user
- isAuthenticated
- accessToken
actions:
- login()
- logout()
- refreshToken()
- name: tradingStore
purpose: "Estado de trading"
state:
- selectedSymbol
- timeframe
- watchlists
- positions
actions:
- setSymbol()
- addToWatchlist()
- placeOrder()
- name: educationStore
purpose: "Estado de educacion"
state:
- enrolledCourses
- currentLesson
- progress
actions:
- enrollCourse()
- updateProgress()
- name: uiStore
purpose: "Estado de UI"
state:
- theme
- sidebarOpen
- notifications
actions:
- toggleTheme()
- toggleSidebar()
- showNotification()
# ============================================================================
# HOOKS PERSONALIZADOS
# ============================================================================
hooks:
implemented:
- name: useMlOverlayData
path: hooks/charts/useMlOverlayData.ts
purpose: "TanStack Query hook para datos de overlay ML"
epic: OQI-006
created: "2026-01-28"
sprint: "Sprint 2 - P1"
lines: 93
returns:
- predictions
- signals
- ictConcepts
- isLoading
- error
- refetch
planned:
- name: useAuth
purpose: "Hook de autenticacion"
returns: [user, isLoading, login, logout]
- name: useApi
purpose: "Hook para llamadas API"
returns: [data, error, isLoading, refetch]
- name: useTradingChart
purpose: "Hook para manejo de charts"
- name: useWebSocket
purpose: "Hook para conexiones WebSocket"
- name: useNotification
purpose: "Hook para notificaciones"
# ============================================================================
# MAPEO A EPICAS
# ============================================================================
epic_mapping:
OQI-001:
features: [auth, dashboard, settings]
pages_count: 8
status: "Parcialmente implementado"
OQI-002:
features: [education]
pages_count: 6
components_count: 8
status: "En Desarrollo (85%)"
note: "CertificatePreview, CourseReviews, LessonNotes, RecommendedCourses, CourseProgressTracker, LearningPathVisualizer, VideoProgressPlayer, AssessmentSummaryCard"
OQI-003:
features: [trading]
pages_count: 1
components_count: 23
status: "En Desarrollo (80%)"
note: "Chart components, indicators, drawing tools, symbol info, trade journal"
OQI-004:
features: [investment]
pages_count: 1
components_count: 6
status: "En Desarrollo (85%)"
note: "DepositForm, WithdrawForm, AccountSummaryCard, ProductComparisonTable, PerformanceWidgetChart, AccountSettingsPanel"
OQI-005:
features: [payments]
pages_count: 4
components_count: 14
status: "Implementado (85%)"
note: "Pricing, Billing, CheckoutSuccess, CheckoutCancel, WalletDepositModal, WalletWithdrawModal, CouponForm, PaymentMethodForm, BillingInfoForm, TransactionHistory, InvoiceList, InvoiceDetail, PaymentMethodsList, SubscriptionUpgradeFlow"
OQI-006:
features: [ml]
pages_count: 0
components_count: 11
status: "En Desarrollo (85%)"
note: "AMDPhaseIndicator, PredictionCard, SignalsTimeline, AccuracyMetrics, ICTAnalysisCard, EnsembleSignalCard, TradeExecutionModal, ConfidenceMeter, SignalPerformanceTracker, ModelAccuracyDashboard, BacktestResultsVisualization"
OQI-007:
features: [assistant]
pages_count: 1
components_count: 18
hooks_count: 2
utils_count: 1
status: "En Desarrollo (90%)"
note: "Complete UI + AnalysisRequestForm, StrategyTemplateSelector, LLMConfigPanel, ContextMemoryDisplay + existing components"
OQI-008:
features: []
pages_count: 0
status: "Planificado"
note: "Feature portfolio a crear"
OQI-009:
features: [trading]
pages_count: 0
components_count: 13
hooks_count: 1
status: "En Desarrollo (85%)"
note: "MT4ConnectionStatus, LivePositionCard, RiskMonitor, MT4PositionsManager, AdvancedOrderEntry, AccountHealthDashboard, QuickOrderPanel, TradeExecutionHistory, TradingMetricsCard, MT4LiveTradesPanel, PositionModifierDialog, RiskBasedPositionSizer, TradeAlertsNotificationCenter, useMT4WebSocket"
# ============================================================================
# DEPENDENCIAS PRINCIPALES
# ============================================================================
dependencies:
production:
- react: "^18.x"
- react-dom: "^18.x"
- react-router-dom: "^6.x"
- typescript: "^5.x"
- zustand: "^4.x"
- tailwindcss: "^3.x"
- "@tanstack/react-query": "^5.x"
- axios: "^1.x"
- lightweight-charts: "^4.x"
- lucide-react: "^0.x"
development:
- vite: "^5.x"
- "@types/react": "^18.x"
- "@vitejs/plugin-react": "^4.x"
- autoprefixer: "^10.x"
- postcss: "^8.x"
# ============================================================================
# ARCHIVOS CLAVE
# ============================================================================
key_files:
- path: apps/frontend/src/main.tsx
purpose: "Entry point de la aplicacion"
- path: apps/frontend/src/App.tsx
purpose: "Componente raiz con routing"
- path: apps/frontend/tailwind.config.js
purpose: "Configuracion de Tailwind"
- path: apps/frontend/vite.config.ts
purpose: "Configuracion de Vite"
- path: apps/frontend/package.json
purpose: "Dependencias y scripts"
# ============================================================================
# NOTAS Y PENDIENTES
# ============================================================================
notes:
- "Solo auth tiene implementacion real, resto son paginas placeholder"
- "Falta crear stores Zustand"
- "Falta crear hooks personalizados"
- "Falta integracion con API del backend"
- "Falta componente TradingChart con Lightweight Charts"
- "Falta feature Copilot (OQI-007)"
- "Falta feature Portfolio (OQI-008)"
- "Tests E2E pendientes"
# ============================================================================
# FIN DEL INVENTARIO
# ============================================================================