[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:
parent
c7db687eb2
commit
07dc847096
206
docs/90-transversal/analisis/FILE-GENERATION-SPEC.md
Normal file
206
docs/90-transversal/analisis/FILE-GENERATION-SPEC.md
Normal 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*
|
||||||
@ -3,7 +3,7 @@
|
|||||||
# ═══════════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
fecha_actualizacion: "2026-01-24"
|
fecha_actualizacion: "2026-01-25"
|
||||||
proyecto: "trading-platform"
|
proyecto: "trading-platform"
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
@ -12,7 +12,7 @@ proyecto: "trading-platform"
|
|||||||
|
|
||||||
resumen:
|
resumen:
|
||||||
total_paginas: 27
|
total_paginas: 27
|
||||||
total_componentes: 16
|
total_componentes: 48
|
||||||
total_stores: 4
|
total_stores: 4
|
||||||
total_services: 9
|
total_services: 9
|
||||||
total_hooks: 2
|
total_hooks: 2
|
||||||
@ -20,6 +20,7 @@ resumen:
|
|||||||
framework: "React 18.2.0"
|
framework: "React 18.2.0"
|
||||||
build_tool: "Vite 6.2.0"
|
build_tool: "Vite 6.2.0"
|
||||||
lenguaje: "TypeScript 5.3.3"
|
lenguaje: "TypeScript 5.3.3"
|
||||||
|
fecha_actualizacion: "2026-01-25"
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
# PAGINAS POR MODULO
|
# PAGINAS POR MODULO
|
||||||
@ -151,6 +152,63 @@ componentes:
|
|||||||
- MainLayout.tsx
|
- MainLayout.tsx
|
||||||
- AuthLayout.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
|
# STATE MANAGEMENT
|
||||||
# ═══════════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user