Forráskód Böngészése

fix: simplify Feishu message alerts

AI-Co-Authored-By: Codex
chendeben 1 hónapja
szülő
commit
50472ebd3c

+ 4 - 4
admin-web/src/pages/BusinessAssistant.tsx

@@ -677,17 +677,17 @@ export default function BusinessAssistantPage() {
                           <Form.Item name="digest_time" label="简报时间" extra="24 小时制 HH:MM"><Input placeholder="09:00" /></Form.Item>
                         </Col>
                         <Col xs={24}>
-                          <Typography.Title level={5} style={{ marginTop: 8 }}>飞书新消息提醒</Typography.Title>
+                          <Typography.Title level={5} style={{ marginTop: 8 }}>消息提醒</Typography.Title>
                           <Alert
                             type="info"
                             showIcon
-                            message="第一期按每条客户消息提醒"
-                            description="启用后,每一条新的客户 Business 消息都会推送到飞书群;账号本人回复、机器人消息及 Telegram 原生欢迎/离线自动消息不会触发。"
+                            message="第一期按每条用户消息提醒"
+                            description="启用后,每一条新的用户 Business 消息都会推送到飞书;账号本人回复、机器人消息及 Telegram 原生欢迎/离线自动消息不会触发。"
                             style={{ marginBottom: 16 }}
                           />
                         </Col>
                         <Col xs={24} md={8}>
-                          <Form.Item name="feishu_webhook_enabled" label="飞书群提醒" valuePropName="checked">
+                          <Form.Item name="feishu_webhook_enabled" label="飞书消息提醒" valuePropName="checked">
                             <Switch checkedChildren="开启" unCheckedChildren="关闭" />
                           </Form.Item>
                         </Col>

+ 3 - 1
admin-web/tests/unit/BusinessAssistant.test.tsx

@@ -245,7 +245,9 @@ test('展示脱敏的飞书提醒配置并可发送测试消息', async () => {
   render(<BusinessAssistantPage />);
   await screen.findAllByText('店主');
 
-  expect(screen.getByText('第一期按每条客户消息提醒')).toBeInTheDocument();
+  expect(screen.getByText('消息提醒')).toBeInTheDocument();
+  expect(screen.getByText('第一期按每条用户消息提醒')).toBeInTheDocument();
+  expect(screen.getByText('飞书消息提醒')).toBeInTheDocument();
   expect(screen.getByText('Webhook 已配置')).toBeInTheDocument();
   expect(screen.getByText('签名已配置')).toBeInTheDocument();
 

+ 9 - 5
tests/test_business_assistant.py

@@ -599,7 +599,7 @@ async def test_business_updates_are_idempotent_and_manual_reply_pauses(app_modul
     assert len(runtime.api.sent) == 1
 
 
-async def test_every_customer_message_notifies_feishu_once(app_modules):
+async def test_every_user_message_notifies_feishu_once(app_modules):
     dbassistant, _service, runtime, _knowledge = await prepare_runtime(app_modules)
     webhook_url = "https://open.feishu.cn/open-apis/bot/v2/hook/12345678-abcd-4321-abcd-123456789abc"
     await dbassistant.update_account_settings(
@@ -625,6 +625,10 @@ async def test_every_customer_message_notifies_feishu_once(app_modules):
     assert feishu.sent[0]["webhook_url"] == webhook_url
     assert feishu.sent[0]["signing_secret"] == "secret"
     assert "营业时间是什么" not in feishu.sent[0]["text"]
+    assert feishu.sent[0]["text"].startswith("消息提醒\n")
+    assert "用户:" in feishu.sent[0]["text"]
+    assert "客户:" not in feishu.sent[0]["text"]
+    assert "消息标识:" not in feishu.sent[0]["text"]
 
     await dbassistant.update_account_settings(
         "conn-a", {"feishu_message_preview_enabled": True}
@@ -633,12 +637,12 @@ async def test_every_customer_message_notifies_feishu_once(app_modules):
         {
             "update_id": 103,
             "business_message": customer_message(
-                message_id=2, text="第二条客户消息"
+                message_id=2, text="第二条用户消息"
             ),
         }
     )
     assert len(feishu.sent) == 2
-    assert "第二条客户消息" in feishu.sent[1]["text"]
+    assert "第二条用户消息" in feishu.sent[1]["text"]
 
     await runtime.process_update(
         {
@@ -934,11 +938,11 @@ async def test_feishu_webhook_signature_and_success_contract(app_modules):
     client = service.FeishuWebhookClient(session)
     await client.send(
         "https://open.feishu.cn/open-apis/bot/v2/hook/12345678-abcd-4321-abcd-123456789abc",
-        "Telegram 新消息提醒",
+        "消息提醒",
         signing_secret="secret",
     )
     assert session.payload["msg_type"] == "text"
-    assert session.payload["content"]["text"] == "Telegram 新消息提醒"
+    assert session.payload["content"]["text"] == "消息提醒"
     assert session.payload["timestamp"]
     assert session.payload["sign"]
 

+ 7 - 12
wbb/services/business_assistant.py

@@ -1092,13 +1092,13 @@ class BusinessAssistantRuntime:
         message_id = int(message.get("message_id") or 0)
         if not await claim_feishu_message_notification(conversation_id, message_id):
             return
-        customer_name = " ".join(
+        user_name = " ".join(
             str(item).strip()
             for item in (sender.get("first_name"), sender.get("last_name"))
             if str(item or "").strip()
         )
-        if not customer_name:
-            customer_name = (
+        if not user_name:
+            user_name = (
                 f"@{sender.get('username')}"
                 if sender.get("username")
                 else str((message.get("chat") or {}).get("id") or "未知")
@@ -1114,9 +1114,9 @@ class BusinessAssistantRuntime:
             message.get("text") or message.get("caption") or ""
         ).strip()
         lines = [
-            "Telegram 新消息提醒",
+            "消息提醒",
             f"账号:{account_name}",
-            f"客户:{customer_name}",
+            f"用户:{user_name}",
             f"类型:{message_type}",
         ]
         if settings.get("feishu_message_preview_enabled"):
@@ -1127,12 +1127,7 @@ class BusinessAssistantRuntime:
             ).strftime("%Y-%m-%d %H:%M:%S UTC")
         except (OSError, OverflowError, TypeError, ValueError):
             message_time = "未知"
-        lines.extend(
-            [
-                f"时间:{message_time}",
-                f"消息标识:chat_id={(message.get('chat') or {}).get('id')} / message_id={message_id}",
-            ]
-        )
+        lines.append(f"时间:{message_time}")
         try:
             await self.feishu.send(
                 webhook_url,
@@ -1179,7 +1174,7 @@ class BusinessAssistantRuntime:
             webhook_url,
             "\n".join(
                 [
-                    "Telegram 新消息提醒",
+                    "消息提醒",
                     "飞书群机器人连接测试成功。",
                     f"账号:{account_name}",
                 ]