diff --git a/backend/app/api/v1/practice.py b/backend/app/api/v1/practice.py index af6ea66..a7f0ab2 100644 --- a/backend/app/api/v1/practice.py +++ b/backend/app/api/v1/practice.py @@ -828,19 +828,35 @@ async def analyze_practice_session( # 解析分析结果 analysis_result = analysis_data.get("analysis", {}) - # 保存分析报告 - report = PracticeReport( - session_id=session_id, - total_score=analysis_result.get("total_score"), - score_breakdown=analysis_result.get("score_breakdown"), - ability_dimensions=analysis_result.get("ability_dimensions"), - dialogue_review=analysis_result.get("dialogue_annotations"), - suggestions=analysis_result.get("suggestions"), - workflow_run_id=f"{v2_result.ai_provider}_{v2_result.ai_latency_ms}ms", - task_id=None + # 检查报告是否已存在 + existing_report = await db.execute( + select(PracticeReport).where(PracticeReport.session_id == session_id) ) + report = existing_report.scalar_one_or_none() + + if report: + # 更新现有报告 + report.total_score = analysis_result.get("total_score") + report.score_breakdown = analysis_result.get("score_breakdown") + report.ability_dimensions = analysis_result.get("ability_dimensions") + report.dialogue_review = analysis_result.get("dialogue_annotations") + report.suggestions = analysis_result.get("suggestions") + report.workflow_run_id = f"{v2_result.ai_provider}_{v2_result.ai_latency_ms}ms" + logger.info(f"更新现有分析报告: session_id={session_id}") + else: + # 创建新报告 + report = PracticeReport( + session_id=session_id, + total_score=analysis_result.get("total_score"), + score_breakdown=analysis_result.get("score_breakdown"), + ability_dimensions=analysis_result.get("ability_dimensions"), + dialogue_review=analysis_result.get("dialogue_annotations"), + suggestions=analysis_result.get("suggestions"), + workflow_run_id=f"{v2_result.ai_provider}_{v2_result.ai_latency_ms}ms", + task_id=None + ) + db.add(report) - db.add(report) await db.commit() logger.info(f"分析报告已保存: session_id={session_id}, total_score={report.total_score}") @@ -917,7 +933,7 @@ async def get_practice_report( ] # 调用分析服务 - from app.services.practice_analysis_service import PracticeAnalysisService + from app.services.ai.practice_analysis_service import PracticeAnalysisService import json practice_analysis_service = PracticeAnalysisService()