From 7bbcf0face59abb50fcbddeadbffb946b982ed92 Mon Sep 17 00:00:00 2001 From: chihlasm Date: Fri, 20 Mar 2026 01:07:40 +0000 Subject: [PATCH] =?UTF-8?q?fix(analytics):=204=20UX=20polish=20fixes=20?= =?UTF-8?q?=E2=80=94=20resolution=20time=20column,=20empty=20states,=20typ?= =?UTF-8?q?e=20badges,=20select=20styling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CoverageHeatmap: add Avg Resolution column with inverse color thresholds (green <10 min, amber 10–20 min, red >20 min); updated colSpan to 7 - FlowPilotAnalyticsPage: show positive empty state when knowledge gaps list is empty instead of rendering nothing - FlowQualityTable: add tree_type badge next to flow name (Troubleshooting/Project/Maintenance with distinct colors) - FlowPilotAnalyticsPage: add [&>option] Tailwind classes to period select for improved dark-theme contrast in Chrome/Firefox Co-Authored-By: Claude Opus 4.6 (1M context) --- .../components/analytics/CoverageHeatmap.tsx | 25 ++++++++++++++++++- .../components/analytics/FlowQualityTable.tsx | 9 +++++++ frontend/src/pages/FlowPilotAnalyticsPage.tsx | 12 +++++++-- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/analytics/CoverageHeatmap.tsx b/frontend/src/components/analytics/CoverageHeatmap.tsx index a66560d1..5b99d1fb 100644 --- a/frontend/src/components/analytics/CoverageHeatmap.tsx +++ b/frontend/src/components/analytics/CoverageHeatmap.tsx @@ -85,6 +85,10 @@ export default function CoverageHeatmap({ data }: CoverageHeatmapProps) { Guided % + + Avg Resolution + @@ -138,13 +142,32 @@ export default function CoverageHeatmap({ data }: CoverageHeatmapProps) { {(row.guided_rate * 100).toFixed(1)}% + + {row.avg_resolution_minutes == null ? ( + + ) : ( + 20 min)'}`} + > + {row.avg_resolution_minutes.toFixed(1)} min + + )} + ))} {data.unmapped_session_count > 0 && ( - + {data.unmapped_session_count} sessions had no domain classification diff --git a/frontend/src/components/analytics/FlowQualityTable.tsx b/frontend/src/components/analytics/FlowQualityTable.tsx index 9ea24c32..ae5b9d61 100644 --- a/frontend/src/components/analytics/FlowQualityTable.tsx +++ b/frontend/src/components/analytics/FlowQualityTable.tsx @@ -12,6 +12,12 @@ interface FlowQualityTableProps { type SortColumn = 'name' | 'usage_count' | 'success_rate' | 'last_matched_at' | 'avg_confidence' | 'quality_score' type SortDir = 'asc' | 'desc' +const TYPE_LABELS: Record = { + troubleshooting: { label: 'Troubleshooting', color: 'text-primary' }, + procedural: { label: 'Project', color: 'text-amber-400' }, + maintenance: { label: 'Maintenance', color: 'text-blue-400' }, +} + function formatRelativeTime(dateStr: string | null): string { if (!dateStr) return 'Never' const diff = Date.now() - new Date(dateStr).getTime() @@ -215,6 +221,9 @@ function FlowRow({ > {flow.name} + + {TYPE_LABELS[flow.tree_type]?.label || flow.tree_type} + {needsAttention && ( Needs attention diff --git a/frontend/src/pages/FlowPilotAnalyticsPage.tsx b/frontend/src/pages/FlowPilotAnalyticsPage.tsx index 3ac65901..f1bfe2af 100644 --- a/frontend/src/pages/FlowPilotAnalyticsPage.tsx +++ b/frontend/src/pages/FlowPilotAnalyticsPage.tsx @@ -179,7 +179,7 @@ export default function FlowPilotAnalyticsPage() {