fix(P1): 素材列表status默认过滤 + page/page_size分页支持 #532
Reference in New Issue
Block a user
Delete Branch "fix/p1-asset-list-status-and-pagination"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
改动内容
status默认过滤:列表接口默认仅返回
status=ready的素材,自动排除 deleted/uploading/processing/error?status=ready,uploadingstatus=all返回所有状态(含 deleted)page/page_size分页支持:新增
page+page_size参数,优先于原有的skip/limitpage从1开始repository层增强:
find_by_project/find_by_library/find_by_library_and_file_type/count_by_project/count_by_project_ids统一增加status过滤参数修复的问题
CI全绿,自动审批通过。
CI全绿,自动审批通过。
927f216be4to24f3726314🚀 预览环境已部署
代码审查结果 - PR #532
⚠️ 问题(3个需要修改)
total = len(items)计算的是当前页返回的数据量,而非符合条件的总记录数。这会导致前端分页组件显示错误的页数(例如总条数等于每页条数)。total统计范围与items数据范围不一致。items是通过find_by_library获取的(仅包含指定素材库的数据),而total是通过count_by_project获取的(包含整个项目的所有素材库数据)。这会导致返回的总数远大于实际列表数据量。kind(文件类型)筛选时,调用find_by_project未指定limit,使用了默认值 100。如果匹配kind的素材位于前 100 条数据之后,将导致查询结果为空,造成严重的数据丢失。💡 建议(2个可选)
AssetRepository接口中增加count_by_library和count_by_library_and_file_type方法,以便准确获取特定条件下的总数,解决上述分页统计问题。kind(file_type) 的过滤逻辑下沉到数据库层(SQLAlchemy),避免在 Python 内存中加载大量数据进行过滤(尤其是当前存在 limit 限制导致数据不全的问题)。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 18:47:34 | 模型:
🗑️ 预览环境已清理
PR #532 已关闭或合并,对应的预览环境已被清理。