93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
应用管理Schema
|
|
"""
|
|
from datetime import datetime
|
|
from typing import Optional, List, Dict, Any
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.base_schema import CSTDatetime
|
|
|
|
|
|
class ApplicationBase(BaseModel):
|
|
"""应用基础Schema"""
|
|
name: str = Field(..., min_length=1, max_length=100, description="应用名称")
|
|
code: str = Field(..., min_length=1, max_length=100, pattern=r"^[a-zA-Z][a-zA-Z0-9_-]*$", description="应用编码")
|
|
description: Optional[str] = Field(default="", description="应用描述")
|
|
icon: Optional[str] = Field(default="", description="应用图标")
|
|
cover: Optional[str] = Field(default="", description="应用封面图URL")
|
|
app_type: Optional[str] = Field(default="mixed", description="应用类型: form/workflow/dashboard/screen/mixed/ai")
|
|
home_path: Optional[str] = Field(default=None, description="应用首页路径")
|
|
config: Optional[Dict[str, Any]] = Field(default_factory=dict, description="应用配置")
|
|
system_menu_ids: Optional[List[str]] = Field(default_factory=list, description="开发模式下显示的系统菜单ID列表")
|
|
|
|
|
|
class ApplicationCreate(ApplicationBase):
|
|
"""创建应用Schema"""
|
|
pass
|
|
|
|
|
|
class ApplicationUpdate(BaseModel):
|
|
"""更新应用Schema - 所有字段可选"""
|
|
name: Optional[str] = Field(default=None, min_length=1, max_length=100, description="应用名称")
|
|
code: Optional[str] = Field(default=None, min_length=1, max_length=100, pattern=r"^[a-zA-Z][a-zA-Z0-9_-]*$", description="应用编码")
|
|
description: Optional[str] = Field(default=None, description="应用描述")
|
|
icon: Optional[str] = Field(default=None, description="应用图标")
|
|
cover: Optional[str] = Field(default=None, description="应用封面图URL")
|
|
app_type: Optional[str] = Field(default=None, description="应用类型")
|
|
home_path: Optional[str] = Field(default=None, description="应用首页路径")
|
|
status: Optional[str] = Field(default=None, description="应用状态: draft/published/disabled")
|
|
config: Optional[Dict[str, Any]] = Field(default=None, description="应用配置")
|
|
team_ids: Optional[List[str]] = Field(default=None, description="团队成员ID列表")
|
|
system_menu_ids: Optional[List[str]] = Field(default=None, description="开发模式下显示的系统菜单ID列表")
|
|
|
|
|
|
class ApplicationResponse(ApplicationBase):
|
|
"""应用响应Schema"""
|
|
id: str
|
|
status: str = "draft"
|
|
home_path: Optional[str] = None
|
|
version: int = 1
|
|
owner_id: Optional[str] = None
|
|
team_ids: List[str] = []
|
|
system_menu_ids: Optional[List[str]] = []
|
|
sort: int = 0
|
|
is_deleted: bool = False
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
sys_update_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ApplicationListResponse(BaseModel):
|
|
"""应用列表响应Schema(简化版)"""
|
|
id: str
|
|
name: str
|
|
code: str
|
|
description: Optional[str] = ""
|
|
icon: Optional[str] = ""
|
|
cover: Optional[str] = ""
|
|
app_type: str = "mixed"
|
|
status: str = "draft"
|
|
home_path: Optional[str] = None
|
|
version: int = 1
|
|
owner_id: Optional[str] = None
|
|
system_menu_ids: Optional[List[str]] = []
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ApplicationStatsResponse(BaseModel):
|
|
"""应用统计响应Schema"""
|
|
id: str
|
|
name: str
|
|
code: str
|
|
form_count: int = 0
|
|
page_count: int = 0
|
|
workflow_count: int = 0
|
|
screen_count: int = 0
|
|
data_source_count: int = 0
|