- 집계 기준을 "채팅방 전체 메시지 수"로 변경하여 캐릭터별 인기 순위 산정 - 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 부하 최소화, 경계 전환 후 자연 무효화
12 lines
183 B
INI
12 lines
183 B
INI
root = true
|
|
|
|
[*]
|
|
charset = utf-8
|
|
end_of_line = lf
|
|
indent_size = 4
|
|
indent_style = space
|
|
trim_trailing_whitespace = true
|
|
insert_final_newline = true
|
|
max_line_length = 130
|
|
tab_width = 4
|