Commit graph

219 commits

Author SHA1 Message Date
346d6529f2 Meilisearch 검색 엔진 도입
- Docker Compose에 Meilisearch 서비스 추가
- meilisearch.js 서비스 생성 (초기화, CRUD, 검색)
- 공개 일정 API에 Meilisearch 검색 통합
- 일정 생성/삭제 시 Meilisearch 자동 동기화
- YouTube 봇 일정 추가 시 Meilisearch 동기화
- sync-search API 추가 (기존 데이터 일괄 동기화)
- 다중 키워드, 오타 허용, 유사어 검색 지원
2026-01-06 08:22:43 +09:00
9ab79ef507 일정 페이지 기본 날짜 KST 기준으로 수정 2026-01-06 08:09:17 +09:00
52332babea 일정 관리 기능 개선: 봇 스케줄러 리팩토링, 멤버 표시, UI 개선
- 봇 스케줄러: 서버 시작 시 자동 초기화, 10초 간격 상태 동기화
- DB 리팩토링: bots 테이블에서 YouTube 컬럼 분리, bot_youtube_config 활용
- 봇별 커스텀 설정: BOT_CUSTOM_CONFIG 상수로 코드 내 관리
- 공개/관리자 일정 목록에 멤버 태그 표시 (5명 이상이면 '프로미스나인')
- 일정 목록 글씨 크기 증가 및 UI 개선
- source_name 관리자 일정에 뱃지로 표시
- 봇 시작/정지 토스트에 봇 이름 포함
2026-01-06 00:27:35 +09:00
0c91abd722 fix(bot): 봇 목록 API 수정 - JOIN 제거, ID 오름차순 정렬
- bots 테이블에서 직접 조회 (bot_youtube_config JOIN 제거)
- channel_id, rss_url 등이 bots 테이블에 직접 저장됨
- 정렬 순서: created_at DESC → id ASC
- 오류 발생 후 목록 갱신 추가
2026-01-05 22:51:37 +09:00
4d37f0dfe2 fix(bot): 오류 발생 후 목록 갱신 추가 2026-01-05 22:31:56 +09:00
e216539f34 feat(bot): studiofromis_9 채널 봇 추가 및 cron 표현식 지원
- .env에 YouTube API 키 추가
- bots 테이블에 channel_id, rss_url, cron_expression 컬럼 추가
- youtube-scheduler.js: cron_expression 파라미터 지원
- youtube-bot.js: bots 테이블에서 직접 조회, Shorts 필터링 제거
- studiofromis_9 봇 등록 (채널: UCW0ORl7mZO8wIWkgtq-yzjQ, cron: 1,2 * * * *)
2026-01-05 22:26:44 +09:00
1b01182028 feat: 일정 봇 자동화 및 검색 기능 추가
- YouTube 일정 봇 서비스 추가 (youtube-bot.js, youtube-scheduler.js)
- 공개 일정 API 라우터 추가 (schedules.js)
- 관리자 일정 봇 관리 페이지 추가 (AdminScheduleBots.jsx)
- 백엔드 의존성 업데이트
2026-01-05 22:16:02 +09:00
387db937b0 feat(schedule): 공개 일정 페이지에 검색 기능 추가
- 헤더에 검색 토글 UI 추가 (밑줄 스타일 검색창)
- API 검색 기능 (/api/admin/schedules?search=) 연동
- 검색 모드에서 달력/카테고리 비활성화 (framer-motion animate)
- 검색 결과에 년.월 형식 날짜 표시 (2025.4)
- 카테고리 개수: 검색 시 결과 기준, 일반 시 해당 월 기준
- 달력/카테고리 구조 분리하여 독립 제어
- AdminSchedule.jsx도 동일한 비활성화 방식 적용
2026-01-05 22:08:41 +09:00
dff43126c4 feat(schedule): 일정 수정/삭제 기능 구현 및 DB 스키마 개선
- schedule_members 테이블 분리 (members 컬럼 → 별도 테이블)
- schedules 테이블 컬럼 comment 추가 및 순서 정리
- 상세주소(location_detail) 필드 추가
- 장소 검색 UI 개선 (탭 제거 → 입력 필드+검색 버튼 병합)
- 카카오 장소 검색 API 프록시 추가 (/api/admin/kakao/places)
- 백엔드 CRUD API 구현 (GET/PUT/DELETE /schedules/:id)
- 프론트엔드 삭제 기능 및 확인 다이얼로그 추가
- 프론트엔드 수정 모드 지원 (기존 데이터 로드)
2026-01-05 18:11:40 +09:00
4da5ea58ef feat: 일정 카테고리 관리 기능 추가 및 다이얼로그 스타일 통일
- 일정 카테고리 CRUD API 추가 (backend/routes/admin.js)
- AdminScheduleCategory 페이지 신규 추가
  - 카테고리 추가/수정/삭제 기능
  - 드래그 앤 드롭 정렬 (framer-motion Reorder)
  - react-colorful 기반 커스텀 색상 선택기
  - 중복 카테고리 체크
