- 新增 BUILD_TIMEOUT_HOURS 配置,超时自动标记失败 - 日志保存到独立 backend/logs/ 目录,不随构建目录删除 - 新增任务删除 API 及前端删除按钮 - 构建流程增加 pod install 步骤 - 通过文件传递配置避免命令行参数截断 - Provisioning Profile 支持按名称搜索 - dSYM 下载支持目录打包为 zip - 前端端口可配置、历史页增加下载列和耗时显示 - 日志弹窗支持展开/收起详细日志 - 自动生成 upload_key 标识
62 lines
1.3 KiB
Python
62 lines
1.3 KiB
Python
"""Pydantic 模型"""
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel
|
|
|
|
|
|
# 打包任务
|
|
class TaskCreate(BaseModel):
|
|
app_id: str
|
|
build_type: str
|
|
scheme_id: str
|
|
obfuscation: bool = False
|
|
branch: str = "main"
|
|
|
|
|
|
class TaskResponse(BaseModel):
|
|
id: str
|
|
app_id: str
|
|
app_name: str
|
|
build_type: str
|
|
scheme_id: str
|
|
scheme_name: str
|
|
obfuscation: bool
|
|
branch: str
|
|
status: str
|
|
current_step: Optional[str]
|
|
created_at: Optional[datetime]
|
|
started_at: Optional[datetime]
|
|
completed_at: Optional[datetime]
|
|
ipa_path: Optional[str]
|
|
oss_url: Optional[str]
|
|
dsym_path: Optional[str]
|
|
obfuscation_maps_path: Optional[str]
|
|
qr_code_path: Optional[str]
|
|
build_dir: Optional[str]
|
|
error_message: Optional[str]
|
|
error_category: Optional[str] = None
|
|
config_json: Optional[str]
|
|
has_log: bool = False
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# 登录
|
|
class LoginRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
token: str
|
|
username: str
|
|
is_admin: bool
|
|
|
|
|
|
# 打包配置
|
|
class BuildConfigUpdate(BaseModel):
|
|
max_concurrent_builds: Optional[int] = None
|
|
build_dir_retention_hours: Optional[int] = None
|
|
build_base_dir: Optional[str] = None
|