|
|
@@ -168,22 +168,23 @@ class MilvusStore:
|
|
|
return []
|
|
|
|
|
|
# 返回实体字典,包含所有字段
|
|
|
+ # 注意:时间戳需要转换为毫秒(JavaScript Date 需要)
|
|
|
return [
|
|
|
{
|
|
|
"id": hit.entity.get("id"),
|
|
|
"message_id": hit.entity.get("message_id"),
|
|
|
"task": hit.entity.get("task"),
|
|
|
"content": hit.entity.get("content"),
|
|
|
- "types": hit.entity.get("types"),
|
|
|
+ "types": list(hit.entity.get("types")) if hit.entity.get("types") else [],
|
|
|
"tags": hit.entity.get("tags"),
|
|
|
- "tag_keys": hit.entity.get("tag_keys"),
|
|
|
- "scopes": hit.entity.get("scopes"),
|
|
|
+ "tag_keys": list(hit.entity.get("tag_keys")) if hit.entity.get("tag_keys") else [],
|
|
|
+ "scopes": list(hit.entity.get("scopes")) if hit.entity.get("scopes") else [],
|
|
|
"owner": hit.entity.get("owner"),
|
|
|
- "resource_ids": hit.entity.get("resource_ids"),
|
|
|
+ "resource_ids": list(hit.entity.get("resource_ids")) if hit.entity.get("resource_ids") else [],
|
|
|
"source": hit.entity.get("source"),
|
|
|
"eval": hit.entity.get("eval"),
|
|
|
- "created_at": hit.entity.get("created_at"),
|
|
|
- "updated_at": hit.entity.get("updated_at"),
|
|
|
+ "created_at": hit.entity.get("created_at") * 1000 if hit.entity.get("created_at") else None,
|
|
|
+ "updated_at": hit.entity.get("updated_at") * 1000 if hit.entity.get("updated_at") else None,
|
|
|
}
|
|
|
for hit in results[0]
|
|
|
]
|
|
|
@@ -206,6 +207,23 @@ class MilvusStore:
|
|
|
"source", "eval", "created_at", "updated_at"],
|
|
|
limit=limit
|
|
|
)
|
|
|
+
|
|
|
+ # 转换时间戳为毫秒,确保数组字段格式正确
|
|
|
+ for r in results:
|
|
|
+ if r.get("created_at"):
|
|
|
+ r["created_at"] = r["created_at"] * 1000
|
|
|
+ if r.get("updated_at"):
|
|
|
+ r["updated_at"] = r["updated_at"] * 1000
|
|
|
+ # 确保数组字段是列表格式
|
|
|
+ if r.get("types") and not isinstance(r["types"], list):
|
|
|
+ r["types"] = list(r["types"])
|
|
|
+ if r.get("tag_keys") and not isinstance(r["tag_keys"], list):
|
|
|
+ r["tag_keys"] = list(r["tag_keys"])
|
|
|
+ if r.get("scopes") and not isinstance(r["scopes"], list):
|
|
|
+ r["scopes"] = list(r["scopes"])
|
|
|
+ if r.get("resource_ids") and not isinstance(r["resource_ids"], list):
|
|
|
+ r["resource_ids"] = list(r["resource_ids"])
|
|
|
+
|
|
|
return results
|
|
|
|
|
|
def get_by_id(self, knowledge_id: str) -> Optional[Dict]:
|
|
|
@@ -224,7 +242,26 @@ class MilvusStore:
|
|
|
"tags", "tag_keys", "scopes", "owner", "resource_ids",
|
|
|
"source", "eval", "created_at", "updated_at"]
|
|
|
)
|
|
|
- return results[0] if results else None
|
|
|
+
|
|
|
+ if not results:
|
|
|
+ return None
|
|
|
+
|
|
|
+ # 转换时间戳和数组字段
|
|
|
+ r = results[0]
|
|
|
+ if r.get("created_at"):
|
|
|
+ r["created_at"] = r["created_at"] * 1000
|
|
|
+ if r.get("updated_at"):
|
|
|
+ r["updated_at"] = r["updated_at"] * 1000
|
|
|
+ if r.get("types") and not isinstance(r["types"], list):
|
|
|
+ r["types"] = list(r["types"])
|
|
|
+ if r.get("tag_keys") and not isinstance(r["tag_keys"], list):
|
|
|
+ r["tag_keys"] = list(r["tag_keys"])
|
|
|
+ if r.get("scopes") and not isinstance(r["scopes"], list):
|
|
|
+ r["scopes"] = list(r["scopes"])
|
|
|
+ if r.get("resource_ids") and not isinstance(r["resource_ids"], list):
|
|
|
+ r["resource_ids"] = list(r["resource_ids"])
|
|
|
+
|
|
|
+ return r
|
|
|
|
|
|
def update(self, knowledge_id: str, updates: Dict):
|
|
|
"""
|