@php $tone = $report['overall']; $label = $tone === 'ok' ? 'Operação normal' : ($tone === 'bad' ? 'Atenção necessária' : 'Operação com alertas'); $worker = $report['worker']; $privacy = $report['privacy']; $telemetry = $report['telemetry']; $jobsTelemetry = $telemetry['jobs']; $httpTelemetry = $telemetry['http']; $logsTelemetry = $telemetry['logs']; $aurelio = $report['aurelio']; $operation = $observability; $p95Jobs = ($jobsTelemetry['p95_duration_ms'] ?? null) === null ? '—' : $jobsTelemetry['p95_duration_ms'] . ' ms'; @endphp @extends('layout') @section('content')
@include('partials.context-back')
{{ $label }}

Saúde da aplicação

Estado do painel e sinais operacionais dos últimos 14 dias.

refreshAtualizar
stacks Jobs · 14 dias{{ $jobsTelemetry['total'] }}{{ $jobsTelemetry['average_duration_ms'] }} ms médio · p95 {{ $p95Jobs }}
speed Resposta HTTP{{ $httpTelemetry['average_response_ms'] }} msmédia dos endpoints monitorados
monitor_heart Disponibilidade{{ $httpTelemetry['availability'] === null ? '—' : number_format($httpTelemetry['availability'], 1, ',', '.') }}{{ $httpTelemetry['availability'] === null ? '' : '%' }}{{ $httpTelemetry['availability'] === null ? 'sem medições no período' : 'verificações HTTP bem-sucedidas' }}
terminal Eventos técnicos{{ $logsTelemetry['total_count'] }}{{ $logsTelemetry['error_count'] }} erro(s) no período
smart_toy Aurélio · 24h{{ $aurelio['failures_24h'] }}{{ (int) $aurelio['failures_24h'] === 0 ? 'sem falhas de resposta' : 'falha(s) de resposta' }}

speed Tempo dos jobs

{{ $jobsTelemetry['average_duration_ms'] }} ms médio

http HTTP monitorado

{{ $httpTelemetry['availability'] === null ? 'sem dados' : number_format($httpTelemetry['availability'], 1, ',', '.') . '% disponível' }}

monitoring Eventos técnicos

{{ $logsTelemetry['error_count'] }} erro(s)

backup Backups recentes

{{ $operation['backups']['failed'] }} falha(s)

Backups SQL são executados pelo worker e permanecem no armazenamento privado de cada solução.

@if($operation['recent_backups']->isNotEmpty())
@foreach($operation['recent_backups'] as $backup) @php($backupTone = $backup->status === 'success' ? 'ok' : ($backup->status === 'failed' ? 'bad' : 'warn'))
{{ $backup->system?->name ?? 'Solução' }}{{ $backup->file_name ?: 'Backup em processamento' }}{{ $backup->size_bytes ? number_format($backup->size_bytes / 1048576, 2, ',', '.') . ' MB' : label($backup->status) }}
{{ datetime_br(($backup->completed_at ?: $backup->created_at)?->format('Y-m-d H:i:s'), 'd/m H:i') }}
@if($backup->status === 'success')download@endif
@endforeach
@else

Nenhum backup executado ainda.

@endif Gerenciar soluções e backups arrow_forward

stacks Filas e capacidade

Até 10 jobs por ação. {{ $worker['stats']['queued'] }} pendente(s) · {{ $worker['stats']['running'] }} em execução
@foreach($worker['queues'] as $queueName => $queue) @php($queueMessage = $queue['alerts'] !== [] ? implode(' · ', $queue['alerts']) : 'Operação normal') @php($queueP95 = ($queue['p95_duration_ms'] ?? null) === null ? 'p95 —' : 'p95 ' . $queue['p95_duration_ms'] . ' ms') @php($waitP95 = ($queue['p95_wait_ms'] ?? null) === null ? 'espera p95 —' : 'espera p95 ' . $queue['p95_wait_ms'] . ' ms')
{{ $queue['label'] }} {{ $queue['description'] }} @if($queueMessage !== 'Operação normal'){{ $queueMessage }}@endif
{{ $queue['stats']['queued'] }} pendentes {{ $queue['stats']['running'] }}/{{ $queue['concurrency'] }} rodando {{ $queueP95 }} · {{ $waitP95 }}
limite {{ $queue['max_queued'] }} Ver jobs arrow_forward
@endforeach @if($worker['queues'] === [])
Métricas das filas indisponíveis no momento.
@endif

history Jobs recentes

{{ $operation['jobs_pagination']->total() }} resultado(s)
@if($jobsQueueFilter !== 'all' || $jobsStatusFilter !== 'all')Limpar filtros@endif
@include('observability._jobs', ['jobs' => $operation['jobs_pagination']])

verified_user Diagnóstico do painel

{{ count($report['checks']) }} verificações
@foreach($report['checks'] as $check)
{{ $check['title'] }}{{ $check['detail'] }}{{ $check['tone'] === 'ok' ? 'Normal' : ($check['tone'] === 'bad' ? 'Atenção' : 'Alerta') }}
@endforeach

privacy_tip Retenção de conversas

{{ $report['retention_days'] }} dias
Total{{ $privacy['total'] }}
Anonimizadas{{ $privacy['anonymized'] }}
Aguardando política{{ $privacy['pending'] }}

A política remove dados identificáveis após o prazo, preservando apenas a estrutura necessária para métricas.

@endsection