check_database_difficulty.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import requests
  2. import json
  3. def check_database_difficulty():
  4. """检查数据库中题目的difficulty字段"""
  5. base_url = "http://localhost:8080"
  6. print("=== 检查数据库中题目的difficulty字段 ===\n")
  7. try:
  8. # 1. 先创建一个新目标并生成题目
  9. print("1. 创建新目标...")
  10. goal_data = {
  11. "userId": 1,
  12. "subject": "数学",
  13. "goalType": "选择",
  14. "goalContent": "代数练习",
  15. "difficulty": "中等",
  16. "totalQuantity": 5,
  17. "estimatedTime": 30,
  18. "startTime": [2024, 1, 15, 10, 0]
  19. }
  20. response = requests.post(f"{base_url}/api/goals", json=goal_data)
  21. if response.status_code == 200:
  22. goal_result = response.json()
  23. goal_id = goal_result['data']['goalId']
  24. print(f"✅ 目标创建成功,ID: {goal_id}")
  25. # 2. 生成题目
  26. print("\n2. 生成题目...")
  27. generate_data = {
  28. "goalId": goal_id,
  29. "subject": "数学",
  30. "contentType": "选择题",
  31. "difficulty": "中等",
  32. "questionCount": 3,
  33. "knowledgePoint": "代数",
  34. "goalContent": "代数练习"
  35. }
  36. gen_response = requests.post(f"{base_url}/api/ai/generate-questions", json=generate_data)
  37. if gen_response.status_code == 200:
  38. gen_result = gen_response.json()
  39. print(f"✅ 题目生成成功")
  40. # 3. 分析生成的题目数据
  41. print("\n3. 分析生成的题目数据:")
  42. if 'data' in gen_result and isinstance(gen_result['data'], list):
  43. questions = gen_result['data']
  44. print(f"共生成 {len(questions)} 道题目\n")
  45. for i, question in enumerate(questions, 1):
  46. detail_id = question.get('detailId', 'N/A')
  47. content = question.get('content', 'N/A')[:50] + '...' if len(question.get('content', '')) > 50 else question.get('content', 'N/A')
  48. difficulty = question.get('difficulty')
  49. knowledge_point = question.get('knowledgePoint', 'N/A')
  50. content_type = question.get('contentType', 'N/A')
  51. print(f"题目 {i} (ID: {detail_id}):")
  52. print(f" 内容: {content}")
  53. print(f" difficulty: '{difficulty}'")
  54. print(f" knowledgePoint: '{knowledge_point}'")
  55. print(f" contentType: '{content_type}'")
  56. # 检查difficulty字段状态
  57. if difficulty is None:
  58. print(f" ❌ difficulty字段为null")
  59. elif difficulty == '':
  60. print(f" ❌ difficulty字段为空字符串")
  61. else:
  62. print(f" ✅ difficulty字段正常: {difficulty}")
  63. print()
  64. # 4. 总结
  65. null_count = sum(1 for q in questions if q.get('difficulty') is None)
  66. empty_count = sum(1 for q in questions if q.get('difficulty') == '')
  67. valid_count = sum(1 for q in questions if q.get('difficulty') and q.get('difficulty') != '')
  68. print("=== 总结 ===")
  69. print(f"总题目数: {len(questions)}")
  70. print(f"difficulty为null: {null_count}")
  71. print(f"difficulty为空字符串: {empty_count}")
  72. print(f"difficulty有效值: {valid_count}")
  73. if valid_count == len(questions):
  74. print("\n🎉 所有题目的difficulty字段都已正确设置!")
  75. print("✅ CozeWorkflowService.parseQuestion方法的修复已生效")
  76. else:
  77. print(f"\n⚠️ 还有 {null_count + empty_count} 道题目的difficulty字段有问题")
  78. else:
  79. print("❌ 生成题目响应格式异常")
  80. else:
  81. print(f"❌ 生成题目失败: {gen_response.text}")
  82. else:
  83. print(f"❌ 创建目标失败: {response.text}")
  84. except Exception as e:
  85. print(f"❌ 检查过程中发生错误: {e}")
  86. if __name__ == "__main__":
  87. check_database_difficulty()