Files
MoviePilot/app/schemas/recommend.py
jxxghp 6d4ce83837 fix(types): clear host mypy debt and prevent typing regressions
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。

修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00

48 lines
2.9 KiB
Python

"""
Agent 推荐接口的稳定结果模型。
"""
from typing import Optional
from pydantic import BaseModel, Field
class AgentRecommendationItem(BaseModel):
"""
影视、动画与音乐推荐共用的有界字段投影。
"""
title: Optional[str] = Field(default=None, description="标题")
en_title: Optional[str] = Field(default=None, description="英文标题")
year: Optional[int | str] = Field(default=None, description="年份")
type: Optional[str] = Field(default=None, description="媒体类型")
season: Optional[int | str] = Field(default=None, description="季号")
tmdb_id: Optional[int | str] = Field(default=None, description="tmdb_id 条目标识")
imdb_id: Optional[str] = Field(default=None, description="IMDb 条目标识")
douban_id: Optional[int | str] = Field(default=None, description="豆瓣 ID")
bangumi_id: Optional[int | str] = Field(default=None, description="Bangumi 条目标识")
anilist_id: Optional[int | str] = Field(default=None, description="AniList 条目标识")
media_source: Optional[str] = Field(default=None, description="媒体来源")
media_id: Optional[str] = Field(default=None, description="来源内媒体 ID")
vote_average: Optional[float] = Field(default=None, description="评分")
poster_path: Optional[str] = Field(default=None, description="海报地址")
detail_link: Optional[str] = Field(default=None, description="详情地址")
music_type: Optional[str] = Field(default=None, description="音乐实体类型")
artists: list[str] = Field(default_factory=list, description="艺术家名称")
artist_ids: list[str] = Field(default_factory=list, description="艺术家 ID")
artist: Optional[str] = Field(default=None, description="主艺术家")
album: Optional[str] = Field(default=None, description="专辑名称")
album_id: Optional[str] = Field(default=None, description="专辑 ID")
album_type: Optional[str] = Field(default=None, description="专辑类型")
release_date: Optional[str] = Field(default=None, description="发行日期")
disc_number: Optional[int] = Field(default=None, description="碟号")
track_number: Optional[int] = Field(default=None, description="曲目号")
total_tracks: Optional[int] = Field(default=None, description="总曲目数")
duration: Optional[int | float] = Field(default=None, description="音乐音轨时长,单位为秒;非音乐条目或来源未提供时为 None")
isrc: Optional[str] = Field(default=None, description="国际标准录音制品编码")
version: Optional[str] = Field(default=None, description="版本说明")
genres: list[str] = Field(default_factory=list, description="流派")
category: Optional[str] = Field(default=None, description="分类")
listen_count: Optional[int] = Field(default=None, description="收听次数")
overview: Optional[str] = Field(default=None, description="简介")