/** * Automation Run Detail Page * Comprehensive view of a single automation run */ import React, { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useSiteStore } from '../../store/siteStore'; import { automationService } from '../../services/automationService'; import { RunDetailResponse } from '../../types/automation'; import { useToast } from '../../components/ui/toast/ToastContainer'; import PageMeta from '../../components/common/PageMeta'; import PageHeader from '../../components/common/PageHeader'; import RunSummaryCard from '../../components/Automation/DetailView/RunSummaryCard'; import StageAccordion from '../../components/Automation/DetailView/StageAccordion'; import EfficiencyMetrics from '../../components/Automation/DetailView/EfficiencyMetrics'; import InsightsPanel from '../../components/Automation/DetailView/InsightsPanel'; import CreditBreakdownChart from '../../components/Automation/DetailView/CreditBreakdownChart'; const AutomationRunDetail: React.FC = () => { const { runId } = useParams<{ runId: string }>(); const navigate = useNavigate(); const { activeSite } = useSiteStore(); const toast = useToast(); const [loading, setLoading] = useState(true); const [runDetail, setRunDetail] = useState(null); useEffect(() => { loadRunDetail(); }, [runId, activeSite]); const loadRunDetail = async () => { if (!activeSite || !runId) return; try { setLoading(true); const data = await automationService.getRunDetail(activeSite.id, runId); setRunDetail(data); } catch (error: any) { console.error('Failed to load run detail', error); toast.error(error.message || 'Failed to load run detail'); } finally { setLoading(false); } }; if (!activeSite) { return (

Please select a site to view automation run details.

); } if (loading) { return (
Loading run details...
); } if (!runDetail) { return (

Run not found.

); } return ( <>
{/* Run Summary */} {runDetail.run && } {/* Insights Panel */} {runDetail.insights && runDetail.insights.length > 0 && ( )} {/* Two Column Layout */}
{/* Left Column - Credit Breakdown & Efficiency */}
{runDetail.stages && } {runDetail.efficiency && runDetail.historical_comparison && ( )}
{/* Right Column - Stage Details */}
{runDetail.stages && runDetail.run?.initial_snapshot && ( )}
); }; export default AutomationRunDetail;