From 827d8f6d8427ac1cce89faaff26c7835d55861da Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 12 Feb 2025 17:49:01 +0800 Subject: [PATCH] add workflow framework --- app/actions/__init__.py | 6 ++++++ app/api/apiv1.py | 3 ++- app/api/endpoints/workflow.py | 3 +++ app/core/workflow.py | 24 ++++++++++++++++++++++++ app/db/models/workflow.py | 0 app/schemas/__init__.py | 1 + app/schemas/workflow.py | 0 7 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 app/actions/__init__.py create mode 100644 app/api/endpoints/workflow.py create mode 100644 app/core/workflow.py create mode 100644 app/db/models/workflow.py create mode 100644 app/schemas/workflow.py diff --git a/app/actions/__init__.py b/app/actions/__init__.py new file mode 100644 index 00000000..d7d4ab3e --- /dev/null +++ b/app/actions/__init__.py @@ -0,0 +1,6 @@ +class BaseAction: + """ + 工作流动作基类 + """ + async def execute(self, params: dict, context: dict) -> dict: + raise NotImplementedError diff --git a/app/api/apiv1.py b/app/api/apiv1.py index 1810b8a4..2ed8a6e8 100644 --- a/app/api/apiv1.py +++ b/app/api/apiv1.py @@ -2,7 +2,7 @@ from fastapi import APIRouter from app.api.endpoints import login, user, site, message, webhook, subscribe, \ media, douban, search, plugin, tmdb, history, system, download, dashboard, \ - transfer, mediaserver, bangumi, storage, discover, recommend + transfer, mediaserver, bangumi, storage, discover, recommend, workflow api_router = APIRouter() api_router.include_router(login.router, prefix="/login", tags=["login"]) @@ -26,3 +26,4 @@ api_router.include_router(mediaserver.router, prefix="/mediaserver", tags=["medi api_router.include_router(bangumi.router, prefix="/bangumi", tags=["bangumi"]) api_router.include_router(discover.router, prefix="/discover", tags=["discover"]) api_router.include_router(recommend.router, prefix="/recommend", tags=["recommend"]) +api_router.include_router(workflow.router, prefix="/workflow", tags=["workflow"]) diff --git a/app/api/endpoints/workflow.py b/app/api/endpoints/workflow.py new file mode 100644 index 00000000..af9233c5 --- /dev/null +++ b/app/api/endpoints/workflow.py @@ -0,0 +1,3 @@ +from fastapi import APIRouter + +router = APIRouter() diff --git a/app/core/workflow.py b/app/core/workflow.py new file mode 100644 index 00000000..15cbf79e --- /dev/null +++ b/app/core/workflow.py @@ -0,0 +1,24 @@ + + +class WorkFlowManager: + """ + 工作流管理器 + """ + def __init__(self): + self.workflows = {} + + def register(self, workflow): + """ + 注册工作流 + :param workflow: 工作流对象 + :return: + """ + self.workflows[workflow.name] = workflow + + def get_workflow(self, name): + """ + 获取工作流 + :param name: 工作流名称 + :return: + """ + return self.workflows.get(name) diff --git a/app/db/models/workflow.py b/app/db/models/workflow.py new file mode 100644 index 00000000..e69de29b diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py index ec0e5ae3..af94d83c 100644 --- a/app/schemas/__init__.py +++ b/app/schemas/__init__.py @@ -19,3 +19,4 @@ from .file import * from .exception import * from .system import * from .event import * +from .workflow import * diff --git a/app/schemas/workflow.py b/app/schemas/workflow.py new file mode 100644 index 00000000..e69de29b