trading-platform/docs/02-definicion-modulos/OQI-004-investment-accounts/historias-usuario/US-INV-002-abrir-cuenta.md

241 lines
9.0 KiB
Markdown

# US-INV-002: Abrir Cuenta de Inversión
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | US-INV-002 |
| **Épica** | OQI-004 - Cuentas de Inversión |
| **Módulo** | investment |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 5 |
| **Estado** | Pendiente |
| **Asignado a** | Por asignar |
---
## Historia de Usuario
**Como** inversor,
**quiero** abrir una cuenta de inversión en un producto específico,
**para** comenzar a invertir y obtener rendimientos gestionados por un agente IA.
## Descripción Detallada
El usuario debe poder seleccionar un producto de inversión (Atlas, Orion, Nova) y abrir una cuenta asociada. El proceso incluye aceptar términos y condiciones, y ser redirigido al flujo de depósito inicial.
## Mockups/Wireframes
```
┌─────────────────────────────────────────────────────────────────┐
│ ABRIR CUENTA - ATLAS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🛡️ ATLAS - El Guardián │ │
│ │ │ │
│ │ Perfil: Conservador │ │
│ │ Target mensual: 3-5% │ │
│ │ Max drawdown: 5% │ │
│ │ Inversión mínima: $100 USD │ │
│ │ │ │
│ │ Estrategia: Mean reversion + Grid trading │ │
│ │ Activos: BTC, ETH (solo majors) │ │
│ │ Frecuencia: 2-5 trades/día │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ⚠️ Disclaimer │ │
│ │ │ │
│ │ Los rendimientos pasados no garantizan resultados │ │
│ │ futuros. El trading de criptomonedas conlleva riesgos │ │
│ │ significativos de pérdida. │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [✓] Acepto los términos y condiciones │
│ [✓] Entiendo los riesgos asociados │
│ [✓] Confirmo que tengo al menos 18 años │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ABRIR CUENTA Y DEPOSITAR │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptación
**Escenario 1: Abrir cuenta exitosamente**
```gherkin
DADO que el usuario está autenticado
Y tiene email verificado
Y no tiene cuenta en el producto Atlas
CUANDO navega a la página de apertura de Atlas
Y acepta todos los checkboxes requeridos
Y hace click en "Abrir Cuenta y Depositar"
ENTONCES se crea una nueva cuenta de inversión
Y el estado de la cuenta es "active"
Y el balance inicial es $0
Y se redirige al flujo de depósito
```
**Escenario 2: Usuario ya tiene cuenta en ese producto**
```gherkin
DADO que el usuario ya tiene cuenta en Atlas
CUANDO intenta abrir otra cuenta en Atlas
ENTONCES se muestra mensaje "Ya tienes una cuenta en Atlas"
Y se ofrece link para ir al dashboard de la cuenta existente
```
**Escenario 3: Email no verificado**
```gherkin
DADO que el usuario no tiene email verificado
CUANDO intenta abrir cuenta de inversión
ENTONCES se muestra mensaje "Debes verificar tu email primero"
Y se ofrece link para reenviar verificación
```
**Escenario 4: No acepta términos**
```gherkin
DADO que el usuario está en la página de apertura
CUANDO no marca todos los checkboxes requeridos
ENTONCES el botón "Abrir Cuenta" está deshabilitado
Y se muestra mensaje indicando los campos faltantes
```
**Escenario 5: Apertura sin depósito inmediato**
```gherkin
DADO que el usuario quiere abrir cuenta sin depositar ahora
CUANDO hace click en "Abrir cuenta sin depositar" (link secundario)
ENTONCES se crea la cuenta con balance $0
Y se redirige al dashboard de la cuenta
Y se muestra CTA para depositar
```
## Criterios Adicionales
- [ ] Mostrar rendimiento histórico del agente
- [ ] Mostrar disclaimer legal claramente
- [ ] Guardar aceptación de términos con timestamp
- [ ] Enviar email de confirmación de apertura
- [ ] Tracking de conversión (analytics)
---
## Tareas Técnicas
**Database:**
- [ ] DB-INV-001: Verificar schema de investment.accounts
- [ ] DB-INV-002: Crear índice en (user_id, product_id)
**Backend:**
- [ ] BE-INV-001: Crear endpoint POST /investment/accounts
- [ ] BE-INV-002: Implementar AccountService.createAccount()
- [ ] BE-INV-003: Validar email verificado
- [ ] BE-INV-004: Validar cuenta única por producto
- [ ] BE-INV-005: Guardar aceptación de términos
**Frontend:**
- [ ] FE-INV-001: Crear página OpenAccount.tsx
- [ ] FE-INV-002: Crear componente ProductSummary.tsx
- [ ] FE-INV-003: Crear componente TermsCheckboxes.tsx
- [ ] FE-INV-004: Implementar investmentStore
**Tests:**
- [ ] TEST-INV-001: Test unitario AccountService
- [ ] TEST-INV-002: Test integración crear cuenta
- [ ] TEST-INV-003: Test E2E flujo completo
---
## Dependencias
**Depende de:**
- [ ] US-AUTH-001: Autenticación - Estado: ✅ Completado
- [ ] US-INV-001: Ver productos - Estado: Pendiente
**Bloquea:**
- [ ] US-INV-003: Realizar depósito
- [ ] US-INV-004: Ver dashboard portfolio
---
## Notas Técnicas
**Endpoints involucrados:**
| Método | Endpoint | Descripción |
|--------|----------|-------------|
| GET | /investment/products/:id | Detalle del producto |
| POST | /investment/accounts | Crear cuenta |
| GET | /investment/accounts | Verificar cuentas existentes |
**Entidades/Tablas:**
- `investment.accounts`: Cuenta de inversión
- `investment.terms_acceptance`: Registro de aceptación
**Request Body:**
```typescript
{
productId: "uuid-atlas",
acceptedTerms: true,
acceptedRisks: true,
confirmedAge: true,
ipAddress: "192.168.1.1",
userAgent: "Mozilla/5.0..."
}
```
**Response:**
```typescript
{
account: {
id: "uuid",
userId: "uuid",
productId: "uuid",
status: "active",
balance: 0,
openedAt: "2025-12-05T..."
},
redirectTo: "/investment/deposit?accountId=uuid"
}
```
---
## 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