diff --git a/public/images/thumbnail_mock.jpg b/public/images/thumbnail_mock.jpg
new file mode 100644
index 0000000..d498c62
Binary files /dev/null and b/public/images/thumbnail_mock.jpg differ
diff --git a/src/app/globals.css b/src/app/globals.css
index 1a297dc..74e875b 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -57,6 +57,9 @@
--color-blue-bright: #e0eeff;
--color-blue-main: #0248c2;
+ /* Overlay */
+ --color-overlay-hover: rgba(86, 75, 96, 0.58);
+
/* =========================
Typography
========================= */
@@ -175,6 +178,12 @@
========================= */
--shadow-dropdown: 0 0 20px 4px rgba(0, 0, 0, 0.05);
+ /* =========================
+ Blur Tokens
+ ========================= */
+ --blur-hover: 1.7px;
+ --blur-button: 2px;
+
/* =========================
Radius Tokens
========================= */
@@ -185,6 +194,7 @@
--radius-12: 12px;
--radius-14: 14px;
--radius-20: 20px;
+ --radius-24: 24px;
--radius-32: 32px;
--radius-48: 48px;
--radius-100: 100px;
diff --git a/src/app/instructor/layout.tsx b/src/app/instructor/layout.tsx
index 9b6cafe..18d287f 100644
--- a/src/app/instructor/layout.tsx
+++ b/src/app/instructor/layout.tsx
@@ -11,7 +11,7 @@ const InstructorLayout = ({ children }: { children: ReactNode }) => {
}>
-
+
{children}
diff --git a/src/app/instructor/revision/[commissionId]/page.tsx b/src/app/instructor/revision/[commissionId]/page.tsx
new file mode 100644
index 0000000..1a39457
--- /dev/null
+++ b/src/app/instructor/revision/[commissionId]/page.tsx
@@ -0,0 +1,108 @@
+"use client";
+
+import { useParams, useRouter } from "next/navigation";
+import { useState } from "react";
+
+import Button from "@/shared/ui/Button";
+import Modal from "@/shared/ui/modal/Modal";
+import { RevisionCategorySection, RevisionCommentSection } from "@/widgets/instructor/revision";
+import { MAX_SELECTABLE_COUNT } from "@/widgets/instructor/revision/config/revision";
+import {
+ draftFilesData,
+ draftRevisionDetailData,
+} from "@/widgets/instructor/revision/model/revision";
+
+const Page = () => {
+ const router = useRouter();
+ const { commissionId } = useParams<{ commissionId: string }>();
+ const draftRevisionDetail = draftRevisionDetailData.find(
+ detail => detail.commissionId === Number(commissionId),
+ );
+ const draftFiles = draftFilesData.find(files => files.commissionId === Number(commissionId));
+ const [selectedCategories, setSelectedCategories] = useState
([]);
+ const [comments, setComments] = useState>({});
+ const [isFinalizeModalOpen, setIsFinalizeModalOpen] = useState(false);
+
+ const isFinalizeActive = selectedCategories.length === 0;
+ const isSubmitActive =
+ selectedCategories.length > 0 &&
+ selectedCategories.every(category => (comments[category] ?? "").trim().length > 0);
+
+ const handleToggleCategory = (category: string) => {
+ setSelectedCategories(prev => {
+ if (prev.includes(category)) {
+ return prev.filter(selected => selected !== category);
+ }
+ if (prev.length >= MAX_SELECTABLE_COUNT) {
+ return prev;
+ }
+ return [...prev, category];
+ });
+ };
+
+ const handleChangeComment = (category: string, value: string) => {
+ setComments(prev => ({ ...prev, [category]: value }));
+ };
+
+ const handleCloseFinalizeModal = () => {
+ setIsFinalizeModalOpen(false);
+ };
+
+ const handleConfirmFinalize = () => {
+ setIsFinalizeModalOpen(false);
+ router.push("/instructor");
+ };
+
+ if (draftRevisionDetail == null) {
+ return null;
+ }
+
+ return (
+
+
+ {draftRevisionDetail.title}
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Page;
diff --git a/src/app/instructor/write/page.tsx b/src/app/instructor/write/page.tsx
index 1db6de1..073b2ea 100644
--- a/src/app/instructor/write/page.tsx
+++ b/src/app/instructor/write/page.tsx
@@ -4,7 +4,7 @@ import { useRouter } from "next/navigation";
import { useEffect, useState } from "react";
import { useWriteFormStore } from "@/features/instructor/write";
-import Modal from "@/shared/ui/Modal";
+import Modal from "@/shared/ui/modal/Modal";
import { Step1Content, Step2Content, Step3Content } from "@/widgets/instructor/write";
const WritePageContent = () => {
diff --git a/src/features/instructor/home/model/home.ts b/src/features/instructor/home/model/home.ts
index ee02c72..f2e5116 100644
--- a/src/features/instructor/home/model/home.ts
+++ b/src/features/instructor/home/model/home.ts
@@ -130,7 +130,7 @@ export const modifyingStatusData: ModifyingItem[] = [
{
commissionId: 45,
title: "한국사 능력검정 — 중급 핵심 요약",
- isSubmitted: true,
+ isSubmitted: false,
hasUpdate: true,
finalDeadline: "2026-07-10",
},
diff --git a/src/features/instructor/home/ui/ModifyingCommissionsRow.tsx b/src/features/instructor/home/ui/ModifyingCommissionsRow.tsx
index af58fb7..9573f50 100644
--- a/src/features/instructor/home/ui/ModifyingCommissionsRow.tsx
+++ b/src/features/instructor/home/ui/ModifyingCommissionsRow.tsx
@@ -1,3 +1,5 @@
+import { useRouter } from "next/navigation";
+
import { getDDay } from "@/features/instructor/home/lib/getDDay";
import { ModifyingItem } from "@/features/instructor/home/model/home";
import { cn } from "@/shared/lib/utils/cn";
@@ -5,7 +7,8 @@ import Button from "@/shared/ui/Button";
import Tag from "@/shared/ui/Tag";
const ModifyingCommissionsRow = ({ item }: { item: ModifyingItem }) => {
- const { title, finalDeadline, isSubmitted, hasUpdate } = item;
+ const router = useRouter();
+ const { commissionId, title, finalDeadline, isSubmitted, hasUpdate } = item;
return (
@@ -20,7 +23,11 @@ const ModifyingCommissionsRow = ({ item }: { item: ModifyingItem }) => {
{isSubmitted ? (
) : (
-