# US-INV-001: Ver Productos de Inversión

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-INV-001 |
| **Épica** | OQI-004 - Cuentas de Inversión |
| **Módulo** | investment |
| **Prioridad** | P0 |
| **Story Points** | 3 |
| **Sprint** | Sprint 5 |
| **Estado** | Pendiente |
| **Asignado a** | Por asignar |

---

## Historia de Usuario

**Como** inversor potencial,
**quiero** ver los productos de inversión disponibles con sus características,
**para** comparar opciones y elegir el que mejor se adapte a mi perfil de riesgo.

## Descripción Detallada

El usuario debe poder acceder a una página que muestre los tres productos de inversión (Atlas, Orion, Nova) con información detallada sobre cada uno: perfil de riesgo, rendimiento objetivo, inversión mínima, estrategia, y rendimiento histórico. Debe ser fácil comparar los productos y proceder a abrir cuenta.

## Mockups/Wireframes

```
┌─────────────────────────────────────────────────────────────────┐
│                    PRODUCTOS DE INVERSIÓN                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Elige el agente que mejor se adapte a tu perfil de riesgo      │
│                                                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐          │
│  │ 🛡️ ATLAS     │  │ ⚡ ORION     │  │ 🚀 NOVA      │          │
│  │              │  │              │  │              │          │
│  │ Conservador  │  │ Moderado     │  │ Agresivo     │          │
│  │              │  │              │  │              │          │
│  │ Target:      │  │ Target:      │  │ Target:      │          │
│  │ 3-5% mensual │  │ 5-10% mensual│  │ 10%+ mensual │          │
│  │              │  │              │  │              │          │
│  │ Max DD: 5%   │  │ Max DD: 10%  │  │ Max DD: 20%  │          │
│  │              │  │              │  │              │          │
│  │ Mínimo:      │  │ Mínimo:      │  │ Mínimo:      │          │
│  │ $100 USD     │  │ $500 USD     │  │ $1,000 USD   │          │
│  │              │  │              │  │              │          │
│  │ [Ver detalles] │  │ [Ver detalles] │  │ [Ver detalles] │    │
│  └──────────────┘  └──────────────┘  └──────────────┘          │
│                                                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  📊 Rendimiento histórico (últimos 6 meses)             │   │
│  │  [Gráfico comparativo de los 3 agentes]                 │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
```

---

## Criterios de Aceptación

**Escenario 1: Ver listado de productos**
```gherkin
DADO que el usuario está autenticado
CUANDO navega a /investment/products
ENTONCES se muestran los 3 productos de inversión
Y cada producto muestra: nombre, perfil, target, drawdown, mínimo
Y se muestra rendimiento histórico de cada agente
```

**Escenario 2: Ver detalle de un producto**
```gherkin
DADO que el usuario está viendo el listado de productos
CUANDO hace click en "Ver detalles" de Atlas
ENTONCES se navega a /investment/products/atlas
Y se muestra información completa del producto
Y se muestra estrategia de trading detallada
Y se muestra gráfico de rendimiento histórico
Y se muestra botón "Abrir cuenta en Atlas"
```

**Escenario 3: Usuario sin autenticar**
```gherkin
DADO que el usuario NO está autenticado
CUANDO navega a /investment/products
ENTONCES se muestran los productos
PERO los botones de "Abrir cuenta" redirigen a login
Y se muestra CTA "Inicia sesión para invertir"
```

**Escenario 4: Usuario ya tiene cuenta en producto**
```gherkin
DADO que el usuario ya tiene cuenta en Atlas
CUANDO ve el detalle de Atlas
ENTONCES el botón muestra "Ir a mi cuenta"
Y redirige al dashboard de la cuenta existente
```

**Escenario 5: Comparar productos**
```gherkin
DADO que el usuario está en /investment/products
CUANDO selecciona 2 o más productos
Y hace click en "Comparar"
ENTONCES se muestra tabla comparativa lado a lado
Y se resaltan diferencias clave
```

## Criterios Adicionales

