mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
feat(workflow): add execution configuration and structured execution state to workflow
This commit is contained in:
+16
-2
@@ -1,6 +1,6 @@
|
||||
from typing import Any, Optional, List
|
||||
from typing import Any, List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
from app.schemas.context import Context, MediaInfo
|
||||
from app.schemas.download import DownloadTask
|
||||
@@ -26,6 +26,8 @@ class Workflow(BaseModel):
|
||||
run_count: Optional[int] = Field(default=0, description="已执行次数")
|
||||
actions: Optional[list] = Field(default_factory=list, description="任务列表")
|
||||
flows: Optional[list] = Field(default_factory=list, description="任务流")
|
||||
execution_config: Optional[dict] = Field(default_factory=dict, description="工作流执行配置")
|
||||
execution_state: Optional[dict] = Field(default_factory=dict, description="工作流结构化执行状态")
|
||||
add_time: Optional[str] = Field(default=None, description="创建时间")
|
||||
last_time: Optional[str] = Field(default=None, description="最后执行时间")
|
||||
|
||||
@@ -50,8 +52,14 @@ class Action(BaseModel):
|
||||
description: Optional[str] = Field(default=None, description="动作描述")
|
||||
position: Optional[dict] = Field(default_factory=dict, description="位置")
|
||||
data: Optional[dict] = Field(default_factory=dict, description="参数")
|
||||
inputs: Optional[List[str]] = Field(default_factory=list, description="动作输入声明")
|
||||
outputs: Optional[dict] = Field(default_factory=dict, description="动作输出声明")
|
||||
join_policy: Optional[str] = Field(default=None, description="多上游节点汇合策略")
|
||||
fail_policy: Optional[str] = Field(default=None, description="动作失败后的工作流处理策略")
|
||||
branch_policy: Optional[str] = Field(default=None, description="多出边分支策略")
|
||||
concurrency_key: Optional[str] = Field(default=None, description="并发互斥键")
|
||||
timeout: Optional[int] = Field(default=None, description="动作执行超时时间(秒)")
|
||||
retry: Optional[dict] = Field(default_factory=dict, description="动作重试策略")
|
||||
|
||||
|
||||
class ActionExecution(BaseModel):
|
||||
@@ -74,7 +82,10 @@ class ActionContext(BaseModel):
|
||||
downloads: Optional[List[DownloadTask]] = Field(default_factory=list, description="下载任务列表")
|
||||
sites: Optional[List[Site]] = Field(default_factory=list, description="站点列表")
|
||||
subscribes: Optional[List[Subscribe]] = Field(default_factory=list, description="订阅列表")
|
||||
workflow_context: Optional[dict] = Field(default_factory=dict, description="工作流全局上下文")
|
||||
node_outputs: Optional[dict] = Field(default_factory=dict, description="节点输出数据")
|
||||
runtime_state: Optional[dict] = Field(default_factory=dict, description="运行期状态")
|
||||
artifacts: Optional[dict] = Field(default_factory=dict, description="大对象引用与产物数据")
|
||||
execute_history: Optional[List[ActionExecution]] = Field(default_factory=list, description="执行历史")
|
||||
progress: Optional[int] = Field(default=0, description="执行进度(%)")
|
||||
|
||||
@@ -87,6 +98,8 @@ class ActionResult(BaseModel):
|
||||
message: Optional[str] = Field(default=None, description="动作执行消息")
|
||||
context: Optional[ActionContext] = Field(default=None, description="动作执行后的上下文")
|
||||
outputs: Optional[dict[str, Any]] = Field(default_factory=dict, description="当前节点显式输出")
|
||||
next_policy: Optional[str] = Field(default=None, description="动作完成后的调度策略")
|
||||
attempts: Optional[int] = Field(default=1, description="动作实际尝试次数")
|
||||
|
||||
|
||||
class ActionFlow(BaseModel):
|
||||
@@ -100,6 +113,7 @@ class ActionFlow(BaseModel):
|
||||
data: Optional[dict] = Field(default_factory=dict, description="流程扩展配置")
|
||||
condition: Optional[str] = Field(default=None, description="流转条件表达式")
|
||||
join_policy: Optional[str] = Field(default=None, description="目标节点汇合策略")
|
||||
branch_policy: Optional[str] = Field(default=None, description="源节点分支策略")
|
||||
|
||||
|
||||
class WorkflowShare(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user