- AdminScheduleForm에 동적 카테고리 로드 기능 추가
- 삭제 다이얼로그 앨범 스타일로 통일 (AlertTriangle 아이콘, 경고 메시지)
- Toast 컴포넌트 exit 애니메이션 수정
- 토스트 3초 자동 닫힘 기능 추가
2026-01-05 11:20:44 +09:00
2a952f39ab feat: 일정 관리 페이지 및 타임피커 개선
- AdminSchedule, AdminScheduleForm 페이지 추가
- 커스텀 타임피커 구현 (오전/오후 지원, 드래그/휠 스크롤)
- Lightbox 공통 컴포넌트 분리 (components/common/Lightbox.jsx)
- 이미지 드래그 앤 드롭 정렬 기능
- 이미지 삭제 확인 다이얼로그
- 이미지 추가 버튼 첫번째 위치 고정
- 일정 이미지 순서 번호 표시
- react-ios-time-picker 라이브러리 CSS 제거
2026-01-04 20:50:21 +09:00
20cb711795 feat: 멤버 프로필 수정 페이지 구현
- 멤버 수정 페이지 추가 (AdminMemberEdit.jsx)
- 커스텀 데이트픽커 적용 (앨범 폼과 동일)
- 활동 상태 버튼 토글 (활동 중/탈퇴)
- URL 라우터 멤버 이름 기반으로 변경 (/admin/members/:name/edit)
- 백엔드 멤버 조회/수정 API 추가 (이름 기반)
- 전 멤버 섹션 UI 개선 (배경 항상 표시, 포지션 제거)
2026-01-04 14:02:45 +09:00
97e63580e5 feat: 관리자 페이지 개선
- 관리자 페이지 헤더 로고 클릭 시 어드민 대시보드로 이동
- 멤버 관리 페이지 UI 추가 (5열 그리드, 현재/이전 멤버 분리)
- 대시보드 통계 실제 데이터 연결 및 슬롯머신 애니메이션
- 멤버 카드 페이드+스케일업 애니메이션
2026-01-04 13:10:34 +09:00
925cfe026a feat: 앨범 상세 페이지에서 커버 이미지 클릭 시 라이트박스 열기
- 커버 이미지 클릭 시 원본 이미지를 라이트박스로 표시
- 호버 시 확대 효과 추가
2026-01-04 11:42:52 +09:00
b262907780 feat: 앨범 커버 이미지 3개 해상도로 저장
- DB 스키마 변경: cover_url → cover_original_url, cover_medium_url, cover_thumb_url
- 백엔드: 앨범 생성/수정 시 original/800/400 3개 크기로 저장
- 프론트엔드: 용도에 맞게 적절한 해상도 사용
  - 앨범 목록: medium
  - 상세 페이지: medium
  - 관리자 목록: thumb
