Girish Jeswani commited on
Commit
e4e2554
·
1 Parent(s): a85d17b

fix document session id error

Browse files
phd-advisor-frontend/src/components/FileUpload.js CHANGED
@@ -44,24 +44,33 @@ const FileUpload = ({ onFileUploaded, isUploading, onUploadStart, currentChatSes
44
  formData.append('file', file);
45
 
46
  try {
47
- // FIXED: Build URL with chat_session_id parameter if available
48
  let uploadUrl = 'http://localhost:8000/upload-document';
 
 
 
 
 
49
  if (currentChatSessionId) {
50
  uploadUrl += `?chat_session_id=${currentChatSessionId}`;
51
- console.log(`Uploading to specific chat session: ${currentChatSessionId}`);
 
52
  } else {
53
- console.log('Uploading to new/current session');
 
54
  }
55
 
56
- // FIXED: Include auth token in headers if available
57
  const headers = {};
58
  if (authToken) {
59
  headers['Authorization'] = `Bearer ${authToken}`;
 
 
 
60
  }
61
 
62
  const response = await fetch(uploadUrl, {
63
  method: 'POST',
64
- headers: headers, // Add auth headers
65
  body: formData,
66
  });
67
 
@@ -71,14 +80,26 @@ const FileUpload = ({ onFileUploaded, isUploading, onUploadStart, currentChatSes
71
  setUploadMessage(`${file.name} uploaded successfully and added to context.`);
72
  onFileUploaded && onFileUploaded(file, data);
73
 
74
- // FIXED: Log upload result for debugging
 
75
  console.log('Document upload result:', {
76
  filename: data.filename,
77
  session_id: data.session_id,
78
  chat_session_id: data.chat_session_id,
79
- chunks_created: data.chunks_created
 
 
80
  });
81
 
 
 
 
 
 
 
 
 
 
82
  // Auto-clear success message after 5 seconds
83
  setTimeout(() => {
84
  setUploadStatus(null);
 
44
  formData.append('file', file);
45
 
46
  try {
 
47
  let uploadUrl = 'http://localhost:8000/upload-document';
48
+
49
+ console.log('=== DOCUMENT UPLOAD DEBUG ===');
50
+ console.log('currentChatSessionId:', currentChatSessionId);
51
+ console.log('authToken available:', !!authToken);
52
+
53
  if (currentChatSessionId) {
54
  uploadUrl += `?chat_session_id=${currentChatSessionId}`;
55
+ console.log('Uploading to specific chat session:', currentChatSessionId);
56
+ console.log('Final upload URL:', uploadUrl);
57
  } else {
58
+ console.log('WARNING: No currentChatSessionId - uploading to new session');
59
+ console.log('This will cause session mismatch!');
60
  }
61
 
62
+ // Include auth token in headers if available
63
  const headers = {};
64
  if (authToken) {
65
  headers['Authorization'] = `Bearer ${authToken}`;
66
+ console.log('Auth token included in request');
67
+ } else {
68
+ console.log('WARNING: No auth token available');
69
  }
70
 
71
  const response = await fetch(uploadUrl, {
72
  method: 'POST',
73
+ headers: headers,
74
  body: formData,
75
  });
76
 
 
80
  setUploadMessage(`${file.name} uploaded successfully and added to context.`);
81
  onFileUploaded && onFileUploaded(file, data);
82
 
83
+ // ENHANCED: Better debug logging
84
+ console.log('=== UPLOAD RESULT ===');
85
  console.log('Document upload result:', {
86
  filename: data.filename,
87
  session_id: data.session_id,
88
  chat_session_id: data.chat_session_id,
89
+ user_id: data.user_id,
90
+ chunks_created: data.chunks_created,
91
+ currentSessionId: currentChatSessionId
92
  });
93
 
94
+ // Check for session mismatch
95
+ if (data.chat_session_id !== currentChatSessionId) {
96
+ console.error('SESSION MISMATCH DETECTED!');
97
+ console.error('Expected:', currentChatSessionId);
98
+ console.error('Got:', data.chat_session_id);
99
+ } else {
100
+ console.log('✅ Session IDs match correctly');
101
+ }
102
+
103
  // Auto-clear success message after 5 seconds
104
  setTimeout(() => {
105
  setUploadStatus(null);
phd-advisor-frontend/src/components/MessageBubble.js CHANGED
@@ -31,8 +31,8 @@ const MessageBubble = ({
31
  }
32
  };
33
 
34
- const handleExpand = (messageId, advisorId) => {
35
- if (onExpand) onExpand(messageId, advisorId);
36
  };
37
 
38
  const handleInfoToggle = () => {
@@ -320,9 +320,9 @@ const MessageBubble = ({
320
  }
321
 
322
  if (message.type === 'advisor') {
323
- const advisor = advisors[message.advisorId];
324
  const Icon = advisor.icon;
325
- const colors = getAdvisorColors(message.advisorId, isDark);
326
  const isCopied = copiedStates[message.id];
327
 
328
  return (
@@ -425,7 +425,7 @@ const MessageBubble = ({
425
  <div className="tooltip-container">
426
  <button
427
  className="action-button"
428
- onClick={() => handleExpand(message.id, message.advisorId)}
429
  onMouseEnter={() => showTooltipWithDelay('expand')}
430
  onMouseLeave={hideTooltip}
431
  style={{
 
31
  }
32
  };
33
 
34
+ const handleExpand = (messageId, persona_id) => {
35
+ if (onExpand) onExpand(messageId, persona_id);
36
  };
37
 
38
  const handleInfoToggle = () => {
 
320
  }
321
 
322
  if (message.type === 'advisor') {
323
+ const advisor = advisors[message.persona_id];
324
  const Icon = advisor.icon;
325
+ const colors = getAdvisorColors(message.persona_id, isDark);
326
  const isCopied = copiedStates[message.id];
327
 
328
  return (
 
425
  <div className="tooltip-container">
426
  <button
427
  className="action-button"
428
+ onClick={() => handleExpand(message.id, message.persona_id)}
429
  onMouseEnter={() => showTooltipWithDelay('expand')}
430
  onMouseLeave={hideTooltip}
431
  style={{
phd-advisor-frontend/src/pages/ChatPage.js CHANGED
@@ -393,11 +393,17 @@ const handleNewChat = async (sessionId = null) => {
393
  setThinkingAdvisors(['system']);
394
 
395
  try {
 
 
 
 
 
 
 
 
396
  const response = await fetch('http://localhost:8000/chat-sequential', {
397
  method: 'POST',
398
- headers: {
399
- 'Content-Type': 'application/json',
400
- },
401
  body: JSON.stringify({
402
  user_input: inputMessage,
403
  response_length: 'medium',
@@ -406,68 +412,50 @@ const handleNewChat = async (sessionId = null) => {
406
  });
407
 
408
  if (!response.ok) {
409
- throw new Error(`HTTP error! Status: ${response.status}`);
410
  }
411
 
 
412
  const data = await response.json();
413
-
414
- // Handle clarification needed case
415
- if (data.type === 'clarification_needed') {
416
- const clarificationMessage = {
417
- id: generateMessageId(),
418
- type: 'clarification',
419
- content: data.message,
420
- suggestions: data.suggestions || [],
421
- timestamp: new Date()
422
- };
423
-
424
- setMessages(prev => [...prev, clarificationMessage]);
425
- await saveMessageToSession(clarificationMessage);
426
-
427
- } else if (data.type === 'sequential_responses' && data.responses) {
428
- // Handle normal advisor responses
429
- const advisorMessages = data.responses.map((advisor) => ({
430
  id: generateMessageId(),
431
  type: 'advisor',
432
- advisorId: advisor.persona_id,
433
- advisorName: advisor.persona,
434
- content: advisor.response,
435
- timestamp: new Date()
 
 
436
  }));
437
 
438
- setMessages(prev => [...prev, ...advisorMessages]);
439
-
440
- // Save each advisor message to database
441
- for (const advisorMessage of advisorMessages) {
442
- await saveMessageToSession(advisorMessage);
 
 
 
 
 
443
  }
444
-
445
- } else if (data.type === 'error') {
446
- const errorMessage = {
447
- id: generateMessageId(),
448
- type: 'error',
449
- content: data.responses?.[0]?.response || 'An error occurred. Please try again.',
450
- timestamp: new Date()
451
- };
452
- setMessages(prev => [...prev, errorMessage]);
453
- await saveMessageToSession(errorMessage);
454
  }
455
 
456
  } catch (error) {
457
  console.error('Error sending message:', error);
458
- const errorMessage = {
459
  id: generateMessageId(),
460
  type: 'error',
461
- content: 'Sorry, I encountered an error. Please try again.',
462
  timestamp: new Date()
463
- };
464
- setMessages(prev => [...prev, errorMessage]);
465
- await saveMessageToSession(errorMessage);
 
466
  }
467
-
468
- setIsLoading(false);
469
- setThinkingAdvisors([]);
470
- setReplyingTo(null);
471
  };
472
 
473
  const handleReplyToAdvisor = async (inputMessage, replyContext) => {
@@ -486,7 +474,7 @@ const handleNewChat = async (sessionId = null) => {
486
  type: 'user',
487
  content: inputMessage,
488
  replyTo: {
489
- advisorId: replyContext.advisorId,
490
  advisorName: replyContext.advisorName,
491
  messageId: replyContext.messageId
492
  },
@@ -499,7 +487,7 @@ const handleNewChat = async (sessionId = null) => {
499
  await saveMessageToSession(replyMessage, sessionId);
500
 
501
  setIsLoading(true);
502
- setThinkingAdvisors([replyContext.advisorId]);
503
 
504
  try {
505
  const response = await fetch('http://localhost:8000/reply-to-advisor', {
@@ -509,7 +497,7 @@ const handleNewChat = async (sessionId = null) => {
509
  },
510
  body: JSON.stringify({
511
  user_input: inputMessage,
512
- advisor_id: replyContext.advisorId,
513
  original_message_id: replyContext.messageId,
514
  chat_session_id: sessionId // Use confirmed session ID
515
  }),
@@ -650,9 +638,9 @@ const handleNewChat = async (sessionId = null) => {
650
  };
651
 
652
  const handleReplyToMessage = (message) => {
653
- const advisor = advisors[message.advisorId];
654
  setReplyingTo({
655
- advisorId: message.advisorId,
656
  messageId: message.id,
657
  advisorName: advisor.name
658
  });
@@ -660,9 +648,9 @@ const handleNewChat = async (sessionId = null) => {
660
 
661
  const handleMessageClick = (message) => {
662
  if (message.type === 'advisor') {
663
- const advisor = advisors[message.advisorId];
664
  setReplyingTo({
665
- advisorId: message.advisorId,
666
  messageId: message.id,
667
  advisorName: advisor.name
668
  });
@@ -924,7 +912,7 @@ const handleNewChat = async (sessionId = null) => {
924
  onFileUploaded={handleFileUploaded}
925
  uploadedDocuments={uploadedDocuments}
926
  isLoading={isLoading}
927
- currentSessionId={currentSessionId}
928
  authToken={authToken}
929
  placeholder={
930
  replyingTo
 
393
  setThinkingAdvisors(['system']);
394
 
395
  try {
396
+ const headers = {
397
+ 'Content-Type': 'application/json',
398
+ 'Authorization': `Bearer ${authToken}`,
399
+ };
400
+
401
+
402
+ console.log('Sending message with session ID:', currentSessionId); // Debug log
403
+
404
  const response = await fetch('http://localhost:8000/chat-sequential', {
405
  method: 'POST',
406
+ headers: headers,
 
 
407
  body: JSON.stringify({
408
  user_input: inputMessage,
409
  response_length: 'medium',
 
412
  });
413
 
414
  if (!response.ok) {
415
+ throw new Error(`HTTP error! status: ${response.status}`);
416
  }
417
 
418
+ // Rest of the function remains the same...
419
  const data = await response.json();
420
+
421
+ // Process responses...
422
+ if (data.responses && Array.isArray(data.responses)) {
423
+ const newResponses = data.responses.map(response => ({
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  id: generateMessageId(),
425
  type: 'advisor',
426
+ advisor: response.persona_id,
427
+ content: response.content,
428
+ timestamp: new Date(),
429
+ advisorName: response.persona_name || response.persona_id,
430
+ used_documents: response.used_documents || false,
431
+ document_chunks_used: response.document_chunks_used || 0
432
  }));
433
 
434
+ setMessages(prev => [...prev, ...newResponses]);
435
+
436
+ // Save advisor responses to database
437
+ for (const response of newResponses) {
438
+ await saveMessageToSession(response);
439
+ }
440
+
441
+ // Log session debug info if available
442
+ if (data.session_debug) {
443
+ console.log('Session debug info:', data.session_debug);
444
  }
 
 
 
 
 
 
 
 
 
 
445
  }
446
 
447
  } catch (error) {
448
  console.error('Error sending message:', error);
449
+ setMessages(prev => [...prev, {
450
  id: generateMessageId(),
451
  type: 'error',
452
+ content: `Failed to send message: ${error.message}`,
453
  timestamp: new Date()
454
+ }]);
455
+ } finally {
456
+ setIsLoading(false);
457
+ setThinkingAdvisors([]);
458
  }
 
 
 
 
459
  };
460
 
461
  const handleReplyToAdvisor = async (inputMessage, replyContext) => {
 
474
  type: 'user',
475
  content: inputMessage,
476
  replyTo: {
477
+ advisorId: replyContext.persona_id,
478
  advisorName: replyContext.advisorName,
479
  messageId: replyContext.messageId
480
  },
 
487
  await saveMessageToSession(replyMessage, sessionId);
488
 
489
  setIsLoading(true);
490
+ setThinkingAdvisors([replyContext.persona_id]);
491
 
492
  try {
493
  const response = await fetch('http://localhost:8000/reply-to-advisor', {
 
497
  },
498
  body: JSON.stringify({
499
  user_input: inputMessage,
500
+ advisor_id: replyContext.persona_id,
501
  original_message_id: replyContext.messageId,
502
  chat_session_id: sessionId // Use confirmed session ID
503
  }),
 
638
  };
639
 
640
  const handleReplyToMessage = (message) => {
641
+ const advisor = advisors[message.persona_id];
642
  setReplyingTo({
643
+ advisorId: message.persona_id,
644
  messageId: message.id,
645
  advisorName: advisor.name
646
  });
 
648
 
649
  const handleMessageClick = (message) => {
650
  if (message.type === 'advisor') {
651
+ const advisor = advisors[message.persona_id];
652
  setReplyingTo({
653
+ advisorId: message.persona_id,
654
  messageId: message.id,
655
  advisorName: advisor.name
656
  });
 
912
  onFileUploaded={handleFileUploaded}
913
  uploadedDocuments={uploadedDocuments}
914
  isLoading={isLoading}
915
+ currentChatSessionId={currentSessionId}
916
  authToken={authToken}
917
  placeholder={
918
  replyingTo