refactor: API 폴더 구조 개선

변경 전:
api/
├── common/client.js
├── pc/admin/
├── pc/common/
└── pc/public/

변경 후:
api/
├── client.js
├── admin/
└── public/

- PC/Mobile 구분 제거 (같은 API 사용)
- 모든 import 경로 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-01-22 21:39:01 +09:00
parent 21dde0fd35
commit d5c54db86c
32 changed files with 2155 additions and 49 deletions

2106
frontend-temp/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
/**
* 관리자 앨범 API
*/
import { fetchAuthApi, fetchFormData } from '@/api/common/client';
import { fetchAuthApi, fetchFormData } from '@/api/client';
/**
* 앨범 목록 조회

View file

@ -1,7 +1,7 @@
/**
* 관리자 인증 API
*/
import { fetchApi, fetchAuthApi } from '@/api/common/client';
import { fetchApi, fetchAuthApi } from '@/api/client';
/**
* 로그인

View file

@ -1,7 +1,7 @@
/**
* 관리자 관리 API
*/
import { fetchAuthApi } from '@/api/common/client';
import { fetchAuthApi } from '@/api/client';
/**
* 목록 조회

View file

@ -1,7 +1,7 @@
/**
* 관리자 카테고리 API
*/
import { fetchAuthApi } from '@/api/common/client';
import { fetchAuthApi } from '@/api/client';
/**
* 카테고리 목록 조회

View file

@ -1,11 +1,14 @@
// 인증
export * from './auth';
// 관리자 API
/**
* 관리자 API 통합 export
*/
export * as adminScheduleApi from './schedules';
export * as adminAlbumApi from './albums';
export * as adminMemberApi from './members';
export * as adminScheduleApi from './schedules';
export * as adminCategoryApi from './categories';
export * as adminBotApi from './bots';
export * as adminStatsApi from './stats';
export * as adminSuggestionApi from './suggestions';
export * as adminBotApi from './bots';
export * as adminAuthApi from './auth';
// 개별 함수 export
export * from './auth';

View file

@ -1,7 +1,7 @@
/**
* 관리자 멤버 API
*/
import { fetchAuthApi, fetchFormData } from '@/api/common/client';
import { fetchAuthApi, fetchFormData } from '@/api/client';
/**
* 멤버 목록 조회

View file

@ -1,7 +1,7 @@
/**
* 관리자 일정 API
*/
import { fetchAuthApi, fetchFormData } from '@/api/common/client';
import { fetchAuthApi, fetchFormData } from '@/api/client';
/**
* API 응답을 프론트엔드 형식으로 변환

View file

@ -1,7 +1,7 @@
/**
* 관리자 통계 API
*/
import { fetchAuthApi } from '@/api/common/client';
import { fetchAuthApi } from '@/api/client';
/**
* 대시보드 통계 조회

View file

@ -1,7 +1,7 @@
/**
* 관리자 추천 검색어 API
*/
import { fetchAuthApi } from '@/api/common/client';
import { fetchAuthApi } from '@/api/client';
/**
* 사전 내용 조회

View file

@ -1 +0,0 @@
export * from './client';

View file

@ -3,18 +3,13 @@
*/
// 공통 유틸리티
export * from './common/client';
export * from './client';
// 공개 API
export * as scheduleApi from './pc/public/schedules';
export * as albumApi from './pc/public/albums';
export * as memberApi from './pc/common/members';
export * from './public';
export * as scheduleApi from './public/schedules';
export * as albumApi from './public/albums';
export * as memberApi from './public/members';
// 관리자 API
export * as authApi from './pc/admin/auth';
// 개별 함수도 export (하위 호환성)
export * from './pc/public/schedules';
export * from './pc/public/albums';
export * from './pc/common/members';
export * from './pc/admin/auth';
export * from './admin';

View file

@ -1 +0,0 @@
export * from './members';

View file

@ -1,2 +0,0 @@
export * from './schedules';
export * from './albums';

View file

@ -1,7 +1,7 @@
/**
* 앨범 API
*/
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/common/client';
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/client';
// ==================== 공개 API ====================

View file

@ -0,0 +1,6 @@
/**
* 공개 API 통합 export
*/
export * from './schedules';
export * from './albums';
export * from './members';

View file

@ -1,7 +1,7 @@
/**
* 멤버 API
*/
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/common/client';
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/client';
// ==================== 공개 API ====================

View file

