codigo0/docs/RESUMEN_ASOCIACION_RECURSOS.md

4 KiB

RESUMEN - Asociación de Recursos Multimedia

Fecha: 2025-01-06
Estado: Implementado


🎯 FUNCIONALIDADES IMPLEMENTADAS

1. Backend API

Archivo: backend/src/routes/content-resources.js

Endpoints:

  • POST /api/content/:contentId/resources - Asociar recurso
  • GET /api/content/:contentId/resources - Listar recursos asociados
  • DELETE /api/content/:contentId/resources/:associationId - Eliminar asociación
  • PUT /api/content/:contentId/resources/:associationId - Actualizar asociación

Funcionalidades:

  • Validación de contenido y recurso
  • Posición automática si no se especifica
  • Filtrado por sección
  • Ordenamiento por sección y posición

2. Componente ResourcesManager

Archivo: admin-panel/src/components/content/ResourcesManager.tsx

Funcionalidades:

  • Listar recursos asociados
  • Selector de recursos disponibles
  • Búsqueda de recursos
  • Configuración de asociación (sección, ubicación, caption)
  • Eliminar asociaciones
  • Preview de recursos

3. Integración en Editor de Protocolos

Archivo: admin-panel/src/pages/ProtocolEditorPage.tsx

Cambios:

  • Nuevo tab "Recursos"
  • Integración de ResourcesManager
  • Estado para recursos asociados
  • Modal selector de recursos

📋 ESTRUCTURA DE ASOCIACIÓN

Campos de Asociación

{
  content_item_id: string;      // ID del contenido
  media_resource_id: string;    // ID del recurso
  section: string;               // 'general' | 'pasos' | 'checklist' | 'dosis' | 'header'
  position: number;              // Orden dentro de la sección
  placement: string;             // 'inline' | 'header' | 'sidebar'
  caption?: string;              // Descripción opcional
  is_critical: boolean;          // Si es crítico
  priority: string;              // 'critica' | 'alta' | 'media' | 'baja'
}

Secciones Disponibles

  • general - Recurso general del protocolo
  • pasos - Recurso asociado a pasos específicos
  • checklist - Recurso para checklist
  • dosis - Recurso para sección de dosis
  • header - Recurso para encabezado

🚀 USO

Asociar Recurso a Protocolo

  1. Ir a editor de protocolo (/content/protocol/:id)
  2. Click en tab "Recursos"
  3. Click en "Asociar Recurso"
  4. Buscar y seleccionar recurso
  5. Configurar:
    • Sección (general, pasos, checklist, etc.)
    • Ubicación (inline, header, sidebar)
    • Caption (opcional)
    • Marcar como crítico (opcional)
  6. Click en "Asociar"

Gestionar Recursos Asociados

  • Ver lista de recursos asociados en grid
  • Ver preview de imágenes
  • Eliminar asociación
  • Ver recurso en nueva pestaña

📊 ESTADO ACTUAL

Funcionalidades

  • API completa para asociaciones
  • Componente ResourcesManager
  • Integración en editor de protocolos
  • Integración en editor de guías (siguiente paso)

Próximos Pasos

  1. Integrar en Editor de Guías:

    • Añadir tab "Recursos"
    • Usar mismo componente ResourcesManager
  2. Visualización en App:

    • Mostrar recursos asociados en protocolos
    • Mostrar recursos asociados en guías
    • Integrar con Content Pack
  3. Mejoras:

    • Arrastrar y soltar para reordenar
    • Editar asociaciones existentes
    • Preview en tiempo real

VERIFICACIÓN

Probar Asociación

# 1. Ir a http://localhost:5174/content/protocol/{id}
# 2. Click en tab "Recursos"
# 3. Click en "Asociar Recurso"
# 4. Seleccionar un recurso
# 5. Configurar y asociar

Verificar API

# Listar recursos asociados
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'])")

curl -X GET "http://localhost:3000/api/content/{contentId}/resources" \
  -H "Authorization: Bearer $TOKEN"

Asociación de recursos implementada y funcionando!