Skip to content

fix: 신청 마감 뒤에도 대기 신청을 받도록 수정 - #54

Merged
jyuuuuu0 merged 1 commit into
developfrom
fix/waiting-enrollment-spec
Sep 6, 2026
Merged

fix: 신청 마감 뒤에도 대기 신청을 받도록 수정#54
jyuuuuu0 merged 1 commit into
developfrom
fix/waiting-enrollment-spec

Conversation

@jyuuuuu0

@jyuuuuu0 jyuuuuu0 commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

📋 개요

마감된 강연에 대기 신청을 하면 403이 나던 문제를 고치고, 신청·대기 흐름을 확정된 스펙에 맞췄습니다.

✅ 작업 내용

  • 신청 오픈 검증에서 마감 체크 제거 — 마감은 신청을 끊는 선이 아니라 "여기서부터 전부 대기"라는 선입니다. 이 검증에 가려져 enroll의 "마감 뒤 신청은 전부 WAITING" 코드가 죽어 있었습니다
  • 취소로 자리가 나면 대기 1번을 학년 규칙대로 자동 승급 — promoteFirstWaitingUser가 어디서도 호출되지 않아 아무도 올라가지 못했습니다. 마감 전에만 동작합니다
  • promoteWaitingAfterDeadline 삭제 — 마감 뒤 자동 승급은 스펙과 반대입니다
  • 대기자 수락·거절을 학생회 전용으로 변경 (기존에는 개설자도 가능)
  • 학생회 수락으로 10명을 채우면 강연이 확정으로 바뀌도록 — 마감 뒤에는 이 수락이 신청자가 느는 유일한 경로입니다
  • 강연 목록 응답에 myEnrollmentStatus 추가 — 첫 화면이 내 신청 상태를 몰라 거절당한 사람에게도 신청 버튼이 열렸습니다

🔗 관련 이슈

없음

🧪 테스트

  • 로컬에서 테스트 완료 (./gradlew test 전체 통과)
  • 예외 케이스 확인 — 마감 뒤 신청이 WAITING으로 잡히는지, 개설자가 수락을 시도하면 403인지, 수락으로 10명을 넘기면 확정되는지 테스트를 추가했습니다

💬 리뷰어에게

기존 테스트 2개(cancelDoesNotAutomaticallyPromoteWaitingUser, ...OfFreedUpGrade)가 "취소해도 승급하지 않는다"를 검증하고 있었습니다. 스펙과 반대라 승급하는 쪽으로 뒤집었는데, 의도적으로 꺼 두신 동작이었다면 알려 주세요.

cancelEnrollment에서 delete 뒤에 flush()를 넣었습니다. 승급 로직이 다시 읽는 명단에 방금 지운 사람이 남아 있으면 안 되기 때문입니다.

⚠️ 주의사항

프론트 PR(VOID-GSM/Rels-front)과 함께 배포해야 합니다. 수락·거절 권한이 학생회 전용으로 바뀌어서, 프론트가 개설자에게 버튼을 계속 보여 주면 403을 보게 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WK1DjLm5GZLfPx7JH3YPsA

마감 뒤에는 신청을 아예 막고 있었습니다. 마감은 신청을 끊는 선이 아니라
여기서부터는 전부 대기라는 선이라, 오픈 시각 검증에서 마감 체크를 걷어냈습니다.
이미 있던 "마감 뒤 신청은 전부 대기" 코드가 그 뒤에 가려져 죽어 있었습니다.

취소로 자리가 나면 대기 1번이 학년 규칙대로 올라갑니다. 승급 코드는 있었지만
어디서도 부르지 않아 아무도 올라가지 못했습니다. 마감 뒤에는 자동 승급이 없고,
스펙과 반대로 동작하던 promoteWaitingAfterDeadline은 지웠습니다.

대기자 수락·거절은 개설자가 아니라 학생회만 합니다. 마감 뒤에는 이 수락이
신청자가 느는 유일한 길이라, 여기서도 확정 기준 10명을 다시 봅니다.

목록 응답에도 내 신청 상태를 실어 줍니다. 첫 화면이 이미 신청했는지 모르면
거절당한 사람에게도 신청 버튼이 열립니다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WK1DjLm5GZLfPx7JH3YPsA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant