Files
meijiaka-zy/python-api/app/schemas/update.py
T
小鱼开发 cb56698836 feat: 应用自动更新系统 + 草稿箱删除 + 分类缓存优化
- 新增 Tauri 自动更新(updater 插件)
  - Rust: 集成 tauri-plugin-updater + tauri-plugin-process
  - 后端: app_releases / release_packages 表 + /update/check API
  - 前端: UpdateDialog 组件 + useUpdater hook + SystemUpdate 手动检查
  - 发版脚本: scripts/publish_release.py(扫描 .sig → 上传七牛云 → 写入数据库)
  - 配置 test 环境域名 dev.tapi.meijiaka.cn

- 草稿箱删除功能
  - DraftListItem 添加删除按钮
  - MyWorks 添加删除确认弹窗 + localProjectApi.deleteProject 调用

- 创作主题分类本地缓存
  - scriptApi.getCategoriesCached() 先读 localStorage 再静默刷新

- TermsModal tab 居中

- 更新应用图标(Big Sur 风格圆角矩形)

- 清理: 删除未使用文件 create_user.py / video-replace-mvp.py / DEPS_*.md
2026-05-15 16:41:57 +08:00

81 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
应用更新 Schema
===============
Tauri updater 插件所需的请求/响应模型。
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field
class PackageInfo(BaseModel):
"""包信息"""
platform: str
architecture: str
filename: str
file_url: str
file_size: int
signature: str
class ReleaseCreate(BaseModel):
"""创建版本发布请求"""
version: str = Field(..., description="版本号(语义化版本)", examples=["1.6.0"])
notes: str = Field(default="", description="更新说明(支持换行)")
mandatory: bool = Field(default=False, description="是否强制更新")
packages: list[PackageInfo]
class ReleaseResponse(BaseModel):
"""版本发布响应"""
id: int
version: str
release_date: datetime
notes: str
mandatory: bool
created_at: datetime
packages: list[PackageInfo]
class ReleaseListItem(BaseModel):
"""版本列表项"""
id: int
version: str
release_date: datetime
notes: str
mandatory: bool
package_count: int
# ------------------------------------------------------------------
# Tauri updater 插件所需的 JSON 格式
# ------------------------------------------------------------------
class TauriPlatformInfo(BaseModel):
"""Tauri updater 单平台信息"""
url: str = Field(..., description="安装包下载地址")
signature: str = Field(..., description="Ed25519 签名内容(.sig 文件全文)")
class TauriUpdateResponse(BaseModel):
"""Tauri updater 检查更新响应
参考:https://tauri.app/plugin/updater/
"""
version: str = Field(..., description="新版本号")
notes: str = Field(default="", description="更新说明")
pub_date: Optional[str] = Field(default=None, description="发布时间(RFC 3339")
mandatory: bool = Field(default=False, description="是否强制更新(自定义扩展字段)")
platforms: dict[str, TauriPlatformInfo] = Field(
..., description="平台安装包映射,key 格式:OS-ARCH"
)