ganesh-vilje commited on
Commit
db3bed8
·
1 Parent(s): 95a417d

fix: Add file metadata to messages in conversation history

Browse files

- Updated _add_and_mirror_message to accept file_metadata parameter
- Messages now include file, fileName, fileUrl fields when file is attached
- Fixed issue where file uploaded with message showed has_file: false
- Chat unified now passes file metadata when user sends message with file
- Resolves missing file info in GET /sessions/{id}/history response

Files changed (1) hide show
  1. api_routes_v2.py +19 -3
api_routes_v2.py CHANGED
@@ -601,7 +601,7 @@ def _normalize_history_for_api(chat_id: str) -> List[Message]:
601
  return normalized
602
 
603
 
604
- def _add_and_mirror_message(chat_id: str, role: str, content: str):
605
  """
606
  V3 RULE: Append message to S3 conversation.
607
  MongoDB metadata updated via _save_conversation_to_s3.
@@ -615,6 +615,15 @@ def _add_and_mirror_message(chat_id: str, role: str, content: str):
615
  "content": content if isinstance(content, str) else json.dumps(content, ensure_ascii=False),
616
  "timestamp": datetime.utcnow().isoformat() + "Z"
617
  }
 
 
 
 
 
 
 
 
 
618
  current_messages.append(new_msg)
619
 
620
  # 3. Save to S3 (this updates MongoDB metadata too)
@@ -1039,8 +1048,15 @@ async def chat_unified(
1039
  api_data = {"type": "missing_message"}
1040
  return _assistant_response_payload(chat_id, friendly, {"intent": "missing_message"}, api_data, session.get("state", "initial"))
1041
 
1042
- # Add user message
1043
- _add_and_mirror_message(chat_id, "user", message)
 
 
 
 
 
 
 
1044
  # CHANGE: maybe generate a session title after first real user message
1045
  _maybe_generate_chat_name(chat_id)
1046
 
 
601
  return normalized
602
 
603
 
604
+ def _add_and_mirror_message(chat_id: str, role: str, content: str, file_metadata: Optional[Dict[str, Any]] = None):
605
  """
606
  V3 RULE: Append message to S3 conversation.
607
  MongoDB metadata updated via _save_conversation_to_s3.
 
615
  "content": content if isinstance(content, str) else json.dumps(content, ensure_ascii=False),
616
  "timestamp": datetime.utcnow().isoformat() + "Z"
617
  }
618
+
619
+ # V3: Include file metadata if provided
620
+ if file_metadata:
621
+ new_msg["file"] = True
622
+ new_msg["fileName"] = file_metadata.get("fileName")
623
+ new_msg["fileUrl"] = file_metadata.get("fileUrl") or file_metadata.get("s3_uri")
624
+ else:
625
+ new_msg["file"] = False
626
+
627
  current_messages.append(new_msg)
628
 
629
  # 3. Save to S3 (this updates MongoDB metadata too)
 
1048
  api_data = {"type": "missing_message"}
1049
  return _assistant_response_payload(chat_id, friendly, {"intent": "missing_message"}, api_data, session.get("state", "initial"))
1050
 
1051
+ # Add user message (with file metadata if file was uploaded)
1052
+ file_meta_for_msg = None
1053
+ if file_info:
1054
+ file_meta_for_msg = {
1055
+ "fileName": file.filename if file else None,
1056
+ "fileUrl": file_info.get("s3_uri"),
1057
+ "s3_uri": file_info.get("s3_uri")
1058
+ }
1059
+ _add_and_mirror_message(chat_id, "user", message, file_metadata=file_meta_for_msg)
1060
  # CHANGE: maybe generate a session title after first real user message
1061
  _maybe_generate_chat_name(chat_id)
1062