fromis_9/docs/migration.md
caadiq 9eb49929c7 YouTube 섹션 스타일 개선 및 문서 업데이트
- PC/모바일 YouTube 상세 페이지 그림자 감소, 배경색 조정
- 모바일 YouTube 섹션을 카드에서 배경 스타일로 변경
- 문서 업데이트: 완료된 마이그레이션 작업 반영, 누락된 API 추가

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

5.1 KiB

Express → Fastify 마이그레이션

개요

backend-backup/ (Express) → backend/ (Fastify)로 마이그레이션 완료

완료된 작업

서버 기반

  • Fastify 앱 구조 (src/app.js, src/server.js)
  • 플러그인 시스템 (src/plugins/)
    • db.js (MariaDB)
    • redis.js
    • auth.js (JWT)
    • meilisearch.js
    • scheduler.js (봇 스케줄러)

API 라우트 (src/routes/)

  • 인증 (/api/auth)
    • POST /login - 로그인
    • GET /verify - 토큰 검증
  • 멤버 (/api/members)
    • GET / - 목록 조회
    • GET /:name - 상세 조회
    • PUT /:name - 수정 (이미지 업로드 포함)
  • 앨범 (/api/albums)
    • GET / - 목록 조회
    • GET /:id - ID로 조회
    • GET /by-name/:name - 이름으로 조회
    • GET /by-name/:albumName/track/:trackTitle - 트랙 조회
    • POST / - 생성
    • PUT /:id - 수정
    • DELETE /:id - 삭제
    • 사진 관리 (/api/albums/:id/photos)
      • GET / - 목록
      • POST / - 업로드
      • PUT /:photoId - 수정
      • DELETE /:photoId - 삭제
    • 티저 관리 (/api/albums/:id/teasers)
      • GET / - 목록
      • POST / - 업로드
      • DELETE /:teaserId - 삭제
  • 일정 (/api/schedules)
    • GET / - 월별 조회 (생일 포함)
    • GET /?search= - Meilisearch 검색
    • GET /:id - 상세 조회
    • DELETE /:id - 삭제
    • POST /sync-search - Meilisearch 동기화
  • 추천 검색어 (/api/schedules/suggestions)
    • GET / - 추천 검색어 조회
    • GET /popular - 인기 검색어 조회
    • POST /save - 검색어 저장
    • GET /dict - 사용자 사전 조회 (관리자)
    • PUT /dict - 사용자 사전 저장 (관리자)
  • 통계 (/api/stats)
    • GET / - 대시보드 통계

관리자 API (src/routes/admin/)

  • 봇 관리 (/api/admin/bots)
    • GET / - 봇 목록
    • POST /:id/start - 봇 시작
    • POST /:id/stop - 봇 정지
    • POST /:id/sync-all - 전체 동기화
    • GET /quota-warning - 할당량 경고 조회
    • DELETE /quota-warning - 할당량 경고 해제
  • YouTube 관리 (/api/admin/youtube)
    • GET /video-info - 영상 정보 조회
    • POST /schedule - 일정 저장
    • PUT /schedule/:id - 일정 수정
  • X 관리 (/api/admin/x)
    • GET /post-info - 게시글 정보 조회
    • POST /schedule - 일정 저장

서비스 (src/services/)

  • YouTube 봇 (services/youtube/)
    • 영상 자동 수집
    • 채널별 필터링 (제목 필터, 멤버 추출)
  • X(Twitter) 봇 (services/x/)
    • Nitter 스크래핑
    • 이미지 URL 추출
  • Meilisearch 검색 (services/meilisearch/)
    • 일정 검색
    • 전체 동기화
  • 추천 검색어 (services/suggestions/)
    • 형태소 분석 (kiwi-nlp)
    • bi-gram 빈도
    • 초성 검색
    • 사용자 사전 관리
  • 이미지 업로드 (services/image.js)
    • 앨범 커버
    • 멤버 이미지
    • 앨범 사진/티저

남은 작업 (미구현)

일반 일정 CRUD

  • POST /api/schedules - 일정 생성 (일반)
  • PUT /api/schedules/:id - 일정 수정 (일반)

※ 현재는 YouTube/X 전용 일정 생성 API만 구현됨

카테고리 관리

  • POST /api/schedule-categories - 생성
  • PUT /api/schedule-categories/:id - 수정
  • DELETE /api/schedule-categories/:id - 삭제
  • PUT /api/schedule-categories-order - 순서 변경

※ GET은 구현됨 (목록 조회)

기타

  • GET /api/kakao/places - 카카오 장소 검색 프록시

파일 비교표

Express (backend-backup) Fastify (backend) 상태
routes/admin.js (로그인) routes/auth.js 완료
routes/admin.js (앨범 CRUD) routes/albums/index.js 완료
routes/admin.js (사진/티저) routes/albums/photos.js, teasers.js 완료
routes/admin.js (멤버 수정) routes/members/index.js 완료
routes/admin.js (일정 삭제) routes/schedules/index.js 완료
routes/admin.js (일정 생성/수정) - 미완료
routes/admin.js (카테고리 CUD) - 미완료
routes/admin.js (봇 관리) routes/admin/bots.js 완료
routes/admin.js (할당량) routes/admin/bots.js 완료
routes/admin.js (카카오) - 미완료
- routes/admin/youtube.js 신규
- routes/admin/x.js 신규
routes/albums.js routes/albums/index.js 완료
routes/members.js routes/members/index.js 완료
routes/schedules.js routes/schedules/index.js 완료
routes/stats.js routes/stats/index.js 완료
services/youtube-bot.js services/youtube/ 완료
services/youtube-scheduler.js plugins/scheduler.js 완료
services/x-bot.js services/x/ 완료
services/meilisearch.js services/meilisearch/ 완료
services/meilisearch-bot.js services/meilisearch/ 완료
services/suggestions.js services/suggestions/ 완료

참고 사항

  • 기존 Express 코드는 backend-backup/ 폴더에 보존
  • 마이그레이션 시 기존 코드 참조하여 동일 기능 구현
  • DB 스키마 변경 사항:
    • tracksalbum_tracks (이름 변경)
    • venuesconcert_venues (이름 변경)