# EPICA: EPIC-MGN-002 - Gestion de Usuarios

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-MGN-002 |
| **Nombre** | Gestion de Usuarios |
| **Modulo** | users |
| **Fase** | Fase 1 - Foundation |
| **Prioridad** | P0 (Critico) |
| **Estado** | Ready |
| **Story Points** | 21 |
| **Sprint(s)** | Sprint 2 (CRUD), Sprint 5 (extras) |
| **Plan Detalle** | [SPRINT-PLAN-FASE-1.md](../SPRINT-PLAN-FASE-1.md) |

---

## Descripcion

Sistema completo de gestion de usuarios que permite crear, editar, desactivar y eliminar usuarios del sistema. Incluye perfiles de usuario, preferencias personalizadas (idioma, timezone, tema), gestion de avatares y datos personales.

Este modulo es esencial para la administracion de quienes pueden acceder al sistema y como personalizan su experiencia.

---

## Objetivo de Negocio

Proveer herramientas de administracion de usuarios que:
- Permitan control total sobre quien accede al sistema
- Ofrezcan personalizacion de experiencia por usuario
- Faciliten la gestion de grandes volumenes de usuarios
- Soporten el modelo multi-tenant

---

## Stakeholders

| Rol | Nombre/Equipo | Responsabilidad |
|-----|---------------|-----------------|
| Product Owner | Equipo Producto | Aprobacion de criterios |
| Tech Lead | Equipo Backend | Validacion tecnica |
| Administradores | Usuarios admin | Feedback de gestion |

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-MGN002-001 | Como admin, quiero crear usuarios para dar acceso a nuevos empleados | P0 | 5 | Ready |
| US-MGN002-002 | Como admin, quiero editar usuarios para actualizar su informacion | P0 | 3 | Ready |
| US-MGN002-003 | Como admin, quiero desactivar usuarios para revocar acceso sin eliminar datos | P0 | 3 | Ready |
| US-MGN002-004 | Como usuario, quiero editar mi perfil para mantener mi informacion actualizada | P0 | 3 | Ready |
| US-MGN002-005 | Como usuario, quiero cambiar mis preferencias (idioma, tema) para personalizar mi experiencia | P1 | 3 | Ready |
| US-MGN002-006 | Como admin, quiero listar y buscar usuarios para encontrar cuentas especificas | P0 | 2 | Ready |
| US-MGN002-007 | Como usuario, quiero subir mi avatar para personalizar mi perfil | P2 | 2 | Backlog |

**Total Story Points:** 21 SP

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] CRUD completo de usuarios (crear, leer, actualizar, eliminar logico)
- [ ] Perfiles de usuario con datos personales
- [ ] Preferencias de usuario (idioma, timezone, tema)
- [ ] Busqueda y filtrado de usuarios
- [ ] Activacion/desactivacion de cuentas
- [ ] Subida y gestion de avatares

**No Funcionales:**
- [ ] Performance: Listado paginado < 200ms para 1000 usuarios
- [ ] Seguridad: Solo admins pueden gestionar otros usuarios
- [ ] Usabilidad: Formularios con validacion en tiempo real

**Tecnicos:**
- [ ] Cobertura de tests > 80%
- [ ] Documentacion Swagger completa
- [ ] Integracion con modulo auth

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-MGN-001 Auth | Ready | Si |
| Schema core_auth | Por crear | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-MGN-003 Roles | Requiere usuarios para asignar roles |
| EPIC-MGN-008 Notifications | Requiere usuarios como destinatarios |
| EPIC-MGN-015 Projects | Requiere usuarios para asignar a proyectos |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `core_auth` (extension)
- [ ] Tablas: 2 (user_profiles, user_preferences)
- [ ] Funciones: 1 (buscar_usuarios)
- [ ] RLS Policies: Si

**Backend:**
- [ ] Modulo: `users`
- [ ] Entities: 2 (UserProfile, UserPreference)
- [ ] Endpoints: 8 (CRUD + profile + preferences + avatar + search)
- [ ] Tests: 16+

**Frontend:**
- [ ] Paginas: 3 (UsersList, UserDetail, MyProfile)
- [ ] Componentes: 8 (UserForm, UserCard, UserTable, AvatarUpload, etc.)
- [ ] Stores: 1 (usersStore)

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Escalabilidad con muchos usuarios | Media | Medio | Paginacion, indices, caching |
| Almacenamiento de avatares | Baja | Bajo | S3/MinIO, compresion de imagenes |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [x] Diseno tecnico aprobado
- [x] Sin bloqueadores activos

## Definition of Done (DoD)

- [ ] Codigo implementado y revisado
- [ ] Tests pasando (unit, integration, e2e)
- [ ] Documentacion actualizada
- [ ] Inventarios actualizados
- [ ] Trazas registradas
- [ ] Demo realizada
- [ ] Product Owner aprobo

---

## Documentacion Relacionada

- Requerimientos: `docs/03-requerimientos/RF-users/`
- Especificaciones: `docs/04-modelado/especificaciones-tecnicas/ET-users-*.md`
- User Stories: `docs/05-user-stories/MGN-002/`
- DDL Spec: `docs/04-modelado/database-design/DDL-SPEC-core_auth.md`

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-05 | Creacion de epica | Requirements-Analyst |

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-05
**Ultima actualizacion:** 2025-12-05
