生成日报、周报

This commit is contained in:
z66
2025-10-30 09:54:47 +08:00
parent c894e344aa
commit c5a5a0a99c
17 changed files with 3129 additions and 1 deletions
+149
View File
@@ -0,0 +1,149 @@
"""
钉钉推送使用示例
演示如何配置和使用钉钉推送功能
"""
import os
import sys
# 添加父目录到路径
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(os.path.dirname(current_dir))
if parent_dir not in sys.path:
sys.path.insert(0, parent_dir)
from applications.reporter.daily import DailyReporter
from applications.reporter.weekly import WeeklyReporter
from applications.reporter.dingtalk_webhook import DingTalkWebhook
def example_with_config():
"""示例1:通过config.py配置"""
print("=" * 50)
print("示例1:使用config.py中的配置")
print("=" * 50)
# 需要在config.py中设置 DINGTALK_WEBHOOK
reporter = DailyReporter()
result = reporter.generate()
print(f"✅ 报告已生成并推送\n")
def example_with_env_var():
"""示例2:通过环境变量配置"""
print("=" * 50)
print("示例2:使用环境变量配置")
print("=" * 50)
# 设置环境变量
webhook_url = os.getenv('DINGTALK_WEBHOOK', '')
if webhook_url:
reporter = DailyReporter(dingtalk_webhook=webhook_url)
result = reporter.generate()
print(f"✅ 报告已生成并推送\n")
else:
print("⚠️ 未设置环境变量 DINGTALK_WEBHOOK\n")
def example_with_direct_url():
"""示例3:直接指定Webhook地址"""
print("=" * 50)
print("示例3:直接指定Webhook地址")
print("=" * 50)
# 直接指定webhook地址(请替换为实际的webhook地址)
webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
if webhook_url != "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN":
reporter = DailyReporter(dingtalk_webhook=webhook_url)
result = reporter.generate()
print(f"✅ 报告已生成并推送\n")
else:
print("⚠️ 请先设置实际的webhook地址\n")
def example_without_push():
"""示例4:生成报告但不推送"""
print("=" * 50)
print("示例4:生成报告但不推送到钉钉")
print("=" * 50)
reporter = DailyReporter()
result = reporter.generate(send_dingtalk=False)
print(f"✅ 报告已生成(未推送)\n")
def example_weekly_report():
"""示例5:生成周报并推送"""
print("=" * 50)
print("示例5:生成周报并推送")
print("=" * 50)
reporter = WeeklyReporter()
result = reporter.generate()
print(f"✅ 周报已生成并推送\n")
def example_test_webhook():
"""示例6:测试钉钉Webhook连接"""
print("=" * 50)
print("示例6:测试钉钉Webhook连接")
print("=" * 50)
webhook_url = input("请输入钉钉Webhook地址(直接回车跳过): ").strip()
if not webhook_url:
print("⚠️ 未输入Webhook地址,跳过测试\n")
return
client = DingTalkWebhook(webhook_url)
# 发送测试消息
success = client.send_text("这是一条测试消息", at_all=False)
if success:
print("✅ 测试消息发送成功,Webhook配置正确\n")
else:
print("❌ 测试消息发送失败,请检查Webhook地址是否正确\n")
def main():
"""主函数"""
print("\n" + "=" * 50)
print("钉钉推送功能使用示例")
print("=" * 50 + "\n")
print("请选择要运行的示例:")
print("1. 通过config.py配置(需要先在config.py中设置DINGTALK_WEBHOOK")
print("2. 通过环境变量配置")
print("3. 直接指定Webhook地址")
print("4. 生成报告但不推送")
print("5. 生成周报并推送")
print("6. 测试钉钉Webhook连接")
print("0. 退出")
choice = input("\n请输入选项(0-6: ").strip()
if choice == "1":
example_with_config()
elif choice == "2":
example_with_env_var()
elif choice == "3":
example_with_direct_url()
elif choice == "4":
example_without_push()
elif choice == "5":
example_weekly_report()
elif choice == "6":
example_test_webhook()
elif choice == "0":
print("退出")
else:
print("无效选项")
print("=" * 50)
print("示例运行完成!")
print("=" * 50 + "\n")
if __name__ == "__main__":
main()