diff --git a/src/app/instructor/revision/[commissionId]/page.tsx b/src/app/instructor/revision/[commissionId]/page.tsx
index 2aefc09..e7d0d32 100644
--- a/src/app/instructor/revision/[commissionId]/page.tsx
+++ b/src/app/instructor/revision/[commissionId]/page.tsx
@@ -10,7 +10,7 @@ import { MAX_SELECTABLE_COUNT } from "@/widgets/instructor/revision/config/revis
import {
draftFilesData,
draftRevisionDetailData,
-} from "@/widgets/instructor/revision/model/revision";
+} from "@/widgets/instructor/revision/model/revisionMock";
const Page = () => {
const router = useRouter();
diff --git a/src/features/auth/api/logout.ts b/src/features/auth/api/auth.ts
similarity index 79%
rename from src/features/auth/api/logout.ts
rename to src/features/auth/api/auth.ts
index 4d2143a..f86dbbf 100644
--- a/src/features/auth/api/logout.ts
+++ b/src/features/auth/api/auth.ts
@@ -5,9 +5,10 @@ import {
getApiResponseMessage,
toApiError,
} from "@/shared/api/client";
-import type { ApiResponse } from "@/shared/api/types";
+import type { ApiResponse } from "@/shared/api/commonType";
-export const logout = async () => {
+// 로그아웃
+export const postLogout = async () => {
try {
const response = await api
.post(createApiPath("/api/v1/auth/logout"))
diff --git a/src/features/auth/index.ts b/src/features/auth/index.ts
index b2eae93..211187b 100644
--- a/src/features/auth/index.ts
+++ b/src/features/auth/index.ts
@@ -1,3 +1,3 @@
-export { logout } from "./api/logout";
+export { postLogout } from "./api/auth";
export { useLogout } from "./model/useLogout";
export { default as LogoutSidebarMenu } from "./ui/LogoutSidebarMenu";
diff --git a/src/features/auth/model/useLogout.ts b/src/features/auth/model/useLogout.ts
index 588fa3a..1ca8113 100644
--- a/src/features/auth/model/useLogout.ts
+++ b/src/features/auth/model/useLogout.ts
@@ -3,7 +3,7 @@
import { useRouter } from "next/navigation";
import { useState } from "react";
-import { logout } from "@/features/auth/api/logout";
+import { postLogout } from "@/features/auth/api/auth";
import { clearClientAuth } from "@/shared/lib/auth/client";
export const useLogout = () => {
@@ -16,7 +16,7 @@ export const useLogout = () => {
setIsLoggingOut(true);
try {
- await logout();
+ await postLogout();
} catch {
// 클라이언트 세션 정리는 로그아웃 API 실패 여부와 무관하게 진행합니다.
} finally {
diff --git a/src/features/instructor/choose/index.ts b/src/features/instructor/choose/index.ts
index b648798..9369290 100644
--- a/src/features/instructor/choose/index.ts
+++ b/src/features/instructor/choose/index.ts
@@ -1,3 +1,3 @@
-export type { CommissionWithDrafts, Draft, DraftDetail } from "./model/choose";
-export { commissionDraftsData, draftDetailsData } from "./model/choose";
+export type { CommissionWithDrafts, Draft, DraftDetail } from "./model/chooseMock";
+export { commissionDraftsData, draftDetailsData } from "./model/chooseMock";
export { default as DraftCard } from "./ui/DraftCard";
diff --git a/src/features/instructor/choose/model/choose.ts b/src/features/instructor/choose/model/chooseMock.ts
similarity index 98%
rename from src/features/instructor/choose/model/choose.ts
rename to src/features/instructor/choose/model/chooseMock.ts
index 47d8177..ea936af 100644
--- a/src/features/instructor/choose/model/choose.ts
+++ b/src/features/instructor/choose/model/chooseMock.ts
@@ -12,7 +12,7 @@ export type CommissionWithDrafts = {
export const commissionDraftsData: CommissionWithDrafts[] = [
{
- commissionId: 11,
+ commissionId: 4,
title: "해커스톡 왕초보 영어 - 기초 문법편",
drafts: [
{ draftId: 41, thumbnailUrl: "/images/thumbnail_mock.jpg" },
@@ -22,7 +22,7 @@ export const commissionDraftsData: CommissionWithDrafts[] = [
],
},
{
- commissionId: 15,
+ commissionId: 6,
title: "고등 국어 문학 - 현대시 집중",
drafts: [
{ draftId: 51, thumbnailUrl: "/images/thumbnail_mock.jpg" },
diff --git a/src/features/instructor/home/api/home.ts b/src/features/instructor/home/api/home.ts
new file mode 100644
index 0000000..a82eee7
--- /dev/null
+++ b/src/features/instructor/home/api/home.ts
@@ -0,0 +1,37 @@
+import type {
+ DraftSubmissionItem,
+ GetDraftSubmissionsResult,
+ GetMatchingCommissionsResult,
+ GetRevisionsResult,
+ MatchingItem,
+ ModifyingItem,
+} from "@/features/instructor/home/api/homeTypes";
+import { api, createApiPath } from "@/shared/api/client";
+import type { ApiResponse } from "@/shared/api/commonType";
+
+// 시안 제출 현황 조회
+export const getDraftSubmissions = async (): Promise
=> {
+ const response = await api
+ .get(createApiPath("/api/v1/instructors/dashboards/draft-submissions"))
+ .json>();
+
+ return response.result?.commissions ?? [];
+};
+
+// 매칭 중인 외주 조회
+export const getMatchingCommissions = async (): Promise => {
+ const response = await api
+ .get(createApiPath("/api/v1/instructors/dashboards/matchings"))
+ .json>();
+
+ return response.result?.commissions ?? [];
+};
+
+// 수정 중인 외주 조회
+export const getRevisions = async (): Promise => {
+ const response = await api
+ .get(createApiPath("/api/v1/instructors/dashboards/revisions"))
+ .json>();
+
+ return response.result?.commissions ?? [];
+};
diff --git a/src/features/instructor/home/api/homeTypes.ts b/src/features/instructor/home/api/homeTypes.ts
new file mode 100644
index 0000000..fed130b
--- /dev/null
+++ b/src/features/instructor/home/api/homeTypes.ts
@@ -0,0 +1,45 @@
+export type DraftSubmissionItem = {
+ commissionId: number;
+ title: string;
+ category: string;
+ draftSubmission: {
+ submitted: number;
+ total: number;
+ };
+ isViewable: boolean;
+ firstDraftDeadline: string;
+};
+
+export type MatchingItem = {
+ commissionId: number;
+ title: string;
+ applicationDeadline: string;
+ matching: {
+ matched: number;
+ total: number;
+ };
+};
+
+export type ModifyingItem = {
+ commissionId: number;
+ title: string;
+ isSubmitted: boolean;
+ hasUpdated: boolean;
+ finalDeadline: string;
+};
+
+export const CATEGORY_DISPLAY_MAP: Record = {
+ FLYER_TEXTBOOK_COVER_INNER: "교재 외지/내지",
+};
+
+export type GetDraftSubmissionsResult = {
+ commissions: DraftSubmissionItem[];
+};
+
+export type GetMatchingCommissionsResult = {
+ commissions: MatchingItem[];
+};
+
+export type GetRevisionsResult = {
+ commissions: ModifyingItem[];
+};
diff --git a/src/features/instructor/home/index.ts b/src/features/instructor/home/index.ts
index 6eaf5dc..67c722d 100644
--- a/src/features/instructor/home/index.ts
+++ b/src/features/instructor/home/index.ts
@@ -1,11 +1,7 @@
+export { getDraftSubmissions, getMatchingCommissions, getRevisions } from "./api/home";
+export type { DraftSubmissionItem, MatchingItem, ModifyingItem } from "./api/homeTypes";
+export { CATEGORY_DISPLAY_MAP } from "./api/homeTypes";
export { getDDay } from "./lib/getDDay";
-export type { DraftSubmissionItem, MatchingItem, ModifyingItem } from "./model/home";
-export {
- CATEGORY_DISPLAY_MAP,
- draftSubmissionStatusData,
- matchingStatusData,
- modifyingStatusData,
-} from "./model/home";
export { default as CommissionsHeader } from "./ui/CommissionsHeader";
export { default as DraftSubmissionStatusRow } from "./ui/DraftSubmissionStatusRow";
export { default as MatchingCommissionsRow } from "./ui/MatchingCommissionsRow";
diff --git a/src/features/instructor/home/model/home.ts b/src/features/instructor/home/model/home.ts
deleted file mode 100644
index 247c951..0000000
--- a/src/features/instructor/home/model/home.ts
+++ /dev/null
@@ -1,144 +0,0 @@
-// [강사] [대시보드 조회] 시안 제출 예정 외주 조회
-export type DraftSubmissionItem = {
- commissionId: number;
- title: string;
- category: string;
- draftSubmission: {
- submitted: number;
- total: number;
- };
- firstDraftDeadline: string;
-};
-
-export const CATEGORY_DISPLAY_MAP: Record = {
- FLYER_TEXTBOOK_COVER_INNER: "교재 외지/내지",
-};
-
-export const draftSubmissionStatusData: DraftSubmissionItem[] = [
- {
- commissionId: 11,
- title: "해커스톡 왕초보 영어 - 기초 문법편",
- category: "FLYER_TEXTBOOK_COVER_INNER",
- draftSubmission: { submitted: 4, total: 4 },
- firstDraftDeadline: "2026-06-10",
- },
- {
- commissionId: 12,
- title: "토익 실전 모의고사 - Part 5/6",
- category: "FLYER_TEXTBOOK_COVER_INNER",
- draftSubmission: { submitted: 3, total: 5 },
- firstDraftDeadline: "2026-06-18",
- },
- {
- commissionId: 13,
- title: "수능 영어 독해 - 빈칸추론 완성",
- category: "FLYER_TEXTBOOK_COVER_INNER",
- draftSubmission: { submitted: 0, total: 3 },
- firstDraftDeadline: "2026-06-22",
- },
- {
- commissionId: 14,
- title: "중학 수학 개념서 - 1학기 과정",
- category: "FLYER_TEXTBOOK_COVER_INNER",
- draftSubmission: { submitted: 2, total: 4 },
- firstDraftDeadline: "2026-07-01",
- },
- {
- commissionId: 15,
- title: "고등 국어 문학 - 현대시 집중",
- category: "FLYER_TEXTBOOK_COVER_INNER",
- draftSubmission: { submitted: 5, total: 5 },
- firstDraftDeadline: "2026-06-28",
- },
-];
-
-// [강사] [대시보드 조회] 매칭 중인 외주 조회
-export type MatchingItem = {
- commissionId: number;
- title: string;
- finalDeadline: string;
- matching: {
- matched: number;
- total: number;
- };
-};
-
-export const matchingStatusData: MatchingItem[] = [
- {
- commissionId: 34,
- title: "중등 과학 탐구 — 물질과 에너지",
- matching: { matched: 3, total: 5 },
- finalDeadline: "2026-06-17",
- },
- {
- commissionId: 35,
- title: "고등 수학 II — 미적분 집중 완성",
- matching: { matched: 2, total: 5 },
- finalDeadline: "2026-06-23",
- },
- {
- commissionId: 36,
- title: "중등 영어 — 독해 및 문법 완성",
- matching: { matched: 3, total: 4 },
- finalDeadline: "2026-07-05",
- },
- {
- commissionId: 37,
- title: "초등 과학 — 생물과 환경 탐구",
- matching: { matched: 1, total: 3 },
- finalDeadline: "2026-06-30",
- },
- {
- commissionId: 38,
- title: "고등 물리학 I — 역학과 에너지",
- matching: { matched: 4, total: 5 },
- finalDeadline: "2026-07-15",
- },
-];
-
-// [강사] [대시보드 조회] 수정 중인 외주 조회
-export type ModifyingItem = {
- commissionId: number;
- title: string;
- isSubmitted: boolean;
- hasUpdate: boolean;
- finalDeadline: string;
-};
-
-export const modifyingStatusData: ModifyingItem[] = [
- {
- commissionId: 42,
- title: "중등 수학 — 방정식과 함수 개념서",
- isSubmitted: false,
- hasUpdate: true,
- finalDeadline: "2026-06-20",
- },
- {
- commissionId: 43,
- title: "고등 영어 독해 — 수능 유형별 완성",
- isSubmitted: true,
- hasUpdate: false,
- finalDeadline: "2026-06-28",
- },
- {
- commissionId: 44,
- title: "초등 국어 — 받아쓰기 및 독해 기초",
- isSubmitted: false,
- hasUpdate: false,
- finalDeadline: "2026-07-03",
- },
- {
- commissionId: 45,
- title: "한국사 능력검정 — 중급 핵심 요약",
- isSubmitted: false,
- hasUpdate: true,
- finalDeadline: "2026-07-10",
- },
- {
- commissionId: 46,
- title: "고등 화학 I — 원소와 화학 반응",
- isSubmitted: false,
- hasUpdate: false,
- finalDeadline: "2026-07-18",
- },
-];
diff --git a/src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx b/src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx
index 8290162..1fe332b 100644
--- a/src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx
+++ b/src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx
@@ -1,13 +1,16 @@
import { useRouter } from "next/navigation";
+import {
+ CATEGORY_DISPLAY_MAP,
+ DraftSubmissionItem,
+} from "@/features/instructor/home/api/homeTypes";
import { getDDay } from "@/features/instructor/home/lib/getDDay";
-import { CATEGORY_DISPLAY_MAP, DraftSubmissionItem } from "@/features/instructor/home/model/home";
import { ArrowRightIcon, MatchingOffIcon, MatchingOnIcon } from "@/shared/assets/icons";
import Button from "@/shared/ui/Button";
import Tag from "@/shared/ui/Tag";
const DraftSubmissionStatusRow = ({ item }: { item: DraftSubmissionItem }) => {
- const { commissionId, title, category, draftSubmission, firstDraftDeadline } = item;
+ const { commissionId, title, category, draftSubmission, isViewable, firstDraftDeadline } = item;
const { submitted, total } = draftSubmission;
const categoryLabel = CATEGORY_DISPLAY_MAP[category] ?? category;
const router = useRouter();
@@ -37,7 +40,7 @@ const DraftSubmissionStatusRow = ({ item }: { item: DraftSubmissionItem }) => {
({submitted}/{total})