后台按查看权限收紧菜单与「只看自己」数据范围;跨境整车报价填表更稳,协商中顺延不再误报销售超时。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
linmianxun
2026-10-11 13:04:09 +08:00
co-authored by Cursor
parent ae818f26b1
commit b070a9b7a7
23 changed files with 1383 additions and 498 deletions
@@ -344,12 +344,23 @@ class MemoryLedger:
ticket.next_followup_at = ""
if lost_reason:
ticket.lost_reason = lost_reason
# 成交等待结束;若仍缺原因由智能体再 start lost_reason
ticket.event_wait_kind = ""
ticket.event_wait_started_at = ""
ticket.event_wait_alerted = 0
elif to_status == "已成交":
ticket.next_followup_at = ""
if deal_notify_summary:
ticket.deal_notify_summary = deal_notify_summary
ticket.event_wait_kind = ""
ticket.event_wait_started_at = ""
ticket.event_wait_alerted = 0
elif to_status == "协商中":
ticket.next_followup_at = next_followup_at
# 顺延再问期间不盯成交超时;到期再问会重新 start deal
ticket.event_wait_kind = ""
ticket.event_wait_started_at = ""
ticket.event_wait_alerted = 0
return {"ok": True, "status": ticket.status}
def patch_lost_reason(self, *, work_order_no: str, lost_reason: str) -> dict[str, Any]:
@@ -363,6 +374,9 @@ class MemoryLedger:
if not reason:
return {"ok": False, "error": "reason_blank"}
ticket.lost_reason = reason
ticket.event_wait_kind = ""
ticket.event_wait_started_at = ""
ticket.event_wait_alerted = 0
return {"ok": True, "work_order_no": work_order_no, "lost_reason": reason}
def claim_due_negotiate(self) -> list[dict[str, Any]]:
@@ -940,6 +954,11 @@ class MemoryLedger:
continue
if ticket.status in {"已成交", "已关闭", "转人工"}:
continue
# 未成交已写原因、协商中仍排着再问:不进巡检列表
if ticket.status == "未成交" and (ticket.lost_reason or "").strip():
continue
if ticket.status == "协商中" and (ticket.next_followup_at or "").strip():
continue
watchers: list[dict[str, Any]] = []
seen: set[str] = set()
sales_id = (ticket.sales_wecom_id or "").strip()
@@ -989,6 +1008,10 @@ class MemoryLedger:
"collab_member_ids": list(ticket.collab_member_ids),
"facts": dict(ticket.facts),
"eventException": ticket.event_exception,
"lost_reason": ticket.lost_reason,
"lostReason": ticket.lost_reason,
"next_followup_at": ticket.next_followup_at,
"nextFollowupAt": ticket.next_followup_at,
"watchers": watchers,
}
)