# 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