- Update vision, architecture and technical documentation - Update module definitions (PMC-001 to PMC-008) - Update requirements documentation - Add CONTEXT-MAP.yml and ENVIRONMENT-INVENTORY.yml - Add orchestration guidelines and references 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
453 lines
8.5 KiB
Markdown
453 lines
8.5 KiB
Markdown
---
|
|
id: "RF-PMC-007"
|
|
title: "Admin Module"
|
|
type: "Requirement"
|
|
status: "Done"
|
|
priority: "Alta"
|
|
module: "admin"
|
|
project: "platform_marketing_content"
|
|
version: "1.0"
|
|
rf_count: 10
|
|
created_date: "2025-12-08"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# 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
|