Skip to content

투표 리워드 시스템 구현 #175

@goalSetter09

Description

@goalSetter09

개요

투표 참여 시 사용자의 선택이 다수 의견과 일치하는지 판정하여 연속 정답 시 티켓을 지급하는 리워드 시스템 구현

요구사항

  1. 사용자가 투표 참여 후 현재 투표 추세를 분석하여 정답 여부 판정
  2. 3번 연속 정답 시 티켓 1개 지급
  3. 1번, 2번 맞춘 후 틀린 경우 연속 카운트 0으로 초기화

상세 설계

📋 투표 리워드 시스템 설계서 참조

구현 모듈

  • VoteRewardService: 투표 추세 분석 및 정답 판정 비즈니스 로직
  • UserVoteStreakService: 연속 정답 카운트 관리 (Redis 기반)
  • TicketService Enhancement: 티켓 지급 메서드 추가
  • VotingService Integration: 기존 투표 서비스에 리워드 로직 통합
  • VoteParticipationResponse Enhancement: 리워드 정보를 포함한 응답 DTO

구현 순서

  1. VoteRewardService 구현 및 테스트
  2. UserVoteStreakService 구현 및 테스트
  3. TicketService 티켓 지급 메서드 추가
  4. VotingService 통합 및 테스트
  5. Response DTO 확장
  6. 통합 테스트 및 QA

주요 고려사항

  • Redis 기반 연속 정답 관리로 성능 최적화
  • 분산락을 통한 티켓 지급 동시성 제어
  • 리워드 처리 실패가 투표 참여를 방해하지 않도록 예외 처리

관련 파일

  • src/main/java/hanium/modic/backend/web/vote/controller/VoteController.java
  • src/main/java/hanium/modic/backend/domain/vote/service/VotingService.java
  • src/main/java/hanium/modic/backend/domain/ticket/service/TicketService.java

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions