6 KiB
6 KiB
✅ RESUMEN - Sistema de Validación y Roles
Fecha: 2025-01-06
Estado: ✅ Implementado
🎯 FUNCIONALIDADES IMPLEMENTADAS
1. Sistema de Roles Mejorado ✅
Archivo: backend/src/middleware/auth.js
Roles disponibles:
- ✅
super_admin- Todos los permisos (*) - ✅
admin- Gestión completa - ✅
editor_clinico- Editar protocolos, fármacos, checklists - ✅
editor_formativo- Editar guías y manual - ✅
tes_validador- Validar contenido - ✅
formador- Crear contenido formativo - ✅
medico- Validar y publicar - ✅
revisor- Revisar y aprobar - ✅
viewer- Solo lectura
Permisos por rol:
content:read- Leer contenidocontent:write- Escribir cualquier contenidocontent:write:protocol- Escribir protocoloscontent:write:guide- Escribir guíascontent:write:drug- Escribir fármacoscontent:write:checklist- Escribir checklistscontent:write:manual- Escribir manualcontent:submit- Enviar a revisióncontent:validate- Validar contenidocontent:approve- Aprobar contenidocontent:publish- Publicar contenidoaudit:read- Leer auditoríaaudit:write- Escribir auditoría
2. Flujo de Validación ✅
Estados:
draft → in_review → approved → published
↓
draft (rechazado)
Transiciones:
- ✅
draft → in_review- Enviar a revisión (requierecontent:submit) - ✅
in_review → approved- Aprobar (requierecontent:approve) - ✅
in_review → draft- Rechazar (requierecontent:approve) - ✅
approved → published- Publicar (requierecontent:publish) - ✅
in_review → published- Aprobar y publicar directamente (requierecontent:approve+content:publish)
3. API de Validación ✅
Archivo: backend/src/routes/validation.js
Endpoints:
- ✅
POST /api/validation/submit/:contentId- Enviar a revisión - ✅
POST /api/validation/approve/:contentId- Aprobar - ✅
POST /api/validation/reject/:contentId- Rechazar - ✅
POST /api/validation/publish/:contentId- Publicar - ✅
GET /api/validation/pending- Listar pendientes - ✅
GET /api/validation/history/:contentId- Historial de validación
Características:
- ✅ Validación de permisos
- ✅ Validación de estados
- ✅ Registro en audit log
- ✅ Notas opcionales/obligatorias según acción
4. Página de Validación ✅
Archivo: admin-panel/src/pages/ValidationPage.tsx
Funcionalidades:
- ✅ Listar contenido pendiente de validación
- ✅ Filtros por tipo y prioridad
- ✅ Modal de validación con notas
- ✅ Aprobar con opción de publicar
- ✅ Rechazar con notas obligatorias
- ✅ Ver historial de validación
- ✅ Enlaces a edición
5. Integración en Biblioteca ✅
Archivo: admin-panel/src/pages/ContentLibraryPage.tsx
Mejoras:
- ✅ Botón "Enviar a revisión" para contenido en
draft - ✅ Solo visible si tiene permiso
content:submit - ✅ Feedback visual durante envío
📋 FLUJO COMPLETO
Editor → Revisión → Publicación
-
Editor crea contenido:
- Estado inicial:
draft - Puede editar libremente
- Estado inicial:
-
Editor envía a revisión:
- Click en "Enviar a revisión"
- Estado:
draft → in_review - Requiere permiso
content:submit
-
Validador revisa:
- Ve contenido en página de Validación
- Puede aprobar o rechazar
- Requiere permiso
content:approve
-
Aprobación:
- Opción 1: Aprobar →
approved - Opción 2: Aprobar y publicar →
published(si tienecontent:publish)
- Opción 1: Aprobar →
-
Rechazo:
- Rechazar →
draft - Notas obligatorias
- Editor puede corregir y reenviar
- Rechazar →
-
Publicación:
- Si está
approved, puede publicarse - Requiere permiso
content:publish
- Si está
🔧 CONFIGURACIÓN
Crear Usuarios con Roles
-- Crear validador TES
INSERT INTO tes_content.users (email, username, password_hash, role)
VALUES (
'validador@emerges-tes.local',
'validador_tes',
'$2b$10$...', -- hash de contraseña
'tes_validador'
);
-- Crear médico
INSERT INTO tes_content.users (email, username, password_hash, role)
VALUES (
'medico@emerges-tes.local',
'medico',
'$2b$10$...',
'medico'
);
🚀 USO
Enviar Contenido a Revisión
- Ir a Biblioteca de Contenido
- Buscar contenido en estado
draft - Click en icono "Enviar" (si tienes permiso)
- Confirmar envío
Validar Contenido
- Ir a
/validation - Ver lista de contenido pendiente
- Click en "Validar" en un item
- Revisar contenido
- Aprobar o Rechazar
- Añadir notas si es necesario
📊 ESTADO ACTUAL
Funcionalidades
- ✅ Sistema de roles completo
- ✅ Permisos granulares
- ✅ Flujo de validación completo
- ✅ API de validación
- ✅ Página de validación
- ✅ Integración en biblioteca
- ✅ Registro en audit log
Próximos Pasos (Opcional)
-
Notificaciones:
- Email cuando contenido está pendiente
- Notificaciones en panel
-
Dashboard de validación:
- Estadísticas de validación
- Tiempo promedio de validación
- Contenido más rechazado
-
Validación por secciones:
- Aprobar secciones individuales
- Comentarios por sección
✅ VERIFICACIÓN
Probar Validación
# 1. Crear contenido en draft
# 2. Enviar a revisión desde biblioteca
# 3. Ir a /validation
# 4. Aprobar o rechazar
Verificar Permisos
# Verificar que el usuario tiene permisos
TOKEN=$(curl -s -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@emerges-tes.local","password":"Admin123!"}' \
| python3 -c "import sys, json; print(json.load(sys.stdin)['token'])")
# Intentar validar (debe funcionar si tiene permisos)
curl -X POST "http://localhost:3000/api/validation/approve/{contentId}" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"notes": "Aprobado"}'
✅ Sistema de validación y roles implementado y funcionando!