fix: list_datasets 改为本地表分页,修复 page_size 超限 500
去掉 service 层硬编码 page_size=1000 拉取 RAGFlow 全部数据集的写法 (撞 SDK 上限 100 导致 500),改为直接从 user_datasets 表分页返回。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
2898c9c42d
commit
86bf8285e5
@ -108,7 +108,7 @@ class KnowledgeBaseService:
|
|||||||
search: str = None
|
search: str = None
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
获取用户的数据集列表(从本地数据库过滤)
|
获取用户的数据集列表(本地数据库分页)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
user_id: 用户 ID
|
user_id: 用户 ID
|
||||||
@ -123,10 +123,8 @@ class KnowledgeBaseService:
|
|||||||
|
|
||||||
pool = get_db_pool_manager().pool
|
pool = get_db_pool_manager().pool
|
||||||
|
|
||||||
# 从本地数据库获取用户的数据集 ID 列表
|
|
||||||
async with pool.connection() as conn:
|
async with pool.connection() as conn:
|
||||||
async with conn.cursor() as cursor:
|
async with conn.cursor() as cursor:
|
||||||
# 构建查询条件
|
|
||||||
where_conditions = ["user_id = %s"]
|
where_conditions = ["user_id = %s"]
|
||||||
params = [user_id]
|
params = [user_id]
|
||||||
|
|
||||||
@ -136,49 +134,33 @@ class KnowledgeBaseService:
|
|||||||
|
|
||||||
where_clause = " AND ".join(where_conditions)
|
where_clause = " AND ".join(where_conditions)
|
||||||
|
|
||||||
# 获取总数
|
|
||||||
await cursor.execute(f"""
|
await cursor.execute(f"""
|
||||||
SELECT COUNT(*) FROM user_datasets
|
SELECT COUNT(*) FROM user_datasets
|
||||||
WHERE {where_clause}
|
WHERE {where_clause}
|
||||||
""", params)
|
""", params)
|
||||||
total = (await cursor.fetchone())[0]
|
total = (await cursor.fetchone())[0]
|
||||||
|
|
||||||
# 获取分页数据
|
|
||||||
offset = (page - 1) * page_size
|
offset = (page - 1) * page_size
|
||||||
await cursor.execute(f"""
|
await cursor.execute(f"""
|
||||||
SELECT dataset_id, dataset_name, created_at
|
SELECT dataset_id, dataset_name, owner, created_at
|
||||||
FROM user_datasets
|
FROM user_datasets
|
||||||
WHERE {where_clause}
|
WHERE {where_clause}
|
||||||
ORDER BY created_at DESC
|
ORDER BY created_at DESC
|
||||||
LIMIT %s OFFSET %s
|
LIMIT %s OFFSET %s
|
||||||
""", params + [page_size, offset])
|
""", params + [page_size, offset])
|
||||||
|
|
||||||
user_datasets = await cursor.fetchall()
|
rows = await cursor.fetchall()
|
||||||
|
|
||||||
if not user_datasets:
|
items = [
|
||||||
return {
|
{
|
||||||
"items": [],
|
"dataset_id": row[0],
|
||||||
"total": 0,
|
"name": row[1],
|
||||||
"page": page,
|
"description": None,
|
||||||
"page_size": page_size
|
"owner": row[2],
|
||||||
|
"created_at": row[3],
|
||||||
}
|
}
|
||||||
|
for row in rows
|
||||||
# 获取数据集 ID 列表,从 RAGFlow 获取详情
|
]
|
||||||
dataset_ids = [row[0] for row in user_datasets]
|
|
||||||
dataset_names = {row[0]: row[1] for row in user_datasets}
|
|
||||||
|
|
||||||
# 从 RAGFlow 获取完整的数据集信息
|
|
||||||
ragflow_result = await self.repository.list_datasets(
|
|
||||||
page=1,
|
|
||||||
page_size=1000 # 获取所有数据集,然后在本地过滤
|
|
||||||
)
|
|
||||||
|
|
||||||
# 过滤出属于该用户的数据集
|
|
||||||
user_dataset_ids_set = set(dataset_ids)
|
|
||||||
items = []
|
|
||||||
for item in ragflow_result["items"]:
|
|
||||||
if item.get("dataset_id") in user_dataset_ids_set:
|
|
||||||
items.append(item)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"items": items,
|
"items": items,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user