mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-10 21:09:03 +08:00
[BREAKING CHANGE] GET to POST: enhance kb list capability (#7205)
### What problem does this PR solve? Enhance capability of `list_kbs`. Breaking change: change method from `GET` to `POST`. ### Type of change - [x] Refactoring - [x] Enhancement with breaking change
This commit is contained in:
parent
ba0e363d5a
commit
f35ff65c36
@ -157,25 +157,38 @@ def detail():
|
||||
return server_error_response(e)
|
||||
|
||||
|
||||
@manager.route('/list', methods=['GET']) # noqa: F821
|
||||
@manager.route('/list', methods=['POST']) # noqa: F821
|
||||
@login_required
|
||||
def list_kbs():
|
||||
keywords = request.args.get("keywords", "")
|
||||
page_number = int(request.args.get("page", 1))
|
||||
items_per_page = int(request.args.get("page_size", 150))
|
||||
page_number = int(request.args.get("page", 0))
|
||||
items_per_page = int(request.args.get("page_size", 0))
|
||||
parser_id = request.args.get("parser_id")
|
||||
orderby = request.args.get("orderby", "create_time")
|
||||
desc = request.args.get("desc", True)
|
||||
|
||||
req = request.get_json()
|
||||
owner_ids = req.get("owner_ids", [])
|
||||
try:
|
||||
if not owner_ids:
|
||||
tenants = TenantService.get_joined_tenants_by_user_id(current_user.id)
|
||||
tenants = [m["tenant_id"] for m in tenants]
|
||||
kbs, total = KnowledgebaseService.get_by_tenant_ids(
|
||||
[m["tenant_id"] for m in tenants], current_user.id, page_number,
|
||||
tenants, current_user.id, page_number,
|
||||
items_per_page, orderby, desc, keywords, parser_id)
|
||||
else:
|
||||
tenants = owner_ids
|
||||
kbs, total = KnowledgebaseService.get_by_tenant_ids(
|
||||
tenants, current_user.id, 0,
|
||||
0, orderby, desc, keywords, parser_id)
|
||||
kbs = [kb for kb in kbs if kb["tenant_id"] in tenants]
|
||||
if page_number and items_per_page:
|
||||
kbs = kbs[(page_number-1)*items_per_page:page_number*items_per_page]
|
||||
total = len(kbs)
|
||||
return get_json_result(data={"kbs": kbs, "total": total})
|
||||
except Exception as e:
|
||||
return server_error_response(e)
|
||||
|
||||
|
||||
@manager.route('/rm', methods=['post']) # noqa: F821
|
||||
@login_required
|
||||
@validate_request("kb_id")
|
||||
|
@ -150,6 +150,7 @@ class KnowledgebaseService(CommonService):
|
||||
cls.model.name,
|
||||
cls.model.language,
|
||||
cls.model.description,
|
||||
cls.model.tenant_id,
|
||||
cls.model.permission,
|
||||
cls.model.doc_num,
|
||||
cls.model.token_num,
|
||||
@ -184,6 +185,7 @@ class KnowledgebaseService(CommonService):
|
||||
|
||||
count = kbs.count()
|
||||
|
||||
if page_number and items_per_page:
|
||||
kbs = kbs.paginate(page_number, items_per_page)
|
||||
|
||||
return list(kbs.dicts()), count
|
||||
|
@ -15,9 +15,10 @@
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
import requests
|
||||
|
||||
HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380')
|
||||
HOST_ADDRESS = os.getenv("HOST_ADDRESS", "http://127.0.0.1:9380")
|
||||
|
||||
DATASET_NAME_LIMIT = 128
|
||||
|
||||
@ -30,10 +31,11 @@ def create_dataset(auth, dataset_name):
|
||||
return res.json()
|
||||
|
||||
|
||||
def list_dataset(auth, page_number):
|
||||
def list_dataset(auth, page_number, page_size=30):
|
||||
authorization = {"Authorization": auth}
|
||||
url = f"{HOST_ADDRESS}/v1/kb/list?page={page_number}"
|
||||
res = requests.get(url=url, headers=authorization)
|
||||
url = f"{HOST_ADDRESS}/v1/kb/list?page={page_number}&page_size={page_size}"
|
||||
json = {}
|
||||
res = requests.post(url=url, headers=authorization, json=json)
|
||||
return res.json()
|
||||
|
||||
|
||||
@ -59,37 +61,35 @@ def upload_file(auth, dataset_id, path):
|
||||
"kb_id": dataset_id,
|
||||
}
|
||||
|
||||
file = {
|
||||
'file': open(f'{path}', 'rb')
|
||||
}
|
||||
file = {"file": open(f"{path}", "rb")}
|
||||
|
||||
res = requests.post(url=url, headers=authorization, files=file, data=json_req)
|
||||
return res.json()
|
||||
|
||||
|
||||
def list_document(auth, dataset_id):
|
||||
authorization = {"Authorization": auth}
|
||||
url = f"{HOST_ADDRESS}/v1/document/list?kb_id={dataset_id}"
|
||||
res = requests.get(url=url, headers=authorization)
|
||||
return res.json()
|
||||
|
||||
|
||||
def get_docs_info(auth, doc_ids):
|
||||
authorization = {"Authorization": auth}
|
||||
json_req = {
|
||||
"doc_ids": doc_ids
|
||||
}
|
||||
json_req = {"doc_ids": doc_ids}
|
||||
url = f"{HOST_ADDRESS}/v1/document/infos"
|
||||
res = requests.post(url=url, headers=authorization, json=json_req)
|
||||
return res.json()
|
||||
|
||||
|
||||
def parse_docs(auth, doc_ids):
|
||||
authorization = {"Authorization": auth}
|
||||
json_req = {
|
||||
"doc_ids": doc_ids,
|
||||
"run": 1
|
||||
}
|
||||
json_req = {"doc_ids": doc_ids, "run": 1}
|
||||
url = f"{HOST_ADDRESS}/v1/document/run"
|
||||
res = requests.post(url=url, headers=authorization, json=json_req)
|
||||
return res.json()
|
||||
|
||||
|
||||
def parse_file(auth, document_id):
|
||||
pass
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user