| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- """
- 测试发送消息和表格到投放审批群聊
- """
- import asyncio
- import sys
- from pathlib import Path
- sys.path.insert(0, str(Path(__file__).parent.parent.parent))
- from dotenv import load_dotenv
- load_dotenv()
- from agent.tools.builtin.feishu.feishu_client import FeishuClient
- from agent.tools.models import ToolContext
- from config import FEISHU_APP_ID, FEISHU_APP_SECRET, FEISHU_OPERATOR_CHAT_ID
- print("=" * 60)
- print("测试发送消息和表格到投放审批群聊")
- print("=" * 60)
- print()
- print(f"飞书应用 ID: {FEISHU_APP_ID}")
- print(f"投放审批群聊 ID: {FEISHU_OPERATOR_CHAT_ID}")
- print()
- # 创建飞书客户端
- client = FeishuClient(
- app_id=FEISHU_APP_ID,
- app_secret=FEISHU_APP_SECRET
- )
- async def main():
- # 步骤1:发送测试消息
- print("🚀 步骤1:发送测试消息...")
- test_message = """📊 **广告调控测试消息**
- 这是一条测试消息,验证以下功能:
- ✅ 消息发送到投放审批群聊
- ✅ 在线表格导入和分享
- ✅ 外部访问权限设置
- ---
- 测试时间: 2026-04-17 21:40
- """
- try:
- result = client.send_message(to=FEISHU_OPERATOR_CHAT_ID, text=test_message)
- print(f"✅ 测试消息发送成功")
- print(f" 消息 ID: {result.message_id}")
- print()
- except Exception as e:
- print(f"❌ 测试消息发送失败: {e}")
- return
- # 步骤2:查找或创建测试表格
- print("🚀 步骤2:准备测试表格...")
- reports_dir = Path("outputs/reports")
- # 查找已有的 xlsx 文件
- xlsx_files = list(reports_dir.glob("*.xlsx"))
- if not xlsx_files:
- print("⚠️ 未找到现有表格文件,创建测试表格...")
- # 创建简单的测试 Excel
- import pandas as pd
- test_data = pd.DataFrame({
- "广告ID": [12345, 67890],
- "广告名称": ["测试广告1", "测试广告2"],
- "ROI": [1.5, 2.3],
- "日均消耗": [500, 800],
- "决策": ["保持", "提价5%"],
- })
- reports_dir.mkdir(parents=True, exist_ok=True)
- test_xlsx = reports_dir / "test_decision_20260417.xlsx"
- test_data.to_excel(test_xlsx, index=False)
- print(f"✅ 测试表格已创建: {test_xlsx.name}")
- xlsx_path = test_xlsx
- else:
- xlsx_path = xlsx_files[0]
- print(f"✅ 使用现有表格: {xlsx_path.name}")
- print()
- # 步骤3:导入为飞书在线表格并发送到群聊
- print("🚀 步骤3:导入飞书在线表格...")
- # 添加 tools 目录到路径
- tools_dir = Path(__file__).parent / "tools"
- if str(tools_dir) not in sys.path:
- sys.path.insert(0, str(tools_dir))
- from feishu_doc import import_to_feishu
- ctx = ToolContext(uid="test", step_count=1, trace_id="test-trace")
- result = await import_to_feishu(
- ctx=ctx,
- xlsx_path=str(xlsx_path),
- send_im=True,
- chat_id=FEISHU_OPERATOR_CHAT_ID
- )
- print()
- print("=" * 60)
- print("📊 测试结果")
- print("=" * 60)
- print(f"标题: {result.title}")
- print(f"输出: {result.output}")
- print()
- if result.metadata and result.metadata.get("url"):
- sheet_url = result.metadata["url"]
- print(f"✅ 在线表格已生成")
- print(f" URL: {sheet_url}")
- print()
- print("📱 请在飞书群聊中确认:")
- print(" 1. 收到测试消息")
- print(" 2. 收到表格链接消息")
- print(" 3. 点击链接能打开表格")
- print()
- print("🧪 测试外部访问:")
- print(" 1. 复制表格 URL")
- print(" 2. 退出飞书账号(或使用隐私模式浏览器)")
- print(" 3. 访问 URL,看是否能直接查看")
- print()
- else:
- print("❌ 在线表格导入失败")
- print(f" 错误: {result.output}")
- if __name__ == "__main__":
- asyncio.run(main())
|