feat(models): 添加 Score 类型定义
- 在 score.py 中定义了 Score 类,用于表示游戏分数信息
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
from enum import Enum, IntEnum
|
from enum import Enum, IntEnum
|
||||||
from typing import Any
|
from typing import Any, Optional
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from datetime import datetime
|
||||||
|
from .user import User
|
||||||
|
|
||||||
class GameMode(str, Enum):
|
class GameMode(str, Enum):
|
||||||
OSU = "osu"
|
OSU = "osu"
|
||||||
@@ -38,3 +40,61 @@ class HitResult(IntEnum):
|
|||||||
COMBO_BREAK = 16 # [Order(16)]
|
COMBO_BREAK = 16 # [Order(16)]
|
||||||
|
|
||||||
LEGACY_COMBO_INCREASE = 99 # [Order(99)] @deprecated
|
LEGACY_COMBO_INCREASE = 99 # [Order(99)] @deprecated
|
||||||
|
|
||||||
|
class Score(BaseModel):
|
||||||
|
# 基本信息
|
||||||
|
id: int
|
||||||
|
user_id: int
|
||||||
|
mode: GameMode
|
||||||
|
mode_int: int
|
||||||
|
beatmap_id: int
|
||||||
|
best_id: int
|
||||||
|
build_id: int
|
||||||
|
|
||||||
|
# 分数和准确度
|
||||||
|
score: int
|
||||||
|
accuracy: float
|
||||||
|
mods: list[APIMod]
|
||||||
|
total_score: int
|
||||||
|
|
||||||
|
# 命中统计
|
||||||
|
statistics: dict[HitResult, int]
|
||||||
|
maximum_statistics: dict[HitResult, int]
|
||||||
|
|
||||||
|
# 排名相关
|
||||||
|
rank: str # 等级 (SS, S, A, B, C, D, F)
|
||||||
|
ranked: bool
|
||||||
|
rank_country: Optional[int] = None
|
||||||
|
rank_global: Optional[int] = None
|
||||||
|
|
||||||
|
# PP值
|
||||||
|
pp: Optional[float] = None
|
||||||
|
pp_exp: Optional[float] = None
|
||||||
|
|
||||||
|
# 连击
|
||||||
|
maximum_combo: int
|
||||||
|
combo: int
|
||||||
|
|
||||||
|
# 游戏设置
|
||||||
|
is_perfect_combo: bool
|
||||||
|
passed: bool # 是否通过谱面
|
||||||
|
|
||||||
|
# 时间信息
|
||||||
|
started_at: datetime
|
||||||
|
ended_at: datetime
|
||||||
|
|
||||||
|
# 最佳成绩相关
|
||||||
|
best_id: Optional[int] = None
|
||||||
|
is_best: bool = False
|
||||||
|
|
||||||
|
# 额外信息
|
||||||
|
has_replay: bool # 是否有回放
|
||||||
|
preserve: bool # 是否保留
|
||||||
|
processed: bool # 是否已处理
|
||||||
|
|
||||||
|
# Legacy字段
|
||||||
|
legacy_score_id: Optional[int] = None
|
||||||
|
legacy_total_score: int
|
||||||
|
legacy_perfect: bool
|
||||||
|
|
||||||
|
# mp字段
|
||||||
Reference in New Issue
Block a user