Spaces:
Sleeping
Sleeping
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
- 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
|