ML Engine Updates: - Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records - Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence) - Backtest results: +176.71R profit with aggressive_filter strategy Documentation Consolidation: - Created docs/99-analisis/_MAP.md index with 13 new analysis documents - Consolidated inventories: removed duplicates from orchestration/inventarios/ - Updated ML_INVENTORY.yml with BTCUSD metrics and training results - Added execution reports: FASE11-BTCUSD, correction issues, alignment validation Architecture & Integration: - Updated all module documentation with NEXUS v3.4 frontmatter - Fixed _MAP.md indexes across all folders - Updated orchestration plans and traces Files: 229 changed, 5064 insertions(+), 1872 deletions(-) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
201 lines
9.3 KiB
Markdown
201 lines
9.3 KiB
Markdown
---
|
|
id: "US-AUTH-001"
|
|
title: "Registro con Email"
|
|
type: "User Story"
|
|
status: "Done"
|
|
priority: "Alta"
|
|
epic: "OQI-001"
|
|
story_points: 5
|
|
created_date: "2025-12-05"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# US-AUTH-001: Registro con Email
|
|
|
|
**Version:** 1.0.0
|
|
**Fecha:** 2025-12-05
|
|
**Estado:** ✅ Implementado
|
|
**Story Points:** 5
|
|
**Prioridad:** P0 (Crítica)
|
|
**Épica:** [OQI-001](../_MAP.md)
|
|
|
|
---
|
|
|
|
## Historia de Usuario
|
|
|
|
**Como** visitante de Trading Platform
|
|
**Quiero** poder crear una cuenta usando mi email y contraseña
|
|
**Para** acceder a las funcionalidades de la plataforma
|
|
|
|
---
|
|
|
|
## Criterios de Aceptación
|
|
|
|
### AC-001: Formulario de registro
|
|
|
|
**Dado** que soy un visitante en la página de registro
|
|
**Cuando** veo el formulario
|
|
**Entonces** debería ver campos para:
|
|
- Email
|
|
- Contraseña
|
|
- Confirmar contraseña
|
|
- Nombre
|
|
- Apellido
|
|
- Checkbox de términos y condiciones
|
|
|
|
### AC-002: Validación de email
|
|
|
|
**Dado** que estoy llenando el formulario de registro
|
|
**Cuando** ingreso un email inválido
|
|
**Entonces** debería ver un mensaje de error "Email inválido"
|
|
**Y** el botón de registro debería estar deshabilitado
|
|
|
|
### AC-003: Validación de contraseña
|
|
|
|
**Dado** que estoy llenando el formulario de registro
|
|
**Cuando** ingreso una contraseña que no cumple los requisitos
|
|
**Entonces** debería ver indicadores visuales de:
|
|
- ❌/✅ Mínimo 8 caracteres
|
|
- ❌/✅ Al menos una mayúscula
|
|
- ❌/✅ Al menos una minúscula
|
|
- ❌/✅ Al menos un número
|
|
- ❌/✅ Al menos un carácter especial
|
|
|
|
### AC-004: Confirmación de contraseña
|
|
|
|
**Dado** que estoy llenando el formulario de registro
|
|
**Cuando** las contraseñas no coinciden
|
|
**Entonces** debería ver un mensaje de error "Las contraseñas no coinciden"
|
|
|
|
### AC-005: Registro exitoso
|
|
|
|
**Dado** que completé el formulario correctamente
|
|
**Cuando** hago click en "Registrarme"
|
|
**Entonces** debería:
|
|
1. Ver un mensaje "Cuenta creada. Revisa tu email para verificar"
|
|
2. Recibir un email de verificación
|
|
3. Ser redirigido a una página de confirmación
|
|
|
|
### AC-006: Email duplicado
|
|
|
|
**Dado** que intento registrarme con un email que ya existe
|
|
**Cuando** envío el formulario
|
|
**Entonces** debería ver un mensaje "Este email ya está registrado"
|
|
|
|
### AC-007: Email de verificación
|
|
|
|
**Dado** que me registré exitosamente
|
|
**Cuando** reviso mi email
|
|
**Entonces** debería recibir un email con:
|
|
- Asunto: "Verifica tu cuenta de Trading Platform"
|
|
- Un link de verificación válido por 24 horas
|
|
- Instrucciones claras
|
|
|
|
### AC-008: Verificación de email
|
|
|
|
**Dado** que recibí el email de verificación
|
|
**Cuando** hago click en el link de verificación
|
|
**Entonces** debería:
|
|
1. Ver un mensaje "Email verificado exitosamente"
|
|
2. Poder hacer login con mis credenciales
|
|
|
|
---
|
|
|
|
## Mockup
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ │
|
|
│ 🌟 Crea tu cuenta en Trading Platform │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────┐ │
|
|
│ │ Email │ │
|
|
│ │ ┌─────────────────────────────────────────────────┐ │ │
|
|
│ │ │ usuario@example.com │ │ │
|
|
│ │ └─────────────────────────────────────────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────┐ │
|
|
│ │ Contraseña │ │
|
|
│ │ ┌─────────────────────────────────────────────────┐ │ │
|
|
│ │ │ •••••••••••• 👁 │ │ │
|
|
│ │ └─────────────────────────────────────────────────┘ │ │
|
|
│ │ │ │
|
|
│ │ ✅ Mínimo 8 caracteres │ │
|
|
│ │ ✅ Una mayúscula │ │
|
|
│ │ ✅ Una minúscula │ │
|
|
│ │ ✅ Un número │ │
|
|
│ │ ❌ Un carácter especial │ │
|
|
│ └─────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────┐ │
|
|
│ │ Confirmar contraseña │ │
|
|
│ │ ┌─────────────────────────────────────────────────┐ │ │
|
|
│ │ │ •••••••••••• 👁 │ │ │
|
|
│ │ └─────────────────────────────────────────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌────────────────────────┐ ┌────────────────────────┐ │
|
|
│ │ Nombre │ │ Apellido │ │
|
|
│ │ ┌──────────────────┐ │ │ ┌──────────────────┐ │ │
|
|
│ │ │ Juan │ │ │ │ Pérez │ │ │
|
|
│ │ └──────────────────┘ │ │ └──────────────────┘ │ │
|
|
│ └────────────────────────┘ └────────────────────────┘ │
|
|
│ │
|
|
│ ☐ Acepto los Términos de Servicio y Política de │
|
|
│ Privacidad │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────┐ │
|
|
│ │ Crear mi cuenta │ │
|
|
│ └─────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ─────────────────── O continúa con ─────────────────── │
|
|
│ │
|
|
│ [Google] [Facebook] [X] [Apple] [GitHub] │
|
|
│ │
|
|
│ ¿Ya tienes cuenta? Inicia sesión │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Notas Técnicas
|
|
|
|
### Frontend
|
|
|
|
- Componente: `apps/frontend/src/modules/auth/pages/Register.tsx`
|
|
- Validación en tiempo real con React Hook Form + Zod
|
|
- Debounce de 300ms para validación de email
|
|
- Password strength indicator visual
|
|
|
|
### Backend
|
|
|
|
- Endpoint: `POST /api/v1/auth/register`
|
|
- Validación con Zod
|
|
- Hash con bcrypt (cost 12)
|
|
- Email con Nodemailer + plantilla HTML
|
|
|
|
### Database
|
|
|
|
- Tabla: `users`
|
|
- Status inicial: `pending_verification`
|
|
- Trigger: Crea `user_profiles` automáticamente
|
|
|
|
---
|
|
|
|
## Dependencias
|
|
|
|
- Ninguna (primer flujo de auth)
|
|
|
|
---
|
|
|
|
## Requerimientos Relacionados
|
|
|
|
- [RF-AUTH-002: Autenticación por Email](../requerimientos/RF-AUTH-002-email.md)
|
|
|
|
## Especificaciones Relacionadas
|
|
|
|
- [ET-AUTH-002: JWT Tokens](../especificaciones/ET-AUTH-002-jwt.md)
|
|
- [ET-AUTH-003: Database](../especificaciones/ET-AUTH-003-database.md)
|