支持个人介绍编辑

This commit is contained in:
咕谷酱
2025-09-16 00:33:46 +08:00
parent 55225366dc
commit 0b43f2aad8
8 changed files with 840 additions and 2 deletions

61
app/models/userpage.py Normal file
View File

@@ -0,0 +1,61 @@
"""
用户页面编辑相关的API模型
"""
from __future__ import annotations
from pydantic import BaseModel, Field, field_validator
class UpdateUserpageRequest(BaseModel):
"""更新用户页面请求模型匹配官方osu-web格式"""
body: str = Field(
description="用户页面的BBCode原始内容",
max_length=60000,
examples=["[b]Hello![/b] This is my profile page.\n[color=blue]Blue text[/color]"]
)
@field_validator("body")
@classmethod
def validate_body_content(cls, v: str) -> str:
"""验证原始内容"""
if not v.strip():
return ""
# 基本长度验证
if len(v) > 60000:
msg = "Content too long. Maximum 60000 characters allowed."
raise ValueError(msg)
return v
class UpdateUserpageResponse(BaseModel):
"""更新用户页面响应模型匹配官方osu-web格式"""
html: str = Field(description="处理后的HTML内容")
class UserpageResponse(BaseModel):
"""用户页面响应模型包含html和raw匹配官方格式"""
html: str = Field(description="处理后的HTML内容")
raw: str = Field(description="原始BBCode内容")
class ValidateBBCodeRequest(BaseModel):
"""验证BBCode请求模型"""
content: str = Field(
description="要验证的BBCode内容",
max_length=60000
)
class ValidateBBCodeResponse(BaseModel):
"""验证BBCode响应模型"""
valid: bool = Field(description="BBCode是否有效")
errors: list[str] = Field(default_factory=list, description="错误列表")
preview: dict[str, str] = Field(description="预览内容")