Repository navigation
플레이 링크를 코드로도 공유 - #1101
플레이 링크를 코드로도 공유#1101
Conversation
완료된 토너먼트를 남에게 넘기는 방법이 링크 하나뿐이었다. 6자리 코드는 생성 시점에 발급돼 바뀌지 않는데 대기실 합류에만 쓰여, 완료 후에는 죽은 값이 됐다. 오프라인에서 불러주거나 손으로 입력하는 자리를 지원하지 못한다. POST /tournaments/from-play-code 를 추가한다. 경로에 id 를 두지 않는다 - 코드로 들어오는 사람은 토너먼트 id 를 모르고, 그게 이 경로의 요점이다. 코드는 주소일 뿐이고 무엇이 열려 있는지는 상태가 정한다. 완료 상태의 게이트를 playLinkExpiresAt 으로 둬 링크와 같은 수명을 공유하게 했다. 그래서 공유를 켜지 않은 토너먼트는 코드만으로 뚫리지 않고, 주최자 탈퇴로 무효화된 경우도 함께 막히며, 만료 후 재발급(#980)하면 코드도 살아난다. 정원 8명을 링크 경로에도 걸었다. 코드만 막으면 "링크를 달라고 하면 들어가지는" 상태가 되어 제한이 이름뿐이 된다. prod 실측상 공유된 토너먼트 37개의 입장자가 최대 4명이라 기존 사용은 깨지지 않는다. 미리보기도 입장과 같은 게이트를 쓰게 했다. 예전엔 checkJoinable(null) 하나라 완주한 토너먼트가 409 로 막혀, 코드로 들어오기 전에 무엇을 보게 될지 알 수 없었다. 작업 중 "완료" 판정이 옮겨져 있던 것을 발견했다 - Phase 3(#1044) 이후 진행 상태가 참여 행으로 가서 tournaments.status 는 주최자의 완주를 뜻하지 않는다. createPlayLink 와 같은 기준(주최자 참여 행)을 쓰지 않으면 "링크는 만들어졌는데 코드로는 못 들어가는" 어긋남이 생긴다. #1027 Phase 1-3 덕분에 클론 재공유와 source 평탄화는 이 이슈에서 빠졌다. 클론 개념이 없어져 누가 어느 주소로 들어오든 참여 행이 하나 생긴다.
|
Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 17 minutes. View limit details
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
Walkthrough완료된 토너먼트에 6자리 코드로 입장하는 API를 추가했습니다. 상태와 공유 링크를 검사하고, 기존 참여 반환과 참여 정원 제한을 적용했습니다. 미리보기와 링크 입장 경로도 관련 게이트를 사용합니다. Changes완료 토너먼트 코드 입장
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant TournamentController
participant TournamentService
participant Tournament
participant TournamentPlayedFromLink
TournamentController->>TournamentService: createFromPlayCode(userId, code)
TournamentService->>Tournament: 코드로 대상 토너먼트와 ROOT 확인
TournamentService->>TournamentService: 상태와 공유 링크 유효성 검사
TournamentService->>Tournament: 참여 행 저장
TournamentService->>TournamentPlayedFromLink: 참여 이벤트 발행
TournamentService-->>TournamentController: ROOT id 반환
연결 이슈 평가
Merge Risk: ⚪ Minimal · up to
|
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 26 functions across 6 files. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (1 passed)
-
Check name Status Explanation Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing Touches 💡 1
-
📝 Generate docstrings 💡
-
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
-
- Create PR with unit tests
- Commit unit tests in branch
feat/1013-play-by-code
-
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
|
@coderabbitai full review |
|
# Conflicts: # src/main/kotlin/com/depromeet/piki/tournament/controller/TournamentApiExamples.kt
Situation
착수 후 드러난 것
tournaments.status가 주최자 완주를 뜻함tournament_users.status로 이동. 전역 status 는 더 이상 완주를 뜻하지 않음Task
코드 입장 경로 신설
Action
코드는 주소, 게이트는 상태
POST /tournaments/from-play-code추가. 경로에 id 없음uk_tournaments_active_invite_code가 활성 토너먼트 전체에서 코드 유일성 보장join)완료 게이트를 공유 링크 수명에 묶음
playLinkExpiresAt을 코드 게이트로 그대로 사용정원 8명을 링크 경로에도 적용
미리보기를 입장과 같은 게이트로
checkJoinable(null)단일 경로. 완주한 토너먼트가 409 로 막힘구현
TournamentService.createFromPlayCode·joinAsPlayer·isOwnerCompleted·CreateFromPlayCodeRequestcreatePlayLink가 쓰는 기준과 같아야 "링크는 만들어졌는데 코드로는 못 들어가는" 어긋남 없음@Pattern)에 배치. 기존 초대 코드 상수 재사용Result
응답 계약
TOURNAMENT-023TOURNAMENT-026TOURNAMENT-027TOURNAMENT-030TOURNAMENT-020COMMON-INVALID-INPUT검증
연관 이슈
Summary by CodeRabbit
새 기능
오류 처리
문서