-
[NA] [FE] Add thumbs up/down feedback for OpikAssist conversations (#4846)
发布于
2026-01-23 16:37:53 +00:00 - [NA] [FE] Add thumbs up/down feedback for OpikAssist conversations
Implement session-level feedback feature for OpikAssist:
- Add TraceSessionFeedback component with thumbs up/down buttons
- Show only selected button after user feedback
- Position feedback below final AI message
- Frontend-only cache persists across trace switches
- Clear feedback when conversation is cleared or panel closed
- Backend API mutations for analytics tracking (PUT/DELETE endpoints)
Files added:
- useTraceAnalyzerFeedbackSetMutation.ts
- useTraceAnalyzerFeedbackDeleteMutation.ts
- TraceSessionFeedback.tsx
Files modified:
- ai-assistant.ts (added SESSION_FEEDBACK_VALUE enum)
- TraceAIViewer.tsx (integrated feedback with cache management)
- Revision 2: Address PR review feedback - add error rollback and improve error messages
Fix optimistic update rollback on mutation errors:
- Capture previous feedback state before optimistic update
- Add onError callbacks to both SET and DELETE mutations
- Rollback to previous state if backend request fails
- Prevents UI from showing unpersisted feedback
Improve error message handling:
- Add fallback error messages when backend returns no message
- Set mutation: 'Failed to update feedback. Please try again.'
- Delete mutation: 'Failed to remove feedback. Please try again.'
- Ensures users always receive actionable error guidance
Files modified:
- TraceSessionFeedback.tsx (added rollback logic)
- useTraceAnalyzerFeedbackSetMutation.ts (improved error message)
- useTraceAnalyzerFeedbackDeleteMutation.ts (improved error message)
- Revision 3: Refactor TraceSessionFeedback to use single TooltipProvider
Consolidate duplicate TooltipProvider wrappers:
- Remove TooltipProvider from both conditional branches
- Wrap entire component return with single TooltipProvider
- Convert early return pattern to ternary operator
- Inline state comparison (removed isLike variable)
Benefits:
- Single source of truth for tooltip configuration
- Easier maintenance for future tooltip changes
- Cleaner component structure
No functional changes - all existing behavior preserved.
下载附件