本次提交包含多类优化:
1. 移除多个路由文件中多余的空导入行,统一代码格式
2. 重构Query参数定义,将长参数拆分为多行提升可读性
3. 新增多个业务端点:
- 渠道能力画像矩阵查询CAP-03
- 配对审批计数接口用于待办角标
- 批量查询对端目录资料接口
- 向导扫码登录相关端点
- 会话实时事件SSE推送端点
- 工作台待办统计接口
4. 完善异常处理逻辑,补充OperationTimeoutError导入并优化NotImplementedError的细节返回
5. 调整路由导入顺序,修复动态路由路径冲突隐患
6. 更新文档注释与接口清单,修正部分接口描述细节
85 lines
3.1 KiB
Python
85 lines
3.1 KiB
Python
"""能力查询路由(CAP-01~CAP-03)。
|
||
|
||
统一采用模板 A(控制面端口路由):鉴权依赖 get_admin_user,
|
||
调用 use_cases.capability_query.<method>,raiseOnControlFailure 转译失败,
|
||
serialize_control_data 序列化响应。
|
||
路径设计:静态跨渠道查询先于动态路径声明,避免静态路径被动态参数捕获。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from typing import Any
|
||
|
||
from fastapi import APIRouter, Depends, Request
|
||
from yuxi.channels.contract.dtos.channel import ChannelType
|
||
from yuxi.storage.postgres.models_business import User
|
||
|
||
from server.routers.channels import (
|
||
build_operator,
|
||
get_channel_use_cases,
|
||
raiseOnControlFailure,
|
||
serialize_control_data,
|
||
)
|
||
from server.utils.auth_middleware import get_admin_user
|
||
|
||
capability_router = APIRouter(tags=["channels-capability"])
|
||
|
||
|
||
@capability_router.get("/capabilities", response_model=dict)
|
||
async def list_capabilities(
|
||
request: Request,
|
||
use_cases=Depends(get_channel_use_cases),
|
||
current_user: User = Depends(get_admin_user),
|
||
) -> dict[str, Any]:
|
||
"""列出所有渠道能力声明(CAP-01)。对应控制面操作 capability/list。
|
||
|
||
聚合 PluginRegistry 中所有插件的 manifest.capabilities,返回
|
||
渠道类型 → 能力声明的映射。无插件的渠道不出现在结果中。
|
||
"""
|
||
operator = build_operator(current_user, request)
|
||
result = await use_cases.capability_query.listCapabilities(
|
||
operator=operator,
|
||
)
|
||
raiseOnControlFailure(result)
|
||
return {"success": True, "data": serialize_control_data(result.data)}
|
||
|
||
|
||
@capability_router.get("/capabilities/matrix", response_model=dict)
|
||
async def list_capability_matrix(
|
||
request: Request,
|
||
use_cases=Depends(get_channel_use_cases),
|
||
current_user: User = Depends(get_admin_user),
|
||
) -> dict[str, Any]:
|
||
"""列出所有渠道能力画像矩阵(CAP-03)。对应控制面操作 capability/matrix。
|
||
|
||
返回每个插件的完整 ``ChannelCapabilityProfile``,包含静态能力声明、
|
||
运行时可用性、插件元数据与配置 schema,供能力查询页渲染高密度矩阵。
|
||
"""
|
||
operator = build_operator(current_user, request)
|
||
result = await use_cases.capability_query.listCapabilityMatrix(
|
||
operator=operator,
|
||
)
|
||
raiseOnControlFailure(result)
|
||
return {"success": True, "data": serialize_control_data(result.data)}
|
||
|
||
|
||
@capability_router.get("/capabilities/{channel_type}", response_model=dict)
|
||
async def get_capability(
|
||
channel_type: ChannelType,
|
||
request: Request,
|
||
use_cases=Depends(get_channel_use_cases),
|
||
current_user: User = Depends(get_admin_user),
|
||
) -> dict[str, Any]:
|
||
"""查询单渠道能力详情(CAP-02)。对应控制面操作 capability/get。
|
||
|
||
返回指定渠道类型的完整 ChannelCapabilities 声明。
|
||
渠道未绑定插件抛 NotFoundError。
|
||
"""
|
||
operator = build_operator(current_user, request)
|
||
result = await use_cases.capability_query.getCapability(
|
||
channel_type=channel_type,
|
||
operator=operator,
|
||
)
|
||
raiseOnControlFailure(result)
|
||
return {"success": True, "data": serialize_control_data(result.data)}
|