#!/usr/bin/env python3 # -*- coding: utf-8 -*- """作业 2 · 步骤 3:把意图路由 graph 同步到 Workflow 草稿。""" from __future__ import annotations import sys import _bootstrap # noqa: F401 import _config as C from dify_api import Dify, pp from 作业2_graph import FEATURES, build_graph from 作业2_02_创建工作流空壳 import find_app def main() -> int: d = Dify(C.DIFY_EMAIL, C.DIFY_PASSWORD) try: d.login() found = find_app(d) if not found: print("找不到应用,请先跑 作业2_02_创建工作流空壳.py") return 1 app_id = found["id"] print("app_id", app_id) hash_val = None r0 = d.get("/apps/%s/workflows/draft" % app_id) if r0.get("code") == "200": hash_val = (r0.get("json") or {}).get("hash") print("existing draft hash", hash_val) body = { "graph": build_graph(), "features": FEATURES, "environment_variables": [], "conversation_variables": [], } if hash_val: body["hash"] = hash_val r = d.post("/apps/%s/workflows/draft" % app_id, body) pp("sync draft", r, limit=2000) if r.get("code") not in ("200", "201"): return 1 # 再读一遍确认节点数量 r2 = d.get("/apps/%s/workflows/draft" % app_id) g = ((r2.get("json") or {}).get("graph")) or {} print("nodes", len(g.get("nodes") or []), "edges", len(g.get("edges") or [])) print("hash", (r.get("json") or {}).get("hash") or (r2.get("json") or {}).get("hash")) print("下一步:运行 作业2_04_验收三句.py") return 0 finally: d.close() if __name__ == "__main__": sys.exit(main())