137 lines
3.8 KiB
Python
137 lines
3.8 KiB
Python
"""
|
|
报告生成器使用示例
|
|
展示各种使用场景
|
|
"""
|
|
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
|
|
|
|
|
|
def example_daily_report():
|
|
"""示例1:生成简单日报"""
|
|
print("=" * 50)
|
|
print("示例1:生成日报(使用内置模板)")
|
|
print("=" * 50)
|
|
|
|
reporter = DailyReporter()
|
|
report_path = reporter.generate()
|
|
print(f"✅ 日报已生成: {report_path}\n")
|
|
|
|
|
|
def example_weekly_report():
|
|
"""示例2:生成简单周报"""
|
|
print("=" * 50)
|
|
print("示例2:生成周报(使用内置模板)")
|
|
print("=" * 50)
|
|
|
|
reporter = WeeklyReporter()
|
|
report_path = reporter.generate()
|
|
print(f"✅ 周报已生成: {report_path}\n")
|
|
|
|
|
|
def example_custom_template():
|
|
"""示例3:使用外部模板"""
|
|
print("=" * 50)
|
|
print("示例3:使用外部HTML模板生成日报")
|
|
print("=" * 50)
|
|
|
|
# 获取模板路径(相对于当前文件)
|
|
template_path = os.path.join(
|
|
os.path.dirname(__file__),
|
|
'templates',
|
|
'custom_template_example.html'
|
|
)
|
|
|
|
if os.path.exists(template_path):
|
|
reporter = DailyReporter()
|
|
report_path = reporter.generate(template_path=template_path)
|
|
print(f"✅ 使用外部模板生成的日报: {report_path}\n")
|
|
else:
|
|
print(f"⚠️ 模板文件不存在: {template_path}\n")
|
|
|
|
|
|
def example_custom_output_dir():
|
|
"""示例4:指定输出目录"""
|
|
print("=" * 50)
|
|
print("示例4:指定自定义输出目录")
|
|
print("=" * 50)
|
|
|
|
reporter = DailyReporter()
|
|
custom_dir = "output/reports/custom"
|
|
report_path = reporter.generate(output_dir=custom_dir)
|
|
print(f"✅ 报告已保存到自定义目录: {report_path}\n")
|
|
|
|
|
|
def example_add_data_source():
|
|
"""示例5:添加自定义数据源"""
|
|
print("=" * 50)
|
|
print("示例5:添加自定义数据源")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
from applications.reporter.data_source_example import ComplaintDataSource
|
|
from utils.mysql_agent import MySQLAgent
|
|
from config import Config
|
|
|
|
reporter = DailyReporter()
|
|
|
|
# 添加投诉数据源(如果数据库中有该表)
|
|
db_agent = MySQLAgent(Config.MYSQL_CONFIG)
|
|
complaint_source = ComplaintDataSource(db_agent, table_name="complaint_data")
|
|
reporter.add_data_source(complaint_source)
|
|
|
|
report_path = reporter.generate()
|
|
print(f"✅ 包含自定义数据源的报告已生成: {report_path}\n")
|
|
except Exception as e:
|
|
print(f"⚠️ 添加自定义数据源失败(可能是表不存在): {str(e)}\n")
|
|
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("\n" + "=" * 50)
|
|
print("汽车后市场情报报告生成器 - 使用示例")
|
|
print("=" * 50 + "\n")
|
|
|
|
# 运行各种示例
|
|
try:
|
|
example_daily_report()
|
|
except Exception as e:
|
|
print(f"❌ 示例1失败: {str(e)}\n")
|
|
|
|
try:
|
|
example_weekly_report()
|
|
except Exception as e:
|
|
print(f"❌ 示例2失败: {str(e)}\n")
|
|
|
|
try:
|
|
example_custom_template()
|
|
except Exception as e:
|
|
print(f"❌ 示例3失败: {str(e)}\n")
|
|
|
|
try:
|
|
example_custom_output_dir()
|
|
except Exception as e:
|
|
print(f"❌ 示例4失败: {str(e)}\n")
|
|
|
|
try:
|
|
example_add_data_source()
|
|
except Exception as e:
|
|
print(f"❌ 示例5失败: {str(e)}\n")
|
|
|
|
print("=" * 50)
|
|
print("所有示例运行完成!")
|
|
print("=" * 50 + "\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|