123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- 测试difficulty字段完整流程调试
- 用于验证从目标创建到Coze API调用的完整链路
- """
- import requests
- import json
- import time
- # 服务器配置
- BASE_URL = "http://localhost:8080"
- def test_complete_difficulty_flow():
- """
- 测试完整的difficulty字段流程
- """
- print("=== 开始测试difficulty字段完整流程 ===")
-
- # 步骤1: 创建目标
- print("\n步骤1: 创建学习目标")
- goal_data = {
- "userId": 1,
- "subject": "数学",
- "goalType": "选择题",
- "goalContent": "加减法",
- "difficulty": "中等",
- "totalQuantity": 1
- }
-
- print(f"创建目标请求: {json.dumps(goal_data, ensure_ascii=False, indent=2)}")
-
- try:
- response = requests.post(f"{BASE_URL}/api/goals", json=goal_data)
- print(f"目标创建响应状态: {response.status_code}")
- print(f"目标创建响应: {response.text}")
-
- if response.status_code == 200:
- goal_response = response.json()
- if goal_response.get("code") == 200 and "data" in goal_response:
- goal_id = goal_response["data"]["goalId"]
- saved_difficulty = goal_response["data"]["difficulty"]
- print(f"✅ 目标创建成功,goalId: {goal_id}, 保存的difficulty: {saved_difficulty}")
-
- # 步骤2: 调用Coze API生成题目
- print(f"\n步骤2: 调用Coze API生成题目")
- coze_data = {
- "userId": 1,
- "goalId": goal_id,
- "subject": goal_data["subject"],
- "type": goal_data["goalType"],
- "difficulty": goal_data["difficulty"],
- "totalQuantity": goal_data["totalQuantity"],
- "knowledgePoint": goal_data["goalContent"]
- }
-
- print(f"Coze请求数据: {json.dumps(coze_data, ensure_ascii=False, indent=2)}")
-
- coze_response = requests.post(f"{BASE_URL}/api/coze/generate-questions", json=coze_data)
- print(f"Coze API响应状态: {coze_response.status_code}")
- print(f"Coze API响应: {coze_response.text}")
-
- if coze_response.status_code == 200:
- coze_result = coze_response.json()
- if coze_result.get("success"):
- questions = coze_result.get("questions", [])
- print(f"✅ Coze API调用成功,生成题目数量: {len(questions)}")
-
- # 步骤3: 检查生成题目的difficulty字段
- print(f"\n步骤3: 检查生成题目的difficulty字段")
- for i, question in enumerate(questions):
- question_difficulty = question.get("difficulty")
- print(f"题目{i+1} - difficulty: {question_difficulty}, 预期: {goal_data['difficulty']}")
-
- if question_difficulty == goal_data["difficulty"]:
- print(f"✅ 题目{i+1} difficulty字段正确")
- elif question_difficulty is None:
- print(f"❌ 题目{i+1} difficulty字段为null")
- else:
- print(f"⚠️ 题目{i+1} difficulty字段不匹配: {question_difficulty} != {goal_data['difficulty']}")
-
- # 步骤4: 从数据库查询验证
- print(f"\n步骤4: 从数据库查询验证")
- time.sleep(1) # 等待数据保存完成
-
- db_response = requests.get(f"{BASE_URL}/api/ai/questions/{goal_id}")
- if db_response.status_code == 200:
- db_result = db_response.json()
- if db_result.get("code") == 200:
- db_questions = db_result.get("data", [])
- print(f"数据库中题目数量: {len(db_questions)}")
-
- for i, db_question in enumerate(db_questions):
- db_difficulty = db_question.get("difficulty")
- print(f"数据库题目{i+1} - difficulty: {db_difficulty}")
-
- if db_difficulty == goal_data["difficulty"]:
- print(f"✅ 数据库题目{i+1} difficulty字段正确")
- elif db_difficulty is None:
- print(f"❌ 数据库题目{i+1} difficulty字段为null")
- else:
- print(f"⚠️ 数据库题目{i+1} difficulty字段不匹配")
- else:
- print(f"❌ 查询数据库题目失败: {db_result.get('message')}")
- else:
- print(f"❌ 查询数据库题目请求失败: {db_response.status_code}")
-
- else:
- print(f"❌ Coze API调用失败: {coze_result.get('message')}")
- else:
- print(f"❌ Coze API请求失败: {coze_response.status_code}")
- else:
- print(f"❌ 目标创建失败: {goal_response.get('message')}")
- else:
- print(f"❌ 目标创建请求失败: {response.status_code}")
-
- except Exception as e:
- print(f"❌ 测试过程中发生错误: {str(e)}")
-
- print("\n=== 测试完成 ===")
- def analyze_problem():
- """
- 分析问题并提供解决方案
- """
- print("\n=== 问题分析 ===")
- print("根据代码分析,difficulty字段传递链路如下:")
- print("1. Android客户端 -> /api/goals (目标创建) ✅ 正确保存difficulty")
- print("2. Android客户端 -> /api/coze/generate-questions (Coze API调用) ✅ 正确传递difficulty")
- print("3. CozeWorkflowService.buildCozeRequest() ✅ 正确构建请求参数")
- print("4. Coze API调用 ❓ 可能返回difficulty为null")
- print("5. CozeWorkflowService.parseQuestion() ✅ 正确解析difficulty字段")
- print("6. AIQuestionService.saveCozeQuestionsToGoalDetail() ✅ 正确保存difficulty字段")
-
- print("\n=== 可能的问题原因 ===")
- print("1. Coze API本身返回的difficulty字段为null")
- print("2. Coze工作流配置问题,没有正确处理difficulty参数")
- print("3. Coze API响应格式变化,difficulty字段位置不对")
-
- print("\n=== 建议的解决方案 ===")
- print("1. 在CozeWorkflowService.parseQuestion()中添加fallback逻辑")
- print("2. 如果Coze返回的difficulty为null,使用请求中的difficulty")
- print("3. 添加更详细的日志记录Coze API的原始响应")
- print("4. 检查Coze工作流配置,确保正确处理difficulty参数")
- if __name__ == "__main__":
- test_complete_difficulty_flow()
- analyze_problem()
|