{{ health.label }}
{{ health.issues.join(' · ') }}
Actualizado {{ relative(analytics.generatedAt, now) }}
Usuarios
{{ fmt(analytics.kpis.users.total) }}
+{{ analytics.kpis.users.new7d }} en 7 días · {{ analytics.kpis.users.active7d }} activos
Organizaciones
{{ fmt(analytics.kpis.orgs.total) }}
{{ analytics.kpis.orgs.suspended }} suspendidas
Líneas conectadas
{{ fmt(analytics.kpis.lines.active) }} / {{ analytics.kpis.lines.total }}
{{ analytics.kpis.lines.llm }} con IA · {{ analytics.kpis.lines.lowQuality }} con calidad baja · {{ analytics.kpis.lines.reconnect }} por reconectar
Mensajes hoy
{{ fmt((today.inboundMessages || 0) + (today.outboundMessages || 0)) }}
{{ fmt(today.inboundMessages) }} recibidos · {{ fmt(today.outboundMessages) }} enviados
Consultas IA hoy
{{ fmt(today.llmCalls) }}
{{ fmt(analytics.kpis.month.llmCalls) }} en el mes
Errores 24 h
{{ fmt(analytics.kpis.errors24h) }}
{{ fmt(analytics.kpis.warnings24h) }} avisos
Mensajes por día
{{ fmt(seriesTotal('inboundMessages')) }} recibidos y {{ fmt(seriesTotal('outboundMessages')) }} enviados en {{ analytics.days }} días (UTC)
Procesamiento en el servidor
Estado en este momento
-
{{ fmt(row.value) }}
{{ row.label }}
{{ row.hint }}
Inteligencia artificial
{{ fmt(seriesTotal('llmCalls')) }} consultas · {{ compact(seriesTotal('inputTokens') + seriesTotal('outputTokens')) }} tokens · {{ fmt(seriesTotal('llmErrors')) }} fallos
Organizaciones por plan
{{ analytics.kpis.orgs.total }} en total
{{ item.label }}
{{ item.value }}
Organizaciones con más consumo
Mes en curso
| Organización | Consultas IA | Mensajes |
|---|---|---|
|
{{ o.name }} {{ o.plan }} · {{ o.lines }} líneas · {{ o.members }} miembros · suspendida |
{{ fmt(o.llmCalls) }}/ {{ compact(o.llmLimit) }}
|
{{ fmt(o.inbound) }} ↓ · {{ fmt(o.outbound) }} ↑ |
| Aún no hay consumo este mes. | ||
Bitácora del servidor
Errores y avisos recientes (se guardan 30 días)
-
{{ o.level === 'error' ? 'Error' : 'Aviso' }}
{{ o.message }}
{{ formatDateTime(o.at) }} · {{ o.source }} · org {{ o.orgId.slice(0, 6) }} · código {{ o.code }}
- Sin registros. 🎉
{{ i + 1 }}. {{ step.label }}
{{ fmt(step.value) }} {{ Math.round(100 * step.value / userCounts.all) }}%
{{ step.hint }}
| Organizaciones | |||||||
|---|---|---|---|---|---|---|---|
|
{{ (u.name || u.email || '?').slice(0, 1).toUpperCase() }}
{{ u.name || 'Sin nombre' }} Superadmin {{ u.email || u.uid }} · {{ u.providers.map((p) => providerLabels[p] || p).join(', ') || '—' }} |
{{ relative(u.createdAt, now) }} | {{ relative(u.lastActiveAt, now) }} | {{ stages[u.stage].label }} |
{{ m.orgName }}
—
|
{{ fmt(u.usage.llmCalls) }}/ {{ compact(u.usage.llmLimit) }}
—
|
{{ fmt(u.usage.inbound) }} ↓ · {{ fmt(u.usage.outbound) }} ↑ | |
| Cargando usuarios… | |||||||
| No hay usuarios que coincidan. | |||||||
Las llaves son de solo escritura
Se cifran con AES-256-GCM antes de guardarse y nunca vuelven al navegador: solo verás sus últimos 4 caracteres. La llave maestra de cifrado vive en Secret Manager y no se puede ver ni cambiar desde aquí. Los cambios se aplican en el servidor en menos de un minuto.
{{ keyStats.configured }} / {{ keyStats.total }}
configuradas
Faltan llaves obligatorias para operar: {{ keyStats.missing.join(', ') }}.
{{ group.vendor }} · {{ group.label }}
{{ group.description }}
-
{{ k.label }}
{{ k.help }}
-
{{ k.title }}
{{ k.subtitle }}
-
{{ k.label }}
{{ keySourceLabel(k).label }} Cifrada {{ k.lastTest.ok ? 'Prueba OK' : 'Prueba fallida' }} · {{ relative(k.lastTest.at, now) }}{{ k.help }}
{{ k.options ? (k.options.find((o) => o.value === k.value)?.label.split(':')[0] || k.value) : k.value }}{{ hint }}{{ k.hints[0] }}Actualizada {{ relative(k.updatedAt, now) }}{{ k.updatedBy ? ' por ' + k.updatedBy : '' }} - Sin llaves personalizadas.
Historial de cambios
Quién cambió qué y cuándo. Nunca se registran los valores secretos.
| Fecha | Acción | Objetivo | Por |
|---|---|---|---|
| {{ formatDateTime(e.at) }} | {{ auditLabels[e.action] || e.action }} · {{ e.details.ok ? 'correcta' : 'fallida' }} | {{ e.target }}{{ e.details.hint }}{{ e.details.email }} | {{ e.by?.email }} |
| Sin cambios registrados. | |||