落地并存测服全端:智能体 Graph/路由、后台切 8180、主账与部署脚本齐备,便于线上重发与验收。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
"""
|
||||
装配询价 StateGraph(骨架线性流水线)。
|
||||
|
||||
本文件职责:把分文件节点串成一张图并 compile;不写业务分支。
|
||||
停点:interrupt_before=INTERRUPT_BEFORE(见 pauses.py)。
|
||||
禁止:单文件堆全部节点实现;禁止在本文件调企微 / soffice。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from langgraph.graph import END, START, StateGraph
|
||||
|
||||
from agent.graph import nodes as graph_nodes
|
||||
from agent.graph.pauses import (
|
||||
INTERRUPT_BEFORE,
|
||||
PAUSE_ADOPT_ADJUST,
|
||||
PAUSE_CLOSE_DEAL,
|
||||
PAUSE_COLLABORATE,
|
||||
PAUSE_CREATE_ORDER,
|
||||
PAUSE_GENERATE_QUOTE,
|
||||
PAUSE_PARSE_CLARIFY,
|
||||
PAUSE_QUERY_QUOTE,
|
||||
)
|
||||
from agent.graph.state import InquiryGraphState
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def build_state_graph() -> StateGraph:
|
||||
"""
|
||||
构建未编译的状态图。
|
||||
|
||||
节点顺序对齐 prompt/14:解析/补问 → 建单 → 查价 → 协同 → 报价 → 采用/调价 → 成交。
|
||||
骨架为直线边;后续可加条件边,勿在此塞主账逻辑。
|
||||
"""
|
||||
g: StateGraph = StateGraph(InquiryGraphState)
|
||||
g.add_node(PAUSE_PARSE_CLARIFY, graph_nodes.node_parse_clarify)
|
||||
g.add_node(PAUSE_CREATE_ORDER, graph_nodes.node_create_order)
|
||||
g.add_node(PAUSE_QUERY_QUOTE, graph_nodes.node_query_quote)
|
||||
g.add_node(PAUSE_COLLABORATE, graph_nodes.node_collaborate)
|
||||
g.add_node(PAUSE_GENERATE_QUOTE, graph_nodes.node_generate_quote)
|
||||
g.add_node(PAUSE_ADOPT_ADJUST, graph_nodes.node_adopt_adjust)
|
||||
g.add_node(PAUSE_CLOSE_DEAL, graph_nodes.node_close_deal)
|
||||
|
||||
g.add_edge(START, PAUSE_PARSE_CLARIFY)
|
||||
g.add_edge(PAUSE_PARSE_CLARIFY, PAUSE_CREATE_ORDER)
|
||||
g.add_edge(PAUSE_CREATE_ORDER, PAUSE_QUERY_QUOTE)
|
||||
g.add_edge(PAUSE_QUERY_QUOTE, PAUSE_COLLABORATE)
|
||||
g.add_edge(PAUSE_COLLABORATE, PAUSE_GENERATE_QUOTE)
|
||||
g.add_edge(PAUSE_GENERATE_QUOTE, PAUSE_ADOPT_ADJUST)
|
||||
g.add_edge(PAUSE_ADOPT_ADJUST, PAUSE_CLOSE_DEAL)
|
||||
g.add_edge(PAUSE_CLOSE_DEAL, END)
|
||||
return g
|
||||
|
||||
|
||||
def compile_inquiry_graph(*, checkpointer: Any) -> Any:
|
||||
"""
|
||||
编译可执行图。
|
||||
|
||||
参数:LangGraph checkpointer(Postgres 或 Memory)。
|
||||
返回:CompiledGraph;带 interrupt_before。
|
||||
线程:应在 Worker 启动线程调用一次,缓存复用。
|
||||
"""
|
||||
graph = build_state_graph()
|
||||
compiled = graph.compile(
|
||||
checkpointer=checkpointer,
|
||||
interrupt_before=list(INTERRUPT_BEFORE),
|
||||
)
|
||||
logger.info(
|
||||
"询价 Graph 已编译 interrupt_before=%s",
|
||||
list(INTERRUPT_BEFORE),
|
||||
)
|
||||
return compiled
|
||||
Reference in New Issue
Block a user