# Plan de Sprints - Fase 1 Foundation

## Resumen Ejecutivo

| Metrica | Valor |
|---------|-------|
| **Fase** | 1 - Foundation |
| **Modulos** | MGN-001, MGN-002, MGN-003, MGN-004 |
| **Story Points Total** | 150 SP |
| **Sprints Planificados** | 5 |
| **Velocidad Estimada** | 30 SP/sprint |
| **Duracion Sprint** | 2 semanas |

---

## Dependencias entre Modulos

```
MGN-001 (Auth)
    |
    v
MGN-002 (Users) <--+
    |              |
    v              |
MGN-003 (Roles) ---+
    |
    v
MGN-004 (Tenants)
```

**Orden de implementacion:**
1. Auth (login basico, JWT)
2. Users (CRUD basico)
3. Roles (RBAC)
4. Tenants (multi-tenancy)
5. Integracion completa

---

## Sprint 1: Autenticacion Core

**Objetivo:** Implementar login basico y manejo de tokens JWT

| ID | User Story | SP | Prioridad |
|----|------------|-----|-----------|
| US-MGN001-001 | Login con email y password | 8 | P0 |
| US-MGN001-003 | Logout y cierre de sesion | 2 | P0 |
| US-MGN001-004 | Renovacion automatica de tokens | 5 | P0 |
| - | Setup proyecto backend (NestJS) | 5 | P0 |
| - | Setup proyecto frontend (React) | 5 | P0 |
| - | Setup base de datos PostgreSQL | 5 | P0 |
| **Total** | | **30 SP** | |

**Entregables:**
- [x] Proyecto NestJS configurado con TypeORM
- [x] Proyecto React configurado con Vite + React Router
- [x] Esquema `core_auth` en PostgreSQL
- [x] Tabla `credentials` con RLS
- [x] Endpoint POST /api/v1/auth/login
- [x] Endpoint POST /api/v1/auth/refresh
- [x] Endpoint POST /api/v1/auth/logout
- [x] Pagina de Login funcional
- [x] Manejo de tokens en frontend

**Criterios de Aceptacion:**
- Usuario puede iniciar sesion con email/password
- Access token expira en 15 minutos
- Refresh token permite renovar sin re-login
- Logout invalida tokens

---

## Sprint 2: Password Recovery + Users CRUD

**Objetivo:** Recuperacion de password y gestion basica de usuarios

| ID | User Story | SP | Prioridad |
|----|------------|-----|-----------|
| US-MGN001-002 | Recuperacion de password | 5 | P0 |
| US-MGN002-001 | CRUD de usuarios (Admin) | 8 | P0 |
| US-MGN002-002 | Perfil de usuario | 5 | P0 |
| US-MGN002-003 | Cambio de password | 3 | P0 |
| - | Configuracion de email (SMTP/SendGrid) | 4 | P0 |
| - | Tests unitarios Auth | 5 | P1 |
| **Total** | | **30 SP** | |

**Entregables:**
- [x] Esquema `core_users` en PostgreSQL
- [x] Tablas: users, user_profiles, user_preferences
- [x] Endpoint POST /api/v1/auth/forgot-password
- [x] Endpoint POST /api/v1/auth/reset-password
- [x] Endpoints CRUD /api/v1/users
- [x] Endpoint GET/PATCH /api/v1/users/me/profile
- [x] Endpoint POST /api/v1/users/me/change-password
- [x] Servicio de email configurado
- [x] Pagina de usuarios (admin)
- [x] Pagina de perfil

**Criterios de Aceptacion:**
- Usuario puede solicitar reset de password
- Email con link de reset se envia correctamente
- Admin puede crear, editar, eliminar usuarios
- Usuario puede editar su perfil

---

## Sprint 3: Roles y Permisos (RBAC)

**Objetivo:** Sistema de roles, permisos y guards

| ID | User Story | SP | Prioridad |
|----|------------|-----|-----------|
| US-MGN003-001 | Crear y gestionar roles | 8 | P0 |
| US-MGN003-002 | Asignar permisos a roles | 8 | P0 |
| US-MGN003-003 | Validar permisos en runtime | 5 | P0 |
| US-MGN003-004 | Asignar roles a usuarios | 5 | P0 |
| - | Guards de autorizacion | 4 | P0 |
| **Total** | | **30 SP** | |

