fix(practice): 修复分析报告重复插入错误
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -828,7 +828,23 @@ async def analyze_practice_session(
|
||||
# 解析分析结果
|
||||
analysis_result = analysis_data.get("analysis", {})
|
||||
|
||||
# 保存分析报告
|
||||
# 检查报告是否已存在
|
||||
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"),
|
||||
@@ -839,8 +855,8 @@ async def analyze_practice_session(
|
||||
workflow_run_id=f"{v2_result.ai_provider}_{v2_result.ai_latency_ms}ms",
|
||||
task_id=None
|
||||
)
|
||||
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user