feat: 询价流程接入事件异常等待起停

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-21 18:28:35 +08:00
co-authored by Cursor
parent fc1b85113d
commit a878b046d2
11 changed files with 131 additions and 5 deletions
+15 -4
View File
@@ -39,14 +39,14 @@ def poll_due_negotiate(*, ledger: Any = None, settings: Optional[Settings] = Non
if not isinstance(row, dict):
continue
try:
if _reask_one(row, settings=cfg):
if _reask_one(row, settings=cfg, ledger=book):
sent += 1
except Exception:
logger.exception("协商再问失败 wo=%s", row.get("work_order_no") or row.get("workOrderNo"))
return sent
def _reask_one(row: dict[str, Any], *, settings: Settings) -> bool:
def _reask_one(row: dict[str, Any], *, settings: Settings, ledger: Any = None) -> bool:
no = str(row.get("work_order_no") or row.get("workOrderNo") or "").strip()
if not no:
return False
@@ -68,7 +68,9 @@ def _reask_one(row: dict[str, Any], *, settings: Settings) -> bool:
)
if not ok:
logger.warning("协商再问原群失败且不补发私聊 wo=%s chat=%s", no, chat_id)
return ok
return False
_start_deal_wait(ledger, no)
return True
if not sales:
logger.warning("协商再问无销售 userid wo=%s", no)
return False
@@ -84,7 +86,16 @@ def _reask_one(row: dict[str, Any], *, settings: Settings) -> bool:
)
if not ok:
logger.warning("协商再问私聊入队失败 wo=%s info=%s", no, info)
return bool(ok)
return False
_start_deal_wait(ledger, no)
return True
def _start_deal_wait(ledger: Any, work_order_no: str) -> None:
"""再问发出后重新盯成交跟进。ledger 可空。"""
from agent.policy.event_exception import WAIT_DEAL, start_wait
start_wait(ledger, work_order_no=work_order_no, wait_kind=WAIT_DEAL)
def _send_group_reask(