- [ ] Mostrar badge de "Recomendado" según perfil del usuario
- [ ] Mostrar rendimiento en gráfico interactivo
- [ ] Incluir testimonios o casos de éxito
- [ ] Responsive design para móvil
- [ ] Loading skeleton mientras cargan datos

---

## Tareas Técnicas

**Database:**
- [ ] DB-INV-001: Verificar schema de investment.products
- [ ] DB-INV-002: Seed data para 3 productos
- [ ] DB-INV-003: Tabla de rendimientos históricos

**Backend:**
- [ ] BE-INV-001: Crear endpoint GET /investment/products
- [ ] BE-INV-002: Crear endpoint GET /investment/products/:id
- [ ] BE-INV-003: Implementar ProductService.getAll()
- [ ] BE-INV-004: Implementar ProductService.getById()
- [ ] BE-INV-005: Endpoint GET /investment/products/:id/performance

**Frontend:**
- [ ] FE-INV-001: Crear página ProductsPage.tsx
- [ ] FE-INV-002: Crear componente ProductCard.tsx
- [ ] FE-INV-003: Crear página ProductDetailPage.tsx
- [ ] FE-INV-004: Crear componente PerformanceChart.tsx
- [ ] FE-INV-005: Crear componente ProductComparison.tsx
- [ ] FE-INV-006: Implementar productsStore (Zustand)

**Tests:**
- [ ] TEST-INV-001: Test unitario ProductService
- [ ] TEST-INV-002: Test integración GET /products
- [ ] TEST-INV-003: Test E2E navegación productos

---

## Dependencias

**Depende de:**
- [ ] US-AUTH-001: Autenticación - Estado: ✅ Completado

**Bloquea:**
- [ ] US-INV-002: Abrir cuenta
- [ ] US-INV-010: Comparar productos

---

## Notas Técnicas

**Endpoints involucrados:**
| Método | Endpoint | Descripción |
|--------|----------|-------------|
| GET | /investment/products | Listado de productos |
| GET | /investment/products/:id | Detalle de producto |
| GET | /investment/products/:id/performance | Rendimiento histórico |

**Entidades/Tablas:**
- `investment.products`: Catálogo de productos
- `investment.agent_performance`: Métricas históricas

**Response GET /products:**
```typescript
{
  products: [
    {
      id: "uuid-atlas",
      name: "Atlas",
      codeName: "atlas",
      description: "El Guardián - Estrategia conservadora",
      riskProfile: "conservative",
      targetReturn: { min: 3, max: 5 },
      maxDrawdown: 5,
      minimumInvestment: 100,
      strategy: "Mean reversion + Grid trading",
      assets: ["BTC", "ETH"],
      tradesPerDay: { min: 2, max: 5 },
      icon: "🛡️",
      active: true
    },
    // ... Orion, Nova
  ]
}
```

**Response GET /products/:id/performance:**
```typescript
{
  productId: "uuid-atlas",
  period: "6M",
  dataPoints: [
    { date: "2025-06-01", return: 3.2, balance: 1032 },
    { date: "2025-07-01", return: 4.1, balance: 1074.3 },
    // ...
  ],
  summary: {
    totalReturn: 24.5,
    avgMonthlyReturn: 4.1,
    sharpeRatio: 1.8,
    maxDrawdown: 3.2
  }
}
```

---

## Definition of Ready (DoR)

- [x] Historia claramente escrita
- [x] Criterios de aceptación definidos
- [x] Story points estimados
- [x] Dependencias identificadas
- [x] Sin bloqueadores
- [ ] Diseño/mockup disponible
- [x] API spec disponible

## Definition of Done (DoD)

- [ ] Código implementado según criterios
- [ ] Tests unitarios escritos y pasando
- [ ] Tests de integración pasando
- [ ] Code review aprobado
- [ ] Documentación actualizada
- [ ] QA aprobado
- [ ] Desplegado en ambiente de pruebas

---

## Historial de Cambios

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-05 | Creación | Requirements-Analyst |

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-05
**Última actualización:** 2025-12-05
