mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-25 09:53:29 +08:00
fix: stabilize knowledge compilation navigation updates (#17345)
This commit is contained in:
@@ -1135,6 +1135,9 @@ async def rerun_agent(tenant_id):
|
||||
if 0 < doc["progress"] < 1:
|
||||
return get_data_error_result(message=f"`{doc['name']}` is processing...")
|
||||
|
||||
from rag.advanced_rag.knowlege_compile.dataset_nav import remove_dataset_nav_doc_sync
|
||||
|
||||
remove_dataset_nav_doc_sync(tenant_id, doc["kb_id"], doc["id"])
|
||||
if settings.docStoreConn.index_exist(search.index_name(tenant_id), doc["kb_id"]):
|
||||
settings.docStoreConn.delete({"doc_id": doc["id"]}, search.index_name(tenant_id), doc["kb_id"])
|
||||
doc["progress_msg"] = ""
|
||||
|
||||
@@ -1470,6 +1470,9 @@ def _run_sync(user_id: str, req):
|
||||
DocumentService.update_by_id(doc_id, info)
|
||||
if req.get("delete", False):
|
||||
TaskService.filter_delete([Task.doc_id == doc_id])
|
||||
from rag.advanced_rag.knowlege_compile.dataset_nav import remove_dataset_nav_doc_sync
|
||||
|
||||
remove_dataset_nav_doc_sync(doc_tenant_id, doc.kb_id, doc.id)
|
||||
if settings.docStoreConn.index_exist(search.index_name(doc_tenant_id), doc.kb_id):
|
||||
settings.docStoreConn.delete({"doc_id": doc_id}, search.index_name(doc_tenant_id), doc.kb_id)
|
||||
|
||||
@@ -1580,6 +1583,9 @@ async def parse_documents(tenant_id, dataset_id):
|
||||
|
||||
DocumentService.update_by_id(doc_id, info)
|
||||
TaskService.filter_delete([Task.doc_id == doc_id])
|
||||
from rag.advanced_rag.knowlege_compile.dataset_nav import remove_dataset_nav_doc_sync
|
||||
|
||||
remove_dataset_nav_doc_sync(tenant_id, doc.kb_id, doc.id)
|
||||
if settings.docStoreConn.index_exist(search.index_name(tenant_id), doc.kb_id):
|
||||
settings.docStoreConn.delete({"doc_id": doc_id}, search.index_name(tenant_id), doc.kb_id)
|
||||
|
||||
|
||||
@@ -2452,7 +2452,10 @@ def _nav_item(row: dict) -> dict:
|
||||
payload = json.loads(row.get("content_with_weight") or "{}")
|
||||
except Exception:
|
||||
payload = {}
|
||||
is_cluster = (row.get("type_kwd") or payload.get("type")) == "nav_cluster"
|
||||
row_type = row.get("type_kwd")
|
||||
if isinstance(row_type, (list, tuple, set)):
|
||||
row_type = next(iter(row_type), None)
|
||||
is_cluster = (row_type or payload.get("type")) == "nav_cluster"
|
||||
return {
|
||||
"name": row.get("name") or "",
|
||||
"description": payload.get("description") or "",
|
||||
@@ -2551,7 +2554,8 @@ async def delete_nav(dataset_id: str, tenant_id: str):
|
||||
index_nm, _ = pack
|
||||
|
||||
try:
|
||||
deleted = settings.docStoreConn.delete(
|
||||
deleted = await thread_pool_exec(
|
||||
settings.docStoreConn.delete,
|
||||
{"compile_kwd": [_NAV_COMPILE_KWD]},
|
||||
index_nm,
|
||||
dataset_id,
|
||||
@@ -2592,16 +2596,17 @@ async def delete_nav_node(dataset_id: str, tenant_id: str, name: str):
|
||||
if not frontier:
|
||||
break
|
||||
try:
|
||||
res = settings.docStoreConn.search(
|
||||
select_fields=["name"],
|
||||
highlight_fields=[],
|
||||
condition={"compile_kwd": [_NAV_COMPILE_KWD], "parent_kwd": frontier},
|
||||
match_expressions=[],
|
||||
order_by=OrderByExpr(),
|
||||
offset=0,
|
||||
limit=10000,
|
||||
index_names=index_nm,
|
||||
knowledgebase_ids=[dataset_id],
|
||||
res = await thread_pool_exec(
|
||||
settings.docStoreConn.search,
|
||||
["name"],
|
||||
[],
|
||||
{"compile_kwd": [_NAV_COMPILE_KWD], "parent_kwd": frontier},
|
||||
[],
|
||||
OrderByExpr(),
|
||||
0,
|
||||
10000,
|
||||
index_nm,
|
||||
[dataset_id],
|
||||
)
|
||||
rows = settings.docStoreConn.get_fields(res, ["name"]) or {}
|
||||
except Exception:
|
||||
@@ -2616,7 +2621,8 @@ async def delete_nav_node(dataset_id: str, tenant_id: str, name: str):
|
||||
frontier = nxt
|
||||
|
||||
try:
|
||||
deleted = settings.docStoreConn.delete(
|
||||
deleted = await thread_pool_exec(
|
||||
settings.docStoreConn.delete,
|
||||
{"compile_kwd": [_NAV_COMPILE_KWD], "name": list(names)},
|
||||
index_nm,
|
||||
dataset_id,
|
||||
|
||||
Reference in New Issue
Block a user