From a14cfb64486baf54bfd4f3b5a437381c6b343663 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 30 Jun 2025 15:38:25 +0400 Subject: [PATCH] enh: more info in feedback modal --- .../admin/Evaluations/FeedbackModal.svelte | 131 +++++++++++++----- .../admin/Evaluations/Leaderboard.svelte | 4 +- 2 files changed, 100 insertions(+), 35 deletions(-) diff --git a/src/lib/components/admin/Evaluations/FeedbackModal.svelte b/src/lib/components/admin/Evaluations/FeedbackModal.svelte index 996275cd4f..151007459b 100644 --- a/src/lib/components/admin/Evaluations/FeedbackModal.svelte +++ b/src/lib/components/admin/Evaluations/FeedbackModal.svelte @@ -3,16 +3,41 @@ import { getContext } from 'svelte'; const i18n = getContext('i18n'); import XMark from '$lib/components/icons/XMark.svelte'; + import { getFeedbackById } from '$lib/apis/evaluations'; + import { toast } from 'svelte-sonner'; + import Spinner from '$lib/components/common/Spinner.svelte'; export let show = false; export let selectedFeedback = null; export let onClose: () => void = () => {}; + let loaded = false; + + let feedbackData = null; + const close = () => { show = false; onClose(); }; + + const init = async () => { + loaded = false; + feedbackData = null; + if (selectedFeedback) { + feedbackData = await getFeedbackById(localStorage.token, selectedFeedback.id).catch((err) => { + toast.error(err); + return null; + }); + + console.log('Feedback Data:', selectedFeedback, feedbackData); + } + loaded = true; + }; + + $: if (show) { + init(); + } @@ -28,46 +53,86 @@
-
-
- {#if selectedFeedback?.data?.tags && selectedFeedback?.data?.tags.length} -
- {#each selectedFeedback?.data?.tags as tag} - {tag} + {#if feedbackData} + {@const messageId = feedbackData?.meta?.message_id} + {@const messages = feedbackData?.snapshot?.chat?.chat?.history.messages} + + {#if messages[messages[messageId]?.parentId]} +
+
{$i18n.t('Prompt')}
+ +
+ {messages[messages[messageId]?.parentId]?.content || '-'} +
+
+ {/if} + + {#if messages[messageId]} +
+
{$i18n.t('Response')}
+
- {/each} -
- {:else} - - + {messages[messageId]?.content || '-'} +
+
+ {/if} {/if} -
-
-
{$i18n.t('Rating')}
+
+
{$i18n.t('Rating')}
-
- {selectedFeedback?.data?.details?.rating ?? '-'} +
+ {selectedFeedback?.data?.details?.rating ?? '-'} +
+
+
+
{$i18n.t('Reason')}
+ +
+ {selectedFeedback?.data?.reason || '-'} +
+
+ +
+
{$i18n.t('Comment')}
+ +
+ {selectedFeedback?.data?.comment || '-'} +
+
+ +
+ {#if selectedFeedback?.data?.tags && selectedFeedback?.data?.tags.length} +
+ {#each selectedFeedback?.data?.tags as tag} + {tag} + {/each} +
+ {:else} + - + {/if} +
+ +
+
-
-
{$i18n.t('Reason')}
- -
- {selectedFeedback?.data?.reason || '-'} -
+ {:else} +
+
- -
- -
-
+ {/if}
{/if} diff --git a/src/lib/components/admin/Evaluations/Leaderboard.svelte b/src/lib/components/admin/Evaluations/Leaderboard.svelte index 066e40c7a3..29630d68d5 100644 --- a/src/lib/components/admin/Evaluations/Leaderboard.svelte +++ b/src/lib/components/admin/Evaluations/Leaderboard.svelte @@ -77,7 +77,7 @@ let showLeaderboardModal = false; let selectedModel = null; - const openFeedbackModal = (model) => { + const openLeaderboardModelModal = (model) => { showLeaderboardModal = true; selectedModel = model; }; @@ -505,7 +505,7 @@ {#each sortedModels as model, modelIdx (model.id)} openFeedbackModal(model)} + on:click={() => openLeaderboardModelModal(model)} >