@ -1,7 +1,7 @@
/**
* 스케줄 API
*/
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/common/client';
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/client';
import { getTodayKST, dayjs } from '@/utils';
/**

View file

@ -10,8 +10,8 @@ import { Toast } from '@/components/common';
import { AdminLayout, DatePicker } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { adminAlbumApi } from '@/api/pc/admin';
import { fetchFormData } from '@/api/common/client';
import { adminAlbumApi } from '@/api/admin';
import { fetchFormData } from '@/api/client';
//
function CustomSelect({ value, onChange, options, placeholder }) {

View file

@ -26,7 +26,7 @@ import { Toast } from '@/components/common';
import { AdminLayout, ConfirmDialog } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { adminAlbumApi, adminMemberApi } from '@/api/pc/admin';
import { adminAlbumApi, adminMemberApi } from '@/api/admin';
function AdminAlbumPhotos() {
const { albumId } = useParams();

View file

@ -10,7 +10,7 @@ import { Toast, Tooltip } from '@/components/common';
import { AdminLayout, ConfirmDialog } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { adminAlbumApi } from '@/api/pc/admin';
import { adminAlbumApi } from '@/api/admin';
function AdminAlbums() {
const navigate = useNavigate();

View file

@ -7,7 +7,7 @@ import { motion } from 'framer-motion';
import { Disc3, Calendar, Users, Home, ChevronRight } from 'lucide-react';
import { AdminLayout } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { adminStatsApi } from '@/api/pc/admin';
import { adminStatsApi } from '@/api/admin';
/**
* 슬롯머신 스타일 롤링 숫자 컴포넌트

View file

@ -8,7 +8,7 @@ import { motion } from 'framer-motion';
import { Lock, User, AlertCircle, Eye, EyeOff } from 'lucide-react';
import { useAuthStore } from '@/stores';
import { useRedirectIfAuthenticated } from '@/hooks/pc/admin';
import * as authApi from '@/api/pc/admin/auth';
import * as authApi from '@/api/admin/auth';
function AdminLogin() {
const navigate = useNavigate();

View file

@ -10,8 +10,8 @@ import { Toast } from '@/components/common';
import { AdminLayout, DatePicker } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { adminMemberApi } from '@/api/pc/admin';
import { fetchFormData } from '@/api/common/client';
import { adminMemberApi } from '@/api/admin';
import { fetchFormData } from '@/api/client';
function AdminMemberEdit() {
const navigate = useNavigate();

View file

@ -10,7 +10,7 @@ import { Toast } from '@/components/common';
import { AdminLayout } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { adminMemberApi } from '@/api/pc/admin';
import { adminMemberApi } from '@/api/admin';
/**
* 멤버 카드 컴포넌트

View file

@ -18,7 +18,7 @@ import { Toast, Tooltip } from '@/components/common';
import { AdminLayout } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import * as botsApi from '@/api/pc/admin/bots';
import * as botsApi from '@/api/admin/bots';
// X
const XIcon = ({ size = 20, fill = 'currentColor' }) => (

View file

@ -7,7 +7,7 @@ import { Toast } from '@/components/common';
import { AdminLayout, ConfirmDialog } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import * as categoriesApi from '@/api/pc/admin/categories';
import * as categoriesApi from '@/api/admin/categories';
// (8)
const colorOptions = [

View file

@ -7,7 +7,7 @@ import { Toast } from '@/components/common';
import { AdminLayout, ConfirmDialog } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import * as suggestionsApi from '@/api/pc/admin/suggestions';
import * as suggestionsApi from '@/api/admin/suggestions';
// variants
const containerVariants = {

View file

@ -21,9 +21,9 @@ import { Toast, Lightbox } from '@/components/common';
import { AdminLayout, ConfirmDialog, DatePicker, TimePicker } from '@/components/pc/admin';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import * as categoriesApi from '@/api/pc/admin/categories';
import * as schedulesApi from '@/api/pc/admin/schedules';
import { getMembers } from '@/api/pc/common/members';
import * as categoriesApi from '@/api/admin/categories';
import * as schedulesApi from '@/api/admin/schedules';
import { getMembers } from '@/api/public/members';
function ScheduleForm() {
const navigate = useNavigate();

View file

@ -29,7 +29,7 @@ import useScheduleStore from '@/stores/useScheduleStore';
import { useAdminAuth } from '@/hooks/pc/admin';
import { useToast } from '@/hooks/common';
import { getTodayKST, formatDate } from '@/utils/date';
import * as schedulesApi from '@/api/pc/admin/schedules';
import * as schedulesApi from '@/api/admin/schedules';
// HTML
const decodeHtmlEntities = (text) => {

View file

@ -4,7 +4,7 @@ import { motion, AnimatePresence } from "framer-motion";
import { Home, ChevronRight } from "lucide-react";
import AdminLayout from "@/components/pc/admin/Layout";
import { useAdminAuth } from "@/hooks/pc/admin";
import * as categoriesApi from "@/api/pc/admin/categories";
import * as categoriesApi from "@/api/admin/categories";
import CategorySelector from "@/components/pc/admin/schedule/CategorySelector";
import YouTubeForm from "./YouTubeForm";
import XForm from "./XForm";