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,19 +828,35 @@ async def analyze_practice_session(
|
|||||||
# 解析分析结果
|
# 解析分析结果
|
||||||
analysis_result = analysis_data.get("analysis", {})
|
analysis_result = analysis_data.get("analysis", {})
|
||||||
|
|
||||||
# 保存分析报告
|
# 检查报告是否已存在
|
||||||
report = PracticeReport(
|
existing_report = await db.execute(
|
||||||
session_id=session_id,
|
select(PracticeReport).where(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
|
|
||||||
)
|
)
|
||||||
|
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()
|
await db.commit()
|
||||||
|
|
||||||
logger.info(f"分析报告已保存: session_id={session_id}, total_score={report.total_score}")
|
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
|
import json
|
||||||
|
|
||||||
practice_analysis_service = PracticeAnalysisService()
|
practice_analysis_service = PracticeAnalysisService()
|
||||||
|
|||||||
Reference in New Issue
Block a user