# Requerimientos Funcionales - PMC-007 Admin

**Módulo:** Admin
**Versión:** 1.0.0
**Fecha:** 2025-12-08

---

## Gestión de Usuarios

### RF-PMC-007-001: Listar Usuarios

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-001 |
| **Nombre** | Listar Usuarios |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Datos de salida:**
- Lista de usuarios del tenant
- Status, rol, último login
- Filtros por status y rol

**Criterios de aceptación:**
- [ ] Solo usuarios del tenant
- [ ] Paginación funciona
- [ ] Búsqueda por nombre/email

---

### RF-PMC-007-002: Invitar Usuario

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-002 |
| **Nombre** | Invitar Usuario |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Datos de entrada:**
- email: string (requerido)
- role_id: UUID (requerido)
- message: text (opcional)

**Flujo:**
1. Admin ingresa email y selecciona rol
2. Sistema verifica email no existe en tenant
3. Sistema crea invitación con token único
4. Sistema envía email con link
5. Invitación expira en 7 días

**Criterios de aceptación:**
- [ ] Email de invitación enviado
- [ ] Token único generado
- [ ] Invitación listada como pendiente

---

### RF-PMC-007-003: Aceptar Invitación

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-003 |
| **Nombre** | Aceptar Invitación |
| **Prioridad** | P1 |
| **Actor** | Usuario invitado |

**Datos de entrada:**
- token: string (del link)
- first_name: string
- last_name: string
- password: string

**Criterios de aceptación:**
- [ ] Usuario creado con rol asignado
- [ ] Password hasheado
- [ ] Invitación marcada como aceptada
- [ ] Usuario puede hacer login

---

### RF-PMC-007-004: Editar Usuario

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-004 |
| **Nombre** | Editar Usuario |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Datos editables:**
- first_name, last_name
- role_id
- status

**Criterios de aceptación:**
- [ ] Campos se actualizan
- [ ] Cambio de rol aplica inmediatamente
- [ ] Audit log registra cambios

---

### RF-PMC-007-005: Suspender Usuario

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-005 |
| **Nombre** | Suspender Usuario |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Descripción:**
Bloquear acceso de un usuario temporalmente.

**Criterios de aceptación:**
- [ ] Status cambia a "suspended"
- [ ] Sesiones invalidadas
- [ ] Usuario no puede hacer login
- [ ] Admin no puede suspenderse a sí mismo

---

### RF-PMC-007-006: Reactivar Usuario

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-006 |
| **Nombre** | Reactivar Usuario |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Criterios de aceptación:**
- [ ] Status cambia a "active"
- [ ] Usuario puede hacer login

---

### RF-PMC-007-007: Eliminar Usuario

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-007 |
| **Nombre** | Eliminar Usuario |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Criterios de aceptación:**
- [ ] Status cambia a "deactivated"
- [ ] Soft delete
- [ ] Datos preservados (para auditoría)
- [ ] No puede ser el último admin

---

### RF-PMC-007-008: Reenviar Invitación

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-008 |
| **Nombre** | Reenviar Invitación |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Criterios de aceptación:**
- [ ] Nuevo email enviado
- [ ] Token regenerado
- [ ] Expiry extendido

---

## Gestión de Roles

### RF-PMC-007-009: Listar Roles

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-009 |
| **Nombre** | Listar Roles |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Datos de salida:**
- Roles de sistema
- Roles custom del tenant
- Usuarios por rol

**Criterios de aceptación:**
- [ ] Todos los roles listados
- [ ] Identificación clara de roles de sistema

---

### RF-PMC-007-010: Ver Permisos de Rol

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-010 |
| **Nombre** | Ver Permisos de Rol |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Datos de salida:**
- Lista de permisos agrupados por módulo
- Checkbox de cada permiso

**Criterios de aceptación:**
- [ ] Permisos organizados por módulo
- [ ] Visual claro de lo que puede/no puede hacer

---

### RF-PMC-007-011: Crear Rol Custom

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-011 |
| **Nombre** | Crear Rol Custom |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Datos de entrada:**
- name: string
- description: text
- permissions: array[string]

