# 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 |