diff --git a/backend/app/api/v1/practice.py b/backend/app/api/v1/practice.py index a8887f2..aa1e3a9 100644 --- a/backend/app/api/v1/practice.py +++ b/backend/app/api/v1/practice.py @@ -724,8 +724,15 @@ async def end_practice_session( new_badges = await badge_service.check_and_award_badges(current_user.id) await db.commit() + # 第二次commit后需要refresh,避免DetachedInstanceError + await db.refresh(session) except Exception as e: logger.warning(f"练习经验值/奖章处理失败: {str(e)}") + # 确保 session 仍然可用 + try: + await db.refresh(session) + except Exception: + pass return ResponseModel( code=200,