**Criterios de aceptación:**
- [ ] Rol creado con is_system=false
- [ ] Permisos asignados
- [ ] Disponible para asignar a usuarios

---

### RF-PMC-007-012: Editar Rol Custom

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-012 |
| **Nombre** | Editar Rol Custom |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Restricciones:**
- Roles de sistema no editables

**Criterios de aceptación:**
- [ ] Permisos actualizables
- [ ] Cambios aplican inmediatamente a usuarios

---

### RF-PMC-007-013: Eliminar Rol Custom

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-013 |
| **Nombre** | Eliminar Rol Custom |
| **Prioridad** | P3 |
| **Actor** | Tenant Admin |

**Restricciones:**
- No puede tener usuarios asignados
- Roles de sistema no eliminables

**Criterios de aceptación:**
- [ ] Validación de usuarios previo a eliminar
- [ ] Error si tiene usuarios

---

## Configuración

### RF-PMC-007-014: Ver Configuración del Tenant

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-014 |
| **Nombre** | Ver Configuración del Tenant |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Secciones:**
- General (nombre, timezone, idioma)
- Branding
- Generación (defaults)
- Integraciones
- Notificaciones

**Criterios de aceptación:**
- [ ] Todas las secciones accesibles
- [ ] Valores actuales mostrados

---

### RF-PMC-007-015: Editar Configuración General

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-015 |
| **Nombre** | Editar Configuración General |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |

**Datos editables:**
- Nombre del tenant
- Timezone
- Idioma por defecto
- Formato de fecha

**Criterios de aceptación:**
- [ ] Cambios guardados
- [ ] Aplican a nuevos usuarios
- [ ] Usuarios existentes pueden tener preferencia propia

---

### RF-PMC-007-016: Configurar Integraciones

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-016 |
| **Nombre** | Configurar Integraciones |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Integraciones configurables:**
- n8n webhook URL
- Slack webhook
- SMTP custom (opcional)
- CRM externo URL

**Criterios de aceptación:**
- [ ] URLs validadas
- [ ] Test de conexión disponible
- [ ] Secrets seguros

---

## Auditoría

### RF-PMC-007-017: Ver Logs de Auditoría

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-017 |
| **Nombre** | Ver Logs de Auditoría |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |

**Filtros:**
- Usuario
- Acción
- Entidad
- Fecha

**Criterios de aceptación:**
- [ ] Logs listados con paginación
- [ ] Filtros combinables
- [ ] Detalle expandible

---

### RF-PMC-007-018: Exportar Logs de Auditoría

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-018 |
| **Nombre** | Exportar Logs de Auditoría |
| **Prioridad** | P3 |
| **Actor** | Tenant Admin |

**Formatos:**
- CSV
- JSON

**Criterios de aceptación:**
- [ ] Filtros aplicados en export
- [ ] Archivo descargable generado

---

## Sistema (Super Admin)

### RF-PMC-007-019: Ver Estado del Sistema

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-019 |
| **Nombre** | Ver Estado del Sistema |
| **Prioridad** | P2 |
| **Actor** | Super Admin |

**Métricas:**
- Estado de servicios (API, ComfyUI, Redis, DB)
- Uso de GPU
- Cola de generación
- Storage total

**Criterios de aceptación:**
- [ ] Dashboard de salud
- [ ] Alertas en problemas

---

### RF-PMC-007-020: Ver Uso por Tenant

| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-007-020 |
| **Nombre** | Ver Uso por Tenant |
| **Prioridad** | P2 |
| **Actor** | Super Admin |

**Métricas por tenant:**
- Generaciones
- Storage
- Usuarios activos
- API calls

**Criterios de aceptación:**
- [ ] Comparativa entre tenants
- [ ] Exportable

---

## Resumen

| Prioridad | Cantidad |
|-----------|----------|
| P1 | 8 |
| P2 | 10 |
| P3 | 2 |
| **Total** | **20** |

---

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