From dcf7b4ff8a445ed704136e415dde6581a16a7a87 Mon Sep 17 00:00:00 2001 From: Suhjung Park <145967352+Imggaggu@users.noreply.github.com> Date: Sun, 11 May 2025 22:31:55 +0900 Subject: [PATCH 01/15] [Deploy] Run jar on EC2 --- .github/workflows/deploy.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f0b620f..2ef3e69 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -40,7 +40,14 @@ jobs: - name: Copy JAR to EC2 run: | scp -o StrictHostKeyChecking=no -i pirocheck.pem backend/pirocheck/build/libs/*.jar ubuntu@${{ secrets.EC2_HOST }}:/home/ubuntu/ + + - name: Run jar on EC2 + run: | + ssh -o StrictHostKeyChecking=no -i pirocheck.pem \ + ubuntu@${{ secrets.EC2_HOST }} \ + "fuser -k 8080/tcp || true && nohup java -jar pirocheck-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &" + - name: Restart Spring Boot on EC2 run: | ssh -o StrictHostKeyChecking=no -i pirocheck.pem ubuntu@${{ secrets.EC2_HOST }} 'bash ~/restart.sh' @@ -106,4 +113,4 @@ jobs: AWS_S3_BUCKET: www.pirocheck.org AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - SOURCE_DIR: frontend/dist \ No newline at end of file + SOURCE_DIR: frontend/dist From ad78ca4646c86f7c478e83a5541259ea481a4921 Mon Sep 17 00:00:00 2001 From: qkrxogmla Date: Sun, 11 May 2025 23:31:10 +0900 Subject: [PATCH 02/15] =?UTF-8?q?=EC=A0=84=EC=97=AD=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=84=B8=EC=85=98=EB=A7=8C=EB=A3=8C=EC=8B=9C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A1=9C=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/Deposit.jsx | 7 +++---- frontend/src/api/api.js | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 frontend/src/api/api.js diff --git a/frontend/src/Deposit.jsx b/frontend/src/Deposit.jsx index 500de27..3a84615 100644 --- a/frontend/src/Deposit.jsx +++ b/frontend/src/Deposit.jsx @@ -2,6 +2,7 @@ import Header from "./components/Header"; import styles from "./Deposit.module.css"; import axios from "axios"; import { useEffect, useState } from "react"; +import api from "./api/api"; const Deposit = () => { const [deposit, setDeposit] = useState(null); @@ -12,10 +13,8 @@ const Deposit = () => { if (!userId) return; - axios - .get(`/api/deposit/${userId}`, { - withCredentials: true, // 세션 쿠키 포함 - }) + api + .get(`/deposit/${userId}`) .then((res) => setDeposit(res.data)) .catch((err) => { alert("보증금 정보를 불러오지 못했습니다."); diff --git a/frontend/src/api/api.js b/frontend/src/api/api.js new file mode 100644 index 0000000..814c063 --- /dev/null +++ b/frontend/src/api/api.js @@ -0,0 +1,19 @@ +import axios from "axios"; + +const api = axios.create({ + baseURL: "/api", + withCredentials: true, +}); + +// 401 오류 시 로그인 페이지로 리다이렉트 +api.interceptors.response.use( + (response) => response, + (error) => { + if (error.response?.status === 401) { + window.location.href = "/login"; + } + return Promise.reject(error); + } +); + +export default api; From e112d19e07e0e4f953446d6c44d437ba357c33c1 Mon Sep 17 00:00:00 2001 From: qkrxogmla Date: Sun, 11 May 2025 23:41:42 +0900 Subject: [PATCH 03/15] =?UTF-8?q?fetch=20=EC=A0=88=EB=8C=80=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 3964bac..749dc0a 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -1,5 +1,5 @@ export const loginUser = async ({ name, password }) => { - const res = await fetch("/api/login", { + const res = await fetch("http://www.pirocheck.org/login/login", { method: "POST", headers: { "Content-Type": "application/json", From 70c865e34b6435132717c5594649fad1ea999548 Mon Sep 17 00:00:00 2001 From: qkrxogmla Date: Sun, 11 May 2025 23:55:09 +0900 Subject: [PATCH 04/15] =?UTF-8?q?fetch=20usesr=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/Attendance.jsx | 4 ++-- frontend/src/api/user.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/Attendance.jsx b/frontend/src/Attendance.jsx index 1abe9db..66c2da3 100644 --- a/frontend/src/Attendance.jsx +++ b/frontend/src/Attendance.jsx @@ -3,7 +3,7 @@ import Header from "./components/Header"; import InputBlock from "./components/InputBlock"; import AttendanceWeekInfo from "./components/AttendanceWeekInfo"; import styles from "./Attendance.module.css"; -import axios from "axios"; +import api from "./api/api"; const Attendance = () => { const [attendanceCode, setAttendanceCode] = useState([""]); @@ -88,7 +88,7 @@ const Attendance = () => { if (!userId) return; // 유저 전체 출석 데이터 불러오기 - const res = await axios.get(`/api/attendance/user`, { + const res = await api.get(`/attendance/user`, { params: { userId }, withCredentials: true, // 세션 기반 인증 요청처리 }); diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 749dc0a..f91670c 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -1,5 +1,5 @@ export const loginUser = async ({ name, password }) => { - const res = await fetch("http://www.pirocheck.org/login/login", { + const res = await fetch("http://www.pirocheck.org/api/login", { method: "POST", headers: { "Content-Type": "application/json", From 5c15ca1ce4624f4fc8c474bb7886ba35a5a544b5 Mon Sep 17 00:00:00 2001 From: qkrxogmla Date: Mon, 12 May 2025 00:07:36 +0900 Subject: [PATCH 05/15] =?UTF-8?q?=EC=84=B8=EC=85=98=EB=A7=8C=EB=A3=8C?= =?UTF-8?q?=EC=8B=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/Assignment.jsx | 24 ++++++++++++------------ frontend/src/api/assignment.js | 6 ++---- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/frontend/src/Assignment.jsx b/frontend/src/Assignment.jsx index cff140f..f24604a 100644 --- a/frontend/src/Assignment.jsx +++ b/frontend/src/Assignment.jsx @@ -4,6 +4,7 @@ import Header from "./components/Header"; import AssignmentInfoBlock from "./components/AssignmentInfoBlock"; import styles from "./Assignment.module.css"; import { mapStatus } from "./utils/AssignmentStatus.js"; +import { fetchAssignmentsByUser } from "./api/assignment.js"; const Assignment = () => { const [weeks, setWeeks] = useState([]); @@ -16,18 +17,18 @@ const Assignment = () => { if (!userId) return; fetchAssignmentsByUser(userId) - .then((weekData) => { - const formatted = weekData.map((weekItem) => ({ - label: `${weekItem.week}주차 ${weekItem.title}`, - details: weekItem.days.map((dayItem) => ({ - day: dayItem.day, - subject: weekItem.title, - tasks: dayItem.details.map((task) => ({ - label: task.assignmentName, - status: mapStatus(task.status), + .then((weekData) => { + const formatted = weekData.map((weekItem) => ({ + label: `${weekItem.week}주차 ${weekItem.title}`, + details: weekItem.days.map((dayItem) => ({ + day: dayItem.day, + subject: weekItem.title, + tasks: dayItem.details.map((task) => ({ + label: task.assignmentName, + status: mapStatus(task.status), + })), })), - })), - })); + })); setWeeks(formatted); @@ -63,4 +64,3 @@ const Assignment = () => { }; export default Assignment; - diff --git a/frontend/src/api/assignment.js b/frontend/src/api/assignment.js index a576b62..cf1a11a 100644 --- a/frontend/src/api/assignment.js +++ b/frontend/src/api/assignment.js @@ -1,8 +1,6 @@ -import axios from "axios"; +import api from "./api"; export const fetchAssignmentsByUser = async (userId) => { - const res = await axios.get(`/api/assignment/grouped/${userId}`, { - withCredentials: true - }); + const res = await api.get(`/assignment/grouped/${userId}`); return res.data; }; From 64bad80a62ce1cfe4d2f7c2abd2d0205aa7abc89 Mon Sep 17 00:00:00 2001 From: qkrxogmla Date: Mon, 12 May 2025 00:08:59 +0900 Subject: [PATCH 06/15] base url http://www.pirocheck.org/api --- frontend/src/api/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/api/api.js b/frontend/src/api/api.js index 814c063..4ecf00d 100644 --- a/frontend/src/api/api.js +++ b/frontend/src/api/api.js @@ -1,7 +1,7 @@ import axios from "axios"; const api = axios.create({ - baseURL: "/api", + baseURL: "http://www.pirocheck.org/api", withCredentials: true, }); From c94f3855d4ed245727df03e72463f2f9ef6bbf91 Mon Sep 17 00:00:00 2001 From: qkrxogmla Date: Mon, 12 May 2025 00:29:28 +0900 Subject: [PATCH 07/15] =?UTF-8?q?attendance=20api=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/Attendance.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/Attendance.jsx b/frontend/src/Attendance.jsx index 66c2da3..45f8f6b 100644 --- a/frontend/src/Attendance.jsx +++ b/frontend/src/Attendance.jsx @@ -108,7 +108,7 @@ const Attendance = () => { if (!userId) return; const today = new Date().toISOString().split("T")[0]; // YYYY-MM-DD - const res = await axios.get(`/api/attendance/user/date`, { + const res = await api.get(`/attendance/user/date`, { params: { userId, date: today }, withCredentials: true, // 세션 기반 인증 요청처리 }); @@ -151,8 +151,8 @@ const Attendance = () => { if (!userId) return; // 유저가 입력한 출석 코드 서버에 전달(서버에서 출석코드 체크) - const res = await axios.post( - "/api/attendance/mark", + const res = await api.post( + "/attendance/mark", { userId, code: attendanceCode[0], From 55f7d5260407c8055dd898e88ff7253c22ddb6ec Mon Sep 17 00:00:00 2001 From: Suhjung Park <145967352+Imggaggu@users.noreply.github.com> Date: Mon, 12 May 2025 11:19:11 +0900 Subject: [PATCH 08/15] Update deploy.yml --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2ef3e69..76e87ad 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -48,9 +48,9 @@ jobs: "fuser -k 8080/tcp || true && nohup java -jar pirocheck-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &" - - name: Restart Spring Boot on EC2 - run: | - ssh -o StrictHostKeyChecking=no -i pirocheck.pem ubuntu@${{ secrets.EC2_HOST }} 'bash ~/restart.sh' + # - name: Restart Spring Boot on EC2 + # run: | + # ssh -o StrictHostKeyChecking=no -i pirocheck.pem ubuntu@${{ secrets.EC2_HOST }} 'bash ~/restart.sh' - name: Send Discord notification (Success) From c15dd048d081008151156bc136478a683f2ee120 Mon Sep 17 00:00:00 2001 From: Suhjung Park <145967352+Imggaggu@users.noreply.github.com> Date: Mon, 12 May 2025 12:12:33 +0900 Subject: [PATCH 09/15] Update deploy.yml --- .github/workflows/deploy.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 76e87ad..949c22b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -45,8 +45,9 @@ jobs: run: | ssh -o StrictHostKeyChecking=no -i pirocheck.pem \ ubuntu@${{ secrets.EC2_HOST }} \ - "fuser -k 8080/tcp || true && nohup java -jar pirocheck-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &" - + "fuser -k 8080/tcp || true && \ + cd /home/ubuntu && \ + nohup java -jar pirocheck-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &" # - name: Restart Spring Boot on EC2 # run: | From 3aa2521b47d116442ea40c40605d88849d23257d Mon Sep 17 00:00:00 2001 From: Suhjung Park <145967352+Imggaggu@users.noreply.github.com> Date: Mon, 12 May 2025 12:32:06 +0900 Subject: [PATCH 10/15] Update deploy.yml --- .github/workflows/deploy.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 949c22b..e969afb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -41,17 +41,10 @@ jobs: run: | scp -o StrictHostKeyChecking=no -i pirocheck.pem backend/pirocheck/build/libs/*.jar ubuntu@${{ secrets.EC2_HOST }}:/home/ubuntu/ - - name: Run jar on EC2 + + - name: Restart Spring Boot on EC2 run: | - ssh -o StrictHostKeyChecking=no -i pirocheck.pem \ - ubuntu@${{ secrets.EC2_HOST }} \ - "fuser -k 8080/tcp || true && \ - cd /home/ubuntu && \ - nohup java -jar pirocheck-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &" - - # - name: Restart Spring Boot on EC2 - # run: | - # ssh -o StrictHostKeyChecking=no -i pirocheck.pem ubuntu@${{ secrets.EC2_HOST }} 'bash ~/restart.sh' + ssh -o StrictHostKeyChecking=no -i pirocheck.pem ubuntu@${{ secrets.EC2_HOST }} 'bash ~/restart.sh' - name: Send Discord notification (Success) From 7c562d906028f8504aa6aeaec501b6210479b023 Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Mon, 12 May 2025 13:37:23 +0900 Subject: [PATCH 11/15] [Fix] baseurl for api --- frontend/src/api/api.js | 2 +- frontend/src/api/user.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/api.js b/frontend/src/api/api.js index 4ecf00d..8278d08 100644 --- a/frontend/src/api/api.js +++ b/frontend/src/api/api.js @@ -1,7 +1,7 @@ import axios from "axios"; const api = axios.create({ - baseURL: "http://www.pirocheck.org/api", + baseURL: "http://api.pirocheck.org/api", withCredentials: true, }); diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index f91670c..811264c 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -1,5 +1,5 @@ export const loginUser = async ({ name, password }) => { - const res = await fetch("http://www.pirocheck.org/api/login", { + const res = await fetch("http://api.pirocheck.org/api/login", { method: "POST", headers: { "Content-Type": "application/json", From ec1224cd69a849341c08cf6797f1d44960107d87 Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Mon, 12 May 2025 13:49:47 +0900 Subject: [PATCH 12/15] [Fix]back-allowed origins url --- .../src/main/java/backend/pirocheck/config/WebConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/config/WebConfig.java b/backend/pirocheck/src/main/java/backend/pirocheck/config/WebConfig.java index a6ae980..f67ed5b 100644 --- a/backend/pirocheck/src/main/java/backend/pirocheck/config/WebConfig.java +++ b/backend/pirocheck/src/main/java/backend/pirocheck/config/WebConfig.java @@ -10,7 +10,7 @@ public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") // 백엔드 API 요청에만 CORS 허용 - .allowedOrigins("http://pirocheck.org:3000") // 프론트 배포 URL + .allowedOrigins("http://pirocheck.org") // 프론트 배포 URL .allowedMethods("GET", "POST", "PUT", "DELETE") // 허용할 HTTP 메서드 .allowCredentials(true); // 세션 쿠키 주고받기 허용 } From c5886d75e3beb8a70406725b99472a955cedb9a5 Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Mon, 12 May 2025 14:13:33 +0900 Subject: [PATCH 13/15] [Fix] baseurl for api --- frontend/src/api/api.js | 2 +- frontend/src/api/user.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/api.js b/frontend/src/api/api.js index 8278d08..9ba4ee2 100644 --- a/frontend/src/api/api.js +++ b/frontend/src/api/api.js @@ -1,7 +1,7 @@ import axios from "axios"; const api = axios.create({ - baseURL: "http://api.pirocheck.org/api", + baseURL: "http://api.pirocheck.org:8080/api", withCredentials: true, }); diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 811264c..12e057a 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -1,5 +1,5 @@ export const loginUser = async ({ name, password }) => { - const res = await fetch("http://api.pirocheck.org/api/login", { + const res = await fetch("http://api.pirocheck.org:8080/api/login", { method: "POST", headers: { "Content-Type": "application/json", From a2b27cba453f3ff4b0109873f69b14fe43ffaed1 Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Mon, 12 May 2025 14:27:24 +0900 Subject: [PATCH 14/15] =?UTF-8?q?[Chore]=20Generation/=20admin=20directory?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/{ => pages/admin}/Admin.jsx | 0 frontend/src/{ => pages/generation}/Assignment.jsx | 10 +++++----- .../src/{ => pages/generation}/Assignment.module.css | 0 frontend/src/{ => pages/generation}/Attendance.jsx | 8 ++++---- .../src/{ => pages/generation}/Attendance.module.css | 0 frontend/src/{ => pages/generation}/Deposit.jsx | 4 ++-- frontend/src/{ => pages/generation}/Deposit.module.css | 0 7 files changed, 11 insertions(+), 11 deletions(-) rename frontend/src/{ => pages/admin}/Admin.jsx (100%) rename frontend/src/{ => pages/generation}/Assignment.jsx (86%) rename frontend/src/{ => pages/generation}/Assignment.module.css (100%) rename frontend/src/{ => pages/generation}/Attendance.jsx (97%) rename frontend/src/{ => pages/generation}/Attendance.module.css (100%) rename frontend/src/{ => pages/generation}/Deposit.jsx (94%) rename frontend/src/{ => pages/generation}/Deposit.module.css (100%) diff --git a/frontend/src/Admin.jsx b/frontend/src/pages/admin/Admin.jsx similarity index 100% rename from frontend/src/Admin.jsx rename to frontend/src/pages/admin/Admin.jsx diff --git a/frontend/src/Assignment.jsx b/frontend/src/pages/generation/Assignment.jsx similarity index 86% rename from frontend/src/Assignment.jsx rename to frontend/src/pages/generation/Assignment.jsx index f24604a..1654cc6 100644 --- a/frontend/src/Assignment.jsx +++ b/frontend/src/pages/generation/Assignment.jsx @@ -1,10 +1,10 @@ import React, { useEffect, useState } from "react"; -import WeeklyListBlock from "./components/WeeklyListBlock"; -import Header from "./components/Header"; -import AssignmentInfoBlock from "./components/AssignmentInfoBlock"; +import WeeklyListBlock from "../components/WeeklyListBlock"; +import Header from "../components/Header"; +import AssignmentInfoBlock from "../components/AssignmentInfoBlock"; import styles from "./Assignment.module.css"; -import { mapStatus } from "./utils/AssignmentStatus.js"; -import { fetchAssignmentsByUser } from "./api/assignment.js"; +import { mapStatus } from "../utils/AssignmentStatus.js"; +import { fetchAssignmentsByUser } from "../api/assignment.js"; const Assignment = () => { const [weeks, setWeeks] = useState([]); diff --git a/frontend/src/Assignment.module.css b/frontend/src/pages/generation/Assignment.module.css similarity index 100% rename from frontend/src/Assignment.module.css rename to frontend/src/pages/generation/Assignment.module.css diff --git a/frontend/src/Attendance.jsx b/frontend/src/pages/generation/Attendance.jsx similarity index 97% rename from frontend/src/Attendance.jsx rename to frontend/src/pages/generation/Attendance.jsx index 0e72c16..3d95709 100644 --- a/frontend/src/Attendance.jsx +++ b/frontend/src/pages/generation/Attendance.jsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; -import Header from "./components/Header"; -import InputBlock from "./components/InputBlock"; -import AttendanceWeekInfo from "./components/AttendanceWeekInfo"; +import Header from "../components/Header"; +import InputBlock from "../components/InputBlock"; +import AttendanceWeekInfo from "../components/AttendanceWeekInfo"; import styles from "./Attendance.module.css"; -import api from "./api/api"; +import api from "../api/api"; const Attendance = () => { const [attendanceCode, setAttendanceCode] = useState([""]); diff --git a/frontend/src/Attendance.module.css b/frontend/src/pages/generation/Attendance.module.css similarity index 100% rename from frontend/src/Attendance.module.css rename to frontend/src/pages/generation/Attendance.module.css diff --git a/frontend/src/Deposit.jsx b/frontend/src/pages/generation/Deposit.jsx similarity index 94% rename from frontend/src/Deposit.jsx rename to frontend/src/pages/generation/Deposit.jsx index 3a84615..63d5621 100644 --- a/frontend/src/Deposit.jsx +++ b/frontend/src/pages/generation/Deposit.jsx @@ -1,8 +1,8 @@ -import Header from "./components/Header"; +import Header from "../components/Header"; import styles from "./Deposit.module.css"; import axios from "axios"; import { useEffect, useState } from "react"; -import api from "./api/api"; +import api from "../api/api"; const Deposit = () => { const [deposit, setDeposit] = useState(null); diff --git a/frontend/src/Deposit.module.css b/frontend/src/pages/generation/Deposit.module.css similarity index 100% rename from frontend/src/Deposit.module.css rename to frontend/src/pages/generation/Deposit.module.css From 5ecc609191eacc887016339c33094103f2a0dcae Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Mon, 12 May 2025 14:31:13 +0900 Subject: [PATCH 15/15] =?UTF-8?q?[Chore]=20Generation/=20admin=20directory?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/App.jsx | 8 ++++---- frontend/src/pages/generation/Assignment.jsx | 10 +++++----- frontend/src/pages/generation/Attendance.jsx | 8 ++++---- frontend/src/pages/generation/Deposit.jsx | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index db217ff..50530e1 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -2,11 +2,11 @@ import React from "react"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import Login from "./Login"; import Home from "./Home"; -import Assignment from "./Assignment"; -import Deposit from "./Deposit"; +import Assignment from "./pages/generation/Assignment"; +import Deposit from "./pages/generation/Deposit"; import Intro from "./Intro"; -import Admin from "./Admin"; -import Attendance from "./Attendance"; +import Admin from "./pages/admin/Admin"; +import Attendance from "./pages/generation/Attendance"; function App() { return ( diff --git a/frontend/src/pages/generation/Assignment.jsx b/frontend/src/pages/generation/Assignment.jsx index 1654cc6..d1c0115 100644 --- a/frontend/src/pages/generation/Assignment.jsx +++ b/frontend/src/pages/generation/Assignment.jsx @@ -1,10 +1,10 @@ import React, { useEffect, useState } from "react"; -import WeeklyListBlock from "../components/WeeklyListBlock"; -import Header from "../components/Header"; -import AssignmentInfoBlock from "../components/AssignmentInfoBlock"; +import WeeklyListBlock from "../../components/WeeklyListBlock"; +import Header from "../../components/Header"; +import AssignmentInfoBlock from "../../components/AssignmentInfoBlock"; import styles from "./Assignment.module.css"; -import { mapStatus } from "../utils/AssignmentStatus.js"; -import { fetchAssignmentsByUser } from "../api/assignment.js"; +import { mapStatus } from "../../utils/AssignmentStatus.js"; +import { fetchAssignmentsByUser } from "../../api/assignment.js"; const Assignment = () => { const [weeks, setWeeks] = useState([]); diff --git a/frontend/src/pages/generation/Attendance.jsx b/frontend/src/pages/generation/Attendance.jsx index 3d95709..dce08b1 100644 --- a/frontend/src/pages/generation/Attendance.jsx +++ b/frontend/src/pages/generation/Attendance.jsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; -import Header from "../components/Header"; -import InputBlock from "../components/InputBlock"; -import AttendanceWeekInfo from "../components/AttendanceWeekInfo"; +import Header from "../../components/Header"; +import InputBlock from "../../components/InputBlock"; +import AttendanceWeekInfo from "../../components/AttendanceWeekInfo"; import styles from "./Attendance.module.css"; -import api from "../api/api"; +import api from "../../api/api"; const Attendance = () => { const [attendanceCode, setAttendanceCode] = useState([""]); diff --git a/frontend/src/pages/generation/Deposit.jsx b/frontend/src/pages/generation/Deposit.jsx index 63d5621..8b9c17b 100644 --- a/frontend/src/pages/generation/Deposit.jsx +++ b/frontend/src/pages/generation/Deposit.jsx @@ -1,8 +1,8 @@ -import Header from "../components/Header"; +import Header from "../../components/Header"; import styles from "./Deposit.module.css"; import axios from "axios"; import { useEffect, useState } from "react"; -import api from "../api/api"; +import api from "../../api/api"; const Deposit = () => { const [deposit, setDeposit] = useState(null);