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)
I1. Campos "obligatorios" (URL, temáticas, calidad) chocan con la auto-creación desde el formulario (Obs 2), que solo trae el nombre. Solución: esas filas nacen "Pendiente de completar" y la obligatoriedad aplica solo al crear/editar desde el directorio.
I2. La calidad es "obligatoria" pero uno de sus 6 criterios ("Nivel de actividad") se calcula solo. Un organizador recién creado (0 eventos) no puede tener calidad. Propuesta: ese criterio es automático, el evaluador digita los otros 5.
I3. "Último evaluador" y "Fecha" se declaran obligatorios pero el sistema los autoasigna: son columnas de solo lectura, y quedan vacías ("Sin evaluación") hasta la primera evaluación real.
I4/I5. El rol "selección única" debe registrar tipo+categoría+subcategoría; y la Obs 2 pide capturar el rol desde el formulario público, campo que hoy no existe (implica un cambio visible de UX del formulario de eventos).
I6. El correo "toma el del admin de la entidad", pero ese correo cambia con el tiempo. Mejor derivarlo por vínculo (nunca copiarlo).
I7. Obs 7 invita a registrarse "como ICG", pero un organizador puede ser startup. El texto debe ser dinámico.
I8. Obs 8 asume que "los publicados no se eliminan", pero hoy sí (soft-delete a papelera por admin) y el correo 52 se envía. Ver P2.
I10. Obs 9: reconocer datos por correo en el formulario PÚBLICO convierte el form en un oráculo (cualquiera descubre quién está registrado + su nombre + LinkedIn). Ver P8.
I11. El permiso "permanente" de la Obs 4 es ambiguo: ¿quién otorga sobre eventos futuros de OTROS usuarios de la entidad? Ver P10.
I12/I13. El doc habla de "Pestaña 1" (¿hay más?) y no define qué eventos cuentan para badges/actividad (¿solo aprobados? ¿coorganizar pesa igual?). Ver P12/P6.
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.
Fase
Qué
F0
Seguridad (cerrar lectura pública) + esquema (columnas nuevas) + activar el vínculo evento↔organizador + backfill desde el JSON actual
v1
F1
Permiso "Gestionar organizadores" (toggle en el panel de permisos de eventos)
v1
F2
Panel del directorio: tabla + filtros + cards de resumen + crear/editar/evaluar/eliminar + CSV
v1
F3
Integración con el formulario de eventos (auto-crear organizador, rol desde FE, ocultar panel redundante en dashboard)
v1
F4
Correos de evento con copia a los coorganizadores registrados
v1
F5
Fusión de organizadores (cuando la entidad se registra y ya tenía un registro)
fase 2
F6
Visibilidad y gestión de eventos ajenos (matriz Obs 3 + solicitudes/permisos Obs 4/5)
fase 2
F7
Verificación de speakers/hosts (correo obligatorio, confirmación de participación)
fase 2
F8
Invitaciones al ecosistema (organizador/speaker/host no registrados) + recordatorios
fase 2
F9
Badges y niveles (organizador/speaker/host) en perfiles y "Mis eventos" + catálogo de íconos
fase 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.