2026-01-04 11:34:31 +09:00
1c42d3333c fix: 업로드 시작 번호를 타입별로 분리 계산
- 컨셉 포토와 티저 각각 별도로 시작 번호 계산
- 타입 변경 시 해당 타입의 마지막 번호 +1로 자동 업데이트
- 업로드 후 수동 번호 증가 제거 (useEffect에서 자동 처리)
2026-01-04 11:20:46 +09:00
a5eba6535f fix: 사이트 레이아웃 개선
- 사이트 전체 min-width 1200px → 1440px로 변경
- 헤더/갤러리 양쪽 여백 통일 (px-24)
- 갤러리 CSS 정리 (호버 효과만 유지)
2026-01-04 02:22:42 +09:00
326cb02df6 fix: 라이트박스 이미지 크기 고정 및 스크롤바 숨기기
- 이미지 max-h를 75vh에서 900px 고정값으로 변경
- 라이트박스 컨테이너 min값 1400x1200으로 설정
- 스크롤바 숨기기 (Firefox/Chrome/Safari 지원)
2026-01-04 01:56:05 +09:00
5610a337c5 feat: 라이트박스 인디케이터 개선 및 업로드 기능 강화
- 인디케이터 슬라이딩 애니메이션 개선 (CSS transition으로 GPU 가속)
- React.memo로 인디케이터 분리하여 이미지 로딩 시 리렌더링 방지
- 양옆 페이드 그라데이션 효과 추가
- 업로드 시 시작 번호 자동 계산 (기존 사진 마지막 번호 +1)
- 동영상 썸네일 및 미리보기 지원
- 이미지 프리로딩 범위 확장 (±2개)
- Multer 업로드 제한 50 → 200개로 증가
2026-01-04 01:38:32 +09:00
3ff912d1fe style: 라이트박스 이미지 둥근 모서리 제거 및 멤버 버튼 크기 일관성 수정
- AlbumGallery, AlbumDetail 라이트박스 이미지 rounded-lg 제거
- 선택된 멤버 버튼에 border 추가하여 크기 변화 방지
- 티저 라벨 영문->한글 변경
2026-01-03 21:01:48 +09:00
17407ec6da refactor: Discography.jsx를 Album.jsx로 이름 변경
- 파일명 및 컴포넌트명 통일
- 멤버 소개 텍스트 수정
2026-01-03 14:43:43 +09:00
035cdf0383 refactor: '스케줄' 용어를 '일정'으로 통일
- 헤더 메뉴, 페이지 제목, 안내 메시지 등 전체 변경
- Home, Schedule, Header, AdminDashboard 파일 수정
2026-01-03 14:30:30 +09:00
27878816b1 refactor: 앨범 사진 관리 개선
- '솔로' → '개인'으로 텍스트 변경
- 컨셉명 필수 검증 제거 (선택사항으로 변경)
- 라이트박스에서 컨셉명 없어도 멤버 이름 표시되도록 수정
- 'Default' 컨셉명은 표시하지 않음
2026-01-03 14:27:19 +09:00
1fcb70e2c9 perf: Discography 페이지 앨범 커버 이미지 lazy loading 추가 2026-01-03 11:32:28 +09:00
a55d06655f feat: 커스텀 툴팁 컴포넌트 추가 및 메뉴 애니메이션 개선
- 마우스 따라다니는 커스텀 Tooltip 컴포넌트 구현
- AdminAlbums 관리 버튼에 툴팁 적용
- 앨범 상세 점3개 메뉴 열기/닫기 애니메이션 추가
- 컨셉 포토에 lazy loading 추가
2026-01-03 10:16:38 +09:00
0a77765a6d feat: 앨범 상세 레이아웃 개선, 관리 화면 썸네일 확대 및 최적화
- 앨범 소개를 다이얼로그로 분리 (점3개 메뉴)
- 수록곡 전체 너비로 표시
- 관리 화면 썸네일 180px로 확대
- 메타 영역 고정 높이 (200px)
- lazy loading 및 애니메이션 최적화
2026-01-03 10:01:34 +09:00
1ae01fb2d7 fix: 사진 삭제 API 수정, 앨범 호버 애니메이션 개선 2026-01-03 01:06:32 +09:00
2bbb6f53e5 fix: 멤버 페이지 통계 - 현재 멤버 수로 변경 2026-01-02 23:36:48 +09:00
1ad5f6a907 feat: 멤버 관리 개선 - 전/현재 멤버 구분, D+Day 표시, UI 정리 2026-01-02 23:35:36 +09:00
3c06a20ea4 feat: 앨범 상세 UI 개선 - 소개 스크롤, 작사/작곡 자동변환, 타입별 개수 표시 2026-01-02 17:04:27 +09:00
d9d1a447c4 fix: 공식 YouTube, Instagram 링크 수정 2026-01-02 13:31:33 +09:00
96e7ae0539 feat: AlbumGallery 이미지 로드 애니메이션 추가 2026-01-02 12:20:08 +09:00
9f7548b4b4 feat: 관리 탭 UI 개선 - 탭 분리, 전체 선택, 삭제 기능, 애니메이션 추가 2026-01-02 12:17:24 +09:00
4d8d18586c style: 갤러리 사진 간격 증가, 앨범 상세 hover 효과 부드럽게 개선 2026-01-02 11:27:19 +09:00
79fb58e2ee feat: 라이트박스 UI 개선 - min-width/height 적용, body 스크롤 숨김, 이미지 크기 증가, 멤버 태그 개별 표시 2026-01-02 11:07:51 +09:00
ab92e3117e feat: 업로드 버튼에 확인 다이얼로그 추가
- 업로드 전 사진 타입, 파일 개수, 파일명 범위 확인
- 실수로 업로드 방지
2026-01-02 10:24:45 +09:00
57fa0e1393 feat: 관리자 페이지 일괄 편집 도구 추가
- 사진 목록 우측에 sticky 일괄 편집 패널 추가
- 번호 범위로 여러 사진에 타입/멤버/컨셉명 일괄 적용
- 표시 번호(startNumber) 기준으로 범위 입력 가능
- 순수 CSS sticky로 성능 최적화
2026-01-02 10:14:27 +09:00
961ca97920 feat: 앨범 사진 다중 해상도 URL 지원 및 갤러리 UI 개선
- album_photos, album_teasers 테이블에 original_url, medium_url, thumb_url 컬럼 추가
- API에서 3가지 해상도 URL 및 width/height 반환
- AlbumDetail: 티저는 thumb_url(400), 컨셉포토는 medium_url(800) 사용
- AlbumGallery: 동적 비율 + CSS hover 효과 추가
- react-photo-album rowConstraints로 마지막 row 표시 문제 개선
2026-01-02 09:38:04 +09:00
fd1807f38c feat: 앨범 사진/티저 업로드 기능 구현
- SSE 기반 실시간 업로드 진행률 표시
- 컨셉 포토/티저 이미지 분리 (photo/ vs teaser/ 폴더)
- album_photos, album_teasers 테이블에 분리 저장
- 3개 해상도별 URL 컬럼 분리 (original_url, medium_url, thumb_url)
- 파일 업로드 시 타입 선택 잠금
- 티저 모드: 순서만 변경 가능, 메타 정보 입력 불필요
- 이미지 처리 병렬화로 성능 개선
- RUSTFS_PUBLIC_URL 환경변수 추가
2026-01-02 00:10:47 +09:00
ee23e5ffa4 feat: 앨범 사진 관리 UI 구현
- AdminAlbumPhotos 컴포넌트 추가 및 라우트 등록
- 드래그앤드롭 파일 업로드 (깜빡임 방지, 중복 파일 감지)
- 파일 순서 변경 (드래그 정렬 + 직접 입력)
- 사진 메타데이터 입력 (타입, 멤버 태깅, 컨셉명)
- 단체/솔로/유닛 선택에 따른 멤버 태깅 로직
- 삭제 확인 다이얼로그
- 페이지 전환 애니메이션
2026-01-01 22:31:38 +09:00
d4bbf592d5 feat: 앨범 삭제 기능 - 삭제 다이얼로그, Toast 알림 2026-01-01 20:40:01 +09:00
40fa94f9f5 feat: 앨범 관리 기능 - CRUD API, RustFS 커버 업로드, 트랙 상세 정보, Toast 알림 2026-01-01 20:36:49 +09:00
bd787d57c3 feat: 앨범 추가/수정 폼 UI 개선
- 커스텀 드롭다운 (앨범 타입: 정규/미니/싱글)
- 커스텀 데이트픽커 (년도/월 선택 그리드)
- 커버 이미지 직접 업로드
- RustFS 폴더명 입력 필드
- 타이틀곡 토글 버튼
- 페이지 전환 애니메이션
2026-01-01 18:28:01 +09:00
09a78ac044 feat: 앨범 관리 UI 추가
- 앨범 목록 페이지 (/admin/albums)
- 앨범 검색, 사진 관리/수정/삭제 버튼
- 사진 업로드/관리 버튼 통합
2026-01-01 18:05:39 +09:00
009c428d37 feat: 관리자 페이지 추가
- 관리자 로그인 시스템 (JWT, 30일 만료)
- admin_users 테이블 및 bcrypt 암호화
- 로그인 페이지 (/admin)
- 대시보드 (/admin/dashboard)
- 메뉴: 멤버, 앨범, 일정 관리
2026-01-01 18:01:42 +09:00
ae898d01ad refactor: 코드 정리 및 버그 수정
- AlbumGallery.jsx: useEffect 의존성 버그 수정 (id→name)
- AlbumGallery.jsx: 미사용 useMemo import 제거
- albums.js: 중복 코드를 getAlbumDetails 헬퍼 함수로 추출
- albums.js: 163줄 → 115줄 (48줄 감소)
2026-01-01 17:23:29 +09:00
3339b281c7 feat: 갤러리 최적화 및 라우터 개선
- 컨셉 포토 갤러리 페이지 추가 (AlbumGallery.jsx)
- react-photo-album 라이브러리로 Justified 레이아웃 구현
- 썸네일/원본 이미지 분리 (thumb_400, original 폴더)
- 라우터 변경: /discography → /album
- URL 형식 변경: ID 기반 → 앨범명 기반 (/album/하얀 그리움)
- 앨범명 기반 API 추가 (/api/albums/by-name/:name)
- 브레드크럼 스타일 네비게이션 적용
- 라이트박스 슬라이드 애니메이션 추가
- 점 형태 인디케이터로 변경
2026-01-01 17:20:36 +09:00
66099a1988 fix: React Router v7 future 플래그 추가
- BrowserRouter에 v7_startTransition, v7_relativeSplatPath 플래그 추가
- 콘솔 경고 메시지 제거

