query( "SELECT evento, COUNT(*) n FROM turnero_tv_log WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY) GROUP BY evento" )->fetchAll(PDO::FETCH_KEY_PAIR); // Últimos incidentes (lo normal —start/end— no se lista: solo lo que falló) $stmt = $pdo->query( "SELECT evento, detalle, created_at FROM turnero_tv_log WHERE evento IN ('mudo', 'sin_start', 'error') ORDER BY id DESC LIMIT 30" ); $incidentes = []; foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { $d = json_decode($r['detalle'] ?? '{}', true) ?: []; $incidentes[] = [ 'cuando' => $r['created_at'], 'evento' => $r['evento'], 'turno' => $d['cod'] ?? null, 'voz' => $d['voz'] ?? null, ]; } $anuncios = (int)($resumen['start'] ?? 0); $mudos = (int)($resumen['mudo'] ?? 0); $avisos = (int)($resumen['sin_start'] ?? 0) + (int)($resumen['error'] ?? 0); jsonOk([ 'anuncios_7d' => $anuncios, 'completos_7d' => (int)($resumen['end'] ?? 0), 'mudos_7d' => $mudos, 'avisos_7d' => $avisos, 'incidentes' => $incidentes, ]);