feat: adaptive debounce and intent-driven quote trigger tuning

This commit is contained in:
2026-02-28 22:54:00 +08:00
parent 41c93f9456
commit 5a73aa34d2
3 changed files with 239 additions and 18 deletions

View File

@@ -61,6 +61,58 @@ class RegressionPipelineTest(unittest.IsolatedAsyncioTestCase):
self.assertIn("15", resp.reply)
agent._quote_pending_images.assert_awaited()
async def test_single_image_requirement_intent_triggers_quote(self):
agent = CustomerServiceAgent()
st = agent._get_conversation_state(self.customer_id)
st.pending_image_urls = ["https://img.alicdn.com/a.jpg"]
st.pending_requirements = []
agent._sync_pending_quote_state(self.customer_id, st)
agent._quote_pending_images = AsyncMock(return_value={"reply": "这张20元定了我马上做", "need_transfer": False})
msg = CustomerMessage(
msg_id="m3",
acc_id="test_shop",
msg="这个门头上面的字做一下",
from_id=self.customer_id,
from_name="t",
cy_id=self.customer_id,
acc_type="AliWorkbench",
msg_type=0,
cy_name="t",
goods_name="专业找图",
goods_order="",
)
resp = await agent.process_message(msg)
self.assertTrue(resp.should_reply)
self.assertIn("20", resp.reply)
agent._quote_pending_images.assert_awaited()
async def test_multi_image_finish_intent_triggers_quote(self):
agent = CustomerServiceAgent()
st = agent._get_conversation_state(self.customer_id)
st.pending_image_urls = ["https://img.alicdn.com/a.jpg", "https://img.alicdn.com/b.jpg"]
st.pending_requirements = ["改字"]
agent._sync_pending_quote_state(self.customer_id, st)
agent._quote_pending_images = AsyncMock(return_value={"reply": "两张打包45定了我就开做", "need_transfer": False})
msg = CustomerMessage(
msg_id="m4",
acc_id="test_shop",
msg="就这几张,先按这些报个价",
from_id=self.customer_id,
from_name="t",
cy_id=self.customer_id,
acc_type="AliWorkbench",
msg_type=0,
cy_name="t",
goods_name="专业找图",
goods_order="",
)
resp = await agent.process_message(msg)
self.assertTrue(resp.should_reply)
self.assertIn("45", resp.reply)
agent._quote_pending_images.assert_awaited()
async def test_pending_state_restore(self):
db.update_pending_quote_state(self.customer_id, ["u1", "u2"], ["r1"])
agent = CustomerServiceAgent()