Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

사용자 Reputation 기능 구현 #213

Merged
merged 5 commits into from
Mar 16, 2025
Merged

사용자 Reputation 기능 구현 #213

merged 5 commits into from
Mar 16, 2025

Conversation

gunny97h
Copy link
Collaborator

📄 작업 내용 요약

  1. 평판 점수 상승 항목
  • 거래 성공 (구매/판매 완료):
    • 거래 성공 시 +1.0점 증가
  • 리뷰 작성:
    • 리뷰 작성 시 +0.5점 증가
  • 긍정적인 거래 후기:
    • 항목 당 +0.5점 증가
  • 주문 24시간 이내 운송장 등록:
    • 등록 시 +1.0점 증가
  • 최근 30일 내 3건 이상 거래 (구매 또는 판매, 월 1회 한정):
    • 조건 만족 시 +3.0점 증가
  1. 평판 점수 하락 항목
  • 부정적인 거래 후기:
    • 항목 당 -0.5점 감소
  • 당한 신고에 대해 관리자가 확인한 경우:
    • 확인 시 -5.0점 감소
  • 3개월 이상 미접속 시:
    • 이후 매월 **-3%**씩 감소하며 최대 **-36%**까지 자동 차감
  1. 시간 가중치 적용
    평가가 진행된 시점에 따라 가중치를 달리 적용하여, 최신 거래 활동이 더 크게 반영되도록 구현

최근 3개월 내 평가: 1.0배
36개월 전 평가: 0.9배
6
12개월 전 평가: 0.7배
12개월 이상 지난 평가: 0.5배

  1. 스케줄러 및 평판 이력 관리
  • 동작 방식:

    • 모든 사용자를 대상으로 평판 이력을 조회
    • 평판 이력 중 "가중치 적용" 패턴이 없는 항목들만 대상으로 처리
    • ChronoUnit.DAYS.between(history.getCreatedAt(), now) 를 사용하여 경과일 계산 후 아래 조건에 맞춰 추가 차감 적용
    • 90일(3개월): 원본 점수의 10% 차감
    • 180일(6개월): 원본 점수의 20% 차감
    • 365일(12개월): 원본 점수의 20% 차감
    • 평판 점수 계산 시 BigDecimal을 사용해 소숫점 1자리 반올림 처리
  • 평판 이력 기록:

    • 차감 적용 시 ReputationHistory 엔티티에 새로운 이력으로 저장
    • 이력의 changeType에 기존 historyId와 가중치 적용 정보를 함께 기록
    • 중복 적용을 피하기 위해 평판 이력의 생성일(createdAt)과 현재 시간의 차이를 기준으로 정확한 조건(예: 90일, 180일, 365일)에만 가중치가 적용되도록 구현

📎 Issue 번호

#212

@gunny97h gunny97h requested a review from kanggiho March 16, 2025 02:12
@gunny97h gunny97h self-assigned this Mar 16, 2025
@kanggiho kanggiho merged commit e620c5c into develop Mar 16, 2025
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.

2 participants