test_real_approval_flow.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. """
  2. 使用真实数据执行完整审批流程测试
  3. """
  4. import asyncio
  5. import sys
  6. from pathlib import Path
  7. # 添加项目根目录到路径
  8. PROJECT_ROOT = Path(__file__).parent.parent.parent
  9. sys.path.insert(0, str(PROJECT_ROOT))
  10. from dotenv import load_dotenv
  11. load_dotenv()
  12. from examples.auto_put_ad_mini.config import FEISHU_OPERATOR_OPEN_ID, FEISHU_AD_PROJECT_CHAT_ID
  13. from examples.auto_put_ad_mini.tools.im_approval import send_approval_request
  14. # 模拟ToolContext
  15. class SimpleContext:
  16. """简单的上下文模拟"""
  17. def __init__(self):
  18. self.config = {}
  19. async def main():
  20. print("=" * 70)
  21. print(" 完整端到端测试:使用真实数据")
  22. print("=" * 70)
  23. print()
  24. # 使用最新的验证决策数据
  25. validated_csv = "outputs/reports/validated_decisions_20260415.csv"
  26. print(f"使用数据文件: {validated_csv}")
  27. print()
  28. print("配置验证:")
  29. print(f" 个人 Open ID: {FEISHU_OPERATOR_OPEN_ID}")
  30. print(f" 项目群聊 ID: {FEISHU_AD_PROJECT_CHAT_ID}")
  31. print()
  32. # 执行审批流程
  33. print("执行审批流程...")
  34. print("-" * 70)
  35. ctx = SimpleContext()
  36. try:
  37. result = await send_approval_request(
  38. ctx=ctx,
  39. validated_csv=validated_csv,
  40. wait_for_reply=False, # 非阻塞模式
  41. timeout_minutes=30,
  42. )
  43. print()
  44. print("✅ 审批请求发送成功!")
  45. print("=" * 70)
  46. print()
  47. print(f"📋 {result.title}")
  48. print()
  49. print(result.output)
  50. print()
  51. if result.metadata:
  52. print("详细信息:")
  53. print(f" 请求ID: {result.metadata.get('request_id')}")
  54. print(f" 飞书发送状态: {result.metadata.get('feishu_sent', False)}")
  55. if 'ad_ids' in result.metadata:
  56. ad_ids = result.metadata['ad_ids']
  57. print(f" 待审批广告数: {len(ad_ids)}")
  58. print()
  59. print("=" * 70)
  60. print("请验证以下内容:")
  61. print("=" * 70)
  62. print()
  63. print("1️⃣ 个人私聊")
  64. print(" - 检查飞书个人消息")
  65. print(" - 确认收到审批消息 + 在线表格链接")
  66. print()
  67. print("2️⃣ 项目群聊")
  68. print(" - 检查项目群消息")
  69. print(" - 确认收到相同的审批消息 + 在线表格链接")
  70. print()
  71. print("3️⃣ 表格权限")
  72. print(" - 打开表格链接")
  73. print(' - 确认有"编辑"按钮(anyone_editable)')
  74. print(" - 尝试修改单元格,确认可编辑")
  75. print()
  76. print("4️⃣ 回复测试")
  77. print(" - 在个人私聊或项目群中回复'通过'")
  78. print(" - 系统应该能识别回复")
  79. print()
  80. except Exception as e:
  81. print(f"❌ 发送失败: {e}")
  82. import traceback
  83. traceback.print_exc()
  84. if __name__ == "__main__":
  85. asyncio.run(main())