- KakaoMap 컴포넌트: 위도/경도 기반 지도 표시 기능
- ConcertSection: 포스터 이미지, 날짜 범위, 장소 정보 표시
- 위치 좌표가 없는 경우(해외) 장소명만 표시
- 백엔드 API에 이미지 정보 포함
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- X 봇에서 Nitter 프로필 정보(이름, 아바타) 추출 및 Redis 캐싱
- X 프로필 조회 API 추가 (/api/schedules/x-profile/:username)
- X 상세 페이지 UI 구현 (트위터 카드 스타일)
- X 카테고리 클릭 시 상세 페이지로 이동하도록 변경
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- MariaDB 테이블 추가 (search_queries, word_pairs)
- Redis 컨테이너 추가 (Sorted Set 캐싱)
- 백엔드 suggestions 서비스 및 API 구현
- 검색 실행 시 검색어 저장 (bi-gram 학습)
- PC Schedule 프론트엔드 연동 완료
- react-infinite-scroll-component를 useInfiniteQuery + useInView로 대체
- Schedule.jsx, AdminSchedule.jsx에 안정적인 무한 스크롤 적용
- source_name에 Link2 아이콘 추가 (카테고리 오른쪽 인라인 표시)
- 멤버 5명 이상일 경우 '프로미스나인'으로 표시 (탈퇴 멤버 고려)
- AdminSchedule 일반 모드에서 members 배열도 확인하여 멤버 표시
- QueryClientProvider 설정 추가 (main.jsx)
- 백엔드: /api/schedules에 startDate, endDate, limit 파라미터 지원 추가
- 프론트엔드: 더미 데이터 제거, 실제 API 호출로 변경
- KST 기준으로 오늘 이후 3개 일정 표시
- 일정 페이지와 동일한 카드 스타일 적용
- 멤버 5명 이상이면 '프로미스나인'으로 표시
- 검색 결과 유사도순 정렬 (동일 유사도 시 최신 날짜 우선)
- 프론트엔드 검색 재정렬 제거 (Meilisearch 순서 유지)
- 관리자 일정 페이지 Meilisearch 검색 적용
- 일정 수정 시 Meilisearch 동기화 추가
- 서버 시작 시 자동 동기화
- 멤버 이름 쉼표 구분으로 통일
- Docker Compose에 Meilisearch 서비스 추가
- meilisearch.js 서비스 생성 (초기화, CRUD, 검색)
- 공개 일정 API에 Meilisearch 검색 통합
- 일정 생성/삭제 시 Meilisearch 자동 동기화
- YouTube 봇 일정 추가 시 Meilisearch 동기화
- sync-search API 추가 (기존 데이터 일괄 동기화)
- 다중 키워드, 오타 허용, 유사어 검색 지원
- 봇 스케줄러: 서버 시작 시 자동 초기화, 10초 간격 상태 동기화
- DB 리팩토링: bots 테이블에서 YouTube 컬럼 분리, bot_youtube_config 활용
- 봇별 커스텀 설정: BOT_CUSTOM_CONFIG 상수로 코드 내 관리
- 공개/관리자 일정 목록에 멤버 태그 표시 (5명 이상이면 '프로미스나인')
- 일정 목록 글씨 크기 증가 및 UI 개선
- source_name 관리자 일정에 뱃지로 표시
- 봇 시작/정지 토스트에 봇 이름 포함
- YouTube 일정 봇 서비스 추가 (youtube-bot.js, youtube-scheduler.js)
- 공개 일정 API 라우터 추가 (schedules.js)
- 관리자 일정 봇 관리 페이지 추가 (AdminScheduleBots.jsx)
- 백엔드 의존성 업데이트