test(backend): update service tests
- test_orchestrator_service.py: update orchestrator service tests - test_user_agent_service.py: update user agent service tests
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session, sessionmaker
|
||||
from sqlalchemy.pool import StaticPool
|
||||
@@ -103,13 +105,27 @@ def test_user_agent_guides_generic_expense_request() -> None:
|
||||
)
|
||||
)
|
||||
|
||||
assert "补充费用类型" in response.answer
|
||||
assert "上传票据" in response.answer
|
||||
assert response.review_payload is not None
|
||||
assert response.answer == response.review_payload.body_message
|
||||
assert response.review_payload.can_proceed is False
|
||||
assert response.review_payload.missing_slots == [
|
||||
"报销类型",
|
||||
"发生时间",
|
||||
"金额",
|
||||
"事由说明",
|
||||
"票据附件",
|
||||
]
|
||||
assert [item.action_type for item in response.review_payload.confirmation_actions] == [
|
||||
"cancel_review",
|
||||
"edit_review",
|
||||
"save_draft",
|
||||
]
|
||||
|
||||
|
||||
def test_user_agent_guides_implicit_expense_draft_request() -> None:
|
||||
session_factory = build_session_factory()
|
||||
with session_factory() as db:
|
||||
today = datetime.now(UTC).date().isoformat()
|
||||
ontology = SemanticOntologyService(db).parse(
|
||||
OntologyParseRequest(
|
||||
query="我今天去客户现场,招待了客户,花销了1000元",
|
||||
@@ -126,9 +142,21 @@ def test_user_agent_guides_implicit_expense_draft_request() -> None:
|
||||
)
|
||||
)
|
||||
|
||||
assert "1000元" in response.answer
|
||||
assert "票据附件" in response.answer
|
||||
assert "报销草稿" in response.answer
|
||||
assert response.review_payload is not None
|
||||
assert response.answer == response.review_payload.body_message
|
||||
assert response.review_payload.intent_summary.startswith("系统识别出您想要报销业务招待费。")
|
||||
assert response.review_payload.missing_slots == ["客户名称", "参与人员", "票据附件"]
|
||||
assert [item.action_type for item in response.review_payload.confirmation_actions] == [
|
||||
"cancel_review",
|
||||
"edit_review",
|
||||
"save_draft",
|
||||
]
|
||||
|
||||
slot_map = {item.key: item for item in response.review_payload.slot_cards}
|
||||
assert slot_map["expense_type"].value == "业务招待费"
|
||||
assert slot_map["time_range"].value == f"{today}(原文:今天)"
|
||||
assert slot_map["location"].value == "客户现场"
|
||||
assert slot_map["amount"].value == "1000.00元"
|
||||
|
||||
|
||||
def test_user_agent_risk_response_includes_rule_citations() -> None:
|
||||
@@ -176,12 +204,21 @@ def test_user_agent_draft_returns_structured_payload() -> None:
|
||||
|
||||
assert response.draft_payload is not None
|
||||
assert response.draft_payload.confirmation_required is True
|
||||
assert "待人工确认" in response.answer
|
||||
assert response.review_payload is not None
|
||||
assert response.review_payload.can_proceed is False
|
||||
assert response.review_payload.missing_slots == ["金额", "事由说明", "票据附件"]
|
||||
assert [item.action_type for item in response.review_payload.confirmation_actions] == [
|
||||
"cancel_review",
|
||||
"edit_review",
|
||||
"save_draft",
|
||||
]
|
||||
assert response.answer == response.review_payload.body_message
|
||||
|
||||
|
||||
def test_user_agent_builds_review_payload_for_multi_document_expense_flow() -> None:
|
||||
session_factory = build_session_factory()
|
||||
with session_factory() as db:
|
||||
yesterday = (datetime.now(UTC).date() - timedelta(days=1)).isoformat()
|
||||
ontology = SemanticOntologyService(db).parse(
|
||||
OntologyParseRequest(
|
||||
query="我昨天去上海出差,还请客户A吃饭,帮我生成报销草稿",
|
||||
@@ -242,7 +279,12 @@ def test_user_agent_builds_review_payload_for_multi_document_expense_flow() -> N
|
||||
assert response.review_payload is not None
|
||||
assert len(response.review_payload.document_cards) == 2
|
||||
assert len(response.review_payload.claim_groups) == 2
|
||||
assert any(
|
||||
item.action_type == "split_claims"
|
||||
for item in response.review_payload.confirmation_actions
|
||||
)
|
||||
assert response.review_payload.missing_slots == ["参与人员"]
|
||||
assert [item.action_type for item in response.review_payload.confirmation_actions] == [
|
||||
"cancel_review",
|
||||
"edit_review",
|
||||
"save_draft",
|
||||
]
|
||||
assert any(item.scene_label == "业务招待费" for item in response.review_payload.document_cards)
|
||||
assert "建议拆分为 2 张报销单" in response.review_payload.intent_summary
|
||||
assert f"{yesterday}(原文:昨天)" in response.review_payload.intent_summary
|
||||
|
||||
Reference in New Issue
Block a user