문제: 일정 관리 페이지에서 날짜 선택 후 홈으로 갔다왔을 때
오늘 날짜로 초기화가 안됨
해결:
- useScheduleStore에 preserveState 플래그 추가
- AdminSchedule에서 preserveState가 false면 오늘 날짜로 초기화
- AdminScheduleForm, AdminScheduleBots에서 일정 관리로 돌아갈 때
preserveState를 true로 설정하여 상태 유지
- components/admin/CustomDatePicker.jsx 생성 (269줄)
- AdminMemberEdit에서 중복 제거 (-237줄)
- AdminAlbumForm에서 중복 제거 (-273줄)
- AdminScheduleForm에서 중복 제거 (-349줄)
- 현재 년도/월 표시: 테두리 제거, 글씨색만 유지
- 오늘 날짜: 배경색 제거, 글씨색만 유지
- 요일/일요일/토요일 색상 구분 추가
총 코드 감소: 약 860줄
- AdminMemberEdit API 모듈 적용
- AdminScheduleForm API 모듈 적용
- AdminAlbumPhotos API 모듈 적용 (업로드는 SSE 유지)
- api/admin/albums.js에 getAlbumTeasers, deleteAlbumTeaser 추가
총 적용 완료:
- Public 페이지: 7개
- Admin 페이지: 10개 전체 완료
- AdminSchedule.jsx: hasSchedule, getScheduleColor, filteredSchedules에서 formatDate 사용
- AdminScheduleForm.jsx: 수정 모드 날짜 로드 시 formatDate 사용
- toISOString 대신 dayjs 기반 formatDate 사용
- 카테고리 정렬: 일정 개수 기준 내림차순, 0개 숨김, 기타는 맨 아래 고정
- useMemo로 카테고리 정렬 메모이제이션 (깜빡임 방지)
- 일정 수정 시 이미지 삭제 버그 수정 (existingImageIds 업데이트)
- 이미지 파일명에서 Date.now() 제거 (01.webp 형식 유지)
- 이미지 삭제 후 sort_order 재정렬 로직 추가
- 날짜 선택 시 요일 표시 추가 (2026년 1월 7일 (수) 형식)
- 봇 스케줄러: 서버 시작 시 자동 초기화, 10초 간격 상태 동기화
- DB 리팩토링: bots 테이블에서 YouTube 컬럼 분리, bot_youtube_config 활용
- 봇별 커스텀 설정: BOT_CUSTOM_CONFIG 상수로 코드 내 관리
- 공개/관리자 일정 목록에 멤버 태그 표시 (5명 이상이면 '프로미스나인')
- 일정 목록 글씨 크기 증가 및 UI 개선
- source_name 관리자 일정에 뱃지로 표시
- 봇 시작/정지 토스트에 봇 이름 포함
- schedule_members 테이블 분리 (members 컬럼 → 별도 테이블)
- schedules 테이블 컬럼 comment 추가 및 순서 정리
- 상세주소(location_detail) 필드 추가
- 장소 검색 UI 개선 (탭 제거 → 입력 필드+검색 버튼 병합)
- 카카오 장소 검색 API 프록시 추가 (/api/admin/kakao/places)
- 백엔드 CRUD API 구현 (GET/PUT/DELETE /schedules/:id)
- 프론트엔드 삭제 기능 및 확인 다이얼로그 추가
- 프론트엔드 수정 모드 지원 (기존 데이터 로드)
- 일정 카테고리 CRUD API 추가 (backend/routes/admin.js)
- AdminScheduleCategory 페이지 신규 추가
- 카테고리 추가/수정/삭제 기능
- 드래그 앤 드롭 정렬 (framer-motion Reorder)
- react-colorful 기반 커스텀 색상 선택기
- 중복 카테고리 체크
- AdminScheduleForm에 동적 카테고리 로드 기능 추가
- 삭제 다이얼로그 앨범 스타일로 통일 (AlertTriangle 아이콘, 경고 메시지)
- Toast 컴포넌트 exit 애니메이션 수정
- 토스트 3초 자동 닫힘 기능 추가
- AdminSchedule, AdminScheduleForm 페이지 추가
- 커스텀 타임피커 구현 (오전/오후 지원, 드래그/휠 스크롤)
- Lightbox 공통 컴포넌트 분리 (components/common/Lightbox.jsx)
- 이미지 드래그 앤 드롭 정렬 기능
- 이미지 삭제 확인 다이얼로그
- 이미지 추가 버튼 첫번째 위치 고정
- 일정 이미지 순서 번호 표시
- react-ios-time-picker 라이브러리 CSS 제거