feat(server): 更新用户代理服务,新增编排器服务测试用例,完善服务编排能力

This commit is contained in:
caoxiaozhu
2026-05-15 06:56:26 +00:00
parent c9cc0b0641
commit 511337df95
2 changed files with 16 additions and 11 deletions

View File

@@ -643,7 +643,7 @@ class UserAgentService:
if is_submitted: if is_submitted:
body = ( body = (
f"主题:{subject}\n" f"主题:{subject}\n"
f"结论:报销单已提交审批,当前节点为 {approval_stage or '审批中'}\n" f"结论:报销单已完成 AI验审,当前节点为 {approval_stage or '审批中'}\n"
"建议:后续可在个人报销列表中跟踪审批进度,必要时再补充说明或附件。\n" "建议:后续可在个人报销列表中跟踪审批进度,必要时再补充说明或附件。\n"
f"原始问题:{payload.message}" f"原始问题:{payload.message}"
) )
@@ -1279,7 +1279,7 @@ class UserAgentService:
if review_action == "next_step": if review_action == "next_step":
if draft_payload is not None and draft_payload.status == "submitted": if draft_payload is not None and draft_payload.status == "submitted":
stage_text = draft_payload.approval_stage or "审批中" stage_text = draft_payload.approval_stage or "审批中"
return f"报销单 {draft_payload.claim_no or ''}提交审批,当前节点为 {stage_text}".strip() return f"报销单 {draft_payload.claim_no or ''}完成 AI验审,当前节点为 {stage_text}".strip()
if payload.tool_payload.get("submission_blocked"): if payload.tool_payload.get("submission_blocked"):
return str(payload.tool_payload.get("message") or "").strip() or "当前报销单暂时还不能提交审批。" return str(payload.tool_payload.get("message") or "").strip() or "当前报销单暂时还不能提交审批。"
return ( return (

View File

@@ -634,13 +634,18 @@ def test_orchestrator_expense_next_step_submits_claim_to_approval() -> None:
user_id = "zhangsan@example.com" user_id = "zhangsan@example.com"
with session_factory() as db: with session_factory() as db:
db.add( manager = Employee(
Employee( employee_no="E3000",
name="李经理",
email="manager@example.com",
)
employee = Employee(
employee_no="E3001", employee_no="E3001",
name="张三", name="张三",
email=user_id, email=user_id,
manager=manager,
) )
) db.add_all([manager, employee])
db.commit() db.commit()
response = client.post( response = client.post(
@@ -673,8 +678,8 @@ def test_orchestrator_expense_next_step_submits_claim_to_approval() -> None:
assert payload["status"] == "succeeded" assert payload["status"] == "succeeded"
assert payload["result"]["draft_payload"]["claim_no"].startswith("EXP-") assert payload["result"]["draft_payload"]["claim_no"].startswith("EXP-")
assert payload["result"]["draft_payload"]["status"] == "submitted" assert payload["result"]["draft_payload"]["status"] == "submitted"
assert payload["result"]["draft_payload"]["approval_stage"] == "AI验审" assert payload["result"]["draft_payload"]["approval_stage"] == "直属领导审批"
assert "提交审批" in payload["result"]["answer"] assert "完成 AI验审" in payload["result"]["answer"]
with session_factory() as db: with session_factory() as db:
claim = db.scalar( claim = db.scalar(
@@ -684,7 +689,7 @@ def test_orchestrator_expense_next_step_submits_claim_to_approval() -> None:
) )
assert claim is not None assert claim is not None
assert claim.status == "submitted" assert claim.status == "submitted"
assert claim.approval_stage == "AI验审" assert claim.approval_stage == "直属领导审批"
assert claim.submitted_at is not None assert claim.submitted_at is not None