Skip to content

Feature/#31#32

Merged
hayeon7898 merged 5 commits intodevfrom
feature/#31
Feb 6, 2026
Merged

Feature/#31#32
hayeon7898 merged 5 commits intodevfrom
feature/#31

Conversation

@hayeon7898
Copy link
Copy Markdown
Collaborator

시간 투표(TimePoll) CRUD API 구현

배경

날짜 투표(Vote) 확정 이후, 구체적인 만남 시간을 정하기 위한 시간 투표 API입니다. PRD 3.1~3.5 흐름 중 CRUD 부분에 해당합니다.

흐름

기존 Vote(날짜 투표) → 날짜 확정 → TimePoll(시간 투표) 생성 → 참여자별 시간 제출 → 전원 완료 시 자동 확정

추가된 파일

Entity

  • TimePoll — 시간 투표 본체. 기존 Vote를 FK로 참조하며, 상태(ONGOING/ULTIMATUM/FINALIZED)와 확정 시간을 관리
  • TimePollEntry — 참여자별 투표 응답. 기존 Participant를 재활용하며, 동일 투표에 중복 제출 방지(UniqueConstraint)
  • TimePollStatus — 상태 enum

API 엔드포인트

Method Endpoint 설명
POST /api/time-polls 투표 생성
GET /api/time-polls/{pollId}?participantId= 투표 페이지 조회 (해당 유저의 투표 여부 포함)
POST /api/time-polls/{pollId}/submit 투표 제출 (이미 투표한 경우 수정)
GET /api/time-polls/{pollId}/status 투표 현황 조회
POST /api/time-polls/{pollId}/accept?participantId= "저도 그때 좋아요" 수락
POST /api/time-polls/{pollId}/finalize 수동 확정

주요 로직

  • 시간 저장: LocalTime (24시간 형식)으로 저장. 프론트에서 18:006시, 16:304시반 변환
  • 현황 정렬: 늦은 시간순 (20:0018:0016:30)
  • 자동 확정: submit 시 전원 투표 완료 여부를 체크하고, 전원 완료면 자동으로 finalize 호출
  • accept: 최다 득표 시간으로 해당 참여자를 배정. 미투표자가 여러 명일 수 있으므로 accept만으로는 확정하지 않고, 전원 완료 시에만 확정
  • 확정 시간 결정: 최다 득표 시간 선택, 동률일 경우 더 늦은 시간 우선
  • submit, accept, status API 모두 동일한 TimePollStatusResponse 형식으로 응답

참고

  • 스케줄러(집계/독촉/최후통첩)는 별도 PR에서 추가 예정
  • 메시지 발송(카카오 챗봇 연동)은 미구현 상태

@hayeon7898 hayeon7898 merged commit 3194d40 into dev Feb 6, 2026
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