Tarea 81 · Directorio de Organizadores de Eventos

Informe de análisis y plan. Gate previo a construir: nada de código hasta que apruebes el alcance y las preguntas. 25 de julio de 2026.

Lo que cambia el diseño (3 hallazgos de fondo)

1. Las tablas del directorio están huérfanas. directorio_organizadores y la tabla puente N:M evento_organizadores existen en la base desde hace tiempo pero NO se usan en el código (0 referencias): los organizadores hoy viven dentro de cada evento como texto JSON (eventos.organizadores_raw). Activar ese vínculo evento↔organizador es el cimiento de TODO: conteos, badges, fusión, correos a coorganizadores y la matriz de visibilidad de la Obs 3. Sin eso, cada pieza reinventaría un parser.
2. El directorio hoy es de lectura pública. Su regla de seguridad (RLS) permite que cualquier visitante lea la tabla. Al agregarle correo, evaluador y calificaciones de calidad, eso sería una fuga de datos internos y personales. Hay que cerrarlo ANTES de poblarlo (es lo primero del plan).
3. "Mis eventos" hoy solo muestra lo que tú registraste. La matriz de la Obs 3 (CEO, miembros, coorganizadores) necesita el vínculo evento↔entidad que aún no existe consultable. Se construye en la fase de visibilidad, sin abrir la seguridad de la tabla de eventos (se resuelve en el servidor).

Inconsistencias del documento (13, las clave)

Preguntas para decidir el alcance (P1–P12)

Cada una trae mi propuesta para que apruebes o ajustes. Con tus respuestas cierro el plan definitivo.

P1 · Matriz de visibilidad (Obs 3)
Tu matriz A–D es viable. Precisiones: (a) "miembros" = solo los de vinculación verificada/aceptada; (b) los miembros de entidades coorganizadoras consultan el evento pero sin los datos de contacto del registrante.
Propongo implementarla así. ¿De acuerdo?
P2 · Correo 5 / eliminación (Obs 8)
El "correo 5o" es el 52 (evento eliminado). Hoy los aprobados sí se eliminan (soft-delete a papelera, solo admin) y el 52 se envía en ese caso.
¿Lo dejamos así (52 aplica a toda eliminación) o restringimos algo?
P3 · Correo de rechazo (50)
De los correos al organizador dejaste fuera el 50 (evento no aceptado).
¿Intencional (el rechazo solo lo ve quien registró) o también va a los coorganizadores?
P4 · Privacidad de la copia (Obs 8)
¿Copia visible (CC, expone los correos entre sí) o envío individual a cada admin?
Recomiendo envío individual (Habeas Data).
P5 · Auto-creación incompleta (I1)
Los organizadores creados desde el formulario nacen "Pendiente de completar / Sin evaluación"; la obligatoriedad de URL/temáticas/calidad aplica solo al directorio.
¿OK?
P6 · Qué eventos cuentan (badges/actividad)
Propongo contar eventos aprobados, no eliminados, donde figure como organizador O coorganizador (mismo peso), por fecha de finalización.
¿Confirmas? ¿Los de un super-evento cuentan individualmente?
P7 · Criterio de actividad automático (I2)
"Nivel de actividad" pasa a calcularse solo; el evaluador digita los otros 5; el promedio se recalcula al vuelo, pero "último evaluador/fecha" solo cambian con evaluación humana.
¿De acuerdo?
P8 · Oráculo en el formulario público (Obs 9, seguridad)
El autocompletado por correo revela quién está registrado. Opciones: (a) solo en dashboard autenticado; (b) en el público se acepta el correo pero el match se resuelve al enviar, sin mostrar datos; (c) aceptar el riesgo.
Recomiendo (b) en el público + (a) completo en dashboard.
P9 · Invitaciones y recordatorios (Obs 7/9)
Invitaremos por correo a terceros cuyos datos cargó otra persona (ya lo hacemos con fundadores).
Propongo reusar ese molde legal + recordatorios discretos días 3, 6 y 10. ¿OK con esa cadencia?
P10 · Alcance del permiso permanente (Obs 4)
Propuesta: el registrante de un evento solo otorga (i) el puntual sobre su evento, o (ii) "todos MIS eventos futuros donde tu entidad sea coorganizadora". Un permiso a nivel de TODA la entidad lo otorgaría el CEO/admin, no un registrante.
¿Confirmas esta separación?
P11 · Qué se expone del badge (Obs 10)
Los niveles dependen en parte de la calidad, que es evaluación interna.
¿Confirmas que en los perfiles se muestra el badge/nivel pero NUNCA el puntaje ni los criterios (esos solo en el panel admin)?
P12 · Alcance y permiso "Gestionar organizadores"
El doc dice "Pestaña 1": ¿hay más pestañas? Y sobre el permiso: interpreto que Superadmin y Admin del módulo lo tienen implícito, y el toggle sirve para dárselo a usuarios adicionales sin darles todo el módulo.
¿Correcto?

Plan por fases (lo imprescindible primero)

v1 lo que entrega el directorio funcional. fase 2 las piezas transversales grandes.

FaseQué
F0Seguridad (cerrar lectura pública) + esquema (columnas nuevas) + activar el vínculo evento↔organizador + backfill desde el JSON actualv1
F1Permiso "Gestionar organizadores" (toggle en el panel de permisos de eventos)v1
F2Panel del directorio: tabla + filtros + cards de resumen + crear/editar/evaluar/eliminar + CSVv1
F3Integración con el formulario de eventos (auto-crear organizador, rol desde FE, ocultar panel redundante en dashboard)v1
F4Correos de evento con copia a los coorganizadores registradosv1
F5Fusión de organizadores (cuando la entidad se registra y ya tenía un registro)fase 2
F6Visibilidad y gestión de eventos ajenos (matriz Obs 3 + solicitudes/permisos Obs 4/5)fase 2
F7Verificación de speakers/hosts (correo obligatorio, confirmación de participación)fase 2
F8Invitaciones al ecosistema (organizador/speaker/host no registrados) + recordatoriosfase 2
F9Badges y niveles (organizador/speaker/host) en perfiles y "Mis eventos" + catálogo de íconosfase 2

Cards y filtros del panel (Obs 13)

Cards de resumen (clicables): Total · Registrados en el sistema · No registrados · Pendientes de completar · Sin evaluación · Activos último año · Fusionados.
Filtros: buscar por nombre · rol en el ecosistema · temáticas · región/país · registrado (sí/no) · nivel/badge · banda de calidad · rango de última evaluación · descargar reporte.

Escala del "Nivel de actividad" (Obs de calidad)

Fórmula proporcional continua: puntaje = min(n, 12) × 5 ÷ 12, con n = eventos publicados (organizados o coorganizados) en los últimos 365 días. Da 0.0 con 0 eventos y 5.0 con 12 o más, proporcional en el medio (ej. 4 eventos = 1.7, 8 = 3.3).

Badges y niveles (Obs 10)

Mismo molde que los badges de madurez del sistema (3 niveles: neutro → azul → dorado). Tres familias: Organizador, Speaker y Host. Niveles altos exigen volumen Y calidad. Se muestran en los perfiles y en "Mis eventos", y se agregan al catálogo de íconos del DS.