**Entregables:**
- [x] Esquema `core_rbac` en PostgreSQL
- [x] Tablas: roles, permissions, role_permissions, user_roles
- [x] Endpoints CRUD /api/v1/roles
- [x] Endpoints CRUD /api/v1/permissions
- [x] Endpoint POST /api/v1/roles/:id/permissions
- [x] Endpoint POST /api/v1/users/:id/roles
- [x] @RequirePermission decorator
- [x] PermissionsGuard
- [x] Pagina de roles (admin)
- [x] Componente de asignacion de permisos

**Criterios de Aceptacion:**
- Admin puede crear roles con permisos
- Roles se pueden asignar a usuarios
- Guards bloquean acceso sin permisos
- Permisos granulares por modulo

---

## Sprint 4: Multi-tenancy Core

**Objetivo:** Aislamiento de datos por tenant y subscripciones

| ID | User Story | SP | Prioridad |
|----|------------|-----|-----------|
| US-MGN004-001 | Crear tenant | 8 | P0 |
| US-MGN004-002 | Aislamiento RLS | 8 | P0 |
| US-MGN004-003 | Cambio de contexto tenant | 5 | P0 |
| US-MGN004-004 | Planes de subscripcion | 5 | P1 |
| - | Migracion de tablas existentes a multi-tenant | 4 | P0 |
| **Total** | | **30 SP** | |

**Entregables:**
- [x] Esquema `core_tenants` en PostgreSQL
- [x] Tablas: tenants, tenant_users, subscriptions, plans
- [x] Policies RLS en todas las tablas
- [x] Middleware de tenant context
- [x] Endpoints CRUD /api/v1/tenants
- [x] Endpoint POST /api/v1/tenants/:id/users
- [x] Contexto de tenant en frontend
- [x] Selector de tenant (para usuarios multi-tenant)

**Criterios de Aceptacion:**
- Datos aislados por tenant via RLS
- Usuario solo ve datos de su tenant
- Super-admin puede ver todos los tenants
- Usuarios pueden pertenecer a multiples tenants

---

## Sprint 5: Integracion y Estabilizacion

**Objetivo:** Integracion E2E, tests y pulido

| ID | User Story | SP | Prioridad |
|----|------------|-----|-----------|
| US-MGN002-005 | Cambio de email | 6 | P1 |
| US-MGN002-004 | Preferencias de usuario | 3 | P1 |
| - | Tests E2E Auth | 5 | P0 |
| - | Tests E2E Users | 5 | P0 |
| - | Tests E2E Roles | 4 | P0 |
| - | Tests E2E Tenants | 4 | P0 |
| - | Documentacion Swagger | 3 | P1 |
| **Total** | | **30 SP** | |

**Entregables:**
- [x] Funcionalidad cambio de email
- [x] Pagina de preferencias de usuario
- [x] Suite de tests E2E completa
- [x] Cobertura > 80% en modulos core
- [x] Documentacion Swagger actualizada
- [x] README con instrucciones de setup
- [x] Seed data para desarrollo

**Criterios de Aceptacion:**
- Todos los tests E2E pasando
- Cobertura de codigo > 80%
- Swagger documentado y funcional
- Flujo completo Auth -> Users -> Roles -> Tenants funcional

---

## Backlog (Post-Fase 1)

Historias que quedan pendientes para fases posteriores:

| ID | Historia | SP | Notas |
|----|----------|-----|-------|
| US-MGN001-005 | Login con OAuth (Google/Microsoft) | 8 | Requiere configuracion OAuth apps |
| US-MGN001-006 | 2FA (TOTP) | 5 | Nice to have |
| US-MGN001-007 | Gestion de sesiones activas | 3 | Bajo impacto |

---

## Riesgos y Mitigaciones

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Complejidad RLS | Media | Alto | POC temprano en Sprint 1 |
| Integracion email | Baja | Medio | Usar servicio externo (SendGrid) |
| Performance JWT | Baja | Medio | Cache de tokens, indices |
| Scope creep | Media | Alto | Backlog estricto, no features nuevas |

---

## Definicion de Done (General)

- [ ] Codigo en PR con code review aprobado
- [ ] Tests unitarios con cobertura > 80%
- [ ] Tests E2E pasando
- [ ] Documentacion Swagger actualizada
- [ ] Sin warnings de linter
- [ ] Sin vulnerabilidades criticas
- [ ] Merge a develop

---

## Historial

| Version | Fecha | Autor | Cambios |
|---------|-------|-------|---------|
| 1.0 | 2025-12-06 | System | Creacion inicial |
