Commit Graph

62 Commits

Author SHA1 Message Date
082f255773 요청 스코프 언어 컨텍스트와 인터셉터 추가
- Interceptor에서 Accept-Language 헤더를 파싱
- 요청 단위 LangContext에 언어 정보 저장
- 서비스 및 예외 처리 계층에서 언어 컨텍스트 주입
- enum 및 when 기반 언어 정책을 한 곳으로 통합
2025-12-12 16:57:34 +09:00
f83dd47c7c fix(security-config): 홈 > 콘텐츠 랭킹을 로그인 하지 않아도 조회가 가능하도록 수정 2025-11-17 15:58:23 +09:00
8990bd0722 fix(payverse): webhook 엔드포인트는 로그인 하지 않더라도 실행되도록 수정 2025-09-30 17:37:15 +09:00
3b148d549e feat(original-app): 앱용 원작 목록/상세 API 및 조회 로직 추가
- 공개 목록 API: 미인증 사용자는 19금 비노출, 활성 캐릭터가 1개 이상 연결된 원작만 반환, 총개수+리스트 제공
- 상세 API: 로그인/본인인증 필수, 원작 상세+소속 활성 캐릭터 리스트 반환
2025-09-14 23:27:58 +09:00
0574f4f629 feat(cache): 인기 캐릭터 조회에 윈도우 기반 동적 캐시 키 적용
- ChatCharacterService.getPopularCharacters()에 @Cacheable 추가
- 키: popular-chat-character:<windowStartEpoch>:<limit>
- 윈도우(매일 20:00 UTC) 전환 시 자동으로 신규 키 사용 → 전일 순위 캐시와 분리 보장

Why: 동일 윈도우 내 반복 요청의 DB 부하를 줄이고, 경계 전환 시 자연스러운 캐시 갱신을 보장.
2025-09-14 17:43:53 +09:00
dd0a1c2293 fix(chat-character): 인기 캐릭터
- 캐시 제거
2025-09-14 16:46:56 +09:00
83a1316a64 feat(character): UTC 20시 경계 기반 인기 캐릭터 집계 구현 및 캐시 적용
- 집계 기준을 "채팅방 전체 메시지 수"로 변경하여 캐릭터별 인기 순위 산정
- Querydsl `PopularCharacterQuery` 추가: chat_message → chat_participant(CHARACTER) → chat_character 조인
- 시간 경계: UTC 20:00 기준 [windowStart, nextBoundary) 구간 사용(배타적 종료 `<`)
- `ChatCharacterService.getPopularCharacters`에 @Cacheable 적용
  - cacheNames: `popularCharacters_24h`
  - key: `RankingWindowCalculator.now('popular-chat-character').cacheKey`
  - 상위 20개 기본, `loadCharactersInOrder`로 랭킹 순서 보존
- `RankingWindowCalculator`: 경계별 동적 키 생성(`popular-chat-character:{windowStartEpoch}`) 및 윈도우 계산
- `RedisConfig`: 24시간 TTL 캐시 `popularCharacters_24h` 추가(문자열/JSON 직렬화 지정)
- `ChatCharacterController`: 메인 API에 인기 캐릭터 섹션 연동

