codigo0/docs/RESUMEN_SISTEMA_VALIDACION_ROLES.md

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 contenido
  • content:write - Escribir cualquier contenido
  • content:write:protocol - Escribir protocolos
  • content:write:guide - Escribir guías
  • content:write:drug - Escribir fármacos
  • content:write:checklist - Escribir checklists
  • content:write:manual - Escribir manual
  • content:submit - Enviar a revisión
  • content:validate - Validar contenido
  • content:approve - Aprobar contenido
  • content:publish - Publicar contenido
  • audit:read - Leer auditoría
  • audit: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 (requiere content:submit)
  • in_review → approved - Aprobar (requiere content:approve)
  • in_review → draft - Rechazar (requiere content:approve)
  • approved → published - Publicar (requiere content:publish)
  • in_review → published - Aprobar y publicar directamente (requiere content: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

  1. Editor crea contenido:

    • Estado inicial: draft
    • Puede editar libremente
  2. Editor envía a revisión:

    • Click en "Enviar a revisión"
    • Estado: draft → in_review
    • Requiere permiso content:submit
  3. Validador revisa:

    • Ve contenido en página de Validación
    • Puede aprobar o rechazar
    • Requiere permiso content:approve
  4. Aprobación:

    • Opción 1: Aprobar → approved
    • Opción 2: Aprobar y publicar → published (si tiene content:publish)
  5. Rechazo:

    • Rechazar → draft
    • Notas obligatorias
    • Editor puede corregir y reenviar
  6. Publicación:

    • Si está approved, puede publicarse
    • Requiere permiso content:publish

🔧 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

  1. Ir a Biblioteca de Contenido
  2. Buscar contenido en estado draft
  3. Click en icono "Enviar" (si tienes permiso)
  4. Confirmar envío

Validar Contenido

  1. Ir a /validation
  2. Ver lista de contenido pendiente
  3. Click en "Validar" en un item
  4. Revisar contenido
  5. Aprobar o Rechazar
  6. 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)

  1. Notificaciones:

    • Email cuando contenido está pendiente
    • Notificaciones en panel
  2. Dashboard de validación:

    • Estadísticas de validación
    • Tiempo promedio de validación
    • Contenido más rechazado
  3. 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!