"""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""