ComfyUI-Ranking-API / models.py
ZHIWEI666's picture
Upload 4 files
c70d6e7 verified
# models.py
from pydantic import BaseModel, validator
from typing import Optional, List
class SendCodeRequest(BaseModel):
contact: str
contact_type: str
action_type: str
account: Optional[str] = None
class UserRegister(BaseModel):
account: str
password: str
email: str
phone: Optional[str] = ""
name: str
gender: str
code: str
avatarDataUrl: Optional[str] = None
age: Optional[int] = None
country: Optional[str] = None
region: Optional[str] = None
intro: Optional[str] = None
class UserLogin(BaseModel):
account: str
password: str
remember: Optional[bool] = True # 保持登录选项:True=30天, False=24小时
class UserUpdate(BaseModel):
name: Optional[str] = None
intro: Optional[str] = None
age: Optional[int] = None
birthday: Optional[str] = None # 🚀 出生日期
country: Optional[str] = None
region: Optional[str] = None
gender: Optional[str] = None
avatarDataUrl: Optional[str] = None
bannerUrl: Optional[str] = None # 🚀 个人资料卡背景图云端URL
class PasswordReset(BaseModel):
old_password: Optional[str] = None
new_password: str
verifyContact: str
verifyType: str
code: str
account: str
class CommentCreate(BaseModel):
item_id: str
author: str
content: str
reply_to_user: Optional[str] = None
parent_id: Optional[str] = None
class ItemCreate(BaseModel):
type: str
title: str
shortDesc: str
fullDesc: str
link: str
coverUrl: Optional[str] = None
imageUrls: Optional[List[str]] = []
author: str
price: int = 0
github_token: Optional[str] = None
netdisk_password: Optional[str] = None # ☁️ 网盘提取码(加密存储,购买后解密)
is_netdisk: Optional[bool] = False # ☁️ 是否为网盘资源
is_original: Optional[bool] = False # 🎨 是否为原创作品
allow_refund: Optional[bool] = True # 💸 是否支持退款(默认支持)
class ItemUpdate(BaseModel):
title: Optional[str] = None
shortDesc: Optional[str] = None
fullDesc: Optional[str] = None
link: Optional[str] = None
coverUrl: Optional[str] = None
imageUrls: Optional[List[str]] = []
price: Optional[int] = None
github_token: Optional[str] = None
netdisk_password: Optional[str] = None # ☁️ 网盘提取码
is_netdisk: Optional[bool] = None # ☁️ 是否为网盘资源
is_original: Optional[bool] = None # 🎨 是否为原创作品
allow_refund: Optional[bool] = None # 💸 是否支持退款
class FollowToggle(BaseModel):
user_id: str
target_account: str
is_active: bool
class PrivateMessage(BaseModel):
sender: str
receiver: str
content: str
class PrivacySettings(BaseModel):
follows: bool
likes: bool
favorites: bool
downloads: bool
class InteractionToggle(BaseModel):
item_id: str
user_id: str
action_type: str
is_active: bool
class RatingRequest(BaseModel):
score: int # 1-5
@validator("score")
def validate_score(cls, v):
if not isinstance(v, int):
raise ValueError("score must be an integer between 1 and 5")
if v < 1 or v > 5:
raise ValueError("score must be between 1 and 5")
return v
class RechargeRequest(BaseModel):
account: str
amount: int
method: Optional[str] = "alipay"
class PurchaseRequest(BaseModel):
account: str
item_id: str
class TipRequest(BaseModel):
sender_account: str
target_account: str
amount: int
is_anonymous: bool
item_id: Optional[str] = None # 🚀 新增:记录是为哪个作品打赏的
class WithdrawRequest(BaseModel):
account: str
amount: int
alipayAccount: str
real_name: str
code: str
# ==========================================
# 📝 任务榜数据模型
# ==========================================
class TaskCreate(BaseModel):
""" 发布新任务 """
title: str # 任务标题
description: str # 任务详情
referenceImages: Optional[List[str]] = [] # 参考图(最多6张)
referenceLink: Optional[str] = None # 参考链接
totalPrice: int # 总价格(积分)
depositRatio: int # 订金比例(10/20/30/50)
deadline: str # 截止时间 (ISO格式)
publisher: str # 发布者账号
class TaskUpdate(BaseModel):
""" 更新任务 """
title: Optional[str] = None
description: Optional[str] = None
referenceImages: Optional[List[str]] = None
referenceLink: Optional[str] = None
totalPrice: Optional[int] = None
depositRatio: Optional[int] = None
deadline: Optional[str] = None
class TaskApply(BaseModel):
""" 申请接单 """
task_id: str
applicant: str # 申请者账号
message: Optional[str] = None # 申请留言
class TaskAssign(BaseModel):
""" 指派接单者 """
task_id: str
publisher: str # 发布者(校验权限)
assignee: str # 被指派的接单者
class TaskSubmit(BaseModel):
""" 接单者提交成果 """
task_id: str
assignee: str # 接单者(校验权限)
deliverables: List[str] # 交付物图片URL列表
note: Optional[str] = None # 备注说明
class TaskAccept(BaseModel):
""" 发布者验收 """
task_id: str
publisher: str # 发布者(校验权限)
is_accepted: bool # True=验收通过, False=验收不通过
feedback: Optional[str] = None # 反馈意见
# ==========================================
# ⚖️ P3增强:任务申诉数据模型
# ==========================================
class TaskDispute(BaseModel):
""" 发起申诉 """
task_id: str # 任务ID
initiator: str # 申诉发起人(可以是发布者或接单者)
reason: str # 申诉理由
evidence: Optional[List[str]] = [] # 证据图片URL列表
class TaskDisputeResponse(BaseModel):
""" 被申诉方回应 """
dispute_id: str # 申诉ID
respondent: str # 回应人
response: str # 回应内容
evidence: Optional[List[str]] = [] # 证据图片URL列表
class TaskDisputeResolve(BaseModel):
""" 管理员仲裁 """
dispute_id: str # 申诉ID
admin_account: str # 管理员账号
result: str # 仲裁结果: support_initiator / support_respondent / split
split_ratio: Optional[int] = 50 # 分成比例(申诉方获得的百分比,仅当result=split时有效)
admin_note: Optional[str] = None # 管理员备注
# ==========================================
# 💬 讨论区数据模型(小红书风格图文社区)
# ==========================================
class PostCreate(BaseModel):
""" 创建帖子 """
title: str # 标题
content: str # 正文/文案
cover_image: str # 封面图(第一张)
images: Optional[List[str]] = [] # 图片列表(最多9张)
author: str # 作者账号
is_original: Optional[bool] = False # 🎨 是否为原创作品
post_type: str = "image" # "image" 或 "video"
video_url: Optional[str] = None # 视频 URL(仅 video 类型)
class PostUpdate(BaseModel):
""" 更新帖子 """
title: Optional[str] = None
content: Optional[str] = None
cover_image: Optional[str] = None
images: Optional[List[str]] = None
is_original: Optional[bool] = None # 🎨 是否为原创作品
post_type: Optional[str] = None # "image" 或 "video"
video_url: Optional[str] = None # 视频 URL(仅 video 类型)