Initial commit - DesignerCEP Project with Caddy deployment

This commit is contained in:
zuowei1216
2025-12-19 21:27:17 +08:00
commit 8ea58fe480
170 changed files with 47469 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
class UserInfo(BaseModel):
id: int
username: str
group_id: Optional[int] = None
permissions: Optional[str] = None
expire_date: Optional[datetime] = None
class Config:
from_attributes = True

View File

@@ -0,0 +1,60 @@
from pydantic import BaseModel
class UserLogin(BaseModel):
# 登录请求模型
username: str
password: str
device_id: str # 设备标识,用于限制单设备登录
class UserRegister(BaseModel):
# 注册请求模型
username: str
password: str
confirm_password: str
email: str | None = None # Optional for backward compatibility, but required for verification
code: str | None = None # 新增:验证码
device_id: str = "unknown_device" # 兼容旧前端,设为默认值,建议前端传入
class SendVerificationCodeRequest(BaseModel):
email: str
class VerifyEmailRequest(BaseModel):
username: str
code: str
class ForgotPasswordRequest(BaseModel):
email: str
class ResetPasswordRequest(BaseModel):
email: str # 新增:必须传 email 配合验证码
token: str # 这里是 6 位数字验证码
new_password: str
confirm_password: str
class Token(BaseModel):
# 登录/注册成功返回的令牌模型
access_token: str
token_type: str
username: str
class UserLogout(BaseModel):
# 登出请求模型
username: str
device_id: str
class UserHeartbeat(BaseModel):
# 心跳请求模型(更新最近在线时间)
username: str
device_id: str
class VerifyRequest(BaseModel):
"""验证请求模型"""
username: str
device_id: str
timestamp: int
class VerifyResponse(BaseModel):
"""验证响应模型"""
valid: bool
username: str | None = None
expire_date: str | None = None

View File

@@ -0,0 +1,28 @@
from typing import List, Optional
from pydantic import BaseModel
from datetime import date, datetime
class CheckUpdateData(BaseModel):
version: str
download_url: str
force_update: bool
is_expired: bool
class CheckUpdateResponse(BaseModel):
code: int
data: CheckUpdateData
message: str
class LoginData(BaseModel):
token: str
username: str
expire_date: Optional[str] # YYYY-MM-DD
permissions: List[str]
class LoginResponse(BaseModel):
code: int
data: LoginData
message: str
class CheckUpdateRequest(BaseModel):
username: str

View File

@@ -0,0 +1,19 @@
from typing import Optional
from pydantic import BaseModel
class PluginGroupBase(BaseModel):
name: str
current_version_file: Optional[str] = None
comment: Optional[str] = None
class PluginGroupCreate(PluginGroupBase):
pass
class PluginGroupUpdate(PluginGroupBase):
name: Optional[str] = None
class PluginGroup(PluginGroupBase):
id: int
class Config:
from_attributes = True