# 02 - ANALISIS

## Componentes a Crear

### 1. ErrorBoundary.tsx

**Proposito:** Capturar errores de React y mostrar UI de fallback

**Comportamiento:**
- Clase React (requirement de error boundaries)
- Captura errores en componentDidCatch
- Muestra stack trace en modo desarrollo
- Botones: Reintentar, Refrescar, Ir a inicio
- Copia stack trace al clipboard

**Interfaces:**
```typescript
interface ErrorBoundaryProps {
  children: React.ReactNode;
  fallback?: React.ReactNode;
  onError?: (error: Error, errorInfo: ErrorInfo) => void;
  showDetails?: boolean;
}

interface ErrorBoundaryState {
  hasError: boolean;
  error: Error | null;
  errorInfo: ErrorInfo | null;
}
```

### 2. ConnectionStatus.tsx

**Proposito:** Mostrar estado de conexion WebSocket/API

**Variantes:**
- `badge`: Compacto con icono y texto
- `indicator`: Solo icono con tooltip
- `detailed`: Panel con metricas

**Estados:**
- connected (verde)
- connecting (amarillo)
- disconnected (rojo)
- error (rojo pulsante)

**Interfaces:**
```typescript
interface ConnectionState {
  status: 'connected' | 'connecting' | 'disconnected' | 'error';
  lastConnected?: string;
  reconnectAttempts?: number;
  error?: string;
}

interface ConnectionMetrics {
  latency?: number;
  uptime?: number;
  messagesReceived?: number;
  messagesSent?: number;
}
```

### 3. TokenUsageDisplay.tsx

**Proposito:** Visualizar consumo de tokens y costos

**Variantes:**
- `inline`: Minimo para header
- `compact`: Badge con metricas
- `detailed`: Panel completo

**Funcionalidades:**
- Barra de progreso de contexto
- Warnings al 75%/90% de contexto
- Desglose input/output tokens
- Estimacion de costos
- Estadisticas de sesion

**Interfaces:**
```typescript
interface TokenUsage {
  inputTokens: number;
  outputTokens: number;
  totalTokens: number;
  contextWindowSize: number;
  contextUsedTokens: number;
}

interface TokenCosts {
  inputCostPer1k: number;
  outputCostPer1k: number;
  currency?: string;
}
```

### 4. PromptLibrary.tsx

**Proposito:** Biblioteca de templates de prompts

**Funcionalidades:**
- Busqueda por titulo/descripcion/tags
- Filtro por categoria
- Favoritos
- Copiar prompt
- Vista compacta/normal

**Categorias:**
- analysis: Analisis de mercado
- strategy: Estrategias de trading
- education: Contenido educativo
- trading: Operaciones de trading
- risk: Gestion de riesgo
- custom: Personalizados

**Interfaces:**
```typescript
interface Prompt {
  id: string;
  title: string;
  description: string;
  template: string;
  category: PromptCategory;
  tags: string[];
  variables?: string[];
  isFavorite?: boolean;
  usageCount?: number;
}
```

## Dependencias

- React 18 (class components para error boundary)
- lucide-react icons
- Tailwind CSS
- Patron de dark theme existente

## Riesgos

| Riesgo | Mitigacion |
|--------|------------|
| Error boundary require clase | Usar class component solo para este caso |
| Metricas de tokens sin backend | Props opcionales, UI mock |
