diff --git a/backend/app/services/conversation_context_service.py b/backend/app/services/conversation_context_service.py index 33722672..e09bf659 100755 --- a/backend/app/services/conversation_context_service.py +++ b/backend/app/services/conversation_context_service.py @@ -50,6 +50,9 @@ class ConversationContextService: # Calculate elapsed time created_at = focus_group.get('created_at') if created_at: + # MongoDB may return naive datetimes — make timezone-aware before subtracting + if created_at.tzinfo is None: + created_at = created_at.replace(tzinfo=timezone.utc) elapsed_minutes = (datetime.now(timezone.utc) - created_at).total_seconds() / 60 else: elapsed_minutes = 0 diff --git a/src/components/focus-group-session/DiscussionPanel.tsx b/src/components/focus-group-session/DiscussionPanel.tsx index dffb6101..7bad6693 100755 --- a/src/components/focus-group-session/DiscussionPanel.tsx +++ b/src/components/focus-group-session/DiscussionPanel.tsx @@ -77,12 +77,13 @@ const DiscussionPanel = ({ // Calculate reasoning panel visibility - only show when user explicitly expands it const reasoningPanelVisible = reasoningPanelExpanded; - // Sync localAiModeActive back to null once parent prop has caught up + // When server reports AI is NOT active, clear any optimistic local override immediately. + // This handles the case where AI mode fails/stops before the frontend confirms it started. useEffect(() => { - if (localAiModeActive !== null && localAiModeActive === isAiModeActive) { + if (!isAiModeActive && localAiModeActive !== null) { setLocalAiModeActive(null); } - }, [isAiModeActive, localAiModeActive]); + }, [isAiModeActive]); // Fetch reasoning history when in AI mode useEffect(() => {