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