#!/usr/bin/env python3 # -*- coding: utf-8 -*- """作业 2 · 步骤 2:创建 Workflow 空壳(mode=workflow)。""" from __future__ import annotations import sys import _bootstrap # noqa: F401 import _config as C from dify_api import Dify, pp def find_app(d: Dify) -> dict | None: r = d.get("/apps?page=1&limit=50") for item in (r.get("json") or {}).get("data") or []: if item.get("name") == C.HOMEWORK2_APP_NAME and item.get("mode") == "workflow": return item aid = getattr(C, "HOMEWORK2_APP_ID", "") or "" if aid: for item in (r.get("json") or {}).get("data") or []: if item.get("id") == aid: return item return None def main() -> int: d = Dify(C.DIFY_EMAIL, C.DIFY_PASSWORD) try: d.login() found = find_app(d) if found: print("already exists app_id=", found.get("id"), "mode=", found.get("mode")) print("下一步:运行 作业2_03_同步工作流草稿.py") return 0 body = { "name": C.HOMEWORK2_APP_NAME, "description": "作业 2:客服意图路由(知识库 / 工单报修 / 人工客服 / 兜底)", "mode": "workflow", "icon_type": "emoji", "icon": "🎧", "icon_background": "#E3F2FD", } r = d.post("/apps", body) pp("create workflow app", r) j = r.get("json") or {} print("app_id", j.get("id")) if r.get("code") not in ("200", "201"): return 1 print("下一步:运行 作业2_03_同步工作流草稿.py") return 0 finally: d.close() if __name__ == "__main__": sys.exit(main())