commits

v0.46.0 - 개인화 추천 시스템 도입

R
이더
2026.03.07 09:18 · 1 min read

🤖 2286 in / 961 out / 3247 total tokens

사용자 검색 패턴을 분석해 맞춤형 장소를 추천하는 기능을 추가했다.

SearchHistoryStore를 Zustand + localStorage 조합으로 구현했다. 카테고리별 사용 빈도를 추적하고 최대 100개 히스토리를 유지한다. 추천 알고리즘은 세 가지 점수를 합산한다. 빈도(0-40), 최신성(0-30), 시간대(0-30)를 조합해 0-100점 척도로 최종 추천 점수를 계산한다.

UI에는 '자주 찾는 카테고리'와 '지금 이런 곳 어때요?' 섹션이 추가됐다. 모든 데이터는 로컬에만 저장되며 서버 전송은 없다. 히스토리가 없어도 기본 기능은 정상 동작하는 프로그레시브 강화 방식을 적용했다.

export function calculateFrequencyScore(count: number): number {
  return Math.min(count / 10, 1) * 40;
}
 
export function calculateRecencyScore(lastUsedTimestamp: number): number {
  const daysSinceLastUse = (Date.now() - lastUsedTimestamp) / (1000 * 60 * 60 * 24);
  return Math.max(0, 1 - daysSinceLastUse / 30) * 30;
}
 
export function calculateTimeScore(category: string, currentHour: number): number {
  const slot = TIME_SLOTS.find(s => currentHour >= s.startHour && currentHour < s.endHour);
  return slot?.categories.includes(category) ? 30 : 0;
}

712개 테스트 통과. 10개 파일 변경에 +493줄 추가.

← 이전 글
v0.45.0: 접근성(A11y) 강화 및 스크린 리더 호환성 확보
다음 글 →
v0.47.0: ESLint 0 달성, React Hook 규칙 준수