fix: display highlight tracking data in history page UI

- Add highlight_prompt, highlight_response, highlight_time_ms to QueryHistoryDetail type
- Add 'Highlights' bar segment with pink color in TimingBar component
- Pass highlightTimeMs to TimingBar in HistoryCard expanded view
- Add collapsible sections for highlight prompt and response in HistoryCard detail
This commit is contained in:
Woody 2026-04-29 13:42:08 +08:00
parent 41f59b396f
commit 90269608bc
3 changed files with 19 additions and 0 deletions

View File

@ -168,6 +168,7 @@ export const HistoryCard: React.FC<HistoryCardProps> = ({
retrieverTimeMs={detail.retriever_time_ms} retrieverTimeMs={detail.retriever_time_ms}
filterTimeMs={detail.filter_time_ms} filterTimeMs={detail.filter_time_ms}
generatorTimeMs={detail.generator_time_ms} generatorTimeMs={detail.generator_time_ms}
highlightTimeMs={detail.highlight_time_ms}
totalTimeMs={detail.total_time_ms} totalTimeMs={detail.total_time_ms}
/> />
</div> </div>
@ -213,6 +214,18 @@ export const HistoryCard: React.FC<HistoryCardProps> = ({
</CollapsibleSection> </CollapsibleSection>
)} )}
{detail.highlight_prompt && (
<CollapsibleSection title="Highlight Prompt">
<pre className="text-xs font-mono whitespace-pre-wrap break-all text-gray-700">{detail.highlight_prompt}</pre>
</CollapsibleSection>
)}
{detail.highlight_response && (
<CollapsibleSection title="Highlight Response">
<pre className="text-xs font-mono whitespace-pre-wrap break-all text-gray-700">{detail.highlight_response}</pre>
</CollapsibleSection>
)}
{detail.final_answer && ( {detail.final_answer && (
<div> <div>
<h4 className="text-sm font-medium text-gray-700 mb-2">Final Answer</h4> <h4 className="text-sm font-medium text-gray-700 mb-2">Final Answer</h4>

View File

@ -5,6 +5,7 @@ interface TimingBarProps {
retrieverTimeMs: number retrieverTimeMs: number
filterTimeMs: number filterTimeMs: number
generatorTimeMs: number generatorTimeMs: number
highlightTimeMs?: number
totalTimeMs: number totalTimeMs: number
} }
@ -26,6 +27,7 @@ export const TimingBar: React.FC<TimingBarProps> = ({
retrieverTimeMs, retrieverTimeMs,
filterTimeMs, filterTimeMs,
generatorTimeMs, generatorTimeMs,
highlightTimeMs,
totalTimeMs, totalTimeMs,
}) => { }) => {
const segments: BarSegment[] = [ const segments: BarSegment[] = [
@ -33,6 +35,7 @@ export const TimingBar: React.FC<TimingBarProps> = ({
{ label: 'Retrieve', timeMs: retrieverTimeMs, colorClass: 'bg-green-400' }, { label: 'Retrieve', timeMs: retrieverTimeMs, colorClass: 'bg-green-400' },
{ label: 'Filter', timeMs: filterTimeMs, colorClass: 'bg-amber-400' }, { label: 'Filter', timeMs: filterTimeMs, colorClass: 'bg-amber-400' },
{ label: 'Generate', timeMs: generatorTimeMs, colorClass: 'bg-purple-400' }, { label: 'Generate', timeMs: generatorTimeMs, colorClass: 'bg-purple-400' },
{ label: 'Highlights', timeMs: highlightTimeMs ?? 0, colorClass: 'bg-pink-400' },
] ]
const maxTime = totalTimeMs > 0 ? totalTimeMs : 1 const maxTime = totalTimeMs > 0 ? totalTimeMs : 1

View File

@ -151,6 +151,9 @@ export interface QueryHistoryDetail {
final_answer: string | null final_answer: string | null
sources: string | null sources: string | null
profile_used: string | null profile_used: string | null
highlight_prompt: string | null
highlight_response: string | null
highlight_time_ms: number
created_at: string created_at: string
} }