diff --git a/frontend/components/applicant/Board.tsx b/frontend/components/applicant/Board.tsx
index f24daec..56fdf87 100644
--- a/frontend/components/applicant/Board.tsx
+++ b/frontend/components/applicant/Board.tsx
@@ -3,7 +3,6 @@
import Board from "@/components/common/board/Board";
import { getApplicantByPageWithGeneration } from "@/src/apis/applicant";
import ApplicantDetailRight from "./DetailRight.component";
-import ApplicantDetailLeft from "./DetailLeft.component";
import { useState } from "react";
import { ApplicantReq } from "@/src/apis/application";
import { applicantDataFinder } from "@/src/functions/finder";
@@ -12,6 +11,8 @@ import { useSearchParams } from "next/navigation";
import { ORDER_MENU } from "@/src/constants";
import { useSearchQuery } from "@/src/hooks/useSearchQuery";
import { type ApplicantPassState } from "../../src/apis/kanban";
+import ApplicantDetailLeft from "./_applicant/ApplicantDetailLeft";
+import { findApplicantState } from "@/src/utils/applicant";
interface ApplicantBoardProps {
generation: string;
@@ -74,9 +75,10 @@ const ApplicantBoard = ({ generation }: ApplicantBoardProps) => {
Number(applicantDataFinder(value, "uploadDate"))
).toLocaleString("ko-KR", { dateStyle: "short" }),
],
- passState: `${
- applicantDataFinder(value, "passState").passState
- }` as ApplicantPassState,
+ passState: `${applicantDataFinder(
+ value,
+ "passState"
+ )}` as ApplicantPassState,
}));
return (
diff --git a/frontend/components/applicant/_applicant/ApplicantDetailLeft.tsx b/frontend/components/applicant/_applicant/ApplicantDetailLeft.tsx
new file mode 100644
index 0000000..57389b0
--- /dev/null
+++ b/frontend/components/applicant/_applicant/ApplicantDetailLeft.tsx
@@ -0,0 +1,77 @@
+"use client";
+
+import { ApplicantReq } from "@/src/apis/applicant";
+import CustomResource from "./_applicantNode/CustomResource";
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import {
+ patchApplicantPassState,
+ PatchApplicantPassStateParams,
+} from "@/src/apis/passState";
+import { applicantDataFinder } from "@/src/functions/finder";
+import { getMyInfo } from "@/src/apis/interview";
+import ApplicantLabel from "../applicantNode/Label.component";
+import ApplicantComment from "../applicantNode/comment/Comment.component";
+
+interface DetailLeftProps {
+ data: ApplicantReq[];
+ generation: string;
+ cardId: number;
+}
+const ApplicantDetailLeft = ({ data, cardId, generation }: DetailLeftProps) => {
+ const queryClient = useQueryClient();
+ const { mutate: updateApplicantPassState } = useMutation({
+ mutationFn: (params: PatchApplicantPassStateParams) =>
+ patchApplicantPassState(params),
+ onSuccess: () => {
+ queryClient.invalidateQueries({
+ queryKey: [
+ "allApplicantsWithPassState",
+ applicantDataFinder(data, "generation"),
+ ],
+ });
+ },
+ });
+ const { data: userData } = useQuery(["user"], getMyInfo);
+
+ const postId = applicantDataFinder(data, "id");
+
+ const onClickPass = () => {
+ const ok = confirm("합격 처리하시겠습니까?");
+ if (!ok) return;
+ updateApplicantPassState({
+ applicantId: postId,
+ afterState: "pass",
+ });
+ };
+
+ const onClickNonPass = () => {
+ const ok = confirm("불합격 처리하시겠습니까?");
+ if (!ok) return;
+ updateApplicantPassState({
+ applicantId: postId,
+ afterState: "non-pass",
+ });
+ };
+
+ return (
+ <>
+