refactor: make download and transfer events durable

This commit is contained in:
jxxghp
2026-08-22 08:03:00 +08:00
parent c5de1c7b1b
commit 820f7e8850
26 changed files with 1134 additions and 184 deletions
+26
View File
@@ -7,6 +7,7 @@ from app.schemas.common import JsonData
from app.schemas.types import MediaType, NotificationChannel
from app.schemas.file import FileItem
from app.schemas.media import OptionalMediaIdentityMixin, RequiredMediaIdentityMixin
from app.schemas.transfer import TransferInfo
from app.schemas.types import MediaSource
@@ -730,6 +731,31 @@ class SubscribeDeletedEventData(BaseEventData):
idempotency_key: Optional[str] = Field(default=None, description="宿主生成的幂等键")
class DownloadAddedEventData(BaseEventData):
"""DownloadAdded 广播事件的插件兼容 payload。"""
hash: str = Field(description="下载任务 hash")
context: Any = Field(description="下载上下文对象")
username: Optional[str] = Field(default=None, description="发起下载的用户")
downloader: Optional[str] = Field(default=None, description="下载器名称")
episodes: List[int] = Field(default_factory=list, description="下载剧集列表")
source: Optional[str] = Field(default=None, description="下载来源")
idempotency_key: Optional[str] = Field(default=None, description="宿主生成的幂等键")
class TransferResultEventData(BaseEventData):
"""TransferComplete/Failed 共用的插件兼容 payload。"""
fileitem: Optional[FileItem] = Field(default=None, description="源文件项")
meta: Any = Field(default=None, description="文件名解析对象")
mediainfo: Any = Field(default=None, description="媒体信息对象")
transferinfo: Optional[TransferInfo] = Field(default=None, description="整理结果")
downloader: Optional[str] = Field(default=None, description="下载器名称")
download_hash: Optional[str] = Field(default=None, description="下载任务 hash")
transfer_history_id: Optional[int] = Field(default=None, description="整理历史 ID")
idempotency_key: Optional[str] = Field(default=None, description="宿主生成的幂等键")
class SubscribeCompletionCheckEventData(ChainEventData):
"""
SubscribeCompletionCheck 事件的数据模型
+3
View File
@@ -85,6 +85,7 @@ SCHEMA_EXPORTS = {
'DiscoverSourceEventData': ('app.schemas.event', 'DiscoverSourceEventData'),
'Discriminator': ('app.schemas.context', 'Discriminator'),
'DownloadAddedData': ('app.schemas.download', 'DownloadAddedData'),
'DownloadAddedEventData': ('app.schemas.event', 'DownloadAddedEventData'),
'DownloadDirectory': ('app.schemas.download', 'DownloadDirectory'),
'DownloadHistory': ('app.schemas.history', 'DownloadHistory'),
'DownloadTask': ('app.schemas.workflow', 'DownloadTask'),
@@ -369,6 +370,7 @@ SCHEMA_EXPORTS = {
'TransferOverwriteCheckEventData': ('app.schemas.event', 'TransferOverwriteCheckEventData'),
'TransferRenameBuildEventData': ('app.schemas.event', 'TransferRenameBuildEventData'),
'TransferRenameEventData': ('app.schemas.event', 'TransferRenameEventData'),
'TransferResultEventData': ('app.schemas.event', 'TransferResultEventData'),
'TransferTorrent': ('app.schemas.transfer', 'TransferTorrent'),
'TypeAdapter': ('app.schemas.mcp', 'TypeAdapter'),
'TypeAlias': ('app.schemas.mcp', 'TypeAlias'),
@@ -441,6 +443,7 @@ SCHEMA_CONFLICTS = {
'Subscribe': ['app.schemas.subscribe', 'app.schemas.workflow'],
'SubtitleInfo': ['app.schemas.context', 'app.schemas.search'],
'TorrentInfo': ['app.schemas.context', 'app.schemas.search', 'app.schemas.system'],
'TransferInfo': ['app.schemas.event', 'app.schemas.transfer'],
'Union': ['app.schemas.agent', 'app.schemas.common', 'app.schemas.context', 'app.schemas.mediaserver', 'app.schemas.message', 'app.schemas.plugin', 'app.schemas.search', 'app.schemas.site', 'app.schemas.transfer', 'app.schemas.mcp'],
'UserPermissions': ['app.schemas.token', 'app.schemas.user'],
'dataclass': ['app.schemas.notification', 'app.schemas.system'],