test_approval_flow_e2e.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. """
  2. 端到端测试:审批消息发送到个人和项目群
  3. 验证配置:个人(ou_498988d823b61ab89c9afe4310f85bb4)+ 项目群(oc_7940ec97cde40b245cff9cb606ff1ac7)
  4. """
  5. import sys
  6. from pathlib import Path
  7. sys.path.insert(0, str(Path(__file__).parent.parent.parent))
  8. from dotenv import load_dotenv
  9. load_dotenv()
  10. from agent.tools.builtin.feishu.feishu_client import FeishuClient
  11. from config import (
  12. FEISHU_APP_ID,
  13. FEISHU_APP_SECRET,
  14. FEISHU_OPERATOR_OPEN_ID,
  15. FEISHU_AD_PROJECT_CHAT_ID
  16. )
  17. print("=" * 70)
  18. print("端到端测试:审批消息发送验证")
  19. print("=" * 70)
  20. print()
  21. print(f"飞书应用 ID: {FEISHU_APP_ID}")
  22. print(f"个人 Open ID: {FEISHU_OPERATOR_OPEN_ID}")
  23. print(f"项目群聊 ID: {FEISHU_AD_PROJECT_CHAT_ID}")
  24. print()
  25. # 检查配置
  26. if not FEISHU_OPERATOR_OPEN_ID:
  27. print("❌ 错误:FEISHU_OPERATOR_OPEN_ID 未配置")
  28. sys.exit(1)
  29. if not FEISHU_AD_PROJECT_CHAT_ID:
  30. print("❌ 错误:FEISHU_AD_PROJECT_CHAT_ID 未配置")
  31. sys.exit(1)
  32. client = FeishuClient(
  33. app_id=FEISHU_APP_ID,
  34. app_secret=FEISHU_APP_SECRET
  35. )
  36. # 模拟审批消息
  37. test_message = """📋 **广告调控决策审批(测试)**
  38. 请求ID: test_e2e_20260418_001
  39. 时间: 2026-04-18 00:30
  40. 🔶 待审批操作(3 个):
  41. ----------------------------------------
  42. ⏸️ 暂停: 1 个
  43. ⬇️ 降价: 2 个
  44. 前 3 个示例:
  45. 1. 广告 ID: 12345 | R500_test_ad_1 | 操作: pause
  46. 理由: 动态ROI为1.5,低于R500组中位数30%
  47. 2. 广告 ID: 12346 | R500_test_ad_2 | 操作: bid_down 3%
  48. 理由: 动态ROI为2.2,低于R500组中位数11%
  49. 3. 广告 ID: 12347 | R330_test_ad_1 | 操作: bid_down 5%
  50. 理由: 动态ROI为1.8,低于R330组中位数15%
  51. ---
  52. 💬 **请回复以下内容进行审批**:
  53. - 回复 "通过" → 批准所有操作
  54. - 回复 "拒绝" → 拒绝所有操作
  55. - 回复 "广告12345不要暂停" → 修改决策
  56. 📊 详细报表将随后发送(Excel在线表格)
  57. """
  58. print("测试 1/2:发送消息到个人")
  59. print("-" * 70)
  60. try:
  61. result_personal = client.send_message(to=FEISHU_OPERATOR_OPEN_ID, text=test_message)
  62. print("✅ 发送成功!")
  63. print(f" 消息 ID: {result_personal.message_id}")
  64. print(f" 接收者: {FEISHU_OPERATOR_OPEN_ID}")
  65. print()
  66. except Exception as e:
  67. print(f"❌ 发送失败: {e}")
  68. print()
  69. print("测试 2/2:发送消息到项目群聊")
  70. print("-" * 70)
  71. try:
  72. result_group = client.send_message(to=FEISHU_AD_PROJECT_CHAT_ID, text=test_message)
  73. print("✅ 发送成功!")
  74. print(f" 消息 ID: {result_group.message_id}")
  75. print(f" 群聊 ID: {result_group.chat_id}")
  76. print()
  77. except Exception as e:
  78. print(f"❌ 发送失败: {e}")
  79. print()
  80. print("=" * 70)
  81. print("验证步骤:")
  82. print("=" * 70)
  83. print()
  84. print("1️⃣ 检查个人飞书消息,应该收到上述测试消息")
  85. print("2️⃣ 检查项目群聊,应该收到相同的测试消息")
  86. print("3️⃣ 在任一位置回复'通过'或'拒绝',系统应能识别")
  87. print()
  88. print("如果两处都收到消息,说明配置成功!✅")
  89. print()