新增查看站点概况
This commit is contained in:
@@ -90,4 +90,10 @@ from .model_base import (
|
||||
MCPRequestBase,
|
||||
MCPResponseBase,
|
||||
ResponseBase,
|
||||
# Admin Summary DTO
|
||||
MetricsSummary,
|
||||
LicenseInfo,
|
||||
VersionInfo,
|
||||
AdminSummaryData,
|
||||
AdminSummaryResponse,
|
||||
)
|
||||
@@ -1,16 +1,107 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from enum import StrEnum
|
||||
|
||||
from sqlmodel import Field
|
||||
|
||||
from .base import SQLModelBase
|
||||
|
||||
|
||||
class ResponseBase(SQLModelBase):
|
||||
"""通用响应模型"""
|
||||
|
||||
instance_id: uuid.UUID = Field(default_factory=uuid.uuid4)
|
||||
"""实例ID,用于标识请求的唯一性"""
|
||||
|
||||
|
||||
# ==================== Admin Summary DTO ====================
|
||||
|
||||
|
||||
class MetricsSummary(SQLModelBase):
|
||||
"""站点统计摘要"""
|
||||
|
||||
dates: list[datetime]
|
||||
"""日期列表"""
|
||||
|
||||
files: list[int]
|
||||
"""每日新增文件数"""
|
||||
|
||||
users: list[int]
|
||||
"""每日新增用户数"""
|
||||
|
||||
shares: list[int]
|
||||
"""每日新增分享数"""
|
||||
|
||||
file_total: int
|
||||
"""文件总数"""
|
||||
|
||||
user_total: int
|
||||
"""用户总数"""
|
||||
|
||||
share_total: int
|
||||
"""分享总数"""
|
||||
|
||||
entities_total: int
|
||||
"""实体总数"""
|
||||
|
||||
generated_at: datetime
|
||||
"""生成时间"""
|
||||
|
||||
|
||||
class LicenseInfo(SQLModelBase):
|
||||
"""许可证信息"""
|
||||
|
||||
expired_at: datetime
|
||||
"""过期时间"""
|
||||
|
||||
signed_at: datetime
|
||||
"""签发时间"""
|
||||
|
||||
root_domains: list[str]
|
||||
"""根域名列表"""
|
||||
|
||||
domains: list[str]
|
||||
"""域名列表"""
|
||||
|
||||
vol_domains: list[str]
|
||||
"""卷域名列表"""
|
||||
|
||||
|
||||
class VersionInfo(SQLModelBase):
|
||||
"""版本信息"""
|
||||
|
||||
version: str
|
||||
"""版本号"""
|
||||
|
||||
pro: bool
|
||||
"""是否为专业版"""
|
||||
|
||||
commit: str
|
||||
"""提交哈希"""
|
||||
|
||||
|
||||
class AdminSummaryData(SQLModelBase):
|
||||
"""管理员概况数据"""
|
||||
|
||||
metrics_summary: MetricsSummary
|
||||
"""统计摘要"""
|
||||
|
||||
site_urls: list[str]
|
||||
"""站点URL列表"""
|
||||
|
||||
license: LicenseInfo
|
||||
"""许可证信息"""
|
||||
|
||||
version: VersionInfo
|
||||
"""版本信息"""
|
||||
|
||||
|
||||
class AdminSummaryResponse(ResponseBase):
|
||||
"""管理员概况响应"""
|
||||
|
||||
data: AdminSummaryData | None = None
|
||||
"""响应数据"""
|
||||
|
||||
class MCPMethod(StrEnum):
|
||||
"""MCP 方法枚举"""
|
||||
|
||||
|
||||
@@ -84,3 +84,70 @@ class Share(SQLModelBase, TableBaseMixin):
|
||||
"""是否为目录分享(向后兼容属性)"""
|
||||
from .object import ObjectType
|
||||
return self.object.type == ObjectType.FOLDER if self.object else False
|
||||
|
||||
|
||||
# ==================== DTO 模型 ====================
|
||||
|
||||
class ShareCreateRequest(SQLModelBase):
|
||||
"""创建分享请求 DTO"""
|
||||
|
||||
object_id: UUID
|
||||
"""要分享的对象UUID"""
|
||||
|
||||
password: str | None = None
|
||||
"""分享密码(可选)"""
|
||||
|
||||
expires: datetime | None = None
|
||||
"""过期时间(可选,NULL为永不过期)"""
|
||||
|
||||
remain_downloads: int | None = None
|
||||
"""剩余下载次数(可选,NULL为不限制)"""
|
||||
|
||||
preview_enabled: bool = True
|
||||
"""是否允许预览"""
|
||||
|
||||
score: int = 0
|
||||
"""兑换此分享所需的积分"""
|
||||
|
||||
|
||||
class ShareResponse(SQLModelBase):
|
||||
"""分享响应 DTO"""
|
||||
|
||||
id: int
|
||||
"""分享ID"""
|
||||
|
||||
code: str
|
||||
"""分享码"""
|
||||
|
||||
object_id: UUID
|
||||
"""关联对象UUID"""
|
||||
|
||||
source_name: str | None
|
||||
"""源名称"""
|
||||
|
||||
views: int
|
||||
"""浏览次数"""
|
||||
|
||||
downloads: int
|
||||
"""下载次数"""
|
||||
|
||||
remain_downloads: int | None
|
||||
"""剩余下载次数"""
|
||||
|
||||
expires: datetime | None
|
||||
"""过期时间"""
|
||||
|
||||
preview_enabled: bool
|
||||
"""是否允许预览"""
|
||||
|
||||
score: int
|
||||
"""积分"""
|
||||
|
||||
created_at: datetime
|
||||
"""创建时间"""
|
||||
|
||||
is_expired: bool
|
||||
"""是否已过期"""
|
||||
|
||||
has_password: bool
|
||||
"""是否有密码"""
|
||||
|
||||
Reference in New Issue
Block a user