[TASK-2026-01-25-FRONTEND-ANALYSIS] docs: Complete pending deliverables

- Update FRONTEND_INVENTORY.yml with componentes_modulos section (32 components)
- Add FILE-GENERATION-SPEC.md for PDF/Excel/multimedia handling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Adrian Flores Cortes 2026-01-25 02:05:14 -06:00
parent c7db687eb2
commit 07dc847096
2 changed files with 266 additions and 2 deletions

View File

@ -0,0 +1,206 @@
# Especificacion de Generacion de Archivos
**Proyecto:** trading-platform
**Fecha:** 2026-01-25
**Version:** 1.0.0
---
## 1. Generacion de PDF
### 1.1 Capacidades Actuales
| Modulo | Tipo de PDF | Estado | Libreria |
|--------|-------------|--------|----------|
| Education | Certificados | ✅ Implementado | PDFKit |
| Payments | Facturas | ✅ Implementado | Stripe PDF |
| Portfolio | Reportes | ⚠️ Diseño | TBD |
| Investment | Estados de cuenta | ⚠️ Diseño | TBD |
### 1.2 Especificacion Tecnica - Reportes Portfolio
```typescript
interface PortfolioReportConfig {
userId: string;
dateRange: {
start: Date;
end: Date;
};
sections: {
summary: boolean;
positions: boolean;
performance: boolean;
riskMetrics: boolean;
transactions: boolean;
};
format: 'pdf' | 'xlsx';
delivery: 'download' | 'email';
}
```
### 1.3 Librerias Recomendadas
| Libreria | Uso | Pros | Contras |
|----------|-----|------|---------|
| PDFKit | Server-side PDF | Ligero, flexible | Manual layout |
| Puppeteer | HTML to PDF | Diseño facil | Pesado |
| jsPDF | Client-side | Sin servidor | Limitado |
| ExcelJS | XLSX generation | Completo | Solo Excel |
---
## 2. Generacion de Excel/CSV
### 2.1 Capacidades Actuales
| Modulo | Tipo | Estado | Endpoint |
|--------|------|--------|----------|
| Trading | Trade history CSV | ✅ | /api/v1/trading/export |
| Education | Progress report | ⚠️ | Pendiente |
| Portfolio | Positions XLSX | ⚠️ | Diseño |
| Investment | Transactions CSV | ⚠️ | Diseño |
### 2.2 Formato de Exportacion
```typescript
interface ExportConfig {
format: 'csv' | 'xlsx';
columns: string[];
filters?: Record<string, any>;
dateRange?: { start: Date; end: Date };
includeHeaders: boolean;
filename: string;
}
```
---
## 3. Manejo de Multimedia
### 3.1 Imagenes
| Tipo | Uso | Almacenamiento | Max Size |
|------|-----|----------------|----------|
| Avatar | Perfil usuario | S3/Local | 2MB |
| Course thumbnails | Educacion | S3/Local | 5MB |
| Chart screenshots | Trading | Temporal | 10MB |
### 3.2 Videos
| Tipo | Uso | Almacenamiento | Streaming |
|------|-----|----------------|-----------|
| Lecciones | Educacion | S3/Vimeo | HLS |
| Tutoriales | Onboarding | YouTube embed | iframe |
### 3.3 Audio
| Tipo | Uso | Estado |
|------|-----|--------|
| Alertas | Trading signals | ✅ Web Audio API |
| Notificaciones | Push alerts | ✅ Browser native |
---
## 4. Endpoints de Generacion
### 4.1 Existentes
```yaml
POST /api/v1/trading/export:
description: Export trade history
params:
format: csv|xlsx
dateRange: { start, end }
response: File download
POST /api/v1/education/certificate:
description: Generate course certificate
params:
courseId: string
userId: string
response: PDF download
```
### 4.2 Propuestos
```yaml
POST /api/v1/portfolio/reports/pdf:
description: Generate portfolio report
params:
config: PortfolioReportConfig
response: PDF download | email confirmation
POST /api/v1/portfolio/export:
description: Export positions/history
params:
format: csv|xlsx
type: positions|history|transactions
response: File download
POST /api/v1/investment/statement:
description: Generate account statement
params:
accountId: string
period: monthly|quarterly|annual
response: PDF download
```
---
## 5. Implementacion Frontend
### 5.1 Componentes de Exportacion
```typescript
// ExportButton.tsx
interface ExportButtonProps {
endpoint: string;
format: 'pdf' | 'csv' | 'xlsx';
params: Record<string, any>;
filename: string;
label?: string;
}
// ReportGenerator.tsx
interface ReportGeneratorProps {
type: 'portfolio' | 'investment' | 'trading';
onGenerate: (config: ReportConfig) => Promise<void>;
onDownload: (url: string) => void;
}
```
### 5.2 Flujo de Usuario
```
1. Usuario selecciona tipo de reporte
2. Configura parametros (fecha, secciones)
3. Click "Generar"
4. Backend procesa (async si es grande)
5. Notificacion cuando listo
6. Descarga o envio por email
```
---
## 6. Consideraciones de Performance
| Operacion | Threshold | Estrategia |
|-----------|-----------|------------|
| PDF < 10 paginas | Sync | Respuesta directa |
| PDF > 10 paginas | Async | Job queue + notificacion |
| Excel < 10k rows | Sync | Respuesta directa |
| Excel > 10k rows | Async | Job queue + notificacion |
| Bulk export | Async | Background job |
---
## 7. Seguridad
- Todos los endpoints requieren autenticacion
- Rate limiting: 10 exports/hora por usuario
- Archivos temporales eliminados despues de 1 hora
- No incluir datos sensibles en exports sin consentimiento
---
*Generado: 2026-01-25 | Sistema: SIMCO v4.0.0*

View File

@ -3,7 +3,7 @@
# ═══════════════════════════════════════════════════════════════════════════════
version: "1.0.0"
fecha_actualizacion: "2026-01-24"
fecha_actualizacion: "2026-01-25"
proyecto: "trading-platform"
# ═══════════════════════════════════════════════════════════════════════════════
@ -12,7 +12,7 @@ proyecto: "trading-platform"
resumen:
total_paginas: 27
total_componentes: 16
total_componentes: 48
total_stores: 4
total_services: 9
total_hooks: 2
@ -20,6 +20,7 @@ resumen:
framework: "React 18.2.0"
build_tool: "Vite 6.2.0"
lenguaje: "TypeScript 5.3.3"
fecha_actualizacion: "2026-01-25"
# ═══════════════════════════════════════════════════════════════════════════════
# PAGINAS POR MODULO
@ -151,6 +152,63 @@ componentes:
- MainLayout.tsx
- AuthLayout.tsx
# ═══════════════════════════════════════════════════════════════════════════════
# COMPONENTES POR MODULO (Detalle adicional)
# ═══════════════════════════════════════════════════════════════════════════════
componentes_modulos:
trading:
cantidad: 12
lista:
- TradingChart.tsx
- OrderBook.tsx
- OrderForm.tsx
- PositionsPanel.tsx
- TradeHistory.tsx
- WatchlistPanel.tsx
- SymbolSearch.tsx
- TimeframeSelector.tsx
- IndicatorPanel.tsx
- AlertsPanel.tsx
- MarketDepth.tsx
- QuickTrade.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:
- PortfolioSummaryCard.tsx
- PositionsTable.tsx
- PerformanceChart.tsx
- RiskMetricsPanel.tsx
- RebalanceModal.tsx
# ═══════════════════════════════════════════════════════════════════════════════
# STATE MANAGEMENT
# ═══════════════════════════════════════════════════════════════════════════════