mirror of
https://github.com/open-webui/open-webui
synced 2025-02-18 02:57:02 +00:00
enh: more robust knowledge file info retrieval
This commit is contained in:
parent
5d2714bc92
commit
21a28e3bf0
@ -47,15 +47,40 @@ async def get_knowledge_items(
|
|||||||
detail=ERROR_MESSAGES.NOT_FOUND,
|
detail=ERROR_MESSAGES.NOT_FOUND,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return [
|
knowledge_bases = []
|
||||||
|
|
||||||
|
for knowledge in Knowledges.get_knowledge_items():
|
||||||
|
files = Files.get_file_metadatas_by_ids(
|
||||||
|
knowledge.data.get("file_ids", []) if knowledge.data else []
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if all files exist
|
||||||
|
if len(files) != len(knowledge.data.get("file_ids", [])):
|
||||||
|
missing_files = list(
|
||||||
|
set(knowledge.data.get("file_ids", []))
|
||||||
|
- set([file.id for file in files])
|
||||||
|
)
|
||||||
|
if missing_files:
|
||||||
|
data = knowledge.data or {}
|
||||||
|
file_ids = data.get("file_ids", [])
|
||||||
|
|
||||||
|
for missing_file in missing_files:
|
||||||
|
file_ids.remove(missing_file)
|
||||||
|
|
||||||
|
data["file_ids"] = file_ids
|
||||||
|
Knowledges.update_knowledge_by_id(
|
||||||
|
id=knowledge.id, form_data=KnowledgeUpdateForm(data=data)
|
||||||
|
)
|
||||||
|
|
||||||
|
files = Files.get_file_metadatas_by_ids(file_ids)
|
||||||
|
|
||||||
|
knowledge_bases.append(
|
||||||
KnowledgeResponse(
|
KnowledgeResponse(
|
||||||
**knowledge.model_dump(),
|
**knowledge.model_dump(),
|
||||||
files=Files.get_file_metadatas_by_ids(
|
files=files,
|
||||||
knowledge.data.get("file_ids", []) if knowledge.data else []
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
for knowledge in Knowledges.get_knowledge_items()
|
)
|
||||||
]
|
return knowledge_bases
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
|
Loading…
Reference in New Issue
Block a user