# MGN-002: Usuarios

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | MGN-002 |
| **Nombre** | Usuarios |
| **Fase** | 01 - Foundation |
| **Prioridad** | P0 (Critico) |
| **Story Points** | 35 SP |
| **Estado** | Documentado |
| **Dependencias** | MGN-001 |

---

## Descripcion

Gestion completa de usuarios del sistema ERP. Permite crear, modificar, consultar y desactivar usuarios, asi como gestionar sus perfiles y preferencias personalizadas.

---

## Objetivos

1. Proveer CRUD completo de usuarios
2. Gestionar perfiles extendidos (bio, company, etc.)
3. Permitir personalizacion via preferencias
4. Soportar busqueda eficiente de usuarios
5. Implementar soft delete para trazabilidad

---

## Alcance

### Incluido

- CRUD de usuarios (create, read, update, soft delete)
- Gestion de perfil extendido
- Preferencias de usuario (tema, idioma, notificaciones)
- Busqueda y filtrado de usuarios
- Activacion/desactivacion de cuentas

### Excluido

- Autenticacion (ver MGN-001 Auth)
- Asignacion de roles (ver MGN-003 Roles)
- Gestion de tenants (ver MGN-004 Tenants)

---

## Endpoints API

| Metodo | Path | Descripcion |
|--------|------|-------------|
| GET | `/api/v1/users` | Listar usuarios |
| GET | `/api/v1/users/:id` | Obtener usuario |
| POST | `/api/v1/users` | Crear usuario |
| PATCH | `/api/v1/users/:id` | Actualizar usuario |
| DELETE | `/api/v1/users/:id` | Soft delete |
| GET | `/api/v1/users/:id/profile` | Obtener perfil |
| PATCH | `/api/v1/users/:id/profile` | Actualizar perfil |
| GET | `/api/v1/users/:id/preferences` | Obtener preferencias |
| PATCH | `/api/v1/users/:id/preferences` | Actualizar preferencias |
| POST | `/api/v1/users/:id/activate` | Activar usuario |
| POST | `/api/v1/users/:id/deactivate` | Desactivar usuario |
| GET | `/api/v1/users/search` | Buscar usuarios |

---

## Tablas de Base de Datos

| Tabla | Descripcion |
|-------|-------------|
| `users` | Datos basicos de usuarios |
| `user_profiles` | Perfil extendido (1:1) |
| `user_preferences` | Preferencias personales (1:1) |

---

## Documentacion

- **Mapa del modulo:** [_MAP.md](./_MAP.md)
- **Trazabilidad:** [TRACEABILITY.yml](./implementacion/TRACEABILITY.yml)

---

**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-05
