# Conflicts:
#	tests/fixtures/architecture/runtime-contract-baseline.json
#	uv.lock
This commit is contained in:
jxxghp
2026-08-22 07:21:20 +08:00
36 changed files with 153 additions and 1034 deletions
+6
View File
@@ -7,6 +7,12 @@ def _filter_third_party_startup_warnings() -> None:
"""
过滤第三方库在新版 Python 下产生的已知无害启动警告。
"""
warnings.filterwarnings(
"ignore",
message=r"'_UnionGenericAlias' is deprecated and slated for removal in Python 3\.17",
category=DeprecationWarning,
module=r"google\.genai\.types",
)
warnings.filterwarnings(
"ignore",
message=r"invalid escape sequence '\\&'",
+6 -19
View File
@@ -1,5 +1,5 @@
from abc import ABC, abstractmethod
from typing import Any, Union
from typing import Any, ClassVar, Union
from app.chain import ChainBase
from app.application.configuration import get_configured_system_config as SystemConfigOper
@@ -17,6 +17,11 @@ class BaseAction(ABC):
工作流动作基类
"""
# 工作流编辑器和运行管理器读取的动作级静态元数据。
name: ClassVar[str]
description: ClassVar[str]
data: ClassVar[dict[str, Any]]
# 动作ID
_action_id = None
# 完成标志
@@ -34,24 +39,6 @@ class BaseAction(ABC):
self._message = ""
self.systemconfigoper = SystemConfigOper()
@classmethod
@property
@abstractmethod
def name(cls) -> str: # noqa
pass
@classmethod
@property
@abstractmethod
def description(cls) -> str: # noqa
pass
@classmethod
@property
@abstractmethod
def data(cls) -> dict: # noqa
pass
@classmethod
def get_contract(cls) -> dict:
"""
+3 -14
View File
@@ -40,20 +40,9 @@ class AddDownloadAction(BaseAction):
self._added_downloads = []
self._has_error = False
@classmethod
@property
def name(cls) -> str: # noqa
return "添加下载"
@classmethod
@property
def description(cls) -> str: # noqa
return "根据资源列表添加下载任务"
@classmethod
@property
def data(cls) -> dict: # noqa
return AddDownloadParams().model_dump()
name = "添加下载"
description = "根据资源列表添加下载任务"
data = AddDownloadParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -30,20 +30,9 @@ class AddSubscribeAction(BaseAction):
self._added_subscribes = []
self._has_error = False
@classmethod
@property
def name(cls) -> str: # noqa
return "添加订阅"
@classmethod
@property
def description(cls) -> str: # noqa
return "根据媒体列表添加订阅"
@classmethod
@property
def data(cls) -> dict: # noqa
return AddSubscribeParams().model_dump()
name = "添加订阅"
description = "根据媒体列表添加订阅"
data = AddSubscribeParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -27,20 +27,9 @@ class FetchDownloadsAction(BaseAction):
super().__init__(action_id)
self._downloads = []
@classmethod
@property
def name(cls) -> str: # noqa
return "获取下载任务"
@classmethod
@property
def description(cls) -> str: # noqa
return "获取下载队列中的任务状态"
@classmethod
@property
def data(cls) -> dict: # noqa
return FetchDownloadsParams().model_dump()
name = "获取下载任务"
description = "获取下载队列中的任务状态"
data = FetchDownloadsParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -115,20 +115,9 @@ class FetchMediasAction(BaseAction):
if event_data.extra_sources:
self.__inner_sources.extend([s.model_dump() for s in event_data.extra_sources])
@classmethod
@property
def name(cls) -> str: # noqa
return "获取媒体数据"
@classmethod
@property
def description(cls) -> str: # noqa
return "获取榜单等媒体数据列表"
@classmethod
@property
def data(cls) -> dict: # noqa
return FetchMediasParams().model_dump()
name = "获取媒体数据"
description = "获取榜单等媒体数据列表"
data = FetchMediasParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -40,20 +40,9 @@ class FetchRssAction(BaseAction):
self._rss_torrents = []
self._has_error = False
@classmethod
@property
def name(cls) -> str: # noqa
return "获取RSS资源"
@classmethod
@property
def description(cls) -> str: # noqa
return "订阅RSS地址获取资源"
@classmethod
@property
def data(cls) -> dict: # noqa
return FetchRssParams().model_dump()
name = "获取RSS资源"
description = "订阅RSS地址获取资源"
data = FetchRssParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -41,20 +41,9 @@ class FetchTorrentsAction(BaseAction):
super().__init__(action_id)
self._torrents = []
@classmethod
@property
def name(cls) -> str: # noqa
return "搜索站点资源"
@classmethod
@property
def description(cls) -> str: # noqa
return "搜索站点种子资源列表"
@classmethod
@property
def data(cls) -> dict: # noqa
return FetchTorrentsParams().model_dump()
name = "搜索站点资源"
description = "搜索站点种子资源列表"
data = FetchTorrentsParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -32,20 +32,9 @@ class FilterMediasAction(BaseAction):
super().__init__(action_id)
self._medias = []
@classmethod
@property
def name(cls) -> str: # noqa
return "过滤媒体数据"
@classmethod
@property
def description(cls) -> str: # noqa
return "对媒体数据列表进行过滤"
@classmethod
@property
def data(cls) -> dict: # noqa
return FilterMediasParams().model_dump()
name = "过滤媒体数据"
description = "对媒体数据列表进行过滤"
data = FilterMediasParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -37,20 +37,9 @@ class FilterTorrentsAction(BaseAction):
super().__init__(action_id)
self._torrents = []
@classmethod
@property
def name(cls) -> str: # noqa
return "过滤资源"
@classmethod
@property
def description(cls) -> str: # noqa
return "对资源列表数据进行过滤"
@classmethod
@property
def data(cls) -> dict: # noqa
return FilterTorrentsParams().model_dump()
name = "过滤资源"
description = "对资源列表数据进行过滤"
data = FilterTorrentsParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -27,20 +27,9 @@ class InvokePluginAction(BaseAction):
super().__init__(action_id)
self._success = False
@classmethod
@property
def name(cls) -> str: # noqa
return "调用插件"
@classmethod
@property
def description(cls) -> str: # noqa
return "调用插件提供的动作"
@classmethod
@property
def data(cls) -> dict: # noqa
return InvokePluginParams().model_dump()
name = "调用插件"
description = "调用插件提供的动作"
data = InvokePluginParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -9,20 +9,9 @@ class NoteAction(BaseAction):
contract = {}
@classmethod
@property
def name(cls) -> str: # noqa
return "备注"
@classmethod
@property
def description(cls) -> str: # noqa
return "给工作流添加备注"
@classmethod
@property
def data(cls) -> dict: # noqa
return {}
name = "备注"
description = "给工作流添加备注"
data = {}
@property
def success(self) -> bool:
+3 -14
View File
@@ -34,20 +34,9 @@ class ScanFileAction(BaseAction):
self._fileitems = []
self._has_error = False
@classmethod
@property
def name(cls) -> str: # noqa
return "扫描目录"
@classmethod
@property
def description(cls) -> str: # noqa
return "扫描目录文件到队列"
@classmethod
@property
def data(cls) -> dict: # noqa
return ScanFileParams().model_dump()
name = "扫描目录"
description = "扫描目录文件到队列"
data = ScanFileParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -30,20 +30,9 @@ class ScrapeFileAction(BaseAction):
self._scraped_files = []
self._has_error = False
@classmethod
@property
def name(cls) -> str: # noqa
return "刮削文件"
@classmethod
@property
def description(cls) -> str: # noqa
return "刮削媒体信息和图片"
@classmethod
@property
def data(cls) -> dict: # noqa
return ScrapeFileParams().model_dump()
name = "刮削文件"
description = "刮削媒体信息和图片"
data = ScrapeFileParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -19,20 +19,9 @@ class SendEventAction(BaseAction):
contract = {}
@classmethod
@property
def name(cls) -> str: # noqa
return "发送事件"
@classmethod
@property
def description(cls) -> str: # noqa
return "发送任务执行事件"
@classmethod
@property
def data(cls) -> dict: # noqa
return SendEventParams().model_dump()
name = "发送事件"
description = "发送任务执行事件"
data = SendEventParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -27,20 +27,9 @@ class SendMessageAction(BaseAction):
def __init__(self, action_id: str):
super().__init__(action_id)
@classmethod
@property
def name(cls) -> str: # noqa
return "发送消息"
@classmethod
@property
def description(cls) -> str: # noqa
return "发送任务执行消息"
@classmethod
@property
def data(cls) -> dict: # noqa
return SendMessageParams().model_dump()
name = "发送消息"
description = "发送任务执行消息"
data = SendMessageParams().model_dump()
@property
def success(self) -> bool:
+3 -14
View File
@@ -41,20 +41,9 @@ class TransferFileAction(BaseAction):
self._fileitems = []
self._has_error = False
@classmethod
@property
def name(cls) -> str: # noqa
return "整理文件"
@classmethod
@property
def description(cls) -> str: # noqa
return "整理队列中的文件"
@classmethod
@property
def data(cls) -> dict: # noqa
return TransferFileParams().model_dump()
name = "整理文件"
description = "整理队列中的文件"
data = TransferFileParams().model_dump()
@property
def success(self) -> bool: