feat(awooop): summarize callback capture in runs list
This commit is contained in:
@@ -117,6 +117,13 @@ interface CallbackReplySummary {
|
||||
latest_incident_id?: string | null;
|
||||
latest_at?: string | null;
|
||||
latest_provider_message_id?: string | null;
|
||||
capture_status?: CallbackEvidenceCaptureState | "no_callback" | string | null;
|
||||
capture_captured?: number;
|
||||
capture_partial?: number;
|
||||
capture_not_captured?: number;
|
||||
latest_capture_status?: CallbackEvidenceCaptureState | string | null;
|
||||
latest_capture_missing?: string[];
|
||||
latest_capture_next_action?: string | null;
|
||||
}
|
||||
|
||||
interface CallbackEvidenceCaptureStatus {
|
||||
@@ -908,8 +915,29 @@ function CallbackReplyCell({ summary }: { summary?: CallbackReplySummary | null
|
||||
const status = normalizeCallbackReplyStatus(summary);
|
||||
const config = CALLBACK_REPLY_CONFIG[status];
|
||||
const total = summary?.total ?? 0;
|
||||
const captureStatus = total > 0
|
||||
? normalizeCallbackEvidenceCaptureStatus(summary?.capture_status)
|
||||
: null;
|
||||
const captureConfig = captureStatus
|
||||
? {
|
||||
captured: "text-[#17602a]",
|
||||
partial: "text-[#8a5a08]",
|
||||
not_captured: "text-[#9f2f25]",
|
||||
observed: "text-[#1f5b9b]",
|
||||
}[captureStatus]
|
||||
: null;
|
||||
const latestAction = summary?.latest_action ? String(summary.latest_action) : null;
|
||||
const latestIncidentId = summary?.latest_incident_id ? String(summary.latest_incident_id) : null;
|
||||
const captureItemLabels: Record<string, string> = {
|
||||
awooop_status_chain: t("captureItems.awooopStatusChain"),
|
||||
km_stale_completion_summary: t("captureItems.kmCompletionSummary"),
|
||||
};
|
||||
const latestCaptureMissing = Array.isArray(summary?.latest_capture_missing)
|
||||
? summary.latest_capture_missing
|
||||
: [];
|
||||
const latestCaptureMissingText = latestCaptureMissing.length > 0
|
||||
? latestCaptureMissing.map((item) => captureItemLabels[item] ?? item).join(" / ")
|
||||
: null;
|
||||
const countText = total > 0
|
||||
? t("count", {
|
||||
total,
|
||||
@@ -944,6 +972,19 @@ function CallbackReplyCell({ summary }: { summary?: CallbackReplySummary | null
|
||||
{latestText}
|
||||
</span>
|
||||
)}
|
||||
{captureStatus && (
|
||||
<span
|
||||
className={cn("text-xs leading-5", captureConfig)}
|
||||
title={latestCaptureMissingText ? t("captureMissing", { items: latestCaptureMissingText }) : undefined}
|
||||
>
|
||||
{t("captureLine", {
|
||||
status: t(`captureStatuses.${captureStatus}` as never),
|
||||
captured: summary?.capture_captured ?? 0,
|
||||
partial: summary?.capture_partial ?? 0,
|
||||
notCaptured: summary?.capture_not_captured ?? 0,
|
||||
})}
|
||||
</span>
|
||||
)}
|
||||
{summary?.needs_human && (
|
||||
<span className="text-xs font-semibold text-[#9f2f25]">
|
||||
{t("needsHuman")}
|
||||
|
||||
Reference in New Issue
Block a user