feat: 增强知识库功能,优化索引和RAG检索
This commit is contained in:
@@ -856,7 +856,13 @@ class KnowledgeService:
|
||||
|
||||
status_payload = status_map.get(document_id) or {}
|
||||
rag_status = str(status_payload.get("status") or "").strip().lower()
|
||||
if bool(status_payload.get("query_ready")):
|
||||
linked_run_status = self._resolve_linked_ingest_run_status(entry)
|
||||
if (
|
||||
linked_run_status == AgentRunStatus.FAILED.value
|
||||
and rag_status in {"pending", "processing", "preprocessed"}
|
||||
):
|
||||
desired_status = KNOWLEDGE_INGEST_STATUS_FAILED
|
||||
elif bool(status_payload.get("query_ready")):
|
||||
desired_status = KNOWLEDGE_INGEST_STATUS_INGESTED
|
||||
elif rag_status in {"pending", "processing", "preprocessed"}:
|
||||
desired_status = KNOWLEDGE_INGEST_STATUS_SYNCING
|
||||
@@ -1007,12 +1013,22 @@ class KnowledgeService:
|
||||
probe_entry = {"ingest_status_updated_at": heartbeat_at}
|
||||
return not self._is_syncing_status_stale(probe_entry)
|
||||
|
||||
return not self._is_syncing_status_stale(entry)
|
||||
|
||||
def _require_entry(self, index: dict[str, Any], document_id: str) -> dict[str, Any]:
|
||||
for entry in index["documents"]:
|
||||
if entry["id"] == document_id:
|
||||
return entry
|
||||
return not self._is_syncing_status_stale(entry)
|
||||
|
||||
def _resolve_linked_ingest_run_status(self, entry: dict[str, Any]) -> str:
|
||||
agent_run_id = str(entry.get("ingest_agent_run_id") or "").strip()
|
||||
if not agent_run_id or self.db is None:
|
||||
return ""
|
||||
|
||||
run = self.db.scalar(select(AgentRun).where(AgentRun.run_id == agent_run_id))
|
||||
if run is None:
|
||||
return ""
|
||||
return str(run.status or "").strip()
|
||||
|
||||
def _require_entry(self, index: dict[str, Any], document_id: str) -> dict[str, Any]:
|
||||
for entry in index["documents"]:
|
||||
if entry["id"] == document_id:
|
||||
return entry
|
||||
raise FileNotFoundError(document_id)
|
||||
|
||||
def _resolve_document_path(self, entry: dict[str, Any]) -> Path:
|
||||
|
||||
Reference in New Issue
Block a user