Changes include: - Updated architecture documentation - Enhanced module definitions (OQI-001 to OQI-008) - ML integration documentation updates - Trading strategies documentation - Orchestration and inventory updates - Docker configuration updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.3 KiB
6.3 KiB
| id | title | type | status | priority | epic | project | version | created_date | updated_date |
|---|---|---|---|---|---|---|---|---|---|
| RF-INV-002 | Gestion de Cuentas de Inversion | Requirement | Done | Alta | OQI-004 | trading-platform | 1.0.0 | 2025-12-05 | 2026-01-04 |
RF-INV-002: Gestión de Cuentas de Inversión
Metadata
| Campo | Valor |
|---|---|
| ID | RF-INV-002 |
| Épica | OQI-004 - Cuentas de Inversión |
| Tipo | Requerimiento Funcional |
| Prioridad | P0 |
| Story Points | 10 |
| Estado | Aprobado |
| Última actualización | 2025-12-05 |
Descripción
El sistema debe permitir a los usuarios abrir, gestionar y cerrar cuentas de inversión asociadas a los productos de trading automático (Atlas, Orion, Nova).
Funcionalidades Requeridas
RF-INV-002.1: Apertura de Cuenta
Requisitos previos:
- Usuario autenticado
- Email verificado
- Plan de suscripción compatible con el producto
- No tener cuenta activa en el mismo producto
Proceso de apertura:
- Seleccionar producto de inversión
- Revisar términos y condiciones
- Aceptar disclaimers de riesgo
- Confirmar apertura
- Opcional: Proceder a depósito inicial
Datos capturados:
- Timestamp de aceptación de términos
- IP del usuario
- User Agent del navegador
- Versión de los términos aceptados
RF-INV-002.2: Estados de Cuenta
| Estado | Descripción | Transiciones Permitidas |
|---|---|---|
pending_deposit |
Cuenta creada, esperando primer depósito | → active, closed |
active |
Cuenta operativa con balance > 0 | → paused, closing |
paused |
Trading pausado temporalmente | → active, closing |
closing |
En proceso de cierre (liquidando posiciones) | → closed |
closed |
Cuenta cerrada permanentemente | (terminal) |
RF-INV-002.3: Gestión de Cuenta Activa
El usuario debe poder:
- Ver balance actual y rendimiento
- Pausar/reanudar trading automático
- Ver historial de operaciones
- Realizar depósitos adicionales
- Solicitar retiros
- Iniciar proceso de cierre
RF-INV-002.4: Cierre de Cuenta
Proceso de cierre:
- Usuario solicita cierre
- Sistema detiene nuevas operaciones
- Sistema liquida posiciones abiertas (máx 24 horas)
- Balance final se transfiere a wallet del usuario
- Cuenta se marca como cerrada
Restricciones:
- No se puede cerrar si hay operaciones pendientes
- Se requiere confirmación por email
- Período de espera de 24 horas (cancelable)
Modelo de Datos
Entidad: InvestmentAccount
interface InvestmentAccount {
id: string; // UUID
userId: string; // FK a users
productId: string; // FK a investment_products
status: AccountStatus;
// Balances
balance: number; // Balance actual en USD
totalDeposited: number; // Total depositado históricamente
totalWithdrawn: number; // Total retirado históricamente
totalProfit: number; // Ganancias totales realizadas
// Métricas
highWaterMark: number; // Máximo balance alcanzado
currentDrawdown: number; // Drawdown actual desde HWM
// Timestamps
openedAt: Date;
firstDepositAt: Date | null;
pausedAt: Date | null;
closedAt: Date | null;
// Términos
termsAcceptedAt: Date;
termsVersion: string;
ipAddress: string;
userAgent: string;
}
Entidad: AccountSnapshot
interface AccountSnapshot {
id: string;
accountId: string;
balance: number;
equity: number; // Balance + P&L no realizado
unrealizedPnl: number;
openPositions: number;
dailyTrades: number;
dailyPnl: number;
snapshotAt: Date; // Se toma cada hora
}
Reglas de Negocio
- RN-010: Una cuenta solo puede estar asociada a un producto
- RN-011: El balance de una cuenta nunca puede ser negativo
- RN-012: Las pausas de cuenta se registran para auditoría
- RN-013: El cierre de cuenta es irreversible después de 24 horas
- RN-014: Los snapshots se toman cada hora para métricas de rendimiento
- RN-015: El high water mark solo se actualiza cuando el balance supera el anterior
Criterios de Aceptación
Escenario: Abrir cuenta exitosamente
DADO que el usuario tiene plan Pro
Y no tiene cuenta en Orion
CUANDO acepta los términos y condiciones de Orion
Y confirma la apertura
ENTONCES se crea una cuenta en estado "pending_deposit"
Y recibe email de confirmación
Y se redirige a la página de depósito
Escenario: Intento de cuenta duplicada
DADO que el usuario ya tiene cuenta activa en Atlas
CUANDO intenta abrir otra cuenta en Atlas
ENTONCES recibe error "Ya tienes una cuenta activa en Atlas"
Y se muestra link al dashboard de la cuenta existente
Escenario: Pausar trading
DADO que el usuario tiene cuenta activa
CUANDO hace click en "Pausar trading"
Y confirma la acción
ENTONCES el estado cambia a "paused"
Y se detienen nuevas operaciones
Y las posiciones abiertas se mantienen
Escenario: Cerrar cuenta
DADO que el usuario tiene cuenta activa
Y no tiene posiciones abiertas
CUANDO solicita cerrar la cuenta
ENTONCES recibe email de confirmación
Y tiene 24 horas para cancelar
DESPUÉS de 24 horas, la cuenta se cierra
Y el balance se transfiere a su wallet
API Endpoints
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /investment/accounts | Crear cuenta |
| GET | /investment/accounts | Listar cuentas del usuario |
| GET | /investment/accounts/:id | Detalle de cuenta |
| PATCH | /investment/accounts/:id/pause | Pausar trading |
| PATCH | /investment/accounts/:id/resume | Reanudar trading |
| POST | /investment/accounts/:id/close | Iniciar cierre |
| DELETE | /investment/accounts/:id/close | Cancelar cierre |
Notificaciones
| Evento | Canal | Contenido |
|---|---|---|
| Cuenta abierta | Confirmación + siguiente pasos | |
| Primer depósito | Email + Push | Trading iniciado |
| Cuenta pausada | Confirmación de pausa | |
| Cierre solicitado | Confirmación + instrucciones para cancelar | |
| Cuenta cerrada | Resumen final + balance transferido |
Referencias
Autor: Requirements-Analyst Fecha: 2025-12-05