Guía de qué debe tener un panel de administración de LPDI, organizada por componente. Consultar antes de crear un panel nuevo. Ecosistema LPDI · actualizado 2026-09-03.
OBLIGATORIO presente en todo panel de listado
RECOMENDADO según el tipo de datos del panel
El panel de PostulacionesREFERENCIA implementa todo lo obligatorio y casi todo lo recomendado. Cada spec de abajo está agrupada por el componente al que pertenece.
Encabezado
OBLIGATORIOTítulo y subtítulo descriptivo de qué muestra el panel y qué se puede hacer en él.El usuario entiende el propósito sin adivinar.
Barra de filtros
OBLIGATORIOBuscador por texto que filtre por los campos clave (nombre, correo, título, etc.).
RECOMENDADOFiltros con el estilo del DS (DashFilterBar o chips), agrupados en filas fijas, sin generar filas de más.
RECOMENDADOFiltro de rango de fechas (desde / hasta, formato dd-mmm-aaaa del DS).
Cards de resumen
OBLIGATORIOCards de resumen por estado o categoría (patrón .pp-stats) con el conteo de cada uno, clickeables para filtrar.Vista rápida del total y filtro de un clic. Los conteos se calculan sobre el total, no sobre lo ya filtrado.
Tabla
OBLIGATORIOScroll horizontal propio de la tabla (width:max-content; min-width:100% dentro de un wrap overflow-x:auto) para crecer por columnas sin romper el layout de la página.
OBLIGATORIOOrdenar por columnas (clic en el encabezado, con indicador de dirección).
OBLIGATORIOFijar primera y última columna (sticky) para que el nombre y las acciones queden visibles al hacer scroll.
OBLIGATORIODoble scroll horizontal sincronizado (barra arriba y abajo de la tabla, movidas en conjunto).
OBLIGATORIOPaginación (selector "Por página" + Anterior / Siguiente + "Mostrando X a Y de Z").
RECOMENDADORedimensionar columnas (colResize) con persistencia por panel.
Acciones y descargas
RECOMENDADODescargar CSV respetando los filtros activos.
RECOMENDADODescarga masiva (PDF / ZIP de anexos) donde aplique.
RECOMENDADOCambiar estado en línea (selector por fila) donde el panel gestione estados. Si el panel solo consulta, el estado va como badge de color de solo lectura.
RECOMENDADOResponder al usuario por correo desde el registro, donde aplique, con el diseño de correo de LPDI.
Estados y acceso
OBLIGATORIOGate de acceso por rol en el +page.server.ts (super_admin, scouting admin, o el rol que corresponda) con redirect a login sin sesión y 403 si el rol no alcanza.Nunca confiar solo en el frontend; RLS deny-all + service-role en el load.
OBLIGATORIOEstado vacío claro, diferenciando "aún no hay datos" de "ninguno coincide con el filtro".
Estado actual de cada panel
Qué tiene hoy cada panel (verificado en el código, 2026-09-03). ✓ presente · — ausente · parc. parcial.
Componente
Postulaciones REF
Propuestas
Auditoría
Referidos
Permisos
Encabezado
Título + subtítulo
✓
✓
✓
✓
✓
Barra de filtros
Buscador de texto
✓
✓
—
✓
—
Filtros estilo DS
✓
✓
✓
✓
parc.
Rango de fechas
✓
✓
✓
—
—
Cards de resumen
Cards por estado
✓
✓
—
—
—
Tabla
Scroll horizontal propio
✓
n/a
✓
✓
✓
Ordenar por columnas
✓
—
parc.
—
—
Fijar 1ª y última columna
✓
—
—
—
—
Doble scroll horizontal
✓
—
—
—
—
Paginación
✓
—
—
—
—
Redimensionar columnas
✓
—
—
—
—
Acciones y descargas
Descargar CSV
✓
—
✓
—
—
Descarga masiva (PDF/ZIP)
✓
—
—
—
—
Cambiar estado en línea
✓
✓
—
✓
—
Responder por correo
—
✓
—
—
—
Estados y acceso
Gate de acceso por rol
✓
✓
✓
✓
✓
Estado vacío
✓
✓
✓
✓
✓
Referidos es hoy el panel más lejos del estándar: le faltan cards por estado, rango de fechas, ordenar, fijar columnas, doble scroll, paginación y CSV. Es justo el bloque de mejoras pendiente (backlog #7 a #11).
Componentes de referencia
CÓDIGOBarra de filtros del DS:src/lib/components/dashboard/DashFilterBar.svelte
CÓDIGOTabla ancha completa:src/lib/components/scouting/ApplicationsTable.sveltecolResize + columnas sticky + doble scroll sincronizado + ordenar + paginación. El patrón a copiar.
CÓDIGOCards de resumen: patrón .pp-stats en src/routes/dashboard/postulaciones/[slug]/+page.svelte
CÓDIGOGate de acceso: los requireScoutingAdmin / requireCampaignApplicationAccess en cada +page.server.ts
CÓDIGOCorreo al usuario:buildEmailHtml en src/lib/server/notification-emails.ts