Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
945a0fa
#1 [Docs] 홈/마이페이지 API 명세 및 ERD 문서 정리 (#2)
Dante0922 Mar 8, 2026
95f60dc
#3 [Docs] Oauth2 ERD 및 API 정의 (#4)
si-zero Mar 10, 2026
062f9fc
[Docs] 배틀, 시나리오, 투표, 태그 ERD 및 API 정의
jucheonsu Mar 11, 2026
6e83da8
#8 [Docs] user/oauth ERD 및 API 명세 정리 (#9)
Dante0922 Mar 11, 2026
deb598f
#7 [Chore] API 공통 응답 구조 및 기본 Config 세팅 (#11)
jucheonsu Mar 12, 2026
301f313
#10 [Docs] Perspective , Like , Comment ERD 및 API 정의 (#12)
HYH0804 Mar 12, 2026
b5efc6e
#13 [Docs] user/oauth API 응답 수정
si-zero Mar 13, 2026
ff0cdb7
#19 [Fix] 공통 응답 API 수정
si-zero Mar 13, 2026
f4da179
#21 [Feat] 사용자 도메인 및 API 구현 (#24)
Dante0922 Mar 14, 2026
8d57f66
#17 [Feat] Perspective 도메인 기능 개발 (#26)
HYH0804 Mar 15, 2026
e212667
#15 [Feat] 배틀, 태그, 투표 도메인 기능 개발 (#28)
jucheonsu Mar 16, 2026
6d63f2f
#18 [Feat] OAuth2.0 연동 및 구현
si-zero Mar 16, 2026
9d5cfe8
#25 [Feat] 관점 생성, 수정 시 GPT 검수 (#31)
HYH0804 Mar 18, 2026
3525090
#29 [Feat] 시나리오 도메인 기능 구현 (#32)
jucheonsu Mar 18, 2026
b37b1b0
#33 [Feat] 관리자 도메인 구축 및 다중 TTS 파이프라인 연동 (#35)
jucheonsu Mar 19, 2026
83d48df
#34 [CI/CD] 인라인 구축 및 자동 배포 설정 (#41)
si-zero Mar 22, 2026
688a528
#37 [Feat] 홈 API 및 공지 조회 기능 구현 (#38)
Dante0922 Mar 22, 2026
51abc56
#44 [Hotfix] 자동 배포 오류 수정 (#45)
si-zero Mar 22, 2026
cca46ae
#42 [Refactor] 전역 식별자 타입 변경 (UUID → Long) 및 BaseEntity 적용 (#47)
jucheonsu Mar 23, 2026
0b32654
#48 [Feat] 전역 API 로깅 및 JwtFilter 예외 응답 로직 구현
si-zero Mar 24, 2026
53a38b8
#46 [Feat] Fish Audio TTS 파이프라인 구축 및 S3 업로드 연동 (#50)
jucheonsu Mar 24, 2026
384b07b
#52 [Hotfix] 스웨거 연결 오류 수정
si-zero Mar 25, 2026
e51e645
#54 [CI/CD] Github Actions 배포 스크립트 개선 (#55)
si-zero Mar 25, 2026
b1251aa
#57 [CI/CD] Github Actions 수동 실행 추가
si-zero Mar 26, 2026
7c6919e
#55 [Hotfix] 특수문자 이스케이프(Escape) 및 데이터 절단 이슈 수정
si-zero Mar 26, 2026
747035f
#43 [Feat] 배틀 · 퀴즈 · 투표 타입 및 관리자 페이지 구현 (#56)
jucheonsu Mar 26, 2026
c9d8c71
#36 [Feat] user 도메인 리팩토링 및 마이페이지 API 구현 (#39)
Dante0922 Mar 28, 2026
fccaeba
#60 [Feat] AdMob 기능 및 SSV 검증 로직 추가 (#61)
si-zero Mar 28, 2026
b7f9fe7
#64 [Feat] Home/MyPage/Search 탭 개선 (#65)
Dante0922 Mar 28, 2026
005ac76
#51 [Refactor] User 엔티티 연결 및 전 도메인 TODO 해소 (#66)
Dante0922 Mar 28, 2026
a2b753e
#67 알림(Notification) 도메인 신설 및 notice 통합 (#68)
Dante0922 Mar 28, 2026
68453d0
#62 [Feat] 흥미로운 배틀 기능 추가 (#70)
HYH0804 Mar 29, 2026
3e2485c
[Hotfix] Home API NPE 수정 및 철학자 이미지 presigned URL 연동
Dante0922 Mar 29, 2026
0fc3f54
[Hotfix] HomeService stream NPE 수정 (#74)
Dante0922 Mar 29, 2026
0cfd73d
#63 [CI/CD] Nginx Reverse Proxy 및 Certbot 기반의 SSL 인증 (#71)
si-zero Mar 29, 2026
e551577
#75 [Hotfix] 브라우저 자체 차단 이슈 수정
si-zero Mar 29, 2026
8fa6b6e
#69 [Feat] S3 보안 처리 및 TTS 재사용 전략 도입, 관리자 폼 개편 및 N+1 개선 (#77)
jucheonsu Mar 29, 2026
29d6cc5
#22 [Rename] PICKE 패키지명 및 앱명 변경
jucheonsu Mar 30, 2026
db689fd
#79 [Chore] Admob API 접근을 위한 보안 예외 처리 및 환경 변수 처리
si-zero Mar 30, 2026
1d9dc15
#79 [Feat] 화이트리스트 추가
si-zero Mar 30, 2026
43214e3
#79 [Fix] 엔드포인트 오타 수정
si-zero Mar 30, 2026
11c4f99
#84 [Feat] UserBattle 도메인 구현 및 TTS 청취 기반 배틀 진행 단계 추적 시스템 도입 (#85)
jucheonsu Mar 30, 2026
f9f646d
#86 [Fix] characterType null 체크 추가 - 미설정 유저 NPE 수정 (#88)
HYH0804 Mar 30, 2026
e0efed2
#83 [Feat] Admob 크레딧 지급 로직 추가
si-zero Mar 30, 2026
3be7bdd
#90 [Comment] 서명 검증 로직 주석 처리
si-zero Mar 30, 2026
8d3b583
#87 [Feat] S3 Presigned URL 리소스 서빙 엔드포인트 도입 및 URL 변환 책임 이전 (#93)
jucheonsu Mar 30, 2026
b1fdc53
#94 [Feat] 관리자 투표 삭제 기능 구현 및 오디오 URL 시나리오 ID 변경 (#95)
jucheonsu Mar 30, 2026
8640a2b
#90 [Comment] Admob 등록 완료로 인한 주석 처리 취소
si-zero Mar 30, 2026
f8f9ee2
#96 [Feat] 시나리오 응답에 배틀 title 추가 및 화자명 자동 매핑 로직 개선 (#97)
jucheonsu Mar 31, 2026
f4b59b2
#98 [Refactor] AdMob 요청 DTO 변경 및 개선
si-zero Mar 31, 2026
abf8e38
#101 [Feat] 배틀 API 고도화, 성능 최적화, 홈 이미지 오류 해결 (#102)
jucheonsu Mar 31, 2026
c614e7f
#100 [Refactor] AdMob 유저ID 변환 코드 리팩토링
si-zero Mar 31, 2026
45c2696
#104 [Feat] 알림 상세·읽음 추적, 회원 탈퇴 사유 저장, 프로필/리캡 응답 개선 (#105)
Dante0922 Apr 1, 2026
1fb2f6b
#106 [Feat] 퀴즈 정답 여부, 토론 기록 고도화, 투표 로직 수정, 오디오 길이 오류 수정 (#107)
jucheonsu Apr 2, 2026
1f24cfc
#108 [Feat] 배틀 카테고리 5개 호출, 사전 투표 여러 번
si-zero Apr 2, 2026
b7da8ce
#111 [Hotfix] 중복 메소드 선언 제거
si-zero Apr 2, 2026
e713cf1
#110 [FIX] 흥미로운 배틀 추천 API 스웨거 에러 (#113)
HYH0804 Apr 2, 2026
d679d2f
[Fix] 관점 삭제 시 FK 제약 조건 위반 오류 수정 (#115)
HYH0804 Apr 2, 2026
5003613
#116 [Feat] 퀴즈 및 투표 API 구현, 배틀 리스트 타입 필터링 적용 및 성능 최적화 (#117)
jucheonsu Apr 2, 2026
3a1efc0
[FIX] 흥미로운 배틀 API Type 필터링 변경 (#119)
HYH0804 Apr 3, 2026
a6b7a0c
#120 [Feat] 홈 API 비회원 접근 지원 및 알림 읽음 여부 개선 (#121)
jucheonsu Apr 3, 2026
57ee6f9
#122 [Hotfix] 구글 소셜 로그인 오류 수정
si-zero Apr 3, 2026
4943712
#124 [Fix] 카카오 디코딩 문제 수정
si-zero Apr 3, 2026
522c6d1
[Feat] 콘텐츠 활동 내역 API 캐릭터 이미지 URL 추가 (#126)
Dante0922 Apr 3, 2026
4e4d474
[Fix] 검색 API BattleType.BATTLE 필터링 추가 (#127)
Dante0922 Apr 3, 2026
82eb968
#128 [Feat] 철학자 유형 계산 옵션 기반 개선, 투표 totalCount 추가, 홈 title/summary 수정 …
jucheonsu Apr 3, 2026
0e8e477
#130 [Feat] 퀴즈/투표 voteCount 캐싱 및 관리자 삭제 API 분리 (#131)
jucheonsu Apr 3, 2026
20cabb2
#114 [Refactor] 댓글 조회 API 설계 수정 (#132)
HYH0804 Apr 3, 2026
1fc5ef7
#133 [Refactor] 관리자 투표 삭제 배틀 단위로 변경 및 퀴즈/투표 타입 검증 추가 (#134)
jucheonsu Apr 3, 2026
7d305a8
#135 [Feat] 회원탈퇴 시 소셜 로그인 기록 삭제
si-zero Apr 4, 2026
8692261
#145 [Feat] 딥링크 공유 API 구현 (리포트/배틀) (#146)
HYH0804 Apr 9, 2026
35cff39
#145 [Feat] 딥링크 공유 API 구현 (리포트/배틀) (#147)
HYH0804 Apr 9, 2026
7d810a8
#139 [CI/CD] 배포 / 개발 서버 분리 작업
si-zero Apr 10, 2026
33b669c
#149 [Chore] 8081 개발 서버 SSL 인증서 및 .env 파일 설정
si-zero Apr 10, 2026
705e53a
#159 [CI/CD] 서버 메모리 제한
si-zero Apr 11, 2026
f8c734b
#137 [Hotfix] QuizVoteResponse.OptionStat stance 필드 누락 긴급 수정 (#138)
jucheonsu Apr 11, 2026
25d3d2d
#161 [Chore] 개발 서버 주소에 맞춘 환경설정
si-zero Apr 11, 2026
c1813e9
#140 [Breaking Change] Battle/Quiz/Poll 분리 및 Vote 도메인 재편 (#154)
jucheonsu Apr 11, 2026
05b68f2
Revert "#140 [Breaking Change] Battle/Quiz/Poll 분리 및 Vote 도메인 재편" (#163)
jucheonsu Apr 11, 2026
afd2152
#140 [Breaking Change] Battle/Quiz/Poll 분리 및 Vote 도메인 재편 (#164)
jucheonsu Apr 11, 2026
e522658
#151 [Breaking Change] Admin 도메인 이관 및 관리자 UI 동기화 (#155)
jucheonsu Apr 11, 2026
53582bc
#152 [Fix] 시나리오 발행 파이프라인 및 TTS/S3 처리 개선 (#156)
jucheonsu Apr 11, 2026
cd943f9
#165 [Hotfix] AdminScenarioService 컴파일 에러 긴급 수정 (#166)
jucheonsu Apr 11, 2026
395fbc0
#157 [Chore] 마이그레이션 3종 + 문서 + 테스트 동기화 (#158)
jucheonsu Apr 11, 2026
8d2ba71
#143 [Feat] 마이페이지 리캡 공유 API 추가 (#167)
Dante0922 Apr 12, 2026
e1a8846
#168 [Feat] 투표 SSE 및 댓글 포인트 (#171)
HYH0804 Apr 14, 2026
63e9116
#144 [Feat] 크레딧 적립/소비 로직 고도화 (#170)
Dante0922 Apr 14, 2026
96c7021
#169 [Feat] 배틀 제안 기능 추가
si-zero Apr 15, 2026
dca52cb
#173 [Fix] 채택 시 지급 포인트 변경
si-zero Apr 15, 2026
aeba83b
#178 [Feat] iOS 딥링크 apple-app-site-association 파일 추가 (#179)
HYH0804 Apr 15, 2026
fad08ca
#176 [Merge] v2.0.0 dev -> main 브랜치 병합 (#182)
jucheonsu Apr 15, 2026
39b4cd2
#184 [Hotfix] dev 브랜치 #182 머지 롤백 (#185)
jucheonsu Apr 15, 2026
80cd9bb
#183 [Merge] main 병합 충돌 해결 (dev 기준) (#186)
jucheonsu Apr 15, 2026
8265d6f
#186 [Hotfix] 재유입 파일 롤백 및 dev 안정화 (#187)
jucheonsu Apr 15, 2026
cf3573c
#180 [Fix] 지난 배틀 사전투표 크레딧 차감 로직 추가 (#181)
Dante0922 Apr 15, 2026
7201ef3
#191 [Fix] 관리자 콘텐츠 타겟 날짜 및 발행 저장 플로우 보완 (#190)
jucheonsu Apr 15, 2026
da12716
#198 [Feat] 오늘의 배틀 출력 개수 수정
si-zero Apr 23, 2026
b52b55a
#200 [Feat] 회원가입 시 크레딧 지급
si-zero Apr 23, 2026
4b4394e
#196 [Chore] 공유하기 실링크로 변경 , Label 변경 (#205)
HYH0804 Apr 24, 2026
54a52b8
#206 [Fix] 배틀 조회수 미반영 수정 (#207)
HYH0804 Apr 24, 2026
878697f
#209 [Merge] v2.0.3 업데이트 (#210)
HYH0804 Apr 24, 2026
7a0d32c
#211 [Fix] 흥미로운 배틀 API tags 빈 배열 수정 (#213)
HYH0804 Apr 24, 2026
1070246
#212 [Fix] 알림 노출 기준(user_id) 정리 및 관리자 공지 저장 플로우 검증 보강 (#214)
jucheonsu Apr 24, 2026
f40b2fc
Merge remote-tracking branch 'origin/main' into dev
HYH0804 Apr 24, 2026
3280b66
Merge branch 'dev' of https://github.com/SWYP-Find/Server into dev
HYH0804 Apr 24, 2026
a139a27
#217 [CI/CD] AWS -> Railway 서버 이전
si-zero May 2, 2026
1202c1a
#219 [Fix] 예약어 사용하는 컬럼 변경
si-zero May 2, 2026
67a6548
#222 [Feat] 포인트 정책 수정
si-zero May 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.swyp.picke.domain.user.entity;

import com.swyp.picke.global.common.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
Expand Down Expand Up @@ -29,6 +30,7 @@ public class UserTendencyScoreHistory extends BaseEntity {

private int change;

@Column(name = "inner_score")
private int inner;

private int ideal;
Expand Down
19 changes: 10 additions & 9 deletions src/main/java/com/swyp/picke/domain/user/enums/CreditType.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@

@Getter
public enum CreditType {
DEFAULT_CREDIT(30), // 기본 크레딧: 회원가입 시 기본 지급
BATTLE_VOTE(5), // 배틀 참여 보상: 사후 투표 완료 시 즉시 지급
BATTLE_ENTRY(-10), // 지난 배틀 이용 비용: 사전 투표 최초 진입 시 차감
MAJORITY_WIN(10), // 다수결 보상: 월요일 배치, 2주 전 배틀 TOP≥10 대상
BEST_COMMENT(50), // 베댓 보상: 월요일 배치, 2주 전 배틀 좋아요 1위
WEEKLY_CHARGE(40), // 주간 자동 충전: 매주 월요일 00:00 활성 사용자 전체
FREE_CHARGE(0), // 광고/자유 충전: 가변 금액
TOPIC_SUGGEST(30), // 주제 제안
TOPIC_ADOPTED(100); // 주제 채택
TODAY_CREDIT(5), // 출석체크: 하루 1회
DEFAULT_CREDIT(30), // 기본 크레딧: 회원가입 시 기본 지급
BATTLE_VOTE(5), // 배틀 참여 보상: 사후 투표 완료 시 즉시 지급
BATTLE_ENTRY(-5), // 지난 배틀 이용 비용: 사전 투표 최초 진입 시 차감
MAJORITY_WIN(10), // 다수결 보상: 월요일 배치, 2주 전 배틀 TOP≥10 대상
BEST_COMMENT(15), // 베댓 보상: 월요일 배치, 2주 전 배틀 좋아요 1위
WEEKLY_CHARGE(40), // 주간 자동 충전: 매주 월요일 00:00 활성 사용자 전체
FREE_CHARGE(20), // 광고/자유 충전: 가변 금액
TOPIC_SUGGEST(100), // 주제 제안
TOPIC_ADOPTED(120); // 주제 채택

private final int defaultAmount;

Expand Down
14 changes: 14 additions & 0 deletions src/main/resources/application-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
spring:
datasource:
url: ${DB_URL}
username: ${DB_USER}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver

jpa:
hibernate:
ddl-auto: update
show-sql: false
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
69 changes: 27 additions & 42 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,45 +1,28 @@
# 1. Spring 핵심 설정
# 1. 환경 설정 (기본값을 local로 지정)
spring:
profiles:
active: local
servlet:
multipart:
enabled: true
max-file-size: 50MB
max-request-size: 50MB

# 2. 데이터베이스 설정 (PostgreSQL)
datasource:
url: ${DB_URL}
username: ${DB_USER}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver
# 2. 클라우드 인프라 설정 (AWS, GCP)
cloud:
aws:
s3:
bucket: ${AWS_S3_BUCKET}
region:
static: ${AWS_REGION}
credentials:
access-key: ${AWS_ACCESS_KEY}
secret-key: ${AWS_SECRET_KEY}
gcp:
credentials:
location: ${GCP_CREDENTIALS_PATH}

# 3. JPA/Hibernate 설정
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.PostgreSQLDialect

# 4. 클라우드 인프라 설정 (AWS, GCP)
cloud:
# AWS S3 설정
aws:
s3:
bucket: ${AWS_S3_BUCKET}
region:
static: ${AWS_REGION}
credentials:
access-key: ${AWS_ACCESS_KEY}
secret-key: ${AWS_SECRET_KEY}
# GCP TTS 인증
gcp:
credentials:
location: ${GCP_CREDENTIALS_PATH}

# 5. 인증 및 보안 설정 (OAuth2, JWT)
# 3. 인증 및 보안 설정 (OAuth2, JWT)
oauth:
kakao:
client-id: ${KAKAO_CLIENT_ID}
Expand All @@ -48,9 +31,8 @@ oauth:
client-id: ${GOOGLE_CLIENT_ID}
client-secret: ${GOOGLE_CLIENT_SECRET}

# 6. 외부 API 설정 (AdMob, OpenAI, Fish Audio 등)
# 4. 외부 API 설정 (AdMob, OpenAI, Fish Audio, ElevenLabs 등)
admob:
# // 6.1 애드몹 앱 및 광고 단위 설정
app-id: ${ADMOB_APP_ID}
reward:
unit-id: ${ADMOB_REWARD_UNIT_ID}
Expand All @@ -67,6 +49,11 @@ fishaudio:
api-key: ${FISHAUDIO_API_KEY}
tts:
url: https://api.fish.audio/v1/tts
voice-id:
a: ${FISHAUDIO_VOICE_A}
b: ${FISHAUDIO_VOICE_B}
user: ${FISHAUDIO_VOICE_USER}
narrator: ${FISHAUDIO_VOICE_NARRATOR}

elevenlabs:
api-key: ${ELEVENLABS_API_KEY}
Expand All @@ -77,7 +64,7 @@ elevenlabs:
user: ${ELEVENLABS_VOICE_USER}
narrator: ${ELEVENLABS_VOICE_NARRATOR}

# 7. Swagger 문서 설정
# 5. 기타 설정 (Swagger, JWT, 미디어 등)
springdoc:
default-consumes-media-type: application/json
default-produces-media-type: application/json
Expand All @@ -89,11 +76,10 @@ springdoc:
api-docs:
path: /v3/api-docs

# 8. JWT 설정
jwt:
secret: ${JWT_SECRET}
access-token-expiration: 3600000 # 1시간
refresh-token-expiration: 1209600000 # 14일
access-token-expiration: 3600000
refresh-token-expiration: 1209600000

picke:
baseUrl: ${PICKE_BASE_URL:https://picke.store}
Expand All @@ -103,9 +89,8 @@ picke:
local-storage:
root: ${PICKE_LOCAL_STORAGE_ROOT:${java.io.tmpdir}/picke-local-storage}

# 9. 미디어 처리 설정 (FFmpeg)
media:
ffmpeg:
path: ${FFMPEG_PATH:ffmpeg}
ffprobe:
path: ${FFPROBE_PATH:ffprobe}
path: ${FFPROBE_PATH:ffprobe}
Loading