FASE 0 - Preparación y Purga: - Archived 21 completed tasks to _archive/2026-01/ - Marked 4 docs as DEPRECATED - Created 3 baseline coherence reports FASE 1 - DDL-Backend Coherence: - audit.types.ts: +4 types (SystemEvent, TradingAudit, ApiRequestLog, DataAccessLog) - investment.types.ts: +4 types (RiskQuestionnaire, WithdrawalRequest, DailyPerformance, DistributionHistory) - entity.types.ts: +5 types (Symbol, TradingBot, TradingSignal, TradingMetrics, PaperBalance) FASE 2 - Backend-Frontend Coherence: - investmentStore.ts: New Zustand store with 20+ actions - mlStore.ts: New Zustand store with signal caching - alerts.service.ts: New service with 15 functions FASE 3 - Documentation: - OQI-009: Updated to 100% coverage, added ET-MKT-004-productos.md - OQI-010: Created full structure (STATUS.md, ROADMAP-MT4.md, ET-MT4-001-gateway.md) Coherence Baseline Established: - DDL-Backend: 31% (target 95%) - Backend-Frontend: 72% (target 85%) - Global: 39.6% (target 90%) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
05-EJECUCION - OQI-004 Account Detail
Contexto
El modulo de Investment (OQI-004) tenia paginas Portfolio.tsx y Products.tsx pero faltaba la pagina de detalle de cuenta individual. Portfolio.tsx (linea 115) enlaza a /investment/accounts/${account.id} pero la pagina no existia.
Fase 1: Investment Service
Archivo Creado
apps/frontend/src/services/investment.service.ts
Funciones Implementadas
- Products: getProducts, getProductById, getProductPerformance
- Accounts: getUserAccounts, getAccountSummary, getAccountById, createAccount, closeAccount
- Transactions: getTransactions, createDeposit, createWithdrawal
- Distributions: getDistributions
- Withdrawals: getWithdrawals
Tipos Exportados
- Product, ProductPerformance
- InvestmentAccount, AccountSummary, AccountDetail
- Transaction, Distribution, Withdrawal
Fase 2: Account Detail Page
Archivo Creado
apps/frontend/src/modules/investment/pages/AccountDetail.tsx
Estructura de Componentes
AccountDetail
├── StatCard // Cards de estadisticas
├── TransactionRow // Fila de transaccion
├── DistributionRow // Fila de distribucion
├── PerformanceChart // Canvas chart de rendimiento
└── Tabs
├── Overview // Resumen + chart + info
├── Transactions // Historial completo
├── Distributions // Historial de distribuciones
├── Deposit // DepositForm integrado
└── Withdraw // WithdrawForm integrado
Funcionalidades
- Stats Grid: Balance actual, Total invertido, Ganancias, Total retirado
- Performance Chart: Canvas-based line chart con gradient fill
- Recent Transactions: Ultimas 5 transacciones en overview
- Load More: Paginacion de transacciones
- Deposit/Withdraw: Forms integrados con tabs
Fase 3: Routes y App.tsx
Imports Agregados
const InvestmentPortfolio = lazy(() => import('./modules/investment/pages/Portfolio'));
const InvestmentProducts = lazy(() => import('./modules/investment/pages/Products'));
const AccountDetail = lazy(() => import('./modules/investment/pages/AccountDetail'));
Rutas Agregadas
<Route path="/investment/portfolio" element={<InvestmentPortfolio />} />
<Route path="/investment/products" element={<InvestmentProducts />} />
<Route path="/investment/accounts/:accountId" element={<AccountDetail />} />
Validaciones
- Estructura de archivos correcta
- Imports validos (React, react-router-dom, lucide-react)
- Props de componentes correctas (currentBalance en WithdrawForm)
- Rutas registradas en App.tsx
- Inventarios actualizados
Resultado
Progreso OQI-004: 30% → 45%
Funcionalidades completadas:
- Pagina de detalle de cuenta
- Service API centralizado
- Navegacion por tabs
- Grafico de rendimiento
- Historial de transacciones
- Historial de distribuciones
- Depositos y retiros integrados
Pendiente:
- Pagina de listado de withdrawals global
- Pagina de transactions global
- Pagina de reports
- ProductDetail page (detalle de producto individual)