Sound On Demand For Adult
Go to file
Klaus 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
gradle/wrapper gradle 설정 - daemon, configureondemand true로 변경 2023-07-24 14:50:09 +09:00
scripts CodeDeploy 스크립트 추가 2023-07-21 19:45:23 +09:00
src feat(character): UTC 20시 경계 기반 인기 캐릭터 집계 구현 및 캐시 적용 2025-09-11 18:06:40 +09:00
.editorconfig feat(character): UTC 20시 경계 기반 인기 캐릭터 집계 구현 및 캐시 적용 2025-09-11 18:06:40 +09:00
.gitignore feat: .junie/, .kiro/ 폴더 이하 파일들 git에 포함되지 않도록 코드 추가 2025-08-05 16:41:53 +09:00
README.md first commit 2023-07-21 16:25:53 +09:00
appspec.yml CodeDeploy 스크립트 추가 2023-07-21 19:45:23 +09:00
build.gradle.kts feat: 커뮤니티 글 등록/수정 2025-07-03 15:26:35 +09:00
gradlew first commit 2023-07-21 16:25:53 +09:00
gradlew.bat first commit 2023-07-21 16:25:53 +09:00
settings.gradle.kts first commit 2023-07-21 16:25:53 +09:00

README.md

소다라이브(Sound of Demand for Adult)