落地并存测服全端:智能体 Graph/路由、后台切 8180、主账与部署脚本齐备,便于线上重发与验收。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
Graph 节点包:一阶段一文件。
|
||||
|
||||
本包只做编排占位;自然语言抽取、主账写、LibreOffice 不在本包实现。
|
||||
"""
|
||||
|
||||
from agent.graph.nodes.adopt_adjust import node_adopt_adjust
|
||||
from agent.graph.nodes.close_deal import node_close_deal
|
||||
from agent.graph.nodes.collaborate import node_collaborate
|
||||
from agent.graph.nodes.create_order import node_create_order
|
||||
from agent.graph.nodes.generate_quote import node_generate_quote
|
||||
from agent.graph.nodes.parse_clarify import node_parse_clarify
|
||||
from agent.graph.nodes.query_quote import node_query_quote
|
||||
|
||||
__all__ = [
|
||||
"node_parse_clarify",
|
||||
"node_create_order",
|
||||
"node_query_quote",
|
||||
"node_collaborate",
|
||||
"node_generate_quote",
|
||||
"node_adopt_adjust",
|
||||
"node_close_deal",
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
节点:采用 / 调价(骨架)。
|
||||
|
||||
正式:卡片动作 + waitVersion 校验后调主账报价版本;本文件不写主账。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_adopt_adjust(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""骨架:仅标记 phase=adopt_adjust。"""
|
||||
logger.info(
|
||||
"graph.node adopt_adjust thread_id=%s(骨架无采用/调价)",
|
||||
state.get("thread_id") or "",
|
||||
)
|
||||
return {"phase": "adopt_adjust"}
|
||||
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
节点:成交 / 未成交收尾(骨架)。
|
||||
|
||||
正式:调主账闭环;图结束 ≠ 主账已成交。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_close_deal(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""骨架:仅标记 phase=close_deal。"""
|
||||
logger.info(
|
||||
"graph.node close_deal thread_id=%s(骨架无闭环)",
|
||||
state.get("thread_id") or "",
|
||||
)
|
||||
return {"phase": "close_deal"}
|
||||
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
节点:协同 / 群报价等待(骨架)。
|
||||
|
||||
正式:等群内报价或协同结果;用户文字不得冒充文件完成(wake 另走结构化载荷)。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_collaborate(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""骨架:仅标记 phase=collaborate。"""
|
||||
logger.info(
|
||||
"graph.node collaborate thread_id=%s(骨架无协同)",
|
||||
state.get("thread_id") or "",
|
||||
)
|
||||
return {"phase": "collaborate"}
|
||||
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
节点:建单准备(骨架)。
|
||||
|
||||
正式职责将是:调用主账建单 API;六态成功只认主账返回,图成功不能冒充。
|
||||
本文件不写 MySQL、不直连 TMS。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_create_order(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""骨架:仅标记 phase=create_order。"""
|
||||
logger.info(
|
||||
"graph.node create_order thread_id=%s(骨架无建单)",
|
||||
state.get("thread_id") or "",
|
||||
)
|
||||
return {"phase": "create_order"}
|
||||
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
节点:报价文件生成等待(骨架)。
|
||||
|
||||
正式:等 Worker LibreOffice/对象存储完成后的结构化 wake;本节点不跑 soffice。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_generate_quote(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""骨架:仅标记 phase=generate_quote。"""
|
||||
logger.info(
|
||||
"graph.node generate_quote thread_id=%s(骨架不转 PDF)",
|
||||
state.get("thread_id") or "",
|
||||
)
|
||||
return {"phase": "generate_quote"}
|
||||
@@ -0,0 +1,27 @@
|
||||
"""
|
||||
节点:解析 / 补问阶段(骨架)。
|
||||
|
||||
正式职责将是:触发字段合同检查与补问等待;本文件不抽字段、不调模型。
|
||||
线程:仅在 Worker Graph 槽内执行,禁止占用企微回调线程。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_parse_clarify(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""
|
||||
骨架节点:标记 phase=parse_clarify,不产生业务副作用。
|
||||
|
||||
参数:当前 checkpoint 状态。
|
||||
返回:状态增量(合并进 checkpoint)。
|
||||
"""
|
||||
thread_id = state.get("thread_id") or ""
|
||||
logger.info("graph.node parse_clarify thread_id=%s(骨架无业务)", thread_id)
|
||||
return {"phase": "parse_clarify"}
|
||||
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
节点:查价 / TMS 结果编排(骨架)。
|
||||
|
||||
正式:经主账查价;分类结果给人选择。禁止在本节点直连 TMS。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def node_query_quote(state: InquiryGraphState) -> dict[str, Any]:
|
||||
"""骨架:仅标记 phase=query_quote。"""
|
||||
logger.info(
|
||||
"graph.node query_quote thread_id=%s(骨架无查价)",
|
||||
state.get("thread_id") or "",
|
||||
)
|
||||
return {"phase": "query_quote"}
|
||||
Reference in New Issue
Block a user