From 77c5bcde5947606c6c42fcf1591a66581cba56f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Tue, 10 Mar 2026 16:17:17 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[QMS]=20=EB=AA=A9=EC=97=85=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=82=AC=EC=9A=A9=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EC=97=90=20Mock=20=EB=B0=B0=EC=A7=80=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 6개 컴포넌트에 isMock prop 추가 (ReportList, RouteList, DocumentList, Day1ChecklistPanel, Day1DocumentSection, Day1DocumentViewer) - 각 컴포넌트 헤더에 amber 톤 Mock 배지 표시 - API 연동 완료 시 isMock prop 제거로 자동 해제 --- .../qms/components/Day1ChecklistPanel.tsx | 11 +++++++++- .../qms/components/Day1DocumentSection.tsx | 11 +++++++++- .../qms/components/Day1DocumentViewer.tsx | 12 +++++++++-- .../quality/qms/components/DocumentList.tsx | 20 +++++++++++++------ .../quality/qms/components/ReportList.tsx | 12 +++++++++-- .../quality/qms/components/RouteList.tsx | 20 +++++++++++++------ .../[locale]/(protected)/quality/qms/page.tsx | 7 ++++++- 7 files changed, 74 insertions(+), 19 deletions(-) diff --git a/src/app/[locale]/(protected)/quality/qms/components/Day1ChecklistPanel.tsx b/src/app/[locale]/(protected)/quality/qms/components/Day1ChecklistPanel.tsx index 92cb2d9f..6c4f5500 100644 --- a/src/app/[locale]/(protected)/quality/qms/components/Day1ChecklistPanel.tsx +++ b/src/app/[locale]/(protected)/quality/qms/components/Day1ChecklistPanel.tsx @@ -11,6 +11,7 @@ interface Day1ChecklistPanelProps { searchTerm: string; onSubItemSelect: (categoryId: string, subItemId: string) => void; onSubItemToggle: (categoryId: string, subItemId: string, isCompleted: boolean) => void; + isMock?: boolean; } export function Day1ChecklistPanel({ @@ -19,6 +20,7 @@ export function Day1ChecklistPanel({ searchTerm, onSubItemSelect, onSubItemToggle, + isMock, }: Day1ChecklistPanelProps) { const [expandedCategories, setExpandedCategories] = useState>( new Set(categories.map(c => c.id)) // 기본적으로 모두 펼침 @@ -95,7 +97,14 @@ export function Day1ChecklistPanel({
{/* 헤더 */}
-

점검표 항목

+
+

점검표 항목

+ {isMock && ( + + Mock + + )} +
{/* 검색 결과 카운트 */} {searchTerm && (
diff --git a/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentSection.tsx b/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentSection.tsx index e35f9c15..81e8b588 100644 --- a/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentSection.tsx +++ b/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentSection.tsx @@ -12,6 +12,7 @@ interface Day1DocumentSectionProps { onDocumentSelect: (documentId: string) => void; onConfirmComplete: () => void; isCompleted: boolean; + isMock?: boolean; } export function Day1DocumentSection({ @@ -20,6 +21,7 @@ export function Day1DocumentSection({ onDocumentSelect, onConfirmComplete, isCompleted, + isMock, }: Day1DocumentSectionProps) { if (!checkItem) { return ( @@ -36,7 +38,14 @@ export function Day1DocumentSection({
{/* 헤더 */}
-

기준 문서화

+
+

기준 문서화

+ {isMock && ( + + Mock + + )} +
{/* 콘텐츠 */} diff --git a/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentViewer.tsx b/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentViewer.tsx index 008d2719..871b6b72 100644 --- a/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentViewer.tsx +++ b/src/app/[locale]/(protected)/quality/qms/components/Day1DocumentViewer.tsx @@ -7,9 +7,10 @@ import type { StandardDocument } from '../types'; interface Day1DocumentViewerProps { document: StandardDocument | null; + isMock?: boolean; } -export function Day1DocumentViewer({ document }: Day1DocumentViewerProps) { +export function Day1DocumentViewer({ document, isMock }: Day1DocumentViewerProps) { if (!document) { return (
@@ -38,7 +39,14 @@ export function Day1DocumentViewer({ document }: Day1DocumentViewerProps) {
-

{document.title}

+
+

{document.title}

+ {isMock && ( + + Mock + + )} +

{document.version !== '-' && {document.version}} {document.date} diff --git a/src/app/[locale]/(protected)/quality/qms/components/DocumentList.tsx b/src/app/[locale]/(protected)/quality/qms/components/DocumentList.tsx index 604219fc..7853be0b 100644 --- a/src/app/[locale]/(protected)/quality/qms/components/DocumentList.tsx +++ b/src/app/[locale]/(protected)/quality/qms/components/DocumentList.tsx @@ -11,6 +11,7 @@ interface DocumentListProps { documents: Document[]; routeCode: string | null; onViewDocument: (doc: Document, item?: DocumentItem) => void; + isMock?: boolean; } const getIcon = (type: string) => { @@ -27,7 +28,7 @@ const getIcon = (type: string) => { } }; -export const DocumentList = ({ documents, routeCode, onViewDocument }: DocumentListProps) => { +export const DocumentList = ({ documents, routeCode, onViewDocument, isMock }: DocumentListProps) => { const [expandedId, setExpandedId] = useState(null); // 문서 카테고리 클릭 핸들러 @@ -52,12 +53,19 @@ export const DocumentList = ({ documents, routeCode, onViewDocument }: DocumentL return (

-

- 관련 서류{' '} - {routeCode && ( - ({routeCode}) +
+

+ 관련 서류{' '} + {routeCode && ( + ({routeCode}) + )} +

+ {isMock && ( + + Mock + )} -

+
{!routeCode ? ( diff --git a/src/app/[locale]/(protected)/quality/qms/components/ReportList.tsx b/src/app/[locale]/(protected)/quality/qms/components/ReportList.tsx index 90c7f231..cc073165 100644 --- a/src/app/[locale]/(protected)/quality/qms/components/ReportList.tsx +++ b/src/app/[locale]/(protected)/quality/qms/components/ReportList.tsx @@ -8,13 +8,21 @@ interface ReportListProps { reports: InspectionReport[]; selectedId: string | null; onSelect: (report: InspectionReport) => void; + isMock?: boolean; } -export const ReportList = ({ reports, selectedId, onSelect }: ReportListProps) => { +export const ReportList = ({ reports, selectedId, onSelect, isMock }: ReportListProps) => { return (
-

품질관리서 목록

+
+

품질관리서 목록

+ {isMock && ( + + Mock + + )} +
{reports.length}건 diff --git a/src/app/[locale]/(protected)/quality/qms/components/RouteList.tsx b/src/app/[locale]/(protected)/quality/qms/components/RouteList.tsx index a1be689d..805d4ac6 100644 --- a/src/app/[locale]/(protected)/quality/qms/components/RouteList.tsx +++ b/src/app/[locale]/(protected)/quality/qms/components/RouteList.tsx @@ -11,9 +11,10 @@ interface RouteListProps { onSelect: (route: RouteItem) => void; onToggleItem: (routeId: string, itemId: string, isCompleted: boolean) => void; reportCode: string | null; + isMock?: boolean; } -export const RouteList = ({ routes, selectedId, onSelect, onToggleItem, reportCode }: RouteListProps) => { +export const RouteList = ({ routes, selectedId, onSelect, onToggleItem, reportCode, isMock }: RouteListProps) => { const [expandedId, setExpandedId] = useState(null); const handleClick = (route: RouteItem) => { @@ -28,12 +29,19 @@ export const RouteList = ({ routes, selectedId, onSelect, onToggleItem, reportCo return (
-

- 수주루트 목록{' '} - {reportCode && ( - ({reportCode}) +
+

+ 수주루트 목록{' '} + {reportCode && ( + ({reportCode}) + )} +

+ {isMock && ( + + Mock + )} -

+
{routes.length === 0 ? ( diff --git a/src/app/[locale]/(protected)/quality/qms/page.tsx b/src/app/[locale]/(protected)/quality/qms/page.tsx index 1658882f..6fb4ebb9 100644 --- a/src/app/[locale]/(protected)/quality/qms/page.tsx +++ b/src/app/[locale]/(protected)/quality/qms/page.tsx @@ -298,6 +298,7 @@ export default function QualityInspectionPage() { searchTerm={searchTerm} onSubItemSelect={handleSubItemSelect} onSubItemToggle={handleSubItemToggle} + isMock />
@@ -312,6 +313,7 @@ export default function QualityInspectionPage() { onDocumentSelect={setSelectedStandardDocId} onConfirmComplete={handleConfirmComplete} isCompleted={isSelectedItemCompleted} + isMock />
)} @@ -321,7 +323,7 @@ export default function QualityInspectionPage() {
- +
)}
@@ -333,6 +335,7 @@ export default function QualityInspectionPage() { reports={filteredReports} selectedId={selectedReport?.id || null} onSelect={handleReportSelect} + isMock />
@@ -343,6 +346,7 @@ export default function QualityInspectionPage() { onSelect={handleRouteSelect} onToggleItem={handleToggleItem} reportCode={selectedReport?.code || null} + isMock />
@@ -351,6 +355,7 @@ export default function QualityInspectionPage() { documents={currentDocuments} routeCode={selectedRoute?.code || null} onViewDocument={handleViewDocument} + isMock />