trading-platform/docs/02-definicion-modulos/OQI-001-fundamentos-auth/historias-usuario/US-AUTH-003-oauth-google.md
rckrdmrd c1b5081208 feat(ml): Complete FASE 11 - BTCUSD update and comprehensive documentation alignment
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>
2026-01-07 09:31:29 -06:00

231 lines
11 KiB
Markdown

---
id: "US-AUTH-003"
title: "Login con Google"
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-003: Login con Google
**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 iniciar sesión con mi cuenta de Google
**Para** acceder rápidamente sin crear nuevas credenciales
---
## Criterios de Aceptación
### AC-001: Botón de Google visible
**Dado** que estoy en la página de login o registro
**Cuando** veo las opciones de inicio de sesión
**Entonces** debería ver un botón "Continuar con Google" claramente visible
### AC-002: Redirección a Google
**Dado** que hago click en "Continuar con Google"
**Cuando** se inicia el flujo OAuth
**Entonces** debería ser redirigido a la página de autorización de Google
### AC-003: Autorización exitosa (usuario nuevo)
**Dado** que autorizo el acceso en Google
**Y** mi email de Google no está registrado en Trading Platform
**Cuando** Google me redirige de vuelta
**Entonces** debería:
1. Crear una nueva cuenta automáticamente
2. Usar mis datos de Google (nombre, email, foto)
3. Marcar mi email como verificado
4. Iniciar sesión automáticamente
5. Ser redirigido al dashboard
### AC-004: Autorización exitosa (usuario existente)
**Dado** que autorizo el acceso en Google
**Y** mi email de Google ya está registrado en Trading Platform
**Cuando** Google me redirige de vuelta
**Entonces** debería:
1. Vincular Google a mi cuenta existente
2. Iniciar sesión automáticamente
3. Ser redirigido al dashboard
### AC-005: Cancelación de autorización
**Dado** que hago click en "Continuar con Google"
**Cuando** cancelo la autorización en Google
**Entonces** debería:
1. Ser redirigido a la página de login
2. Ver un mensaje "Autorización cancelada"
### AC-006: Error de Google
**Dado** que hago click en "Continuar con Google"
**Cuando** ocurre un error con Google
**Entonces** debería:
1. Ser redirigido a la página de login
2. Ver un mensaje "Error al conectar con Google. Intenta de nuevo."
### AC-007: Desvinculación de Google
**Dado** que tengo Google vinculado a mi cuenta
**Y** tengo otro método de autenticación activo
**Cuando** intento desvincular Google desde configuración
**Entonces** debería poder desvincularlo exitosamente
### AC-008: Protección de último método
**Dado** que Google es mi único método de autenticación
**Cuando** intento desvincularlo
**Entonces** debería ver un mensaje "No puedes eliminar tu único método de acceso"
---
## Flujo Visual
```
┌──────────────────────────────────────────────────────────────────────────┐
│ │
│ PASO 1: Click en Google │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Inicia sesión en Trading Platform │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────────────┐│ │
│ │ │ 🔵 Continuar con Google → ││ │
│ │ └──────────────────────────────────────────────────────────────┘│ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ PASO 2: Autorización en Google │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ Google │ │ │
│ │ │ │ │ │
│ │ │ Trading Platform quiere acceder a tu cuenta de Google │ │ │
│ │ │ │ │ │
│ │ │ Esto permitirá a Trading Platform: │ │ │
│ │ │ • Ver tu dirección de correo electrónico │ │ │
│ │ │ • Ver tu información personal básica │ │ │
│ │ │ │ │ │
│ │ │ [Cancelar] [Permitir] │ │ │
│ │ │ │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ PASO 3: Redirección exitosa │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────────────┐│ │
│ │ │ ││ │
│ │ │ ⏳ Completando inicio de sesión... ││ │
│ │ │ ││ │
│ │ └──────────────────────────────────────────────────────────────┘│ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ PASO 4: Dashboard │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ¡Bienvenido, Juan! 👋 │ │
│ │ │ │
│ │ Dashboard... │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────┘
```
---
## Datos Obtenidos de Google
| Campo | Uso |
|-------|-----|
| `id` | `provider_user_id` en oauth_accounts |
| `email` | Email del usuario (si no tiene) |
| `verified_email` | Marcar email como verificado |
| `given_name` | Nombre del usuario |
| `family_name` | Apellido del usuario |
| `picture` | Avatar del usuario |
---
## Notas Técnicas
### Configuración Google Cloud Console
1. Crear proyecto en Google Cloud Console
2. Habilitar Google+ API
3. Configurar OAuth consent screen
4. Crear OAuth 2.0 credentials
5. Agregar redirect URIs autorizados
### Variables de Entorno
```env
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=xxx
GOOGLE_CALLBACK_URL=https://api.trading.com/auth/oauth/google/callback
```
### Scopes Solicitados
```javascript
const scopes = ['profile', 'email'];
```
### Frontend
- Componente: `apps/frontend/src/modules/auth/components/SocialLoginButtons.tsx`
- Callback: `apps/frontend/src/modules/auth/pages/AuthCallback.tsx`
### Backend
- Service: `apps/backend/src/modules/auth/services/oauth.service.ts`
- Endpoint: `POST /api/v1/auth/oauth/google`
---
## Errores Comunes
| Error | Causa | Solución |
|-------|-------|----------|
| `invalid_client` | Client ID incorrecto | Verificar configuración |
| `redirect_uri_mismatch` | URL no autorizada | Agregar URL en Google Console |
| `access_denied` | Usuario canceló | Mostrar mensaje amigable |
---
## Requerimientos Relacionados
- [RF-AUTH-001: OAuth Multi-proveedor](../requerimientos/RF-AUTH-001-oauth.md)
## Especificaciones Relacionadas
- [ET-AUTH-001: OAuth Providers](../especificaciones/ET-AUTH-001-oauth.md)