# RF-LLM-001: Interfaz de Chat con LLM

**Épica:** OQI-007 - LLM Strategy Agent
**Versión:** 1.0
**Fecha:** 2025-12-05
**Estado:** Planificado
**Prioridad:** P0 - Crítico

---

## Descripción

El sistema debe proporcionar una interfaz de chat conversacional que permita a los usuarios interactuar con un agente LLM especializado en trading. El chat debe soportar streaming de respuestas, mantener contexto de conversación y permitir múltiples conversaciones.

---

## Requisitos Funcionales

### RF-LLM-001.1: Envío de Mensajes
- El usuario debe poder enviar mensajes de texto al agente LLM
- El sistema debe validar que el mensaje no esté vacío
- El sistema debe limitar la longitud del mensaje según el plan del usuario
- El mensaje debe incluir contexto de mercado actual automáticamente

### RF-LLM-001.2: Streaming de Respuestas
- Las respuestas del LLM deben mostrarse en tiempo real (streaming)
- El usuario debe ver el texto aparecer palabra por palabra
- Debe existir indicador visual de que el agente está "pensando"
- El usuario debe poder cancelar una respuesta en progreso

### RF-LLM-001.3: Gestión de Conversaciones
- El usuario debe poder crear nuevas conversaciones
- El usuario debe poder ver historial de conversaciones anteriores
- El usuario debe poder eliminar conversaciones
- El usuario debe poder renombrar conversaciones
- Las conversaciones deben persistir entre sesiones

### RF-LLM-001.4: Contexto de Conversación
- El sistema debe mantener contexto de los últimos N mensajes
- El contexto debe incluir información de mercado relevante
- El contexto debe incluir posiciones/watchlist del usuario
- El sistema debe resumir conversaciones largas automáticamente

### RF-LLM-001.5: Feedback de Respuestas
- El usuario debe poder marcar respuestas como útiles/no útiles
- El usuario debe poder reportar respuestas incorrectas
- El sistema debe usar feedback para mejorar respuestas futuras

---

## Criterios de Aceptación

```gherkin
Feature: Chat Interface con LLM

Scenario: Enviar mensaje y recibir respuesta
  Given estoy autenticado como usuario con plan Pro
  And estoy en la página del Copilot
  When escribo "¿Cuál es tu análisis de AAPL?" en el input
  And presiono Enter o el botón enviar
  Then veo mi mensaje en el chat
  And veo indicador de "Analizando..."
  And las palabras de la respuesta aparecen progresivamente
  And la respuesta incluye análisis técnico de AAPL

Scenario: Crear nueva conversación
  Given tengo una conversación activa con mensajes
  When hago clic en "Nueva conversación"
  Then se crea una nueva conversación vacía
  And la conversación anterior se guarda en el historial
  And puedo acceder a la conversación anterior

Scenario: Límite de mensajes por plan
  Given soy usuario con plan Free
  And he enviado 10 mensajes hoy
  When intento enviar otro mensaje
  Then veo mensaje "Has alcanzado el límite diario"
  And veo opción para upgrade a plan Pro
```

---

## Reglas de Negocio

| Regla | Descripción |
|-------|-------------|
| RN-001 | Mensajes vacíos no se envían |
| RN-002 | Límite de caracteres: Free=500, Pro=2000, Premium=4000 |
| RN-003 | Límite diario: Free=10, Pro=100, Premium=ilimitado |
| RN-004 | Contexto máximo: últimos 20 mensajes |
| RN-005 | Conversaciones se auto-eliminan después de 90 días de inactividad |
| RN-006 | Respuestas con contenido financiero incluyen disclaimer |

---

## Dependencias

### Épicas Requeridas
- **OQI-001:** Autenticación (usuarios autenticados)

### APIs Externas
- OpenAI GPT-4 / Claude API
- WebSocket para streaming

---

## Mockups/Wireframes

```
┌─────────────────────────────────────────────────────────────┐
│ OrbiQuant Copilot                              [Nueva] [⚙️] │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────────────────────────────────┐ │
│ │ Historial   │ │                                         │ │
│ │             │ │  🤖 ¡Hola! Soy tu asistente de trading. │ │
│ │ > Análisis  │ │     ¿En qué puedo ayudarte hoy?         │ │
│ │   AAPL      │ │                                         │ │
│ │             │ │  👤 ¿Cuál es tu análisis de AAPL?       │ │
│ │   Estrategia│ │                                         │ │
│ │   BTC       │ │  🤖 Analizando AAPL...                  │ │
│ │             │ │     ████████░░ 80%                      │ │
│ │   Portfolio │ │                                         │ │
│ │             │ │                                         │ │
│ └─────────────┘ └─────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ [📎] Escribe tu mensaje...                         [Enviar] │
└─────────────────────────────────────────────────────────────┘
```

---

## Especificaciones Técnicas Relacionadas

- [ET-LLM-001: Arquitectura del Chat](../especificaciones/ET-LLM-001-arquitectura-chat.md)
- [ET-LLM-005: Frontend Components](../especificaciones/ET-LLM-005-frontend.md)

---

## Historias de Usuario Relacionadas

- US-LLM-001: Enviar mensaje al copilot
- US-LLM-002: Ver historial de conversaciones

---

## Notas Técnicas

- Usar WebSocket para streaming bidireccional
- Implementar reconnection automática
- Cache de respuestas frecuentes
- Rate limiting por usuario

---

*Documento de requerimientos - Sistema NEXUS*
*OrbiQuant IA Trading Platform*