WHY
- 20시(UTC) 경계 변경 시 키가 달라져 첫 조회에서 자동 재집계/재캐싱
- 방 전체 참여도를 반영해 보다 직관적인 인기 지표 제공
- 캐시(24h TTL)로 DB 부하 최소화, 경계 전환 후 자연 무효화
2025-09-11 18:06:40 +09:00
735f1e26df feat(chat-character): 최근 대화한 캐릭터 조회 구현 및 메인 API 연동
왜: 기존에는 채팅방 미구현으로 최근 대화 리스트를 빈 배열로 응답했음. 채팅방/메시지 기능이 준비됨에 따라 실제 최근 대화 캐릭터를 노출해야 함.
무엇:
- repository: findRecentCharactersByMember JPA 쿼리 추가 (채팅방/참여자/메시지 조인, 최신 메시지 기준 정렬)
- service: getRecentCharacters(member, limit) 구현 (member null 처리 및 페이징 적용)
- controller: /api/chat/character/main에서 인증 사용자 기준 최근 캐릭터 최대 10개 반환
2025-08-11 11:33:35 +09:00
b819df9656 feat(securityConfig): 아래 API는 로그인 하지 않아도 조회할 수 있도록 수정
- /api/chat/list
2025-08-08 17:31:21 +09:00
a1533c8e98 feat(character): 캐릭터 메인 API 추가 2025-08-07 22:33:29 +09:00
2659adb7a9 feat: 최근 공지사항 API 추가 2025-07-25 21:44:32 +09:00
046c163e6f feat: 라이브 메인 API
- 기존에 섹션별로 따로따로 호출하던 것을 하나로 합쳐서 호출할 수 있도록 API 추가
2025-07-21 15:14:47 +09:00
7551a19b34 fix: 메인 홈 API
- 로그인 하지 않고 조회가 가능하도록 수정
2025-07-14 18:48:57 +09:00
d822a4a8ac 카카오 로그인 추가 2025-04-07 15:58:08 +09:00
602d9625e2 구글 로그인 - 인증없이 실행되도록 수정 2025-04-04 14:05:31 +09:00
c466ecb77c 마케팅 트래킹
- 복합키를 AUTO_INCREMENT의 단일키로 변경
- AppLaunch 트래킹 추가
2025-03-26 13:09:09 +09:00
6dd6be183b 라이브 메인
- 로그인 없이 조회 가능하도록 수정
2025-03-22 06:10:28 +09:00
0764247447 오디션 메인
- 로그인 없이 조회 가능하도록 수정
2025-03-22 05:09:08 +09:00
f9f9b9aab9 FAQ
- 로그인 없이 조회가 가능하도록 수정
2025-03-22 04:39:54 +09:00
ec0252bae0 콘텐츠 메인 홈
- 로그인 없이 인기 단편 조회가 가능하도록 수정
2025-03-22 03:16:54 +09:00
dc74d203bd 콘텐츠 메인 홈
- 로그인 없이 인기 단편 조회가 가능하도록 수정
2025-03-22 02:42:44 +09:00
519c63a023 콘텐츠 메인 홈
- 로그인 없이 조회가 가능하도록 수정
2025-03-22 00:52:34 +09:00
4977ee99df 회원가입 로직 개선
- 기본 프로필 이미지와 닉네임 자동생성을 통해 회원가입 단계 축소
2025-03-21 00:24:15 +09:00
368c647151 Redisson Config
- 최소 유휴 연결 0, DNS 모니터링 간격 30초로 변경
2024-12-02 20:26:46 +09:00
1ca676ce0b Redisson Config
- 최소 유휴 연결 0, DNS 모니터링 간격 30초로 변경
2024-12-02 20:25:07 +09:00
b33945d21c Redisson Config
- ssl 설정
2024-12-02 19:48:51 +09:00
1649c08356 예약 업로드 오픈 스케줄러
- 서버 한 대에서만 실행되도록 Redisson을 이용하여 분산락 적용
2024-12-02 19:18:28 +09:00
9039a7a2d0 taskScheduler에 Primary 설정 2024-12-02 11:02:02 +09:00
a1ef9a4970 콘텐츠 예약 오픈 설정
- 스케줄러 설정 수정
- 외부에서 실행되는 endpoint 제거
2024-12-02 10:46:48 +09:00
c1748001d5 콘텐츠 예약 오픈 설정
- 스케줄러 설정 추가
2024-12-02 08:58:54 +09:00
e470e70612 콘텐츠 예약 오픈 설정
- 분산락 제거, 서버가 여러대라면 여러번 호출될 수 있음
2024-12-02 08:40:38 +09:00
05592f94b9 스프링 스케줄러를 이용하여 콘텐츠 예약 오픈 설정 2024-12-02 08:22:16 +09:00
b7d7afb8a5 redis를 이전하기 위해 설정했던 모든 커밋 Revert 2024-11-24 01:23:41 +09:00
e7232db2f3 Redis 패키지 별도로 분리하여 다중 구성이 용이하도록 수정 2024-11-23 21:15:14 +09:00
157e3a39b6 여러대의 Redis와 Valkey에 연결할 수 있도록 환경설정 2024-11-22 17:54:23 +09:00
354ae68dd1 Redis connection 수정 2024-11-20 18:43:19 +09:00
234a46d2ac Redis connection 수정 2024-11-20 18:30:24 +09:00
5c7bf8086c Redis connection
- clientOption 변수로 분리
2024-11-20 16:48:08 +09:00
dd614c07e2 Redis connection
- 클러스터 모드 설정
2024-11-18 14:11:09 +09:00
1c8f5ef7ac 구글 인 앱 결제 검증 코드 추가 2024-03-21 16:10:19 +09:00
81a94082aa redis ssl true 2024-02-19 14:26:42 +09:00
38cf9e453d 쿠폰 시스템
- 쿠폰 생성 API 추가
- 쿠폰 리스트 API 추가
2024-01-01 04:46:57 +09:00
0b0be28e1a 콘텐츠 정산 - group by 날짜 수정 2023-11-10 21:39:40 +09:00
9a394b7dae 콘텐츠 메인 API - 코루틴 제거 2023-11-07 17:12:58 +09:00
ce15025c8d 콘텐츠 메인 API - 코루틴 적용 2023-11-07 16:47:25 +09:00
b3d66151bc redis cache manager - serializeKeysWith 추가 2023-11-02 03:12:44 +09:00
1cf70c25a9 redis cache manager - serializeValuesWith 추가 2023-11-02 03:02:28 +09:00
695c8cbad8 redis cache manager - serializeValuesWith 추가 2023-11-02 02:58:12 +09:00
1c7fdfac69 콘텐츠 메인 캐싱 전략 변경 - repository 에 있던 @Cacheable 을 service 코드로 이동 2023-10-27 01:08:40 +09:00
3ec16b5045 현재 사용하지 않는 API 제거, 캐시 전략 변경을 위해 @Cacheable 제거 2023-10-26 18:42:22 +09:00