From 6ce7d9a497699cb3f770a2b28446a26e82a3044d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B2=E9=B8=BF=E5=AE=87?= Date: Tue, 18 Feb 2025 20:06:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=AF=AD=E4=B9=89?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=B8=AD=E5=BF=83=E7=9B=B8=E5=85=B3=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 史鸿宇 --- apps/entities/request_data.py | 19 +++++- apps/entities/response_data.py | 110 ++++++++++++++++++++++++++++++++- 2 files changed, 125 insertions(+), 4 deletions(-) diff --git a/apps/entities/request_data.py b/apps/entities/request_data.py index d7944bb1..7a8fd1c5 100644 --- a/apps/entities/request_data.py +++ b/apps/entities/request_data.py @@ -2,17 +2,19 @@ Copyright (c) Huawei Technologies Co., Ltd. 2023-2024. All rights reserved. """ -from typing import Optional + +from typing import Any, Optional from pydantic import BaseModel, Field from apps.entities.appcenter import AppData -from apps.entities.flow_topology import EdgeItem, FlowItem, NodeItem, PositionItem +from apps.entities.flow_topology import FlowItem, PositionItem from apps.entities.task import RequestDataApp class MockRequestData(BaseModel): """POST /api/mock/chat的请求体""" + app_id: str = Field(..., description="应用ID") flow_id: str = Field(..., description="流程ID") question: str = Field(..., description="问题") @@ -81,6 +83,19 @@ class ModFavAppRequest(BaseModel): favorited: bool = Field(..., description="是否收藏") +class UpdateServiceRequest(BaseModel): + """POST /api/service 请求数据结构""" + + service_id: Optional[str] = Field(None, alias="serviceId", description="服务ID(更新时传递)") + data: dict[str, Any] = Field(..., description="对应 YAML 内容的数据对象") + + +class ModFavServiceRequest(BaseModel): + """PUT /api/service/{serviceId} 请求数据结构""" + + favorited: bool = Field(..., description="是否收藏") + + class ClientSessionData(BaseModel): """客户端Session信息""" diff --git a/apps/entities/response_data.py b/apps/entities/response_data.py index 0ecdde9a..f7eff33b 100644 --- a/apps/entities/response_data.py +++ b/apps/entities/response_data.py @@ -2,6 +2,7 @@ Copyright (c) Huawei Technologies Co., Ltd. 2023-2024. All rights reserved. """ + from typing import Any, Optional from pydantic import BaseModel, Field @@ -23,7 +24,7 @@ class ResponseData(BaseModel): code: int message: str - result: dict[str, Any] + result: Any class _GetAuthKeyMsg(BaseModel): @@ -318,43 +319,148 @@ class GetRecentAppListRsp(ResponseData): result: RecentAppList +class ServiceCardItem(BaseModel): + """语义接口中心:服务卡片数据结构""" + + service_id: str = Field(..., alias="serviceId", description="服务ID") + name: str = Field(..., description="服务名称") + description: str = Field(..., description="服务简介") + icon: str = Field(..., description="服务图标") + author: str = Field(..., description="服务作者") + favorited: bool = Field(..., description="是否已收藏") + + +class ServiceApiData(BaseModel): + """语义接口中心:服务 API 接口属性数据结构""" + + name: str = Field(..., description="接口名称") + path: str = Field(..., description="接口路径") + description: str = Field(..., description="接口描述") + + +class BaseServiceOperationMsg(BaseModel): + """语义接口中心:基础服务操作Result数据结构""" + + service_id: str = Field(..., alias="serviceId", description="服务ID") + + +class GetServiceListMsg(BaseModel): + """GET /api/service Result数据结构""" + + services: list[ServiceCardItem] = Field(..., description="解析后的服务列表") + + +class GetServiceListRsp(ResponseData): + """GET /api/service 返回数据结构""" + + result: GetServiceListMsg = Field(..., title="Result") + + +class UpdateServiceMsg(BaseModel): + """语义接口中心:服务属性数据结构""" + + service_id: str = Field(..., alias="serviceId", description="服务ID") + name: str = Field(..., description="服务名称") + apis: list[ServiceApiData] = Field(..., description="解析后的接口列表") + + +class UpdateServiceRsp(ResponseData): + """POST /api/service 返回数据结构""" + + result: UpdateServiceMsg = Field(..., title="Result") + + +class GetServiceDetailMsg(BaseModel): + """GET /api/service/{serviceId} Result数据结构""" + + service_id: str = Field(..., alias="serviceId", description="服务ID") + name: str = Field(..., description="服务名称") + apis: Optional[list[ServiceApiData]] = Field(default=None, description="解析后的接口列表") + data: Optional[dict[str, Any]] = Field(default=None, description="YAML 内容数据对象") + + +class GetServiceDetailRsp(ResponseData): + """GET /api/service/{serviceId} 返回数据结构""" + + result: GetServiceDetailMsg = Field(..., title="Result") + + +class DeleteServiceRsp(ResponseData): + """DELETE /api/service/{serviceId} 返回数据结构""" + + result: BaseServiceOperationMsg = Field(..., title="Result") + + +class ModFavServiceMsg(BaseModel): + """PUT /api/service/{serviceId} Result数据结构""" + + service_id: str = Field(..., alias="serviceId", description="服务ID") + favorited: bool = Field(..., description="是否已收藏") + + +class ModFavServiceRsp(ResponseData): + """PUT /api/service/{serviceId} 返回数据结构""" + + result: ModFavServiceMsg = Field(..., title="Result") + + class NodeServiceListMsg(BaseModel): """GET /api/flow/service result""" - services: list[NodeServiceItem] = Field(description="服务列表",default=[]) + + services: list[NodeServiceItem] = Field(description="服务列表", default=[]) + + class NodeServiceListRsp(ResponseData): """GET /api/flow/service 返回数据结构""" + result: NodeServiceListMsg + + class NodeMetaDataRsp(ResponseData): """GET /api/flow/service/node 返回数据结构""" + result: NodeMetaDataItem + class FlowStructureGetMsg(BaseModel): """GET /api/flow result""" + flow: FlowItem = Field(default=FlowItem()) focus_point: PositionItem = Field(default=PositionItem()) class FlowStructureGetRsp(ResponseData): """GET /api/flow 返回数据结构""" + result: FlowStructureGetMsg + class PutFlowReq(BaseModel): """创建/修改流拓扑结构""" + flow: FlowItem focus_point: PositionItem = Field(alias="focusPoint") + class FlowStructurePutMsg(BaseModel): """PUT /api/flow result""" + flow: FlowItem = Field(default=FlowItem()) + + class FlowStructurePutRsp(ResponseData): """PUT /api/flow 返回数据结构""" + result: FlowStructurePutMsg + class FlowStructureDeleteMsg(BaseModel): """DELETE /api/flow/ result""" + flow_id: str = Field(alias="flowId", default="") class FlowStructureDeleteRsp(ResponseData): """DELETE /api/flow/ 返回数据结构""" + result: FlowStructureDeleteMsg -- Gitee