feat: OTA热更新 — 版本检测API + App端WGT下载安装 + app_versions表
This commit is contained in:
@ -5,6 +5,7 @@ from app.models.product import Product
|
||||
from app.models.task import Task, TaskRecord
|
||||
from app.models.task_log import TaskLog
|
||||
from app.models.notification import Notification
|
||||
from app.models.app_version import AppVersion
|
||||
__all__ = [
|
||||
"Base",
|
||||
"ProductionOrder",
|
||||
@ -13,4 +14,5 @@ __all__ = [
|
||||
"TaskRecord",
|
||||
"TaskLog",
|
||||
"Notification",
|
||||
"AppVersion",
|
||||
]
|
||||
|
||||
44
backend/app/models/app_version.py
Normal file
44
backend/app/models/app_version.py
Normal file
@ -0,0 +1,44 @@
|
||||
"""App 版本管理模型 — 用于 OTA 热更新"""
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from sqlalchemy import String, DateTime, Boolean, Text, Integer
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.models.base import Base
|
||||
from app.core.time_utils import get_beijing_time
|
||||
|
||||
|
||||
class AppVersion(Base):
|
||||
__tablename__ = "app_versions"
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(
|
||||
UUID(as_uuid=True), primary_key=True, default=uuid.uuid4,
|
||||
)
|
||||
|
||||
version: Mapped[str] = mapped_column(
|
||||
String(20), nullable=False, unique=True, comment="版本号,如 T1.0.1",
|
||||
)
|
||||
|
||||
version_code: Mapped[int] = mapped_column(
|
||||
Integer, nullable=False, default=100, comment="数字版本号,用于比较",
|
||||
)
|
||||
|
||||
wgt_url: Mapped[str] = mapped_column(
|
||||
String(500), nullable=False, comment="WGT 升级包下载地址",
|
||||
)
|
||||
|
||||
description: Mapped[str | None] = mapped_column(
|
||||
Text, nullable=True, comment="更新说明",
|
||||
)
|
||||
|
||||
is_active: Mapped[bool] = mapped_column(
|
||||
Boolean, default=True, comment="是否启用",
|
||||
)
|
||||
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True), default=get_beijing_time,
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<AppVersion {self.version}>"
|
||||
Reference in New Issue
Block a user