This commit is contained in:
parent
ae462bc9dc
commit
721eeae3bb
|
@ -75,48 +75,78 @@ class KnowledgebaseService(CommonService):
|
|||
orderby, desc, keywords,
|
||||
parser_id=None
|
||||
):
|
||||
"""
|
||||
根据租户ID列表获取知识库记录的方法。
|
||||
|
||||
参数:
|
||||
joined_tenant_ids: 列表,包含用户已加入的租户ID。
|
||||
user_id: 用户ID,用于查询特定用户的知识库。
|
||||
page_number: 分页页码,用于分页显示知识库记录。
|
||||
items_per_page: 每页显示的记录数。
|
||||
orderby: 字符串,指定排序字段。
|
||||
desc: 布尔值,指示是否按降序排序。
|
||||
keywords: 字符串,用于模糊搜索知识库名称。
|
||||
parser_id: 可选参数,指定解析器ID以过滤知识库记录。
|
||||
|
||||
返回值:
|
||||
返回两个元素的元组,第一个元素是知识库记录的字典列表,第二个元素是知识库记录的总数。
|
||||
"""
|
||||
# 定义需要查询的字段
|
||||
fields = [
|
||||
cls.model.id,
|
||||
cls.model.avatar,
|
||||
cls.model.name,
|
||||
cls.model.language,
|
||||
cls.model.description,
|
||||
cls.model.permission,
|
||||
cls.model.doc_num,
|
||||
cls.model.token_num,
|
||||
cls.model.chunk_num,
|
||||
cls.model.parser_id,
|
||||
cls.model.embd_id,
|
||||
User.nickname,
|
||||
User.avatar.alias('tenant_avatar'),
|
||||
cls.model.update_time
|
||||
cls.model.id, # 知识库ID
|
||||
cls.model.avatar, # 知识库头像
|
||||
cls.model.name, # 知识库名称
|
||||
cls.model.language, # 知识库语言
|
||||
cls.model.description, # 知识库描述
|
||||
cls.model.permission, # 知识库权限
|
||||
cls.model.doc_num, # 文档数量
|
||||
cls.model.token_num, # 令牌数量
|
||||
cls.model.chunk_num, # 块数量
|
||||
cls.model.parser_id, # 解析器ID
|
||||
cls.model.embd_id, # 嵌入ID
|
||||
User.nickname, # 租户昵称
|
||||
User.avatar.alias('tenant_avatar'), # 租户头像,使用别名以便区分
|
||||
cls.model.update_time # 更新时间
|
||||
]
|
||||
|
||||
# 如果提供了关键词,则进行模糊搜索
|
||||
if keywords:
|
||||
kbs = cls.model.select(*fields).join(User, on=(cls.model.tenant_id == User.id)).where(
|
||||
# 筛选条件:租户ID在列表中且权限为团队或租户ID等于用户ID
|
||||
((cls.model.tenant_id.in_(joined_tenant_ids) & (cls.model.permission ==
|
||||
TenantPermission.TEAM.value)) | (
|
||||
cls.model.tenant_id == user_id))
|
||||
# 状态必须为有效
|
||||
& (cls.model.status == StatusEnum.VALID.value),
|
||||
# 名称包含关键词(不区分大小写)
|
||||
(fn.LOWER(cls.model.name).contains(keywords.lower()))
|
||||
)
|
||||
else:
|
||||
# 如果没有提供关键词,则不进行搜索,只筛选符合条件的知识库
|
||||
kbs = cls.model.select(*fields).join(User, on=(cls.model.tenant_id == User.id)).where(
|
||||
((cls.model.tenant_id.in_(joined_tenant_ids) & (cls.model.permission ==
|
||||
TenantPermission.TEAM.value)) | (
|
||||
cls.model.tenant_id == user_id))
|
||||
& (cls.model.status == StatusEnum.VALID.value)
|
||||
)
|
||||
|
||||
# 如果提供了解析器ID,则进一步过滤知识库记录
|
||||
if parser_id:
|
||||
kbs = kbs.where(cls.model.parser_id == parser_id)
|
||||
|
||||
# 根据desc参数决定排序方式
|
||||
if desc:
|
||||
kbs = kbs.order_by(cls.model.getter_by(orderby).desc())
|
||||
kbs = kbs.order_by(cls.model.getter_by(orderby).desc()) # 按降序排序
|
||||
else:
|
||||
kbs = kbs.order_by(cls.model.getter_by(orderby).asc())
|
||||
|
||||
kbs = kbs.order_by(cls.model.getter_by(orderby).asc()) # 按升序排序
|
||||
|
||||
# 获取知识库记录总数
|
||||
count = kbs.count()
|
||||
|
||||
|
||||
# 对查询结果进行分页
|
||||
kbs = kbs.paginate(page_number, items_per_page)
|
||||
|
||||
|
||||
# 将查询结果转换为字典列表并返回,同时返回记录总数
|
||||
return list(kbs.dicts()), count
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -29,7 +29,7 @@ services:
|
|||
retries: 120
|
||||
networks:
|
||||
- ragflow
|
||||
restart: on-failure
|
||||
restart: no
|
||||
|
||||
mysql:
|
||||
# mysql:5.7 linux/arm64 image is unavailable.
|
||||
|
@ -58,7 +58,7 @@ services:
|
|||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
restart: on-failure
|
||||
restart: no
|
||||
|
||||
minio:
|
||||
image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
|
||||
|
@ -76,7 +76,7 @@ services:
|
|||
- minio_data:/data
|
||||
networks:
|
||||
- ragflow
|
||||
restart: on-failure
|
||||
restart: no
|
||||
|
||||
redis:
|
||||
# swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/valkey/valkey:8
|
||||
|
@ -90,7 +90,7 @@ services:
|
|||
- redis_data:/data
|
||||
networks:
|
||||
- ragflow
|
||||
restart: on-failure
|
||||
restart: no
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ services:
|
|||
- MACOS=${MACOS}
|
||||
networks:
|
||||
- ragflow
|
||||
restart: on-failure
|
||||
restart: no
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
||||
|
@ -43,7 +43,7 @@ services:
|
|||
- API_BASE_URL=/api
|
||||
networks:
|
||||
- ragflow
|
||||
restart: on-failure
|
||||
restart: no
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
||||
|
@ -70,7 +70,7 @@ services:
|
|||
- MANAGEMENT_JWT_SECRET=${MANAGEMENT_JWT_SECRET:-12345678}
|
||||
networks:
|
||||
- ragflow
|
||||
restart: on-failure
|
||||
restart: no
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
deploy:
|
||||
|
|
|
@ -2,6 +2,7 @@ from flask import jsonify, request
|
|||
from services.users.service import get_users_with_pagination, delete_user, create_user, update_user, reset_user_password
|
||||
from .. import users_bp
|
||||
|
||||
|
||||
@users_bp.route('', methods=['GET'])
|
||||
def get_users():
|
||||
"""获取用户的API端点,支持分页和条件查询"""
|
||||
|
|
Loading…
Reference in New Issue