163 lines
5.0 KiB
Python
163 lines
5.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
指定需求分析示例
|
|
|
|
这个示例展示了如何指定分析需求,让 AI 根据需求进行针对性分析。
|
|
AI 会理解抽象的需求概念(如"健康度"),并将其转化为具体的分析指标。
|
|
|
|
使用方法:
|
|
python examples/requirement_based_analysis.py
|
|
|
|
或者使用命令行:
|
|
python -m src.main --data test_data/ticket_sample.csv --requirement "分析工单健康度" --output output/requirement
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
|
|
# 添加项目根目录到路径
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
|
|
|
from src.main import run_analysis
|
|
from src.logging_config import setup_logging
|
|
import logging
|
|
|
|
def main():
|
|
"""运行指定需求分析"""
|
|
# 设置日志
|
|
setup_logging()
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info("=" * 80)
|
|
logger.info("指定需求分析示例")
|
|
logger.info("=" * 80)
|
|
|
|
# 配置参数
|
|
data_file = "test_data/ticket_sample.csv"
|
|
user_requirement = "我想了解工单的健康度,包括关闭率、处理效率、积压情况和响应及时性"
|
|
output_dir = "output/requirement"
|
|
|
|
logger.info(f"数据文件: {data_file}")
|
|
logger.info(f"用户需求: {user_requirement}")
|
|
logger.info(f"输出目录: {output_dir}")
|
|
logger.info("")
|
|
logger.info("分析模式: 指定需求")
|
|
logger.info("AI 将:")
|
|
logger.info(" 1. 理解用户的抽象需求(健康度)")
|
|
logger.info(" 2. 将需求转化为具体指标")
|
|
logger.info(" - 关闭率")
|
|
logger.info(" - 处理效率(平均处理时长)")
|
|
logger.info(" - 积压情况(待处理工单占比)")
|
|
logger.info(" - 响应及时性")
|
|
logger.info(" 3. 生成针对性的分析计划")
|
|
logger.info(" 4. 执行分析并生成报告")
|
|
logger.info("")
|
|
|
|
try:
|
|
# 运行分析(指定需求)
|
|
report_path = run_analysis(
|
|
data_file=data_file,
|
|
user_requirement=user_requirement,
|
|
template_file=None,
|
|
output_dir=output_dir
|
|
)
|
|
|
|
logger.info("")
|
|
logger.info("=" * 80)
|
|
logger.info("分析完成!")
|
|
logger.info(f"报告已生成: {report_path}")
|
|
logger.info("=" * 80)
|
|
|
|
# 显示报告预览
|
|
if os.path.exists(report_path):
|
|
with open(report_path, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
preview = content[:500] + "..." if len(content) > 500 else content
|
|
logger.info("")
|
|
logger.info("报告预览:")
|
|
logger.info("-" * 80)
|
|
logger.info(preview)
|
|
logger.info("-" * 80)
|
|
|
|
except Exception as e:
|
|
logger.error(f"分析失败: {e}", exc_info=True)
|
|
sys.exit(1)
|
|
|
|
def example_sales_analysis():
|
|
"""销售数据分析示例"""
|
|
setup_logging()
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info("=" * 80)
|
|
logger.info("销售数据分析示例")
|
|
logger.info("=" * 80)
|
|
|
|
data_file = "test_data/sales_sample.csv"
|
|
user_requirement = "分析销售趋势和区域表现,识别高价值客户和畅销产品"
|
|
output_dir = "output/sales_analysis"
|
|
|
|
logger.info(f"数据文件: {data_file}")
|
|
logger.info(f"用户需求: {user_requirement}")
|
|
logger.info(f"输出目录: {output_dir}")
|
|
logger.info("")
|
|
|
|
try:
|
|
report_path = run_analysis(
|
|
data_file=data_file,
|
|
user_requirement=user_requirement,
|
|
template_file=None,
|
|
output_dir=output_dir
|
|
)
|
|
|
|
logger.info("")
|
|
logger.info("=" * 80)
|
|
logger.info("分析完成!")
|
|
logger.info(f"报告已生成: {report_path}")
|
|
logger.info("=" * 80)
|
|
|
|
except Exception as e:
|
|
logger.error(f"分析失败: {e}", exc_info=True)
|
|
|
|
def example_user_analysis():
|
|
"""用户数据分析示例"""
|
|
setup_logging()
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info("=" * 80)
|
|
logger.info("用户数据分析示例")
|
|
logger.info("=" * 80)
|
|
|
|
data_file = "test_data/user_sample.csv"
|
|
user_requirement = "分析用户活跃度和订阅情况,识别流失风险用户"
|
|
output_dir = "output/user_analysis"
|
|
|
|
logger.info(f"数据文件: {data_file}")
|
|
logger.info(f"用户需求: {user_requirement}")
|
|
logger.info(f"输出目录: {output_dir}")
|
|
logger.info("")
|
|
|
|
try:
|
|
report_path = run_analysis(
|
|
data_file=data_file,
|
|
user_requirement=user_requirement,
|
|
template_file=None,
|
|
output_dir=output_dir
|
|
)
|
|
|
|
logger.info("")
|
|
logger.info("=" * 80)
|
|
logger.info("分析完成!")
|
|
logger.info(f"报告已生成: {report_path}")
|
|
logger.info("=" * 80)
|
|
|
|
except Exception as e:
|
|
logger.error(f"分析失败: {e}", exc_info=True)
|
|
|
|
if __name__ == "__main__":
|
|
# 运行主示例
|
|
main()
|
|
|
|
# 取消注释以运行其他示例
|
|
# example_sales_analysis()
|
|
# example_user_analysis()
|