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:
parent
21dde0fd35
commit
d5c54db86c
32 changed files with 2155 additions and 49 deletions
2106
frontend-temp/package-lock.json
generated
Normal file
2106
frontend-temp/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 앨범 API
|
||||
*/
|
||||
import { fetchAuthApi, fetchFormData } from '@/api/common/client';
|
||||
import { fetchAuthApi, fetchFormData } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 앨범 목록 조회
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 인증 API
|
||||
*/
|
||||
import { fetchApi, fetchAuthApi } from '@/api/common/client';
|
||||
import { fetchApi, fetchAuthApi } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 로그인
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 봇 관리 API
|
||||
*/
|
||||
import { fetchAuthApi } from '@/api/common/client';
|
||||
import { fetchAuthApi } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 봇 목록 조회
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 카테고리 API
|
||||
*/
|
||||
import { fetchAuthApi } from '@/api/common/client';
|
||||
import { fetchAuthApi } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 카테고리 목록 조회
|
||||
|
|
@ -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';
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 멤버 API
|
||||
*/
|
||||
import { fetchAuthApi, fetchFormData } from '@/api/common/client';
|
||||
import { fetchAuthApi, fetchFormData } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 멤버 목록 조회
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 일정 API
|
||||
*/
|
||||
import { fetchAuthApi, fetchFormData } from '@/api/common/client';
|
||||
import { fetchAuthApi, fetchFormData } from '@/api/client';
|
||||
|
||||
/**
|
||||
* API 응답을 프론트엔드 형식으로 변환
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 통계 API
|
||||
*/
|
||||
import { fetchAuthApi } from '@/api/common/client';
|
||||
import { fetchAuthApi } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 대시보드 통계 조회
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 관리자 추천 검색어 API
|
||||
*/
|
||||
import { fetchAuthApi } from '@/api/common/client';
|
||||
import { fetchAuthApi } from '@/api/client';
|
||||
|
||||
/**
|
||||
* 사전 내용 조회
|
||||
|
|
@ -1 +0,0 @@
|
|||
export * from './client';
|
||||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
export * from './members';
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
export * from './schedules';
|
||||
export * from './albums';
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 앨범 API
|
||||
*/
|
||||
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/common/client';
|
||||
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/client';
|
||||
|
||||
// ==================== 공개 API ====================
|
||||
|
||||
6
frontend-temp/src/api/public/index.js
Normal file
6
frontend-temp/src/api/public/index.js
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
/**
|
||||
* 공개 API 통합 export
|
||||
*/
|
||||
export * from './schedules';
|
||||
export * from './albums';
|
||||
export * from './members';
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* 멤버 API
|
||||
*/
|
||||
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/common/client';
|
||||
import { fetchApi, fetchAuthApi, fetchFormData } from '@/api/client';
|
||||
|
||||
// ==================== 공개 API ====================
|
||||
|
||||
|
|
@ -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';
|
||||
|
||||
/**
|
||||
|
|
@ -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 }) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
/**
|
||||
* 슬롯머신 스타일 롤링 숫자 컴포넌트
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
/**
|
||||
* 멤버 카드 컴포넌트
|
||||
|
|
|
|||
|
|
@ -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' }) => (
|
||||
|
|
|
|||
|
|
@ -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 = [
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue