#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 测试修改后的 ReportGenerator 类 """ import os import sys import asyncio import json # 添加当前目录到 Python 路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from enhanced_survey_system import ReportGenerator async def test_report_generator(): """测试报告生成器""" print("🧪 开始测试 ReportGenerator...") # 检查环境变量 if not os.getenv("GLM_API_KEY") or os.getenv("GLM_API_KEY") == "YOUR_API_KEY": print("❌ 错误: 请在 .env 文件中设置正确的 GLM_API_KEY") return False try: # 创建报告生成器实例 generator = ReportGenerator() print("✅ ReportGenerator 实例创建成功") # 测试加载提示词 prompt = generator.load_prompt() print(f"✅ 提示词加载成功,长度: {len(prompt)} 字符") # 创建测试数据 test_session_id = "test_session_123" test_analysis_data = { 'analysis_text': '''# 考试答题情况分析 ## 总分:85 分 | 题目 | 题型 | 用户答案 | 正确答案 | 是否正确 | 得分 | |------|------|----------|----------|----------|------| | 姓名 | 填空题 | 张三 | 无标准答案 | 无法判断 | 不适用 | | 学校 | 填空题 | 测试小学 | 无标准答案 | 无法判断 | 不适用 | | 年级 | 填空题 | 五年级 | 无标准答案 | 无法判断 | 不适用 | | 考试标签 | 填空题 | 科学测试 | 无标准答案 | 无法判断 | 不适用 | | 水在自然界中的三种状态 | 单选题 | 气体、液体、固体 | 气体、液体、固体 | ✓ | 20 | | 植物的光合作用需要 | 单选题 | 阳光 | 阳光和水 | ✗ | 0 | | 地球的自转导致 | 单选题 | 白天黑夜 | 白天黑夜 | ✓ | 20 |''', 'student_info': { 'name': '张三', 'school': '测试小学', 'grade': '五年级' }, 'answers': [ { 'questionText': '水在自然界中的三种状态', 'questionType': '单选题', 'userAnswer': '气体、液体、固体', 'correctAnswer': '气体、液体、固体', 'isCorrect': True, 'score': 20 }, { 'questionText': '植物的光合作用需要', 'questionType': '单选题', 'userAnswer': '阳光', 'correctAnswer': '阳光和水', 'isCorrect': False, 'score': 0 } ] } print("📝 准备调用 GLM API...") # 调用 API 生成报告 result = generator.call_report_api(test_analysis_data, test_session_id) if result.get('success'): print("✅ API 调用成功!") print(f"📊 报告数据类型: {type(result.get('report_data'))}") print(f"📊 原始响应长度: {len(result.get('raw_response', ''))} 字符") # 显示报告数据的前500个字符 report_data = result.get('report_data', '') if isinstance(report_data, str): print(f"📄 报告内容预览:\n{report_data[:500]}...") else: print(f"📄 报告数据: {json.dumps(report_data, ensure_ascii=False, indent=2)[:500]}...") return True else: print(f"❌ API 调用失败: {result.get('error', '未知错误')}") return False except Exception as e: print(f"❌ 测试过程中发生错误: {e}") import traceback traceback.print_exc() return False if __name__ == "__main__": print("=" * 60) print("ReportGenerator 测试") print("=" * 60) success = asyncio.run(test_report_generator()) print("=" * 60) if success: print("🎉 测试通过!") else: print("💥 测试失败!") print("=" * 60)