Files
ai-agent-admin/backend-fastapi/core/application/schema.py
T
2026-06-08 18:14:59 +08:00

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