Skip to content

Commit 73fc024

Browse files
committed
refactor: 유저 앱 잔재 제거 — 어드민 전용 대시보드로 전환
- 유저 페이지 8개 삭제 (community, home, profile, signup, settings, ideal-type, payment, todos) - 유저 컴포넌트 15개 + matchingAlgorithm.ts + features/ + pages/payment/ 삭제 - axiosServer → adminGet/adminPost BFF 프록시로 마이그레이션 (9+ 파일) - AuthContext 제거 → useAdminSession으로 교체 - 루트 로그인을 어드민 전용으로 교체 (/api/admin/auth/login BFF 직접 호출) - patchAdminAxios useEffect 22개 파일에서 제거 + 빈 useEffect 21개 정리 - next.config.js 유저 프록시 제거, middleware.ts 어드민 전용으로 단순화 - utils/, contexts/AuthContext.tsx, admin-axios-interceptor.ts 삭제 총 -9,500줄 레거시 코드 제거. 빌드 통과 (57페이지).
1 parent 0f54b50 commit 73fc024

110 files changed

Lines changed: 175 additions & 9501 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/admin/app-reviews/app-reviews-v2.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@ import PublicIcon from '@mui/icons-material/Public';
77
import ReviewDashboard from './components/ReviewDashboard';
88
import ReviewList from './components/ReviewList';
99
import PublicReviewManagement from './components/PublicReviewManagement';
10-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
1110

