Software SGC · Administración

SR Certificaciones SRL · Panel de administración

Iniciar sesión como admin

Conectado como
Rol:
Organización:
Saldo org: créditos

Resumen de mi organización

Cargando...

Usuarios de la organización

EmailNombreRolActivoReportsAccion

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

FechaUserTipoMontoDescripción

Suscripciones activas / historial

MóduloPeríodoStatusInicioVenceDíasNotasAccion

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.

FechaOperacionEntidadNombre UsuarioPCRegistro

Audit log de mi organización

FechaActionUserEntityIPDetalle

Login attempts

FechaEmailExitoRazón falloIPUser-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.

PCVersiónAvisos DetalleÚltimo avisoEstado

Telemetria cruda

FechaPCVerNivel OrigenMensajeDetalle

Modo super-admin: Lo que hagas aca afecta a TODAS las organizaciones del SaaS.

Lista de organizaciones

NombreID (corto)UsersSubs activasCréditosCreadaAccion

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.

  1. Ir a DO -> Apps -> coral-app -> Settings -> App-Level Environment Variables
  2. Agregar 3 env vars (todas como Type: SECRET):
    • LIONFISH_API_URL = https://lionfish-app-58cxz.ondigitalocean.app
    • LIONFISH_ADMIN_EMAIL = email admin de lionfish (ej [email protected])
    • LIONFISH_ADMIN_PASSWORD = password admin de lionfish
  3. Save -> esperar redeploy automatico (~3-5 min)
  4. Dry-run primero -> Ejecutar -> Resetear passwords (los users migrados quedan con password placeholder; usar tab Organizaciones -> Ver users -> Reset password)
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

KeyValorDescripciónAccion

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

NombreTipoAudienceCanjesVenceActivaAccion

Crear nueva oferta

Audiencia y vigencia

0 = sin limite

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.

OrgUsuarioRolTipoDispositivo SOVersiónIPÚltimo loginLoginsEstado

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.


Comandos recientes

FechaTipoDeviceOrgPayload StatusDeliveredAckedResultNotasAccion

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

ExcepcionSampleOcurrenciasUsers DevicesÚltima versiónÚltimoEstado

Crashes individuales

FechaFuenteOrgUserDevice VersiónExcepcionMensajeEstadoAccion

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.

FechaOrgUserDevice DeAStatusMotivo

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).

KeyEnabledDescripciónAudience ActualizadoAccion

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

ClienteCorreoEstadoÚ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.

ClienteCorreoEtapaEquipos

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.

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

FechaAccionUser EntidadIDIPDetalle

Metrics del backend

Datos in-memory del middleware. Auto-refresh cada 30s. Si el proceso reinicia (deploy DO), el deque se resetea.

Top 10 endpoints por trafico

MetodoPathRequests

Top 10 endpoints por latencia p95

MetodoPathRequestsp95 (ms)