|
21 | 21 | from flask_login import login_required, current_user |
22 | 22 | import numpy as np |
23 | 23 |
|
| 24 | + |
| 25 | +from api.db.services.connector_service import Connector2KbService |
24 | 26 | from api.db.services.llm_service import LLMBundle |
25 | 27 | from api.db.services.document_service import DocumentService, queue_raptor_o_graphrag_tasks |
26 | 28 | from api.db.services.file2document_service import File2DocumentService |
@@ -146,6 +148,8 @@ def detail(): |
146 | 148 | return get_data_error_result( |
147 | 149 | message="Can't find this knowledgebase!") |
148 | 150 | kb["size"] = DocumentService.get_total_size_by_kb_id(kb_id=kb["id"],keywords="", run_status=[], types=[]) |
| 151 | + kb["connectors"] = Connector2KbService.list_connectors(kb_id) |
| 152 | + |
149 | 153 | for key in ["graphrag_task_finish_at", "raptor_task_finish_at", "mindmap_task_finish_at"]: |
150 | 154 | if finish_at := kb.get(key): |
151 | 155 | kb[key] = finish_at.strftime("%Y-%m-%d %H:%M:%S") |
@@ -719,26 +723,30 @@ def delete_kb_task(): |
719 | 723 | if not pipeline_task_type or pipeline_task_type not in [PipelineTaskType.GRAPH_RAG, PipelineTaskType.RAPTOR, PipelineTaskType.MINDMAP]: |
720 | 724 | return get_error_data_result(message="Invalid task type") |
721 | 725 |
|
| 726 | + def cancel_task(task_id): |
| 727 | + REDIS_CONN.set(f"{task_id}-cancel", "x") |
| 728 | + |
722 | 729 | match pipeline_task_type: |
723 | 730 | case PipelineTaskType.GRAPH_RAG: |
724 | | - settings.docStoreConn.delete({"knowledge_graph_kwd": ["graph", "subgraph", "entity", "relation"]}, search.index_name(kb.tenant_id), kb_id) |
725 | 731 | kb_task_id_field = "graphrag_task_id" |
726 | 732 | task_id = kb.graphrag_task_id |
727 | 733 | kb_task_finish_at = "graphrag_task_finish_at" |
| 734 | + cancel_task(task_id) |
| 735 | + settings.docStoreConn.delete({"knowledge_graph_kwd": ["graph", "subgraph", "entity", "relation"]}, search.index_name(kb.tenant_id), kb_id) |
728 | 736 | case PipelineTaskType.RAPTOR: |
729 | 737 | kb_task_id_field = "raptor_task_id" |
730 | 738 | task_id = kb.raptor_task_id |
731 | 739 | kb_task_finish_at = "raptor_task_finish_at" |
| 740 | + cancel_task(task_id) |
| 741 | + settings.docStoreConn.delete({"raptor_kwd": ["raptor"]}, search.index_name(kb.tenant_id), kb_id) |
732 | 742 | case PipelineTaskType.MINDMAP: |
733 | 743 | kb_task_id_field = "mindmap_task_id" |
734 | 744 | task_id = kb.mindmap_task_id |
735 | 745 | kb_task_finish_at = "mindmap_task_finish_at" |
| 746 | + cancel_task(task_id) |
736 | 747 | case _: |
737 | 748 | return get_error_data_result(message="Internal Error: Invalid task type") |
738 | 749 |
|
739 | | - def cancel_task(task_id): |
740 | | - REDIS_CONN.set(f"{task_id}-cancel", "x") |
741 | | - cancel_task(task_id) |
742 | 750 |
|
743 | 751 | ok = KnowledgebaseService.update_by_id(kb_id, {kb_task_id_field: "", kb_task_finish_at: None}) |
744 | 752 | if not ok: |
@@ -883,3 +891,15 @@ def sample_random_chunks_with_vectors( |
883 | 891 | if summary["avg_cos_sim"] > 0.99: |
884 | 892 | return get_json_result(data={"summary": summary, "results": results}) |
885 | 893 | return get_json_result(code=RetCode.NOT_EFFECTIVE, message="failed", data={"summary": summary, "results": results}) |
| 894 | + |
| 895 | + |
| 896 | +@manager.route("/<kb_id>/link", methods=["POST"]) # noqa: F821 |
| 897 | +@validate_request("connector_ids") |
| 898 | +@login_required |
| 899 | +def link_connector(kb_id): |
| 900 | + req = request.json |
| 901 | + errors = Connector2KbService.link_connectors(kb_id, req["connector_ids"], current_user.id) |
| 902 | + if errors: |
| 903 | + return get_json_result(data=False, message=errors, code=RetCode.SERVER_ERROR) |
| 904 | + return get_json_result(data=True) |
| 905 | + |
0 commit comments