From c2035d5e77304ae9ae53f12e694a93c0578e6e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=98=84=EC=84=9D?= Date: Thu, 9 May 2024 11:03:07 +0900 Subject: [PATCH] =?UTF-8?q?qa=20=EB=B0=B0=ED=8F=AC=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20=EB=A8=B8=EC=A7=80=ED=95=A9=EB=8B=88=EB=8B=A4.=20(#?= =?UTF-8?q?166)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(pages): QA 오류 수정 * feat(pages): 관리자가 수정지시사항 확인 여부를 수정할 수 있도록 변경 * fix: 무한 요청 오류 수정 * fix: showNotificationSuccess 위치 변경 * fix: (chore) issn 옵셔널로 변경후 undefined여서 생기는 오류 수정 * fix: 학생등록 폼 논문제목/연락처/이메일 옵셔널 변경 및 학과로 필터링 제거 * fix: 교수 등록 폼 수정 및 학생/교수 로그인하기 기능 오류 수정 디벨롭 브랜치와 머지, #118 브랜치에서 이어서 작업 (메인에서 작업해서..ㅠㅠ) * fix: 본심 전환 모달 오류 수정 * chore: 포맷팅 * fix: 심사결과페이지 심사 중에도 확인 가능하도록 수정 * fix: 논문투고 페이지 예심/본심 뱃지 추가 * fix: 논문투고 페이지 일정 예심/본심에 따라 불러오도록 수정 * fix: 학생 심사 결과 페이지 본심 정보도 불러오도록 수정 * fix: AchievementForm isAdmin 수정 * fix: 논문정보 수정 api 스펠링 변경 저희쪽에서 변경하는게 빠를 것 같아서 수정하였습니다. * fix: 심사 정보 수정 심사의견 및 파일 업로드가능하도록 수정 * fix: 심사의견/심사의견파일 둘중 하나만 선택하도록 수정 * feat: 교수/학생 일괄 삭제 기능 추가 * feat: main workflow 추가 * chore: 주석달기 * chore: 코드 중복 제거 * fix: 테이블 헤더 수정 * fix: 로그인 안내문구 수정 * chore: 서명 미업로드 설명 추가 * 프로덕션 배포를 위해 머지합니다. (#135) * fix: 로그인 안내문구 수정 * chore: 서명 미업로드 설명 추가 * 프로덕션 배포를 위해 머지합니다. (#136) * fix: 로그인 안내문구 수정 * chore: 서명 미업로드 설명 추가 * fix: 로그인 안내문구 수정 (#146) * fix: department null인 경우 예외처리 (#148) * [FIX] 심사 내용 없을때 등록 안되도록 수정 (#158) * fix: 심사시 심사의견파일 혹은 심사의견 필수 수정 * fix: 일괄등록 안내문구 추가 * fix: 최종심사 모달창 문구 수정 * fix: 관리자 심사 수정시 심사 내용 필수로 수정 * fix: 학생 심사 결과 페이지 심사의견 볼수있도록 수정 (#156) * feat: 학생 개별삭제, 교수 개별삭제 기능 추가 (#150) * fix: department null인 경우 예외처리 (#151) * fix: 교수/학생 로그인하기 router.refresh 추가 (#152) * fix: PhaseReady 시스템 단계 기간 주석처리 (#153) * fix: PhaseEditFormatRow Date 오류수정 (#154) * fix: 수정지시사항 단계 제외 오류 해결 및 학과관리 페이지로 이동 (#155) * 프로덕션 배포를 위해 머지합니다. (#159) * fix: 로그인 안내문구 수정 * chore: 서명 미업로드 설명 추가 * fix: 로그인 안내문구 수정 (#146) * fix: department null인 경우 예외처리 (#148) * [FIX] 심사 내용 없을때 등록 안되도록 수정 (#158) * fix: 심사시 심사의견파일 혹은 심사의견 필수 수정 * fix: 일괄등록 안내문구 추가 * fix: 최종심사 모달창 문구 수정 * fix: 관리자 심사 수정시 심사 내용 필수로 수정 * fix: 학생 심사 결과 페이지 심사의견 볼수있도록 수정 (#156) * feat: 학생 개별삭제, 교수 개별삭제 기능 추가 (#150) * fix: department null인 경우 예외처리 (#151) * fix: 교수/학생 로그인하기 router.refresh 추가 (#152) * fix: PhaseReady 시스템 단계 기간 주석처리 (#153) * fix: PhaseEditFormatRow Date 오류수정 (#154) * fix: 수정지시사항 단계 제외 오류 해결 및 학과관리 페이지로 이동 (#155) * [HOTFIX] [학생]심사의견 길때 한줄만 보이는 문제 (#161) * feat: 일괄등록 버튼 로딩기능 추가 * fix: 심사의견 길어질 시 모두 보여지도록 수정 * fix: 학생 심사결과 페이지 심사의견파일 다운로드 추가 (#162) * fix: 교수 최종판정 심사의견 파일업로드 주석처리 (#163) 혹시 몰라서 안지웠습니다. * [HOTFIX] 수정지시사항 단계, 연구실적등록 오류 수정 (#164) * fix: 학생 단계가 수정지시사항 단계가 아닐 때 ready 페이지로 넘김 * fix: 관리자 수정지시사항단계 수정 오류 * fix: 연구실적등록 오류 해결 --------- Co-authored-by: lhwdev --- .../admin/results/[thesisId]/AdminReviewContent.tsx | 7 ++++--- .../reviews/[thesisId]/AdminReviewListContent.tsx | 8 ++++---- src/app/prof/final/[id]/ProfessorFinalForm.tsx | 7 ++++--- src/app/student/achievement/register/page.tsx | 2 +- src/app/student/result/page.tsx | 2 +- src/app/student/revision/page.tsx | 6 +++++- src/components/common/Table/_elements/TableData.tsx | 4 +--- .../pages/AdminExcelRegister/AdminExcelRegister.tsx | 6 +++++- src/components/pages/review/Review/FinalReview.tsx | 10 +++++----- src/components/pages/review/Review/ReviewResult.tsx | 6 ++++++ 10 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/app/admin/results/[thesisId]/AdminReviewContent.tsx b/src/app/admin/results/[thesisId]/AdminReviewContent.tsx index e6a41697..92c3bd32 100644 --- a/src/app/admin/results/[thesisId]/AdminReviewContent.tsx +++ b/src/app/admin/results/[thesisId]/AdminReviewContent.tsx @@ -171,9 +171,10 @@ function ModalContent({ open, setOpen, data, current }: ModalProps) { } if ( - commentType === undefined || - (commentType === "심사 의견" && (comment === undefined || !comment)) || - (commentType === "심사 의견 파일" && fileUUID === undefined) + data.stage !== "REVISION" && + (commentType === undefined || + (commentType === "심사 의견" && (comment === undefined || !comment)) || + (commentType === "심사 의견 파일" && fileUUID === undefined)) ) { showNotificationError({ message: "심사 의견이나 심사 의견 파일을 첨부해주세요." }); return; diff --git a/src/app/admin/reviews/[thesisId]/AdminReviewListContent.tsx b/src/app/admin/reviews/[thesisId]/AdminReviewListContent.tsx index 4c7110dc..182f3596 100644 --- a/src/app/admin/reviews/[thesisId]/AdminReviewListContent.tsx +++ b/src/app/admin/reviews/[thesisId]/AdminReviewListContent.tsx @@ -91,7 +91,6 @@ function ModalContent({ open, setOpen, data, current }: ModalProps) { task.onComplete(() => setLoading(false)); let fileUUID; - if (reviewFile && commentType === "심사 의견 파일") { fileUUID = (await uploadFile(reviewFile)).uuid; } else if (current.file) { @@ -104,9 +103,10 @@ function ModalContent({ open, setOpen, data, current }: ModalProps) { } if ( - commentType === undefined || - (commentType === "심사 의견" && (comment === undefined || !comment)) || - (commentType === "심사 의견 파일" && fileUUID === undefined) + data.stage !== "REVISION" && + (commentType === undefined || + (commentType === "심사 의견" && (comment === undefined || !comment)) || + (commentType === "심사 의견 파일" && fileUUID === undefined)) ) { showNotificationError({ message: "심사 의견이나 심사 의견 파일을 첨부해주세요." }); return; diff --git a/src/app/prof/final/[id]/ProfessorFinalForm.tsx b/src/app/prof/final/[id]/ProfessorFinalForm.tsx index 371227d3..4e444877 100644 --- a/src/app/prof/final/[id]/ProfessorFinalForm.tsx +++ b/src/app/prof/final/[id]/ProfessorFinalForm.tsx @@ -53,7 +53,7 @@ export function ProfessorFinalForm({ const { values } = form; const [showConfirmDialog, setShowConfirmDialog] = useState(false); const [currentState, setCurrentState] = useState(null); - const [commentType, setCommentType] = useState(); + const [commentType, setCommentType] = useState("심사 의견"); const handleSubmit = transactionTask(async (task, input: FormInput) => { setCurrentState("pending"); @@ -72,7 +72,7 @@ export function ProfessorFinalForm({ { contentStatus: input.status, ...(commentType === "심사 의견" ? { comment: input.comment } : {}), - ...(commentType === "심사 의견 파일" ? { fileUUID } : {}), + // ...(commentType === "심사 의견 파일" ? { fileUUID } : {}), } satisfies UpdateReviewRequestBody, { baseURL: process.env.NEXT_PUBLIC_REVIEW_API_ENDPOINT } ); @@ -103,7 +103,8 @@ export function ProfessorFinalForm({ ? values.commentFile !== null : !!values.commentFile; if (!values.comment && !hasCommentFile) { - showNotificationError({ message: "심사 의견이나 심사 의견 파일을 첨부해주세요." }); + // showNotificationError({ message: "심사 의견이나 심사 의견 파일을 첨부해주세요." }); + showNotificationError({ message: "종합 의견을 작성해주세요." }); return; } setShowConfirmDialog(true); diff --git a/src/app/student/achievement/register/page.tsx b/src/app/student/achievement/register/page.tsx index ac47c012..936edcc6 100644 --- a/src/app/student/achievement/register/page.tsx +++ b/src/app/student/achievement/register/page.tsx @@ -8,7 +8,7 @@ import AchievementRegisterSection from "@/components/pages/achievement/Achieveme async function StudentAchievementRegisterPage() { const { token } = await AuthSSR({ userType: "STUDENT" }); - const { within, start, end } = await checkPhase({ title: "논문 실적 제출", token }); + const { within, start, end } = await checkPhase({ title: "연구 실적 제출", token }); return within ? ( <> diff --git a/src/app/student/result/page.tsx b/src/app/student/result/page.tsx index 69f4bf5e..e2b07e64 100644 --- a/src/app/student/result/page.tsx +++ b/src/app/student/result/page.tsx @@ -29,7 +29,7 @@ export default async function StudentResultPage() { } const thesisRes: MyReviewResponse = user.currentPhase === "PRELIMINARY" ? pre! : main!; - + const thesisInfo: ThesisInfoData = { title: thesisRes.title, stage: thesisRes.stage, diff --git a/src/app/student/revision/page.tsx b/src/app/student/revision/page.tsx index 2518c8d0..868bbef6 100644 --- a/src/app/student/revision/page.tsx +++ b/src/app/student/revision/page.tsx @@ -1,5 +1,8 @@ import { AuthSSR } from "@/api/AuthSSR"; +import { UserResponse } from "@/api/_types/user"; import { checkPhase } from "@/api/_utils/checkPhase"; +import { API_ROUTES } from "@/api/apiRoute"; +import { fetcher } from "@/api/fetcher"; import { formatTime } from "@/components/common/Clock/date/format"; import PageHeader from "@/components/common/PageHeader"; import { Section } from "@/components/common/Section"; @@ -10,8 +13,9 @@ import { Stack } from "@mantine/core"; export default async function StudentRevisionPage() { const { token } = await AuthSSR({ userType: "STUDENT" }); const { within, start, end } = await checkPhase({ title: "수정 지시 사항 제출", token }); + const user = (await fetcher({ url: API_ROUTES.user.get(), token })) as UserResponse; - return within ? ( + return within && user.currentPhase === "REVISION" ? ( <> diff --git a/src/components/common/Table/_elements/TableData.tsx b/src/components/common/Table/_elements/TableData.tsx index b77ab702..8a09ca0f 100644 --- a/src/components/common/Table/_elements/TableData.tsx +++ b/src/components/common/Table/_elements/TableData.tsx @@ -10,10 +10,8 @@ function TableData({ children }: Props) { {children} diff --git a/src/components/pages/AdminExcelRegister/AdminExcelRegister.tsx b/src/components/pages/AdminExcelRegister/AdminExcelRegister.tsx index a9893364..13eb0c3c 100644 --- a/src/components/pages/AdminExcelRegister/AdminExcelRegister.tsx +++ b/src/components/pages/AdminExcelRegister/AdminExcelRegister.tsx @@ -22,6 +22,7 @@ interface Props { function AdminExcelRegister({ isProf = false }: Props) { const [file, setFile] = useState(null); + const [isSubmitting, setIsSubmitting] = useState(false); const handleExcelDownload = async () => { try { @@ -47,6 +48,7 @@ function AdminExcelRegister({ isProf = false }: Props) { const handleExcelUpload = async () => { try { + setIsSubmitting(true); if (file) { const formData = new FormData(); formData.append("file", file); @@ -69,6 +71,8 @@ function AdminExcelRegister({ isProf = false }: Props) { } } catch (error) { // clientAxios에서 오류 출력 + } finally { + setIsSubmitting(false); } }; return ( @@ -97,7 +101,7 @@ function AdminExcelRegister({ isProf = false }: Props) { + , ]} diff --git a/src/components/pages/review/Review/FinalReview.tsx b/src/components/pages/review/Review/FinalReview.tsx index c5581050..7ce7f2d4 100644 --- a/src/components/pages/review/Review/FinalReview.tsx +++ b/src/components/pages/review/Review/FinalReview.tsx @@ -24,7 +24,7 @@ export interface FinalReviewProps { previousCommentFile: ApiFile | undefined; currentState: null | "pending" | "submitted"; commentType?: string; - setCommentType: Dispatch>; + setCommentType: Dispatch>; } export function FinalReview({ @@ -55,14 +55,14 @@ export function FinalReview({ - + {/* */} - + {/* - + */} + + + + + );