From 53ee23da0ac1373b823cd732007591e80d4f3a36 Mon Sep 17 00:00:00 2001 From: HanNayeoniee Date: Fri, 19 Dec 2025 00:14:10 +0900 Subject: [PATCH] =?UTF-8?q?UserChallengeStatus=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- getcloser/backend/app/models/challenges.py | 5 +++-- .../backend/app/services/challenge_service.py | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/getcloser/backend/app/models/challenges.py b/getcloser/backend/app/models/challenges.py index a607e2a..5570462 100644 --- a/getcloser/backend/app/models/challenges.py +++ b/getcloser/backend/app/models/challenges.py @@ -6,8 +6,9 @@ class UserChallengeStatus(Base): __tablename__ = "user_challenge_status" - user_id = Column(Integer, primary_key=True, index=True) - challenge_id = Column(Integer, ForeignKey("challenge_questions.id"), index=True) + id = Column(Integer, primary_key=True, index=True) + user_id = Column(Integer, index=True) + challenge_id = Column(Integer, ForeignKey("challenge_questions.id"), nullable=True) is_correct = Column(Boolean, default=False) submitted_at = Column(DateTime(timezone=True)) diff --git a/getcloser/backend/app/services/challenge_service.py b/getcloser/backend/app/services/challenge_service.py index 8a870d5..365c31a 100644 --- a/getcloser/backend/app/services/challenge_service.py +++ b/getcloser/backend/app/services/challenge_service.py @@ -36,6 +36,7 @@ def assign_challenges_logic(my_id: str, members: list, db: Session) -> list: available_ids = members.copy() random.shuffle(available_ids) + members = list(set(members)) for user_id in members: possible_ids = [uid for uid in available_ids if uid != user_id] if not possible_ids: @@ -43,9 +44,26 @@ def assign_challenges_logic(my_id: str, members: list, db: Session) -> list: assigned_user_id = random.choice(possible_ids) assigned_question = random.choice([q for q in team_questions if q.user_id == assigned_user_id]) - + available_ids.remove(assigned_user_id) + # ✅ UserChallengeStatus 업데이트 + user_status = ( + db.query(UserChallengeStatus) + .filter(UserChallengeStatus.user_id == user_id) + .first() + ) + + if not user_status: + raise HTTPException(status_code=404, detail="UserChallengeStatus 없음") + + user_status.challenge_id = assigned_question.id + user_status.submitted_at = None + user_status.is_correct = False + user_status.is_redeemed = False + + db.add(user_status) + assigned_list.append(AssignedChallenge( user_id=user_id, assigned_challenge_id=assigned_question.id, @@ -54,6 +72,8 @@ def assign_challenges_logic(my_id: str, members: list, db: Session) -> list: answer=assigned_question.answer )) + db.commit() + return assigned_list[0]