# EPIC-001: Setup y Autenticación

**Versión:** 1.0.0
**Fecha:** 2025-12-08
**Fase:** 1 - MVP Core

---

## Descripción

Esta épica cubre la configuración inicial del sistema, autenticación de usuarios, gestión de roles y permisos.

---

## User Stories

### US-001-001: Crear Tenant Inicial

**Como** Super Admin del sistema
**Quiero** crear el tenant principal de la agencia
**Para** comenzar a usar la plataforma

**Criterios de Aceptación:**
- [ ] Puedo ingresar nombre y slug del tenant
- [ ] El sistema crea el tenant con plan "Internal"
- [ ] Se crea automáticamente un usuario admin inicial
- [ ] RLS queda configurado para el tenant

**Prioridad:** Must Have

---

### US-001-002: Login de Usuario

**Como** usuario de la agencia
**Quiero** iniciar sesión con mi email y contraseña
**Para** acceder a la plataforma

**Criterios de Aceptación:**
- [ ] Formulario de login con email y password
- [ ] Validación de credenciales
- [ ] Generación de JWT token
- [ ] Redirección al dashboard después de login exitoso
- [ ] Mensaje de error claro si credenciales son inválidas
- [ ] Bloqueo después de 5 intentos fallidos

**Prioridad:** Must Have

---

### US-001-003: Logout

**Como** usuario autenticado
**Quiero** cerrar mi sesión
**Para** proteger mi cuenta cuando dejo de usar la plataforma

**Criterios de Aceptación:**
- [ ] Botón de logout visible en el menú
- [ ] Token invalidado al hacer logout
- [ ] Redirección a página de login
- [ ] Sesión no puede reutilizarse después de logout

**Prioridad:** Must Have

---

### US-001-004: Invitar Usuario al Tenant

**Como** Admin de la agencia
**Quiero** invitar a nuevos usuarios por email
**Para** que mi equipo pueda acceder a la plataforma

**Criterios de Aceptación:**
- [ ] Formulario para ingresar email del invitado
- [ ] Selector de rol a asignar
- [ ] Email de invitación enviado con link único
- [ ] Link expira en 7 días
- [ ] Puedo ver lista de invitaciones pendientes
- [ ] Puedo reenviar o cancelar invitaciones

**Prioridad:** Must Have

---

### US-001-005: Aceptar Invitación y Crear Cuenta

**Como** usuario invitado
**Quiero** aceptar la invitación y crear mi cuenta
**Para** acceder a la plataforma

**Criterios de Aceptación:**
- [ ] Link de invitación me lleva a formulario de registro
- [ ] Email ya está pre-llenado y no es editable
- [ ] Debo ingresar nombre, apellido y contraseña
- [ ] Contraseña debe cumplir requisitos mínimos (8 chars, 1 número)
- [ ] Al completar, puedo hacer login inmediatamente
- [ ] Invitación queda marcada como aceptada

**Prioridad:** Must Have

---

### US-001-006: Ver y Editar Mi Perfil

**Como** usuario autenticado
**Quiero** ver y editar mi información personal
**Para** mantener mis datos actualizados

**Criterios de Aceptación:**
- [ ] Puedo ver mi nombre, email, rol
- [ ] Puedo editar nombre y apellido
- [ ] Puedo subir/cambiar mi avatar
- [ ] Puedo cambiar mi contraseña (requiere contraseña actual)
- [ ] Puedo configurar preferencias (idioma, timezone)

**Prioridad:** Should Have

---

### US-001-007: Gestionar Usuarios del Tenant

**Como** Admin de la agencia
**Quiero** ver y gestionar los usuarios de mi equipo
**Para** controlar quién tiene acceso

**Criterios de Aceptación:**
- [ ] Lista de usuarios con nombre, email, rol, status, último login
- [ ] Puedo filtrar por rol o status
- [ ] Puedo buscar por nombre o email
- [ ] Puedo cambiar el rol de un usuario
- [ ] Puedo suspender un usuario
- [ ] Puedo reactivar un usuario suspendido
- [ ] No puedo suspenderme a mí mismo

**Prioridad:** Must Have

---

### US-001-008: Ver Roles y Permisos

**Como** Admin de la agencia
**Quiero** ver qué puede hacer cada rol
**Para** asignar roles apropiados a mi equipo

**Criterios de Aceptación:**
- [ ] Lista de roles disponibles
- [ ] Al seleccionar un rol, veo sus permisos organizados por módulo
- [ ] Identificación clara de roles de sistema vs custom
- [ ] Puedo ver cuántos usuarios tienen cada rol

**Prioridad:** Should Have

---

## Notas Técnicas

- Usar JWT con refresh tokens
- Passwords hasheados con bcrypt
- Implementar rate limiting en endpoint de login
- Tokens de invitación deben ser únicos y no predecibles
- Considerar implementar 2FA en fase posterior

---

## Dependencias

- Ninguna (primera épica a implementar)

---

**Documento generado por:** Requirements-Analyst
**Fecha:** 2025-12-08
