init: 从 /root/zikai 根目录迁入

把原本散落在 /root/zikai 的 FastAPI 服务整理到 server/ 子目录,
开启独立 git 与 venv。运行时数据(config.yaml / keys / uploads)
按 .gitignore 留在工作目录但不入仓。
This commit is contained in:
zikai
2026-06-23 16:17:31 +00:00
commit 80b96d236f
31 changed files with 1491 additions and 0 deletions

13
app/schemas/__init__.py Normal file
View File

@@ -0,0 +1,13 @@
"""请求 / 响应的 Pydantic DTO。"""
from .file import FileListResponse, FileUploadResponse, UploadedFileOut
from .system import DiskUsage, MemoryUsage, SystemStatus
__all__ = [
"DiskUsage",
"FileListResponse",
"FileUploadResponse",
"MemoryUsage",
"SystemStatus",
"UploadedFileOut",
]

35
app/schemas/file.py Normal file
View File

@@ -0,0 +1,35 @@
"""文件接口 DTO。"""
from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
class UploadedFileOut(BaseModel):
id: int
storage_path: str
original_filename: str
content_type: str
size_bytes: int
sha256: str
source: str
uploaded_by: str
uploaded_at: datetime
model_config = {"from_attributes": True}
class FileUploadResponse(BaseModel):
id: int = Field(..., description="新写入的数据库行 ID")
filename: str = Field(..., description="客户端原始文件名")
size_bytes: int
sha256: str
storage_path: str
uploaded_at: datetime
class FileListResponse(BaseModel):
total: int
items: list[UploadedFileOut]

31
app/schemas/system.py Normal file
View File

@@ -0,0 +1,31 @@
"""系统状态接口 DTO。"""
from __future__ import annotations
from pydantic import BaseModel, Field
class MemoryUsage(BaseModel):
total: int = Field(..., description="物理内存总量(字节)")
available: int = Field(..., description="可用内存(字节)")
used: int = Field(..., description="已用内存(字节)")
percent: float = Field(..., description="使用率 0-100")
class DiskUsage(BaseModel):
device: str
mountpoint: str
fstype: str
total: int
used: int
free: int
percent: float
class SystemStatus(BaseModel):
hostname: str
cpu_percent: float = Field(..., description="CPU 使用率(所有核平均)")
cpu_count: int
memory: MemoryUsage
disks: list[DiskUsage]
uptime_seconds: float