Deploys, migraciones aplicadas y endpoints publicos nuevos se anuncian solos al arrancar el backend. Los pedidos cerrados (PD-07, PD-10...) los publica la sesión de desarrollo.
Fecha
Tipo
Titulo
Detalle
Origen
Resumen de mi organización
Cargando...
Usuarios de la organización
Email
Nombre
Rol
Activo
Reports
Accion
Resetear contraseña de un user
Cambiar rol / permisos
Ajustar créditos de la organización
El pool es por organización (compartido entre todos sus usuarios).
Positivo agrega, negativo descuenta. Se registra como transaccion.
Historial de transacciones
Fecha
User
Tipo
Monto
Descripción
Suscripciones activas / historial
Módulo
Período
Status
Inicio
Vence
Días
Notas
Accion
Asignar suscripcion a mi org
Aplica a toda la organización (todos los users). Si ya hay una sub
activa para el mismo módulo, EXTIENDE la fecha de vencimiento.
Si se completa, override del período
Calcular precio combo
Estimacion para cotizar al cliente (no compra). Aplica descuentos
por período + por cantidad de módulos.
Historial de cambios sincronizados
Cada alta, modificacion y baja que viajo por sync, con el usuario y la
PC que la hizo. En un borrado, "Ver registro" muestra el dato completo
tal como estaba: alcanza para recrearlo sin ir a los backups.
Fecha
Operacion
Entidad
Nombre
Usuario
PC
Registro
Audit log de mi organización
Fecha
Action
User
Entity
IP
Detalle
Login attempts
Fecha
Email
Exito
Razón fallo
IP
User-Agent
Estado del sync por PC
Detecta PCs que no están sincronizando. Estas fallas son
silenciosas: el técnico no ve nada raro en su pantalla.
WORKER CAIDO = el supervisor intento reiniciar el worker 3
veces, fallo y se dio por vencido. Esa PC necesita que se reinicie el
SGC.
COLA TRABADA = el push no sube por timeout (#1170).
Una PC apagada o que nunca mando telemetria no aparece:
que la lista salga corta no prueba que todas esten bien.
PC
Versión
Avisos
Detalle
Último aviso
Estado
Telemetria cruda
Fecha
PC
Ver
Nivel
Origen
Mensaje
Detalle
Modo super-admin: Lo que hagas aca afecta a TODAS
las organizaciones del SaaS.
Lista de organizaciones
Nombre
ID (corto)
Users
Subs activas
Créditos
Creada
Accion
Ajustar créditos de otra organización
Soporte/migracion: agregar o quitar créditos del pool de cualquier
org. Queda registrado en su historial como ajuste de superadmin.
Migrar datos desde lionfish
One-shot: trae los users que están en la DB de lionfish y los
crea en la organización destino de coral. También suma los
créditos de esos users al pool de la org. Usa la env var
LIONFISH_DB_URL del backend.
Setup previo (una sola vez):
Lionfish usa SQLite local en su container (no Postgres managed),
así que la migracion se hace via API REST. Necesitas tener
credenciales admin de lionfish.
Ir a
DO -> Apps
-> coral-app -> Settings -> App-Level Environment Variables
Email del admin de la org destino. Si vacio, usa la primera org no-superadmin.
Bootstrap superadmin (one-shot)
Marcar un user como superadmin. Requiere clave secreta del backend
(env var SUPERADMIN_BOOTSTRAP_KEY). También lo podes
hacer mejor desde aca con el endpoint promote-superadmin.
Modo super-admin: Cambios de pricing afectan a TODOS
los clientes del SaaS. El cache se invalida automáticamente.
Pricing config
Key
Valor
Descripción
Accion
Agregar tier de descuento por cantidad de créditos
Solo se pueden agregar/borrar tiers credit_qty_multiplier:N.
Las claves estructurales (module_price, period_multiplier, etc) solo
se pueden editar valor.
1.0 = sin descuento, 0.5 = 50% off
Modo super-admin: Las ofertas son visibles para todos
los usuarios que matchean su audience.
Ofertas existentes
Nombre
Tipo
Audience
Canjes
Vence
Activa
Accion
Crear nueva oferta
Audiencia y vigencia
0 = sin limite
Users de la organización
Email
Nombre
Rol
Activo
Reports
Superadmin
Accion
Resetear password de un user (cross-org, superadmin)
Cambiar rol/permisos (cross-org, superadmin)
Flota - Dispositivos conectados (superadmin)
Todos los SGC/APK que han hecho login al menos una vez. Se actualiza en cada login exitoso.
Versión = la que corria el cliente en el último login. Alertas si versión < última release
o si no logea desde hace 30 días.
Org
Usuario
Rol
Tipo
Dispositivo
SO
Versión
IP
Último login
Logins
Estado
Comandos remotos - Push a SGC/APK
Los SGC hacen polling cada 5 minutos y ejecutan comandos con status=pending.
ttl_hours=24 por default. broadcast_message requiere payload.message; los
demas no requieren payload.
El SGC baja el installer de GitHub Releases y lo corre.
Comandos recientes
Fecha
Tipo
Device
Org
Payload
Status
Delivered
Acked
Result
Notas
Accion
Salud - Crash reports #941
Agrupados por firma (exception_type + top 3 lineas de stack propio).
Cross-org: incluye crashes anonimos (pre-login) también.
Top crashes agrupados
Excepcion
Sample
Ocurrencias
Users
Devices
Última versión
Último
Estado
Crashes individuales
Fecha
Fuente
Org
User
Device
Versión
Excepcion
Mensaje
Estado
Accion
Rollbacks automaticos (Fase 3.1)
Cuando el post-update healthcheck del SGC falla, se dispara auto-rollback a la
versión anterior. Los eventos con status rollback_triggered
indican que ese release rompio algo critico en esa PC.
Fecha
Org
User
Device
De
A
Status
Motivo
Feature Flags
Toggles booleanos que el SGC/APK consulta cada 15min. Prender/apagar sin release.
Fail-closed: si el backend cae, el cliente asume False. audience.orgs/users
son whitelists (si están seteados, SOLO ellos ven enabled). percentage
distribuye por hash estable (misma PC siempre cae en el mismo bucket).
Nuevo flag
Key
Enabled
Descripción
Audience
Actualizado
Accion
Certificado de firma digital
Con un certificado cargado, cada certificado de ensayo que emite el servidor sale firmado
(PAdES) a nombre del titular: Acrobat muestra la firma valida y, si alguien modifica el PDF,
invalida. El archivo .p12/.pfx y su contraseña se guardan cifrados y nunca se vuelven a mostrar.
Sin certificado, los PDF salen como siempre.
Cargar o reemplazar
Anular un certificado emitido
Para un certificado emitido con un error que no se corrige reimprimiendo (por ejemplo, con el
membrete o el número de otra empresa). No se borra: la verificación publica (el QR) pasa a decir
ANULADO con el motivo y el número que lo reemplaza, y deja de ofrecerse en la web y el portal.
Si el reemplazo todavía no se emitio, anulelo igual y despues vuelva a cargar el número y el
reemplazo. Queda registrado en la auditoria.
Acceso de hospitales al portal
Cada acceso ve SOLO los equipos, vencimientos y certificados de su cliente, en
/portal. La contraseña inicial se muestra una sola vez:
pasesela al hospital por un canal seguro; al entrar la tiene que cambiar.
Nuevo acceso
Accesos
Cliente
Correo
Estado
Último ingreso
Alertas de vencimiento por correo
Vista previa de lo que se mandaria HOY: a que cliente, a que correo, con que equipos y en que
etapa (60 o 15 días antes del vencimiento). La vista previa nunca manda nada. El envio real
solo corre con ALERTAS_VENCIMIENTO_ENABLED=true y el SMTP cargados en el servidor.
Cliente
Correo
Etapa
Equipos
Mi cuenta
Email
-
Rol
-
Superadmin
-
2FA
-
Autenticación de dos factores (2FA)
Solo superadmin puede activar 2FA. Al hacerlo, el próximo login pedira
un código de 6 digitos del app Google Authenticator/Authy en el celular.
Escanea este QR con Google Authenticator (o similar):
Secret manual (si no podes escanear):
Recovery codes - Guardalos AHORA
Cada código se puede usar UNA SOLA VEZ para loguear si perdes el celular.
Se muestran una sola vez.
2FA activo
Auditoria de accesos
Registro de todas las acciones sensibles (login, create/edit/delete de OTs,
clientes, equipos, etc). Filtra por entidad para responder "quien
modifico esta OT y cuando".
Buscar por entidad
Timeline global
Fecha
Accion
User
Org
Entidad
ID
IP
Detalle
Metrics del backend
Datos in-memory del middleware. Auto-refresh cada 30s. Si el proceso reinicia (deploy DO),
el deque se resetea.