#!/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()