test_send_with_sheet.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. """
  2. 测试发送消息和表格到投放审批群聊
  3. """
  4. import asyncio
  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 agent.tools.models import ToolContext
  12. from config import FEISHU_APP_ID, FEISHU_APP_SECRET, FEISHU_OPERATOR_CHAT_ID
  13. print("=" * 60)
  14. print("测试发送消息和表格到投放审批群聊")
  15. print("=" * 60)
  16. print()
  17. print(f"飞书应用 ID: {FEISHU_APP_ID}")
  18. print(f"投放审批群聊 ID: {FEISHU_OPERATOR_CHAT_ID}")
  19. print()
  20. # 创建飞书客户端
  21. client = FeishuClient(
  22. app_id=FEISHU_APP_ID,
  23. app_secret=FEISHU_APP_SECRET
  24. )
  25. async def main():
  26. # 步骤1:发送测试消息
  27. print("🚀 步骤1:发送测试消息...")
  28. test_message = """📊 **广告调控测试消息**
  29. 这是一条测试消息,验证以下功能:
  30. ✅ 消息发送到投放审批群聊
  31. ✅ 在线表格导入和分享
  32. ✅ 外部访问权限设置
  33. ---
  34. 测试时间: 2026-04-17 21:40
  35. """
  36. try:
  37. result = client.send_message(to=FEISHU_OPERATOR_CHAT_ID, text=test_message)
  38. print(f"✅ 测试消息发送成功")
  39. print(f" 消息 ID: {result.message_id}")
  40. print()
  41. except Exception as e:
  42. print(f"❌ 测试消息发送失败: {e}")
  43. return
  44. # 步骤2:查找或创建测试表格
  45. print("🚀 步骤2:准备测试表格...")
  46. reports_dir = Path("outputs/reports")
  47. # 查找已有的 xlsx 文件
  48. xlsx_files = list(reports_dir.glob("*.xlsx"))
  49. if not xlsx_files:
  50. print("⚠️ 未找到现有表格文件,创建测试表格...")
  51. # 创建简单的测试 Excel
  52. import pandas as pd
  53. test_data = pd.DataFrame({
  54. "广告ID": [12345, 67890],
  55. "广告名称": ["测试广告1", "测试广告2"],
  56. "ROI": [1.5, 2.3],
  57. "日均消耗": [500, 800],
  58. "决策": ["保持", "提价5%"],
  59. })
  60. reports_dir.mkdir(parents=True, exist_ok=True)
  61. test_xlsx = reports_dir / "test_decision_20260417.xlsx"
  62. test_data.to_excel(test_xlsx, index=False)
  63. print(f"✅ 测试表格已创建: {test_xlsx.name}")
  64. xlsx_path = test_xlsx
  65. else:
  66. xlsx_path = xlsx_files[0]
  67. print(f"✅ 使用现有表格: {xlsx_path.name}")
  68. print()
  69. # 步骤3:导入为飞书在线表格并发送到群聊
  70. print("🚀 步骤3:导入飞书在线表格...")
  71. # 添加 tools 目录到路径
  72. tools_dir = Path(__file__).parent / "tools"
  73. if str(tools_dir) not in sys.path:
  74. sys.path.insert(0, str(tools_dir))
  75. from feishu_doc import import_to_feishu
  76. ctx = ToolContext(uid="test", step_count=1, trace_id="test-trace")
  77. result = await import_to_feishu(
  78. ctx=ctx,
  79. xlsx_path=str(xlsx_path),
  80. send_im=True,
  81. chat_id=FEISHU_OPERATOR_CHAT_ID
  82. )
  83. print()
  84. print("=" * 60)
  85. print("📊 测试结果")
  86. print("=" * 60)
  87. print(f"标题: {result.title}")
  88. print(f"输出: {result.output}")
  89. print()
  90. if result.metadata and result.metadata.get("url"):
  91. sheet_url = result.metadata["url"]
  92. print(f"✅ 在线表格已生成")
  93. print(f" URL: {sheet_url}")
  94. print()
  95. print("📱 请在飞书群聊中确认:")
  96. print(" 1. 收到测试消息")
  97. print(" 2. 收到表格链接消息")
  98. print(" 3. 点击链接能打开表格")
  99. print()
  100. print("🧪 测试外部访问:")
  101. print(" 1. 复制表格 URL")
  102. print(" 2. 退出飞书账号(或使用隐私模式浏览器)")
  103. print(" 3. 访问 URL,看是否能直接查看")
  104. print()
  105. else:
  106. print("❌ 在线表格导入失败")
  107. print(f" 错误: {result.output}")
  108. if __name__ == "__main__":
  109. asyncio.run(main())