"use client"; import { useQuery } from "@tanstack/react-query"; import Link from "next/link"; import { communicationApi } from "@/modules/communication/services/communication-api"; import { useTenantId } from "@/hooks/useTenantId"; import { useCommunicationCapabilities, useCommunicationMonitoring, } from "@/modules/communication/hooks/useCommunicationCapabilities"; import { CommunicationPageLoader, CommunicationPageError } from "@/modules/communication/pages/shared"; import { PageHeader, StatCard, Card, CardContent, Button, Badge } from "@/components/ds"; import { CommunicationBreadcrumbs } from "@/modules/communication/components/CommunicationBreadcrumbs"; export function ExecutiveDashboard() { const { tenantId } = useTenantId(); const caps = useCommunicationCapabilities(); const monitoring = useCommunicationMonitoring(tenantId); const countsQ = useQuery({ queryKey: ["communication", tenantId, "exec-counts"], queryFn: async () => { const [providers, templates, messages] = await Promise.all([ communicationApi.providers.list(tenantId!), communicationApi.templates.list(tenantId!), communicationApi.messages.list(tenantId!, { limit: 500 }), ]); return { providers: providers.length, templates: templates.length, messages: messages.length, delivered: messages.filter((m) => m.status === "delivered").length, }; }, enabled: !!tenantId, }); if (!tenantId || countsQ.isLoading || caps.isLoading) return ; if (countsQ.error) return countsQ.refetch()} />; const c = countsQ.data!; const stats = monitoring.data; return (
v{caps.data?.version} · SMS MVP } />
{stats ? (

صف پیام

                {JSON.stringify(stats.queue_by_status, null, 2)}
              

وضعیت پیام‌ها

                {JSON.stringify(stats.messages_by_status, null, 2)}
              
) : null}
); } export default ExecutiveDashboard;