Cargando...
ZONAS
Un catálogo cerrado en vez de escribir el nombre a mano cada vez — así la misma zona no acaba escrita de varias formas distintas con el tiempo, y un aviso "por zona" no se queda a medias sin que nadie lo note.
NUEVO AVISO
Se le mostrará al cliente afectado la próxima vez que su Canyon Base compruebe la licencia (dos veces al día) — no es instantáneo.
Déjalo en blanco para que se muestre indefinidamente hasta que cada cliente lo descarte.
AVISOS ENVIADOS
Clientes propios de MEDIBASE — separados a propósito de los clientes de Canyon Base, aunque sea la misma persona o cabinet en la vida real. Un cliente puede tener varios asientos (uno por fisio con licencia) — se gestionan con CRUD completo dentro de la ficha de cada cliente (abre uno de la lista de abajo), incluida la opción de mover un asiento a otro cliente si cambia quién lo paga.
Cuando un fisio cambia de instalación (o dejas de ver movimiento en la suya vieja), tanto él como un admin del cabinet pueden pedir desde MEDIBASE que se libere su asiento. Aprobarla lo libera al momento — queda listo para engancharse a la instalación nueva en el siguiente uso.
PENDIENTES
RESUELTAS
NUEVO AVISO
Se le mostrará en la pantalla principal de MEDIBASE a quien corresponda (fisios, secretaría y administración de ese cabinet) la próxima vez que se compruebe la licencia — no es instantáneo.
Déjalo en blanco para que se muestre indefinidamente hasta que cada uno lo descarte.
AVISOS ENVIADOS
Datos de tu empresa (emisor de las facturas)
Aparecen en la cabecera de cada factura que emitas.
Códigos de descuento
Cada código es o bien un porcentaje o bien un importe fijo en euros — se decide al crearlo y no se puede cambiar después. Se elige de esta lista al emitir una factura (nunca se escribe a mano). El descuento se aplica sobre la base imponible ANTES de calcular el IVA. Un código ya usado en alguna factura no se puede eliminar (solo desactivar) — las facturas que ya lo usaron guardan su propia foto del descuento, así que desactivar o borrar el código después no les afecta.
🔑 Claves
Servidor de validación
Dirección que llevan incrustadas las licencias emitidas para que las instalaciones de Canyon Base sepan dónde comprobar si siguen activas. Si cambias de servidor más adelante, actualiza esto — no hace falta reemitir las licencias ya entregadas si usas un dominio propio que apunte al servidor correcto.
Clave pública
Esta es la clave que hay que incrustar dentro de cada instalación de Canyon Base para que pueda comprobar la firma de las licencias sin conexión. No es secreta.
Regenerar claves
Cuidado: esto genera un par de claves completamente nuevo. Todas las licencias ya emitidas dejarán de verificar correctamente en las instalaciones que las tengan, porque su clave pública incrustada dejará de coincidir. Solo tiene sentido si sospechas que la clave privada se ha filtrado.
Período de gracia personalizado (días)
Desactivado (por defecto): Canyon Base y MEDIBASE mantienen su comportamiento normal de siempre. Canyon Base ya tiene su propio mecanismo en dos fases (margen sin conexión, y después un tiempo restringido antes del bloqueo total). MEDIBASE no tiene ningún margen — su comprobación es estricta, depende de contactar con este panel.
Activado: el número de días que pongas se convierte en un margen de gracia plano que SUSTITUYE al comportamiento normal de los dos productos — tras la fecha de caducidad de la licencia/asiento, sigue considerándose válida hasta ese número de días, tanto en Canyon Base como en MEDIBASE. Es un único valor global, para los dos productos (no se configura por cliente) — pensado para activarlo antes de un viaje largo sin conexión (30-35 días, por ejemplo) y desactivarlo otra vez al volver.
Se aplica de dos formas: queda firmado dentro de cada licencia/clave que se emita o renueve a partir de ahora, y además se manda en cada comprobación online que tenga éxito — así una instalación que sigue llegando al panel puede refrescar su copia local aunque su clave se emitiera con un valor distinto (o sin ninguno).
🔔 Notificaciones
Email de notificaciones (MEDIBASE)
A dónde avisar cuando llega una solicitud de cambio de instalación pendiente de revisar (pestaña MEDIBASE → Solicitudes). Déjalo en blanco si prefieres verlas solo dentro del panel, sin recibir ningún email — la solicitud queda visible de todos modos.
Dos avisos totalmente independientes por cada producto: uno como banner dentro de la propia app, y otro por email — cada uno con su propio margen de días. Ninguno aplica a las licencias vitalicias.
Caducidad — Canyon Base
Genera un aviso dentro de la propia Canyon Base del cliente, visible hasta que lo cierre.
Le manda un correo al cliente, solo si tiene un email de contacto guardado.
Caducidad — MEDIBASE
Genera un aviso dentro de la propia MEDIBASE de ese fisio, visible hasta que lo cierre.
Le manda un correo a ese fisio, solo si tiene un email de la persona guardado en su asiento.
Avisos de caducidad generados
Registro de los avisos que se han generado solos (Canyon Base y MEDIBASE, banner 🔔 y email ✉️, todos juntos) — distintos de los que creas a mano desde cada pestaña de "Avisos". Se pueden borrar si hace falta, por ejemplo si ya se ha resuelto el caso y no quieres que siga apareciendo.
Aviso de silencio de agentes
Notificación push cuando una máquina enrolada (pestaña "Máquinas") lleva demasiado sin sondear — puede que se haya caído, se haya quedado sin corriente, o se haya perdido la red. Requiere tener las notificaciones push activadas (pestaña Instalaciones → "🔔 Activar notificaciones").
⚙️ Sistema
Usuarios del panel
Cuentas con acceso al panel. Rol "admin" puede hacer cualquier cambio; "lectura" solo
puede ver, sin poder guardar nada. Siempre tiene que quedar al menos un usuario con rol
"admin" — el panel no deja bajar de rol ni eliminar al último que queda, ni desde aquí ni
desde el CLI (node scripts/manage-users.js), que sigue funcionando igual.
Backblaze B2 (copia remota)
Credenciales del bucket donde se sube cada copia de seguridad, además de guardarse
siempre una copia local. Si dejas estos campos en blanco y ya tenías B2 configurado en
el archivo .env del servidor, ese sigue funcionando como hasta ahora — lo
de aquí solo tiene prioridad cuando lo rellenas.
Copias de seguridad (este panel)
Backup en caliente de la base de datos + claves de firma + logo, empaquetado en un .tar.gz. Puede tardar un rato si hay que subirlo a B2 — no cierres esta pantalla mientras se hace.
Versión
Notificaciones
Aviso en este dispositivo cuando una tarea de agente se agota (5 intentos fallidos seguidos, ver "agotada" en las tareas de una máquina) — para no tener que ir mirando el panel a la espera. Funciona con el panel instalado como PWA (o simplemente abierto en el navegador). Se activa por dispositivo/navegador, no por cuenta: hazlo en cada móvil u ordenador desde el que quieras recibir el aviso.
Máquinas
Cada fila es una máquina física (Raspberry, mini PC...) con el agente de instalación
corriendo — puede alojar varias instalaciones a la vez (MEDIBASE, Canyon Base), cada una
con sus propios botones de backup/actualización/editar .env. El token de enrolamiento se
muestra completo solo al crear la máquina y al pedirlo explícitamente después — cópialo
al config.json del agente en esa máquina (ver el README del propio agente).
Repositorios
Conecta un repositorio de GitHub con el asistente de abajo y el panel se encarga de todo:
crea su propia clave, clona su checkout y puede sincronizar (construir un
paquete instalable con la última versión de la rama) y publicar. También
funcionan los repositorios configurados a mano sobre el checkout de
git-autosync (opción «Avanzado»). Sincronizar es siempre una acción manual. Opcionalmente, un
repo puede además publicar un paquete subido a mano de vuelta en GitHub
(botón "📤 Publicar en GitHub" en la ficha del paquete) — es una capacidad aparte, con su
propia configuración, ver abajo.
+ Conectar repositorio de GitHub (asistente)
Paso 1 — qué repositorio y para qué app
El panel crea una clave de despliegue solo para este repositorio, clona su
propio checkout y lo usa para Sincronizar (construir paquetes) y Publicar.
No usa la clave de git-autosync ni toca sus carpetas.
El identificador debe ser el "name" exacto del package.json de la app
(así el panel reconoce sus paquetes).
Paso 2 — pega esta clave en GitHub (una sola vez)
- Abre los ajustes de claves del repositorio.
- Título: lo que quieras (ej. «Panel de licencias»). Pega la clave de abajo.
- Marca «Allow write access» y pulsa «Add key».
- Vuelve aquí y pulsa «Ya la he pegado — Conectar».
Avanzado: añadir repositorio manual (checkout ya existente)
Obligatorio — para leer (construir paquetes con "Sincronizar")
Opcional — además, para publicar (push) un paquete subido a mano hacia GitHub
Requiere una clave SSH de despliegue propia del panel, con escritura, y un
checkout aparte clonado por el panel (nunca el mismo que usa
git-autosync arriba) — ver guía "guia-configurar-push-github-panel.md". Deja
estos tres campos vacíos si no quieres que este repo pueda publicar. Publicar deja ese
checkout como un espejo exacto de la versión del paquete elegido — el
código real, con su estructura, no un .zip aparte — incluyendo borrar lo que ya no exista
en esa versión.
Apps
Las aplicaciones que el panel reconoce (sus paquetes, instalaciones y repositorios). Para añadir una nueva no hace falta una versión nueva del panel: también puedes crearla directamente desde el asistente de repositorio, arriba.
+ Añadir app
Paquetes instalables
Copia de cada proyecto lista para instalar o actualizar — el agente la descarga desde
aquí en vez de depender de una URL suelta cada vez. Sube un .tar.gz (o
.zip); la app y la versión exacta (x.y.z) se leen solas del
propio package.json que trae el paquete — no hace falta escribirlas a
mano, ni pueden quedar desajustadas de lo que de verdad hay dentro del archivo. Al
crear una tarea de "Aprovisionar instalación" o "Aplicar actualización" podrás elegir
uno de esta lista y se rellenan solos la URL, el sha256 y la versión.