Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions src/app/index.jsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
// 전역 컨텍스트 및 상태 관리 설정 (라우팅, 인증 등)

import {
BrowserRouter,
Routes,
Route,
useLocation,
Navigate,
} from 'react-router-dom';

import Header from '../widgets/navigation/Header';
import Footer from '../widgets/navigation/Footer';

import Home from '../pages/home';
import TrackInfo from '../pages/info';
import NotFound from '../pages/NotFound';
import Search from '../pages/Search';
import Splash from '../pages/splash';
import Header from '../widgets/navigation/Header';
import Footer from '../widgets/navigation/Footer';
import Login from '../pages/login';
import MyPage from '../pages/my';
import UploadSection from '../components/UploadSection';
import TrackDataUploadModal from '../features/track-management/components/TrackDataUploadModal';

function App() {
return (
Expand All @@ -40,7 +44,7 @@ function AppContent() {
<Route path="/track" element={<TrackInfo />} />
<Route path="/search" element={<Search />} />
<Route path="/mypage" element={<MyPage />} />
<Route path="/upload" element={<UploadSection />} />
<Route path="/upload" element={<TrackDataUploadModal />} />
<Route path="*" element={<NotFound />} />
</Routes>
{!shouldHideHeaderFooter && <Footer />}
Expand Down
82 changes: 0 additions & 82 deletions src/assets/TrackLoadMap.svg

This file was deleted.

4 changes: 0 additions & 4 deletions src/assets/ai_engineer.svg

This file was deleted.

4 changes: 0 additions & 4 deletions src/assets/ml_dl_model.svg

This file was deleted.

4 changes: 0 additions & 4 deletions src/assets/nlp_researcher.svg

This file was deleted.

4 changes: 0 additions & 4 deletions src/assets/smart_system.svg

This file was deleted.

23 changes: 23 additions & 0 deletions src/features/track-management/api/userDataService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// src/services/userDataService.js
import { BASE_URL } from '../../../shared/api/api';
import useUserStore from '../../../entities/user/model/useUserStore';

export const uploadStudentExcel = async (file) => {
const studentId = useUserStore.getState().studentId;
if (!studentId) throw new Error('studentId가 존재하지 않습니다');

const formData = new FormData();
formData.append('file', file);

const response = await fetch(`${BASE_URL}/student-data/upload/${studentId}`, {
method: 'POST',
body: formData,
});

if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.message || '엑셀 업로드 실패');
}

return await response.json();
};
20 changes: 20 additions & 0 deletions src/features/track-management/api/userTrackService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { BASE_URL } from '../../../shared/api/api';

export const postUserTrack = async (studentId, trackName) => {
const response = await fetch(
`${BASE_URL}/api/user-track?studentId=${encodeURIComponent(studentId)}&trackName=${encodeURIComponent(trackName)}`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
}
);

if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.message || '트랙 등록 실패');
}

return await response.json();
};
Loading