diff --git a/frontend/src/apis/application/updateApplicantDetail.ts b/frontend/src/apis/application/updateApplicantDetail.ts index 69f094310..4e99bec42 100644 --- a/frontend/src/apis/application/updateApplicantDetail.ts +++ b/frontend/src/apis/application/updateApplicantDetail.ts @@ -6,11 +6,11 @@ export const updateApplicantDetail = async ( memo: string, status: ApplicationStatus, clubId: string, - appId: string, + applicantId: string, ) => { try { const response = await secureFetch( - `${API_BASE_URL}/api/club/${clubId}/apply/${appId}`, + `${API_BASE_URL}/api/club/${clubId}/apply/${applicantId}`, { method: 'PUT', headers: { diff --git a/frontend/src/hooks/queries/applicants/useUpdateApplicant.ts b/frontend/src/hooks/queries/applicants/useUpdateApplicant.ts index 5257d4966..bf6d34ad9 100644 --- a/frontend/src/hooks/queries/applicants/useUpdateApplicant.ts +++ b/frontend/src/hooks/queries/applicants/useUpdateApplicant.ts @@ -2,12 +2,12 @@ import { updateApplicantDetail } from "@/apis/application/updateApplicantDetail" import { ApplicationStatus } from "@/types/applicants"; import { useMutation, useQueryClient } from "@tanstack/react-query" -export const useUpdateApplicant = (clubId: string, appId: string) => { +export const useUpdateApplicant = (clubId: string, applicantId: string) => { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({memo, status}: { memo: string, status: ApplicationStatus }) => - updateApplicantDetail(memo, status, clubId, appId), + updateApplicantDetail(memo, status, clubId, applicantId), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["clubApplicants"] }); }, diff --git a/frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx b/frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx index 4ec1117ca..0841beae2 100644 --- a/frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx +++ b/frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx @@ -16,7 +16,7 @@ import NextApplicantButton from '@/assets/images/icons/next_applicant.svg'; import { useUpdateApplicant } from '@/hooks/queries/applicants/useUpdateApplicant'; const AVAILABLE_STATUSES = [ - ApplicationStatus.SCREENING, // 서류검토 (SUBMITTED 포함) + ApplicationStatus.SUBMITTED, // 서류검토 (SUBMITTED 포함) ApplicationStatus.INTERVIEW_SCHEDULED, // 면접예정 ApplicationStatus.ACCEPTED, // 합격 ] as const; @@ -25,7 +25,6 @@ const getStatusColor = (status: ApplicationStatus | undefined): string => { switch (status) { case ApplicationStatus.ACCEPTED: return 'var(--f5, #F5F5F5)'; - case ApplicationStatus.SCREENING: case ApplicationStatus.SUBMITTED: return '#E5F6FF'; case ApplicationStatus.INTERVIEW_SCHEDULED: @@ -45,13 +44,9 @@ const ApplicantDetailPage = () => { const { data: formData, isLoading, isError } = useGetApplication(clubId!); const { mutate: updateApplicant } = useUpdateApplicant(clubId!, questionId!); - const { applicant, applicantIndex } = useMemo(() => { - const index = - applicantsData?.applicants.findIndex((a) => a.id === questionId) ?? -1; - const _applicant = applicantsData?.applicants[index]; - - return { applicant: _applicant, applicantIndex: index }; - }, [applicantsData, questionId]); + const applicantIndex = + applicantsData?.applicants.findIndex((a) => a.id === questionId) ?? -1; + const applicant = applicantsData?.applicants[applicantIndex]; useEffect(() => { if (applicant) { diff --git a/frontend/src/types/applicants.ts b/frontend/src/types/applicants.ts index b91fec312..7d4d6e6a5 100644 --- a/frontend/src/types/applicants.ts +++ b/frontend/src/types/applicants.ts @@ -1,19 +1,10 @@ import { AnswerItem } from "./application"; export enum ApplicationStatus { - DRAFT = 'DRAFT', // 작성 중 SUBMITTED = 'SUBMITTED', // 제출 완료 - SCREENING = 'SCREENING', // 서류 심사 중 - SCREENING_PASSED = 'SCREENING_PASSED', // 서류 통과 - SCREENING_FAILED = 'SCREENING_FAILED', // 서류 탈락 INTERVIEW_SCHEDULED = 'INTERVIEW_SCHEDULED', // 면접 일정 확정 - INTERVIEW_IN_PROGRESS = 'INTERVIEW_IN_PROGRESS', // 면접 진행 중 - INTERVIEW_PASSED = 'INTERVIEW_PASSED', // 면접 통과 - INTERVIEW_FAILED = 'INTERVIEW_FAILED', // 면접 탈락 - OFFERED = 'OFFERED', // 최종 합격 제안 ACCEPTED = 'ACCEPTED', // 제안 수락 DECLINED = 'DECLINED', // 제안 거절 - CANCELED_BY_APPLICANT = 'CANCELED_BY_APPLICANT', // 지원자 자진 철회 } export interface ApplicantsInfo { diff --git a/frontend/src/utils/mapStatusToGroup.ts b/frontend/src/utils/mapStatusToGroup.ts index 349bd09df..9f57824e7 100644 --- a/frontend/src/utils/mapStatusToGroup.ts +++ b/frontend/src/utils/mapStatusToGroup.ts @@ -3,16 +3,13 @@ import { ApplicationStatus } from "@/types/applicants"; const mapStatusToGroup = (status: ApplicationStatus): { status: ApplicationStatus, label: string } => { switch (status) { case ApplicationStatus.SUBMITTED: - case ApplicationStatus.SCREENING: return { status: ApplicationStatus.SUBMITTED, label: '서류검토' }; - case ApplicationStatus.SCREENING_PASSED: case ApplicationStatus.INTERVIEW_SCHEDULED: - case ApplicationStatus.INTERVIEW_IN_PROGRESS: return { status: ApplicationStatus.INTERVIEW_SCHEDULED, label: '면접예정' }; - case ApplicationStatus.INTERVIEW_PASSED: - case ApplicationStatus.OFFERED: case ApplicationStatus.ACCEPTED: return { status: ApplicationStatus.ACCEPTED, label: '합격' }; + case ApplicationStatus.DECLINED: + return { status: ApplicationStatus.DECLINED, label: '불합' }; default: return { status: ApplicationStatus.SUBMITTED, label: '서류검토'}; }