落地转人工:三次补问或明确接管后出入口,真正转人工后冻结本票并允许新开询价。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -68,6 +68,7 @@ class LandTextInquiryFlow(SeaTextInquiryFlow):
|
||||
retry = self.restore_tms_retry_session(sender_id)
|
||||
if retry:
|
||||
sess = retry
|
||||
sess = self._detach_frozen_bookmark(sess, sender_id)
|
||||
phase = (sess.phase if sess else "") or ""
|
||||
btn = self.match_button(text, sess)
|
||||
if btn:
|
||||
@@ -467,44 +468,67 @@ class LandTextInquiryFlow(SeaTextInquiryFlow):
|
||||
self._clear_parked_confirm(sender_id)
|
||||
return "need_land_options"
|
||||
if state["stage"] == "options_missing":
|
||||
logger.info(
|
||||
"land.options_missing missing=%s",
|
||||
(state.get("opt") or {}).get("missing") or [],
|
||||
)
|
||||
self._reply_land_options(reply, facts)
|
||||
self._save(
|
||||
FlowSession(
|
||||
sender_id=sender_id,
|
||||
thread_id=sender_id,
|
||||
phase="need_land_options",
|
||||
business_line="LAND",
|
||||
facts=facts,
|
||||
immutable_text=immutable,
|
||||
wait_version=(sess.wait_version + 1) if sess else 1,
|
||||
)
|
||||
)
|
||||
self._clear_parked_confirm(sender_id)
|
||||
return "need_land_options"
|
||||
reply(
|
||||
copy.ask_land_fields(
|
||||
facts=facts,
|
||||
missing_keys=state.get("missing") or [],
|
||||
land_subtype=state.get("land_type") or "",
|
||||
)
|
||||
)
|
||||
self._save(
|
||||
FlowSession(
|
||||
keys = list((state.get("opt") or {}).get("missing") or [])
|
||||
logger.info("land.options_missing missing=%s", keys)
|
||||
new_sess = FlowSession(
|
||||
sender_id=sender_id,
|
||||
thread_id=sender_id,
|
||||
phase="clarify",
|
||||
phase="need_land_options",
|
||||
business_line="LAND",
|
||||
facts=facts,
|
||||
immutable_text=immutable,
|
||||
wait_version=(sess.wait_version + 1) if sess else 1,
|
||||
)
|
||||
from agent.policy.handoff_human import inherit_pre_create_ticket, note_clarify_round
|
||||
|
||||
if sess is not None:
|
||||
new_sess.clarify_missing_sig = sess.clarify_missing_sig
|
||||
new_sess.clarify_retry = sess.clarify_retry
|
||||
new_sess.handoff_offer = sess.handoff_offer
|
||||
new_sess.handoff_committed = sess.handoff_committed
|
||||
new_sess.virtual_work_order_no = sess.virtual_work_order_no
|
||||
inherit_pre_create_ticket(sess, new_sess)
|
||||
decision = note_clarify_round(new_sess, keys)
|
||||
self._reply_land_options(
|
||||
reply,
|
||||
facts,
|
||||
message=copy.with_clarify_progress(
|
||||
option_prompt(current=facts), new_sess.clarify_retry
|
||||
),
|
||||
)
|
||||
if decision == "handoff":
|
||||
self._clear_parked_confirm(sender_id)
|
||||
return self._offer_handoff_now(
|
||||
sender_id=sender_id,
|
||||
reason="clarify",
|
||||
reply=reply,
|
||||
sess=new_sess,
|
||||
)
|
||||
self._save(new_sess)
|
||||
self._clear_parked_confirm(sender_id)
|
||||
return "need_land_options"
|
||||
new_sess = FlowSession(
|
||||
sender_id=sender_id,
|
||||
thread_id=sender_id,
|
||||
phase="clarify",
|
||||
business_line="LAND",
|
||||
facts=facts,
|
||||
immutable_text=immutable,
|
||||
wait_version=(sess.wait_version + 1) if sess else 1,
|
||||
)
|
||||
phase = self._clarify_or_handoff(
|
||||
sess=sess,
|
||||
keys=list(state.get("missing") or []),
|
||||
new_sess=new_sess,
|
||||
reply=reply,
|
||||
clarify_text=copy.ask_land_fields(
|
||||
facts=facts,
|
||||
missing_keys=state.get("missing") or [],
|
||||
land_subtype=state.get("land_type") or "",
|
||||
),
|
||||
)
|
||||
self._clear_parked_confirm(sender_id)
|
||||
return "clarify"
|
||||
return phase
|
||||
|
||||
def restore_confirm_session(self, sender_id: str) -> Optional[FlowSession]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user