feat(media): 为媒体素材库添加分页加载功能

- 新增 PaginatedResult 泛型类型统一分页返回数据结构
- 重构后端媒体素材列表接口,支持分页参数并返回完整分页信息
- 前端媒体素材页面添加分页控件,适配分页加载逻辑
- 上传素材后自动重置页码至第一页并重新加载列表
- 更新接口文档和用户文档,补充分页API使用规范
- 新增对应测试用例覆盖分页接口与前端调用逻辑
This commit is contained in:
duanshuwen committed 2026-08-27 15:45:46 +08:00
1 parent 68d2b88c04
commit c381eb8b38
9 files changed
+132 -14

No files matched your search

+33
View File
@@ -590,6 +590,39 @@ def test_admin_media_upload_rejects_non_image_file():
assert not fake_db.committed
def test_admin_media_assets_endpoint_returns_paginated_results():
assets = [
MediaAsset(
id="asset-1",
url="https://cdn.example.test/asset-1.jpg",
name="asset-1.jpg",
mimeType="image/jpeg",
sizeBytes=1024,
group="general",
createdAt=datetime(2026, 1, 2),
updatedAt=datetime(2026, 1, 2),
)
]
fake_db = FakeDb(scalar_results=[assets], scalar_values=[3])
app = authenticated_app(fake_db)
try:
response = TestClient(app).get(
"/api/admin/media-assets",
params={"pageNum": 2, "pageSize": 1},
)
finally:
app.dependency_overrides.clear()
assert response.status_code == 200
body = response.json()["data"]
assert body["items"][0]["id"] == "asset-1"
assert body["total"] == 3
assert body["pageNum"] == 2
assert body["pageSize"] == 1
assert len(fake_db.scalar_statements) == 2
def test_admin_leads_endpoint_accepts_source_keyword_and_created_range_filters():
fake_db = FakeDb(scalar_results=[[]])
app = authenticated_app(fake_db)