fix: exclude RMM alert tickets (source=8) from kiosk stats - show only human-generated tickets

This commit is contained in:
root 2026-02-03 07:02:47 -05:00
parent 2ebf8e6732
commit 1d1b4d2a71
2 changed files with 23 additions and 15 deletions

View file

@ -3,58 +3,65 @@ import { postgresClient } from '@/lib/services/postgres-client';
export async function GET(request: NextRequest) {
try {
// Critical tickets (Priority 1-3)
// Critical tickets (Priority 1-3) - exclude RMM alerts (source = 8)
const criticalTicketsResult = await postgresClient.query(
`SELECT COUNT(*) as count
FROM tickets
WHERE completed_date IS NULL
AND priority <= 3`
AND priority <= 3
AND (source IS NULL OR source != 8)`
);
// Tickets waiting engagement (specific statuses)
// Tickets waiting engagement (specific statuses) - exclude RMM alerts
const waitingTicketsResult = await postgresClient.query(
`SELECT COUNT(*) as count
FROM tickets
WHERE completed_date IS NULL
AND status IN (21, 9, 19)`
AND status IN (21, 9, 19)
AND (source IS NULL OR source != 8)`
);
// Stale tickets (no activity in 7+ days)
// Stale tickets (no activity in 7+ days) - exclude RMM alerts
const staleTicketsResult = await postgresClient.query(
`SELECT COUNT(*) as count
FROM tickets
WHERE completed_date IS NULL
AND last_activity_date < NOW() - INTERVAL '7 days'`
AND last_activity_date < NOW() - INTERVAL '7 days'
AND (source IS NULL OR source != 8)`
);
// Overdue tickets
// Overdue tickets - exclude RMM alerts
const overdueTicketsResult = await postgresClient.query(
`SELECT COUNT(*) as count
FROM tickets
WHERE completed_date IS NULL
AND due_date_time < NOW()`
AND due_date_time < NOW()
AND (source IS NULL OR source != 8)`
);
// Total open tickets
// Total open tickets - exclude RMM alerts
const openTicketsResult = await postgresClient.query(
`SELECT COUNT(*) as count
FROM tickets
WHERE completed_date IS NULL`
WHERE completed_date IS NULL
AND (source IS NULL OR source != 8)`
);
// Tickets closed today
// Tickets closed today - exclude RMM alerts
const closedTodayResult = await postgresClient.query(
`SELECT COUNT(*) as count
FROM tickets
WHERE DATE(completed_date) = CURRENT_DATE`
WHERE DATE(completed_date) = CURRENT_DATE
AND (source IS NULL OR source != 8)`
);
// Average resolution time (last 30 days)
// Average resolution time (last 30 days) - exclude RMM alerts
const avgResolutionResult = await postgresClient.query(
`SELECT AVG(EXTRACT(EPOCH FROM (completed_date - create_date))/3600) as avg_hours
FROM tickets
WHERE completed_date >= NOW() - INTERVAL '30 days'
AND completed_date IS NOT NULL`
AND completed_date IS NOT NULL
AND (source IS NULL OR source != 8)`
);
// Time entries this week