refactor: 앨범 유형 표시 분리 및 라이트박스 개선
- album_type (전체), album_type_short (짧은) 분리
- 앨범 목록에서 짧은 유형 표시
- 라이트박스 닫기 애니메이션 추가 (AnimatePresence)
- 배경 클릭 시 모달 닫힘 방지
- favicon 링크 추가
2026-01-01 14:15:39 +09:00
ef1050758a feat: 앨범 티저 이미지 기능 추가
- album_teasers 테이블 생성 및 API 연동
- 앨범 상세 페이지에 티저 이미지 썸네일 표시
- 이미지 클릭 시 라이트박스 모달 표시
- 좌우 슬라이드 애니메이션 적용
- 티저 썸네일 호버 효과 (확대 + 그림자)
2026-01-01 13:52:12 +09:00
831715da3e feat: 앨범 상세 페이지 추가 및 UI 개선
- 앨범 상세 페이지 (AlbumDetail.jsx) 신규 생성
- 앨범 목록에서 클릭 시 상세 페이지로 이동
- 소개글/트랙 리스트 2열 그리드 레이아웃
- 트랙 호버 효과 및 총 재생시간 표시
- 페이지 전환 fade 애니메이션 적용
- '디스코그래피' -> '앨범' 텍스트 변경
- albums 테이블 description 컬럼 추가
- 트랙 duration 데이터 입력
2026-01-01 10:20:54 +09:00