1211
function AppReviewsPageContent() {
13-
useEffect(() => {
14-
const unpatch = patchAdminAxios();
15-
return () => unpatch();
16-
}, []);
1712

1813
const [activeTab, setActiveTab] = useState(0);
1914
const [filterFromChart, setFilterFromChart] = useState<{

app/admin/card-news/create/page.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import AddIcon from '@mui/icons-material/Add';
3333
import SaveIcon from '@mui/icons-material/Save';
3434
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
3535
import RestoreIcon from '@mui/icons-material/Restore';
36-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
3736
import { useAdminForm } from '@/app/admin/hooks/forms';
3837
import { cardNewsFormSchema, type CardNewsFormData } from '@/app/admin/hooks/forms/schemas/card-news.schema';
3938

@@ -49,11 +48,6 @@ interface Category {
4948
function CreateCardNewsPageContent() {
5049
const router = useRouter();
5150

52-
useEffect(() => {
53-
const unpatch = patchAdminAxios();
54-
return () => unpatch();
55-
}, []);
56-
5751
const { control, watch, reset, handleFormSubmit, formState: { isSubmitting } } = useAdminForm<CardNewsFormData>({
5852
schema: cardNewsFormSchema,
5953
defaultValues: {

app/admin/card-news/edit/[id]/page.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import type { BackgroundPreset } from '@/types/admin';
3131
import AddIcon from '@mui/icons-material/Add';
3232
import SaveIcon from '@mui/icons-material/Save';
3333
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
34-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
3534
import { useAdminForm } from '@/app/admin/hooks/forms';
3635
import { cardNewsFormSchema, type CardNewsFormData } from '@/app/admin/hooks/forms/schemas/card-news.schema';
3736

@@ -45,11 +44,6 @@ interface Category {
4544
function EditCardNewsPageContent() {
4645
const router = useRouter();
4746

48-
useEffect(() => {
49-
const unpatch = patchAdminAxios();
50-
return () => unpatch();
51-
}, []);
52-
5347
const params = useParams();
5448
const id = (params?.id || '') as string;
5549

app/admin/care/care-v2.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
44
import { Box, Typography } from '@mui/material';
55
import AdminService from '@/app/services/admin';
6-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
76
import type { CareTarget, CarePartner } from '@/app/services/admin/care';
87
import { useConfirm } from '@/shared/ui/admin/confirm-dialog';
98
import { useToast } from '@/shared/ui/admin/toast';
@@ -32,11 +31,6 @@ function CareV2Content() {
3231
const confirm = useConfirm();
3332
const toast = useToast();
3433

35-
useEffect(() => {
36-
const unpatch = patchAdminAxios();
37-
return () => unpatch();
38-
}, []);
39-
4034
const fetchTargets = useCallback(async (page: number = 1, search?: string) => {
4135
try {
4236
setLoading(true);

app/admin/care/logs/care-logs-v2.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import {
2424
} from '@mui/material';
2525
import SearchIcon from '@mui/icons-material/Search';
2626
import AdminService from '@/app/services/admin';
27-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
2827
import type { CareLog } from '@/app/services/admin/care';
2928

3029
const ACTION_LABELS: Record<string, { label: string; color: string; bg: string }> = {
@@ -42,11 +41,6 @@ function CareLogsContent() {
4241
const [searchInput, setSearchInput] = useState('');
4342
const [searchTerm, setSearchTerm] = useState('');
4443

45-
useEffect(() => {
46-
const unpatch = patchAdminAxios();
47-
return () => unpatch();
48-
}, []);
49-
5044
const fetchLogs = useCallback(
5145
async (page: number = 1) => {
5246
try {

app/admin/dormant-likes/logs/page.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,9 @@ import { useRouter } from 'next/navigation';
2222
import AdminService from '@/app/services/admin';
2323
import type { ActionLogsResponse, ActionLogResponse } from '@/types/admin';
2424
import { safeToLocaleString } from '@/app/utils/formatters';
25-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
2625

2726
function DormantLikesLogsPageContent() {
2827
const router = useRouter();
29-
30-
useEffect(() => {
31-
const unpatch = patchAdminAxios();
32-
return () => unpatch();
33-
}, []);
3428
const [logs, setLogs] = useState<ActionLogResponse[]>([]);
3529
const [loading, setLoading] = useState(true);
3630
const [error, setError] = useState('');

app/admin/fcm-tokens/fcm-tokens-v2.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,9 @@ import AdminService, {
66
FcmTokenSummary,
77
FcmTokenUserItem,
88
} from '@/app/services/admin';
9-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
109
import { safeToLocaleString } from '@/app/utils/formatters';
1110

1211
function FcmTokensPageContent() {
13-
useEffect(() => {
14-
const unpatch = patchAdminAxios();
15-
return () => unpatch();
16-
}, []);
1712

1813
const [loading, setLoading] = useState(false);
1914
const [summary, setSummary] = useState<FcmTokenSummary | null>(null);

app/admin/feature-flags/feature-flags-v2.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import {
2626
} from '@mui/material';
2727
import AdminService from '@/app/services/admin';
2828
import type { FeatureFlag } from '@/app/services/admin';
29-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
3029
import { safeToLocaleDateString } from '@/app/utils/formatters';
3130

3231
const AVAILABLE_ROLES = ['admin', 'tester', 'user'];
@@ -57,11 +56,6 @@ export default function FeatureFlagsV2() {
5756
const [editRoles, setEditRoles] = useState<string[]>([]);
5857
const [editSaving, setEditSaving] = useState(false);
5958

60-
useEffect(() => {
61-
const unpatch = patchAdminAxios();
62-
return () => unpatch();
63-
}, []);
64-
6559
const fetchFlags = useCallback(async () => {
6660
try {
6761
setLoading(true);

app/admin/female-retention/female-retention-v2.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import AdminService from '@/app/services/admin';
2828
import KeyIcon from '@mui/icons-material/Key';
2929
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
3030
import RefreshIcon from '@mui/icons-material/Refresh';
31-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
3231
import { safeToLocaleString } from '@/app/utils/formatters';
3332

3433
interface InactiveUser {
@@ -62,11 +61,6 @@ function FemaleRetentionPageContent() {
6261
const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);
6362
const [selectedUser, setSelectedUser] = useState<InactiveUser | null>(null);
6463

65-
useEffect(() => {
66-
const unpatch = patchAdminAxios();
67-
return () => unpatch();
68-
}, []);
69-
7064
useEffect(() => {
7165
fetchInactiveUsers();
7266
}, [pagination.offset]);

app/admin/gems/gems-v2.tsx

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ import {
4949
ListItemText,
5050
Avatar
5151
} from '@mui/material';
52-
import axiosServer from '@/utils/axios';
53-
import { patchAdminAxios } from '@/shared/lib/http/admin-axios-interceptor';
52+
import { adminGet } from '@/shared/lib/http/admin-fetch';
5453
import { useAdminForm } from '@/app/admin/hooks/forms';
5554
import { gemsFormSchema, type GemsFormData } from '@/app/admin/hooks/forms/schemas/gems.schema';
5655
import { MAX_GEM_GRANT } from '@/app/admin/constants/gem-limits';
@@ -84,10 +83,6 @@ interface BulkGrantResponse {
8483
}
8584

8685
function GemsManagementPageContent() {
87-
useEffect(() => {
88-
const unpatch = patchAdminAxios();
89-
return unpatch;
90-
}, []);
9186
const toast = useToast();
9287
const bulkGrantGems = useBulkGrantGems();
9388

@@ -127,21 +122,19 @@ function GemsManagementPageContent() {
127122

128123
try {
129124
const isPhone = /^[\d\-]+$/.test(userSearchTerm.trim());
130-
const response = await axiosServer.get('/admin/v2/users/search', {
131-
params: {
132-
page: 1,
133-
limit: 20,
134-
...(isPhone ? { phoneNumber: userSearchTerm.trim() } : { name: userSearchTerm.trim() })
135-
}
125+
const response = await adminGet<any>('/admin/v2/users/search', {
126+
page: '1',
127+
limit: '20',
128+
...(isPhone ? { phoneNumber: userSearchTerm.trim() } : { name: userSearchTerm.trim() })
136129
});
137130

138131
let results: UserSearchResult[] = [];
139-
if (response.data?.data && Array.isArray(response.data.data)) {
140-
results = response.data.data;
141-
} else if (response.data?.items && Array.isArray(response.data.items)) {
142-
results = response.data.items;
143-
} else if (Array.isArray(response.data)) {
132+
if (response?.data && Array.isArray(response.data)) {
144133
results = response.data;
134+
} else if (response?.items && Array.isArray(response.items)) {
135+
results = response.items;
136+
} else if (Array.isArray(response)) {
137+
results = response;
145138
}
146139

147140
setUserSearchResults(results);

0 commit comments

Comments
 (0)