feat(steward): off_topic 场景细分与引导回复

- 将业务无关输入细分为 greeting / meaningless / off_business 三类场景
- 新增 StewardOffTopicAgent,用 function calling 生成管家语气引导回复
- steward endpoint 与 user_agent_application 串联 off_topic 引导话术
- 补充 planner 与 user agent 的 off_topic 覆盖测试
This commit is contained in:
caoxiaozhu
2026-06-18 22:12:10 +08:00
parent 127d603e7d
commit a6674a1e76
6 changed files with 952 additions and 50 deletions

View File

@@ -753,6 +753,33 @@ def test_user_agent_application_submit_blocks_overlapping_travel_dates() -> None
assert response.draft_payload is None
def test_user_agent_application_maps_preview_travel_type_label() -> None:
session_factory = build_session_factory()
with session_factory() as db:
response = build_application_user_agent_response(
db,
"申请出差2月20-23日上海火车",
context_overrides={
"name": "曹笑竹",
"department_name": "技术部",
"grade": "P5",
"application_preview": {
"fields": {
"applicationType": "travel",
"time": "2026-02-20 至 2026-02-23",
"location": "上海市",
"reason": "",
"days": "4天",
"transportMode": "火车",
}
},
},
)
assert "| 申请类型 | 差旅费用申请 |" in response.answer
assert "| 申请类型 | travel |" not in response.answer
def test_user_agent_application_edit_resubmits_returned_application_claim() -> None:
session_factory = build_session_factory()
with session_factory() as db: