diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 78cd09c..f339928 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -8,6 +8,7 @@ import { MyTicketsPanel } from "@/components/tickets/my-tickets-panel" import { ChartOpenedResolved } from "@/components/charts/chart-opened-resolved" import { ChartOpenByPriority } from "@/components/charts/chart-open-priority" import { requireAuthenticatedSession } from "@/lib/auth-server" +import { DashboardSlaRiskPanel } from "@/components/dashboard/dashboard-sla-risk-panel" export default async function Dashboard() { // Garante redirecionamento para /login quando sem sessão (aba anônima, etc.) @@ -26,8 +27,13 @@ export default async function Dashboard() {
- - + + +
diff --git a/src/components/dashboard/dashboard-hero.tsx b/src/components/dashboard/dashboard-hero.tsx index 733cfd4..3023381 100644 --- a/src/components/dashboard/dashboard-hero.tsx +++ b/src/components/dashboard/dashboard-hero.tsx @@ -301,10 +301,6 @@ export function DashboardQueueInsights() { data={queueTrend?.queues} isLoading={dashboardEnabled && queueTrend === undefined} /> -
) } @@ -323,7 +319,10 @@ function QueueSparklineRow({ Filas com maior volume Comparativo diário de entradas x resolvidos - + Abrir painel de filas @@ -441,7 +440,7 @@ function QueueSparklineCard({ ) } -function SlaAtRiskCard({ +export function SlaAtRiskCard({ data, isLoading, }: { diff --git a/src/components/dashboard/dashboard-sla-risk-panel.tsx b/src/components/dashboard/dashboard-sla-risk-panel.tsx new file mode 100644 index 0000000..a0629d6 --- /dev/null +++ b/src/components/dashboard/dashboard-sla-risk-panel.tsx @@ -0,0 +1,33 @@ +"use client" + +import { useQuery } from "convex/react" + +import { api } from "@/convex/_generated/api" +import type { Id } from "@/convex/_generated/dataModel" +import { SlaAtRiskCard } from "@/components/dashboard/dashboard-hero" +import { useAuth } from "@/lib/auth-client" +import { DEFAULT_TENANT_ID } from "@/lib/constants" + +type AwaitingAction = { + total: number + atRisk: number +} + +export function DashboardSlaRiskPanel() { + const { session, convexUserId, isStaff } = useAuth() + const tenantId = session?.user.tenantId ?? DEFAULT_TENANT_ID + const enabled = Boolean(isStaff && convexUserId) + + const overview = useQuery( + api.reports.dashboardOverview, + enabled ? { tenantId, viewerId: convexUserId as Id<"users"> } : "skip" + ) as { awaitingAction?: AwaitingAction } | undefined + + return ( + + ) +} +