新增查看站点概况

This commit is contained in:
2026-01-08 14:41:10 +08:00
parent c17511d2e8
commit baf59b9903
6 changed files with 417 additions and 25 deletions

View File

@@ -90,4 +90,10 @@ from .model_base import (
MCPRequestBase,
MCPResponseBase,
ResponseBase,
# Admin Summary DTO
MetricsSummary,
LicenseInfo,
VersionInfo,
AdminSummaryData,
AdminSummaryResponse,
)

View File

@@ -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 方法枚举"""

View File

@@ -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
"""是否有密码"""