Commit graph

11 commits

Author SHA1 Message Date
e31cb82649 refactor: ScheduleDict.jsx 분리 - WordItem 컴포넌트 추출
- WordItem.jsx 컴포넌트 추출 (단어 테이블 행 + 품사 드롭다운)
- POS_TAGS 상수 분리하여 export
- ScheduleDict.jsx: 714줄 → 572줄 (142줄 감소)
- 일정 관련 대형 파일 분리 완료

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:31:58 +09:00
cbce382d94 refactor: Schedules.jsx, ScheduleForm.jsx 대형 파일 분리
Phase 2 대형 파일 분리 작업:

Schedules.jsx (1465줄 → 1159줄, 306줄 감소)
- ScheduleItem.jsx 컴포넌트 추출
- 검색 모드와 일반 모드에서 공통 사용

ScheduleForm.jsx (1047줄 → 765줄, 282줄 감소)
- LocationSearchDialog.jsx 추출 (장소 검색 모달)
- MemberSelector.jsx 추출 (멤버 선택 UI)
- ImageUploader.jsx 추출 (이미지 업로드)

새 컴포넌트 (components/pc/admin/schedule/):
- ScheduleItem.jsx
- LocationSearchDialog.jsx
- MemberSelector.jsx
- ImageUploader.jsx

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:28:57 +09:00
27fc26ee96 refactor: 컴포넌트 폴더 구조화
변경 전:
components/
├── pc/admin/ (플랫)
├── pc/public/ (플랫)
└── mobile/ (플랫)

변경 후:
components/
├── pc/admin/
│   ├── layout/ (Layout, Header)
│   ├── common/ (ConfirmDialog, DatePicker, TimePicker, NumberPicker)
│   └── schedule/ (AdminScheduleCard, CategorySelector)
├── pc/public/
│   ├── layout/ (Layout, Header, Footer)
│   └── schedule/ (Calendar, ScheduleCard, BirthdayCard, CategoryFilter)
└── mobile/
    ├── layout/ (Layout, Header, BottomNav)
    └── schedule/ (Calendar, ScheduleCard 등)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 21:41:44 +09:00
25d74d098d fix: 일정 폼 구조 수정
- CategorySelector를 components/pc/admin/schedule/로 이동
- YouTube 수정 라우트 수정: /admin/schedule/:id/edit/youtube

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 21:15:32 +09:00
7dc3ec692e feat: 관리자 페이지 마이그레이션 완료 (Phase 4-5)
- 관리자 페이지 폴더 구조 재구성 (pages/pc/admin/)
  - login/, dashboard/, members/, albums/, schedules/
- 앨범 관리 페이지 마이그레이션 (Albums, AlbumForm, AlbumPhotos, AlbumTeasers)
- 일정 관리 페이지 마이그레이션 (Schedules, ScheduleForm, ScheduleCategory, ScheduleDict, ScheduleBots)
- DatePicker 컴포넌트 버그 수정 (월 이동 및 연도 선택)
- 일정 관리 라우트 경로 수정 (/admin/schedule)
- 마이그레이션 문서 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 20:35:05 +09:00
4a26369dff refactor: 관리자 기반 설정 마이그레이션 (Phase 2)
- 관리자 API 추가 (albums, members, schedules, categories, stats, suggestions, bots)
- AdminLayout/Header 컴포넌트 추가
- 공통 컴포넌트 추가 (ConfirmDialog, DatePicker, TimePicker, NumberPicker)
- AdminLogin 페이지 마이그레이션
- App.jsx에 관리자 라우트 추가 (/admin)
- ScheduleDetail.jsx import 경로 수정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 18:44:15 +09:00
67a41d78ea refactor: 폴더 구조 재편 (Phase 1)
- api/: common/, pc/common/, pc/public/, pc/admin/ 구조로 변경
- components/: pc/public/, pc/admin/ 구조로 변경
- hooks/: common/, pc/admin/ 구조로 변경
- pages/: pc/public/, mobile/ 구조로 변경
- confetti.js를 utils/로 이동
- 모든 import 경로 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 18:37:30 +09:00
d9b8e67b9a refactor: Critical 코드 품질 개선
- useAdminAuth: useRef로 logout 함수 안정화하여 무한 루프 방지
- useAdminAuth/useRedirectIfAuthenticated: queryKey 충돌 해결
- useAuthStore: 미사용 getToken, checkAuth 메서드 제거
- useUIStore: 미사용 confirmDialog 관련 코드 제거
- 카드 컴포넌트 React.memo 적용 (PC/Mobile ScheduleCard, BirthdayCard 등)
- 접근성(a11y) 개선: aria-label, role 속성 추가
  - Toast: role="alert", aria-live="polite"
  - Lightbox: role="dialog", aria-modal, aria-label
  - Calendar: 버튼 aria-label, aria-pressed, aria-expanded
  - LightboxIndicator: aria-label, aria-current

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 12:33:26 +09:00
9d1f54c68a refactor: 컴포넌트 폴더 구조 정리
- PC 컴포넌트를 components/pc/로 이동 (Calendar, ScheduleCard, BirthdayCard, CategoryFilter)
- Mobile 컴포넌트를 components/mobile/로 이동 (Mobile 접두사 제거)
- components/schedule/에는 공용 코드만 유지 (confetti.js, AdminScheduleCard)
- Schedule, Home 페이지의 import 경로 업데이트
- 관련 문서 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 12:08:47 +09:00
97850b12c1 refactor: 코드 구조 개선 및 중복 제거
- 페이지 폴더 구조를 문서대로 정리 (pc/, mobile/ 하위 폴더)
- Mobile Schedule 리팩토링 (1,495줄 → 780줄, 48% 감소)
- MobileCalendar를 별도 공통 컴포넌트로 분리
- MobileBirthdayCard에 motion/delay 지원 추가
- 중복 상수 통합: CATEGORY_ID, MIN_YEAR, SEARCH_LIMIT, MEMBER_ENGLISH_NAMES
- sections/utils.js 중복 함수 제거 (@/utils에서 re-export)
- formatXDateTime 함수 개선 (datetime 문자열 직접 처리)
- 모바일 유튜브 숏츠 표시 개선 (가로 비율, 전체화면시 세로)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:32:43 +09:00
86bf2359f2 feat(frontend): Phase 6 - 공통 컴포넌트 및 레이아웃 구현
- 공통 컴포넌트: Loading, ErrorBoundary, Toast, Tooltip, ScrollToTop, Lightbox
- PC 레이아웃: Layout, Header, Footer
- Mobile 레이아웃: Layout (Header + BottomNav 통합)
- CSS: pc.css, mobile.css (디바이스별 스타일)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:16:09 +09:00