AI Studio Routing Review Execution Dashboard SMS Live Control
declare(strict_types=1); require_once __DIR__ . '/../includes/db_master.php'; $pdo = db_master(); $providerId = isset($_GET['provider_id']) ? (int)$_GET['provider_id'] : 0; $statusFilter = isset($_GET['status']) ? trim((string)$_GET['status']) : ''; $routeFilter = isset($_GET['route']) ? trim((string)$_GET['route']) : ''; $limit = isset($_GET['limit']) ? max(10, min(500, (int)$_GET['limit'])) : 100; $where = []; $params = []; if ($providerId > 0) { $where[] = 'l.provider_id = :provider_id'; $params[':provider_id'] = $providerId; } if ($statusFilter !== '') { $where[] = 'l.status = :status'; $params[':status'] = $statusFilter; } if ($routeFilter !== '') { $where[] = 'l.route_recommendation = :route'; $params[':route'] = $routeFilter; } $whereSql = $where ? ('WHERE ' . implode(' AND ', $where)) : ''; $summarySql = " SELECT COUNT(*) AS total_rows, SUM(CASE WHEN l.status = 'ready' THEN 1 ELSE 0 END) AS ready_rows, SUM(CASE WHEN l.status = 'review' THEN 1 ELSE 0 END) AS review_rows, SUM(CASE WHEN l.action_taken = 'queued_for_sms' THEN 1 ELSE 0 END) AS sms_rows, SUM(CASE WHEN l.action_taken = 'queued_for_social' THEN 1 ELSE 0 END) AS social_rows FROM decision_routing_log l {$whereSql} "; $summaryStmt = $pdo->prepare($summarySql); $summaryStmt->execute($params); $summary = $summaryStmt->fetch(PDO::FETCH_ASSOC) ?: [ 'total_rows' => 0, 'ready_rows' => 0, 'review_rows' => 0, 'sms_rows' => 0, 'social_rows' => 0, ]; $listSql = " SELECT l.id AS log_id, l.decision_id, l.provider_id, l.route_recommendation, l.action_taken, l.target_table, l.target_id, l.status, l.notes, l.created_at, d.decision_type, d.decision_code, d.title, d.priority_level, d.decision_score, d.decision_band, d.recommendation_text FROM decision_routing_log l LEFT JOIN decision_engine_outputs d ON d.id = l.decision_id {$whereSql} ORDER BY l.id DESC LIMIT " . (int)$limit; $listStmt = $pdo->prepare($listSql); $listStmt->execute($params); $rows = $listStmt->fetchAll(PDO::FETCH_ASSOC); function e(string $value): string { return htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); } function badgeClass(string $value): string { $value = strtolower($value); return match ($value) { 'ready', 'queued_for_sms', 'queued_for_social', 'high', 'sms', 'social' => 'badge good', 'review', 'medium' => 'badge warn', default => 'badge', }; } ?> DCME Decision Routing Review Dashboard

Decision Routing Review Dashboard

Review routed decisions from Predictive and Studio, including SMS-ready items and review queue items.
Source tables: decision_engine_outputs + decision_routing_log
Total Routed
0
Ready
0
Review
0
Queued for SMS
0
Queued for Social
0
Reset
No routing rows found for the current filters.