feat(server): 重构用户代理服务模块,优化用户行为跟踪和代理逻辑
This commit is contained in:
@@ -32,6 +32,7 @@ class UserAgentDraftPayload(BaseModel):
|
||||
claim_id: str | None = Field(default=None, description="关联的报销草稿 ID。")
|
||||
claim_no: str | None = Field(default=None, description="关联的报销草稿单号。")
|
||||
status: str | None = Field(default=None, description="当前报销草稿状态。")
|
||||
approval_stage: str | None = Field(default=None, description="当前审批节点。")
|
||||
|
||||
|
||||
class UserAgentQueryStatusGroup(BaseModel):
|
||||
|
||||
@@ -599,23 +599,34 @@ class UserAgentService:
|
||||
subject = self._resolve_subject(payload)
|
||||
claim_no = str(payload.tool_payload.get("claim_no") or "").strip() or None
|
||||
claim_status = str(payload.tool_payload.get("status") or "").strip() or None
|
||||
approval_stage = str(payload.tool_payload.get("approval_stage") or "").strip() or None
|
||||
is_submitted = claim_status == "submitted"
|
||||
title = f"{scenario_label}处理意见草稿"
|
||||
if claim_no:
|
||||
title = f"{scenario_label}草稿 {claim_no}"
|
||||
body = (
|
||||
f"主题:{subject}\n"
|
||||
"结论:已根据当前语义解析结果生成草稿,尚未自动执行。\n"
|
||||
"建议:请先核对明细、规则命中和所需附件,再由人工确认是否提交正式流程。\n"
|
||||
f"原始问题:{payload.message}"
|
||||
)
|
||||
title = f"{scenario_label}{'报销单' if is_submitted else '草稿'} {claim_no}"
|
||||
if is_submitted:
|
||||
body = (
|
||||
f"主题:{subject}\n"
|
||||
f"结论:报销单已提交审批,当前节点为 {approval_stage or '审批中'}。\n"
|
||||
"建议:后续可在个人报销列表中跟踪审批进度,必要时再补充说明或附件。\n"
|
||||
f"原始问题:{payload.message}"
|
||||
)
|
||||
else:
|
||||
body = (
|
||||
f"主题:{subject}\n"
|
||||
"结论:已根据当前语义解析结果生成草稿,尚未自动执行。\n"
|
||||
"建议:请先核对明细、规则命中和所需附件,再由人工确认是否提交正式流程。\n"
|
||||
f"原始问题:{payload.message}"
|
||||
)
|
||||
return UserAgentDraftPayload(
|
||||
draft_type=payload.ontology.scenario,
|
||||
title=title,
|
||||
body=body,
|
||||
confirmation_required=True,
|
||||
confirmation_required=not is_submitted,
|
||||
claim_id=str(payload.tool_payload.get("claim_id") or "").strip() or None,
|
||||
claim_no=claim_no,
|
||||
status=claim_status,
|
||||
approval_stage=approval_stage,
|
||||
)
|
||||
|
||||
def _build_suggested_actions(
|
||||
@@ -1161,6 +1172,11 @@ class UserAgentService:
|
||||
)
|
||||
return "已按您当前确认的信息保存为草稿。后续您可以继续补充缺失项,或修改识别结果后再继续提交。"
|
||||
if review_action == "next_step":
|
||||
if draft_payload is not None and draft_payload.status == "submitted":
|
||||
stage_text = draft_payload.approval_stage or "审批中"
|
||||
return f"报销单 {draft_payload.claim_no or ''} 已提交审批,当前节点为 {stage_text}。".strip()
|
||||
if payload.tool_payload.get("submission_blocked"):
|
||||
return str(payload.tool_payload.get("message") or "").strip() or "当前报销单暂时还不能提交审批。"
|
||||
return (
|
||||
f"{self._build_review_intent_summary(payload, slot_cards=review_payload.slot_cards, claim_groups=review_payload.claim_groups)} "
|
||||
"当前关键信息已基本齐全,您确认无误后可以继续下一步。"
|
||||
|
||||
Reference in New Issue
Block a user