feat: 统一后端分页查询与前端服务层适配

后端新增通用分页模块,为报销单、员工、预算、agent 资产等
端点统一接入分页参数和游标查询,优化 repository 层分页实
现,前端服务层适配分页响应结构,完善预算图表和全局样式,
优化侧边栏和企业选择器组件,引入 Element Plus 插件注册。
This commit is contained in:
caoxiaozhu
2026-05-29 14:11:06 +08:00
parent e080105f9f
commit 678f64d772
43 changed files with 1863 additions and 378 deletions

View File

@@ -14,6 +14,7 @@ from app.api.deps import (
require_rule_editor_user,
require_rule_reviewer_user,
)
from app.api.pagination import PageNumber, PageSize, page_payload, wants_page
from app.db.session import get_session_factory
from app.schemas.agent_asset import (
AgentAssetCreate,
@@ -43,7 +44,7 @@ from app.schemas.agent_asset import (
AgentAssetVersionRead,
AgentAssetVersionTimelineItemRead,
)
from app.schemas.common import ErrorResponse
from app.schemas.common import ErrorResponse, PaginatedResponse
from app.services.agent_assets import AgentAssetService
from app.services.risk_rule_generation_jobs import RiskRuleGenerationJobService
@@ -94,7 +95,7 @@ def _complete_risk_rule_generation_task(
@router.get(
"",
response_model=list[AgentAssetListItem],
response_model=list[AgentAssetListItem] | PaginatedResponse[AgentAssetListItem],
summary="查询 Agent 资产列表",
description="按资产类型、状态、领域和关键字筛选规则、技能、MCP 与任务资产。",
)
@@ -116,8 +117,22 @@ def list_agent_assets(
str | None,
Query(description="资产编码、名称关键字模糊查询。"),
] = None,
) -> list[AgentAssetListItem]:
return AgentAssetService(db).list_assets(
page: PageNumber = None,
page_size: PageSize = None,
) -> list[AgentAssetListItem] | PaginatedResponse[AgentAssetListItem]:
service = AgentAssetService(db)
if wants_page(page, page_size):
return page_payload(
service.list_assets_page(
asset_type=asset_type,
status=status_value,
domain=domain,
keyword=keyword,
page=page,
page_size=page_size,
)
)
return service.list_assets(
asset_type=asset_type,
status=status_value,
domain=domain,