diff --git a/api/routes/campaign.py b/api/routes/campaign.py index 4b72f30..0ff3252 100644 --- a/api/routes/campaign.py +++ b/api/routes/campaign.py @@ -697,6 +697,7 @@ async def download_campaign_report( "Created At", "Customer Name", "Phone Number", + "Call Disposition", "Call Tags", "Call Duration (s)", "Transcript", @@ -726,6 +727,7 @@ async def download_campaign_report( run.created_at.isoformat() if run.created_at else "", initial.get("first_name", ""), initial.get("phone_number", ""), + gathered.get("mapped_call_disposition", ""), call_tags, cost.get("call_duration_seconds", ""), _transcript_from_logs(run.logs), diff --git a/ui/src/app/campaigns/[campaignId]/page.tsx b/ui/src/app/campaigns/[campaignId]/page.tsx index 525c0e8..d8a5544 100644 --- a/ui/src/app/campaigns/[campaignId]/page.tsx +++ b/ui/src/app/campaigns/[campaignId]/page.tsx @@ -41,6 +41,7 @@ export default function CampaignDetailPage() { // Action state const [isExecutingAction, setIsExecutingAction] = useState(false); + const [isDownloadingReport, setIsDownloadingReport] = useState(false); // Fetch campaign details const fetchCampaign = useCallback(async () => { @@ -115,6 +116,7 @@ export default function CampaignDetailPage() { // Handle download report const handleDownloadReport = async () => { if (!user) return; + setIsDownloadingReport(true); try { const accessToken = await getAccessToken(); const response = await downloadCampaignReportApiV1CampaignCampaignIdReportGet({ @@ -143,6 +145,8 @@ export default function CampaignDetailPage() { } catch (error) { console.error('Failed to download report:', error); toast.error('Failed to download report'); + } finally { + setIsDownloadingReport(false); } }; @@ -364,7 +368,7 @@ export default function CampaignDetailPage() {