// ================================================================ // frontend/src/components/dashboard/OrchestrationSummaryCard.tsx // ================================================================ /** * Orchestration Summary Card - What the system did for you * * Builds trust by showing transparency into automation decisions. * Narrative format makes it feel like a helpful assistant. */ import React, { useState } from 'react'; import { Bot, TrendingUp, Package, Clock, CheckCircle, FileText, Users, Database, Brain, ChevronDown, ChevronUp, } from 'lucide-react'; import { OrchestrationSummary } from '../../api/hooks/newDashboard'; import { formatDistanceToNow } from 'date-fns'; import { useTranslation } from 'react-i18next'; interface OrchestrationSummaryCardProps { summary: OrchestrationSummary; loading?: boolean; } export function OrchestrationSummaryCard({ summary, loading }: OrchestrationSummaryCardProps) { const [expanded, setExpanded] = useState(false); const { t } = useTranslation('reasoning'); if (loading) { return (
); } // Handle case where no orchestration has run yet if (summary.status === 'no_runs') { return (

{t('jtbd.orchestration_summary.ready_to_plan')}

{summary.message}

); } const runTime = summary.runTimestamp ? formatDistanceToNow(new Date(summary.runTimestamp), { addSuffix: true }) : 'recently'; return (
{/* Header */}

{t('jtbd.orchestration_summary.title')}

{t('jtbd.orchestration_summary.run_info', { runNumber: summary.runNumber })} • {runTime} {summary.durationSeconds && ( • {t('jtbd.orchestration_summary.took', { seconds: summary.durationSeconds })} )}
{/* Purchase Orders Created */} {summary.purchaseOrdersCreated > 0 && (

{t('jtbd.orchestration_summary.created_pos', { count: summary.purchaseOrdersCreated })}

{summary.purchaseOrdersSummary.length > 0 && ( )}
)} {/* Production Batches Created */} {summary.productionBatchesCreated > 0 && (

{t('jtbd.orchestration_summary.scheduled_batches', { count: summary.productionBatchesCreated, })}

{summary.productionBatchesSummary.length > 0 && ( )} {summary.productionBatchesSummary.length > 3 && ( )}
)} {/* No actions created */} {summary.purchaseOrdersCreated === 0 && summary.productionBatchesCreated === 0 && (

{t('jtbd.orchestration_summary.no_actions')}

)} {/* Reasoning Inputs (How decisions were made) */}

{t('jtbd.orchestration_summary.based_on')}

{summary.reasoningInputs.customerOrders > 0 && (
{t('jtbd.orchestration_summary.customer_orders', { count: summary.reasoningInputs.customerOrders, })}
)} {summary.reasoningInputs.historicalDemand && (
{t('jtbd.orchestration_summary.historical_demand')}
)} {summary.reasoningInputs.inventoryLevels && (
{t('jtbd.orchestration_summary.inventory_levels')}
)} {summary.reasoningInputs.aiInsights && (
{t('jtbd.orchestration_summary.ai_optimization')}
)}
{/* Actions Required Footer */} {summary.userActionsRequired > 0 && (

{t('jtbd.orchestration_summary.actions_required', { count: summary.userActionsRequired, })}

)}
); }