feat: 完成工作流调度与上传下载 API

This commit is contained in:
cat-shark
2026-08-08 21:04:21 +08:00
commit a8d11eafc6
32 changed files with 3675 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
from pathlib import Path
from fastapi.testclient import TestClient
from app.db import Database
from app.main import app
from app.seed import seed_demo_workflow, seed_nodes
WORKSPACE = Path(__file__).resolve().parent.parent.parent
def test_seed_nodes_and_demo_workflow(tmp_path) -> None:
db = Database(tmp_path / "wov.db")
seed_nodes(db, WORKSPACE)
node_ids = [node.id for node in db.list_nodes()]
assert "echo" in node_ids
seed_demo_workflow(db)
workflow = db.get_workflow("demo")
assert workflow is not None
assert workflow["published"] == 1
latest = db.get_latest_workflow_version("demo")
assert latest["definition"]["name"] == "视频字幕生成"
seed_demo_workflow(db)
assert len(db.list_workflow_versions("demo")) == 1
empty_workspace = tmp_path / "empty"
(empty_workspace / "wov-node-empty").mkdir(parents=True)
seed_nodes(db, empty_workspace)
def test_lifespan_with_seed_and_scheduler(monkeypatch) -> None:
monkeypatch.setenv("WOV_AUTO_SEED", "1")
monkeypatch.setenv("WOV_SCHEDULER_ENABLED", "1")
with TestClient(app) as client:
apps = client.get("/api/apps")
assert apps.status_code == 200
assert any(item["id"] == "demo" for item in apps.json())