From 6e25523600add10c26f2afc2d0a3a92455dde670 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Tue, 28 Apr 2026 16:52:52 +0900 Subject: [PATCH] =?UTF-8?q?fix(study):=20quiz=5Fsession=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=E2=80=94=20StudyQuestionImage.position=20=E2=86=92?= =?UTF-8?q?=20sort=5Forder=20=EC=9E=AC=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-10 결과 페이지에서 GET /quiz-sessions/{sid} 가 500. 이미지 batch 호출에서 존재하지 않는 컬럼 position 사용 → AttributeError. 기존 _images_for_questions_batch 헬퍼 (sort_order 기준 + served_url 포함) 재사용. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/api/study_topics.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/app/api/study_topics.py b/app/api/study_topics.py index 7817692..f362b55 100644 --- a/app/api/study_topics.py +++ b/app/api/study_topics.py @@ -1538,21 +1538,12 @@ async def get_quiz_session( ).scalars().all() by_id = {q.id: q for q in rows} - # 이미지 batch - img_rows = ( - await session.execute( - select(StudyQuestionImage) - .where(StudyQuestionImage.study_question_id.in_(qids)) - .order_by(StudyQuestionImage.study_question_id, StudyQuestionImage.position) - ) - ).scalars().all() - images_map: dict[int, list[dict]] = {} - for im in img_rows: - images_map.setdefault(im.study_question_id, []).append({ - "id": im.id, - "served_url": f"/api/study-questions/{im.study_question_id}/images/{im.id}", - "position": im.position, - }) + # 이미지 batch — 기존 study_questions._images_for_questions_batch 재사용 (sort_order 기준). + from api.study_questions import _images_for_questions_batch + images_typed = await _images_for_questions_batch(session, qids) + images_map: dict[int, list[dict]] = { + qid: [it.model_dump() for it in items] for qid, items in images_typed.items() + } # attempt count batch (per question) stat_rows = (