From f32861df8b8d16da3c94a76af4759a1a2acefd66 Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 27 Mar 2026 14:48:15 +0900 Subject: [PATCH] feat: add new design management pages and session files - Introduced multiple new pages for design management, including change management, design requests, my work, project management, and task management. - Added session files to track design sessions with relevant details such as session ID, end time, and reason. - Enhanced the overall structure and organization of the design management features, improving user experience and functionality. This commit expands the design management capabilities within the application, allowing for better tracking and handling of design-related tasks. --- .../037169c7-72ba-4843-8e9a-417ca1423715.json | 8 +++ .../8145031e-d7ea-4aa3-94d7-ddaa69383b8a.json | 8 +++ .../design/change-management/page.tsx | 0 .../design/design-request/page.tsx | 0 .../{ => COMPANY_7}/design/my-work/page.tsx | 0 .../{ => COMPANY_7}/design/project/page.tsx | 0 .../design/task-management/page.tsx | 0 .../{ => COMPANY_7}/equipment/info/page.tsx | 0 .../logistics/material-status/page.tsx | 0 .../logistics/outbound/page.tsx | 0 .../logistics/packaging/page.tsx | 0 .../logistics/receiving/page.tsx | 0 .../master-data/department/page.tsx | 0 .../master-data/item-info/page.tsx | 0 .../outsourcing/subcontractor-item/page.tsx | 0 .../outsourcing/subcontractor/page.tsx | 0 .../production/plan-management/page.tsx | 0 .../process-info/ItemRoutingTab.tsx | 0 .../process-info/ProcessMasterTab.tsx | 0 .../process-info/ProcessWorkStandardTab.tsx | 0 .../production/process-info/page.tsx | 0 .../WorkStandardEditModal.tsx | 0 .../production/work-instruction/page.tsx | 0 .../{ => COMPANY_7}/sales/claim/page.tsx | 0 .../{ => COMPANY_7}/sales/customer/page.tsx | 0 .../{ => COMPANY_7}/sales/order/page.tsx | 0 .../{ => COMPANY_7}/sales/sales-item/page.tsx | 0 .../sales/shipping-order/page.tsx | 0 .../sales/shipping-plan/page.tsx | 0 .../components/layout/AdminPageRenderer.tsx | 52 ++++++++++++------- 30 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 .omc/sessions/037169c7-72ba-4843-8e9a-417ca1423715.json create mode 100644 .omc/sessions/8145031e-d7ea-4aa3-94d7-ddaa69383b8a.json rename frontend/app/(main)/{ => COMPANY_7}/design/change-management/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/design/design-request/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/design/my-work/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/design/project/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/design/task-management/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/equipment/info/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/logistics/material-status/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/logistics/outbound/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/logistics/packaging/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/logistics/receiving/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/master-data/department/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/master-data/item-info/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/outsourcing/subcontractor-item/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/outsourcing/subcontractor/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/plan-management/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/process-info/ItemRoutingTab.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/process-info/ProcessMasterTab.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/process-info/ProcessWorkStandardTab.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/process-info/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/work-instruction/WorkStandardEditModal.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/production/work-instruction/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/sales/claim/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/sales/customer/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/sales/order/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/sales/sales-item/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/sales/shipping-order/page.tsx (100%) rename frontend/app/(main)/{ => COMPANY_7}/sales/shipping-plan/page.tsx (100%) diff --git a/.omc/sessions/037169c7-72ba-4843-8e9a-417ca1423715.json b/.omc/sessions/037169c7-72ba-4843-8e9a-417ca1423715.json new file mode 100644 index 00000000..319727ce --- /dev/null +++ b/.omc/sessions/037169c7-72ba-4843-8e9a-417ca1423715.json @@ -0,0 +1,8 @@ +{ + "session_id": "037169c7-72ba-4843-8e9a-417ca1423715", + "ended_at": "2026-03-26T08:24:13.261Z", + "reason": "other", + "agents_spawned": 0, + "agents_completed": 0, + "modes_used": [] +} \ No newline at end of file diff --git a/.omc/sessions/8145031e-d7ea-4aa3-94d7-ddaa69383b8a.json b/.omc/sessions/8145031e-d7ea-4aa3-94d7-ddaa69383b8a.json new file mode 100644 index 00000000..2d90700f --- /dev/null +++ b/.omc/sessions/8145031e-d7ea-4aa3-94d7-ddaa69383b8a.json @@ -0,0 +1,8 @@ +{ + "session_id": "8145031e-d7ea-4aa3-94d7-ddaa69383b8a", + "ended_at": "2026-03-26T09:35:10.082Z", + "reason": "other", + "agents_spawned": 0, + "agents_completed": 0, + "modes_used": [] +} \ No newline at end of file diff --git a/frontend/app/(main)/design/change-management/page.tsx b/frontend/app/(main)/COMPANY_7/design/change-management/page.tsx similarity index 100% rename from frontend/app/(main)/design/change-management/page.tsx rename to frontend/app/(main)/COMPANY_7/design/change-management/page.tsx diff --git a/frontend/app/(main)/design/design-request/page.tsx b/frontend/app/(main)/COMPANY_7/design/design-request/page.tsx similarity index 100% rename from frontend/app/(main)/design/design-request/page.tsx rename to frontend/app/(main)/COMPANY_7/design/design-request/page.tsx diff --git a/frontend/app/(main)/design/my-work/page.tsx b/frontend/app/(main)/COMPANY_7/design/my-work/page.tsx similarity index 100% rename from frontend/app/(main)/design/my-work/page.tsx rename to frontend/app/(main)/COMPANY_7/design/my-work/page.tsx diff --git a/frontend/app/(main)/design/project/page.tsx b/frontend/app/(main)/COMPANY_7/design/project/page.tsx similarity index 100% rename from frontend/app/(main)/design/project/page.tsx rename to frontend/app/(main)/COMPANY_7/design/project/page.tsx diff --git a/frontend/app/(main)/design/task-management/page.tsx b/frontend/app/(main)/COMPANY_7/design/task-management/page.tsx similarity index 100% rename from frontend/app/(main)/design/task-management/page.tsx rename to frontend/app/(main)/COMPANY_7/design/task-management/page.tsx diff --git a/frontend/app/(main)/equipment/info/page.tsx b/frontend/app/(main)/COMPANY_7/equipment/info/page.tsx similarity index 100% rename from frontend/app/(main)/equipment/info/page.tsx rename to frontend/app/(main)/COMPANY_7/equipment/info/page.tsx diff --git a/frontend/app/(main)/logistics/material-status/page.tsx b/frontend/app/(main)/COMPANY_7/logistics/material-status/page.tsx similarity index 100% rename from frontend/app/(main)/logistics/material-status/page.tsx rename to frontend/app/(main)/COMPANY_7/logistics/material-status/page.tsx diff --git a/frontend/app/(main)/logistics/outbound/page.tsx b/frontend/app/(main)/COMPANY_7/logistics/outbound/page.tsx similarity index 100% rename from frontend/app/(main)/logistics/outbound/page.tsx rename to frontend/app/(main)/COMPANY_7/logistics/outbound/page.tsx diff --git a/frontend/app/(main)/logistics/packaging/page.tsx b/frontend/app/(main)/COMPANY_7/logistics/packaging/page.tsx similarity index 100% rename from frontend/app/(main)/logistics/packaging/page.tsx rename to frontend/app/(main)/COMPANY_7/logistics/packaging/page.tsx diff --git a/frontend/app/(main)/logistics/receiving/page.tsx b/frontend/app/(main)/COMPANY_7/logistics/receiving/page.tsx similarity index 100% rename from frontend/app/(main)/logistics/receiving/page.tsx rename to frontend/app/(main)/COMPANY_7/logistics/receiving/page.tsx diff --git a/frontend/app/(main)/master-data/department/page.tsx b/frontend/app/(main)/COMPANY_7/master-data/department/page.tsx similarity index 100% rename from frontend/app/(main)/master-data/department/page.tsx rename to frontend/app/(main)/COMPANY_7/master-data/department/page.tsx diff --git a/frontend/app/(main)/master-data/item-info/page.tsx b/frontend/app/(main)/COMPANY_7/master-data/item-info/page.tsx similarity index 100% rename from frontend/app/(main)/master-data/item-info/page.tsx rename to frontend/app/(main)/COMPANY_7/master-data/item-info/page.tsx diff --git a/frontend/app/(main)/outsourcing/subcontractor-item/page.tsx b/frontend/app/(main)/COMPANY_7/outsourcing/subcontractor-item/page.tsx similarity index 100% rename from frontend/app/(main)/outsourcing/subcontractor-item/page.tsx rename to frontend/app/(main)/COMPANY_7/outsourcing/subcontractor-item/page.tsx diff --git a/frontend/app/(main)/outsourcing/subcontractor/page.tsx b/frontend/app/(main)/COMPANY_7/outsourcing/subcontractor/page.tsx similarity index 100% rename from frontend/app/(main)/outsourcing/subcontractor/page.tsx rename to frontend/app/(main)/COMPANY_7/outsourcing/subcontractor/page.tsx diff --git a/frontend/app/(main)/production/plan-management/page.tsx b/frontend/app/(main)/COMPANY_7/production/plan-management/page.tsx similarity index 100% rename from frontend/app/(main)/production/plan-management/page.tsx rename to frontend/app/(main)/COMPANY_7/production/plan-management/page.tsx diff --git a/frontend/app/(main)/production/process-info/ItemRoutingTab.tsx b/frontend/app/(main)/COMPANY_7/production/process-info/ItemRoutingTab.tsx similarity index 100% rename from frontend/app/(main)/production/process-info/ItemRoutingTab.tsx rename to frontend/app/(main)/COMPANY_7/production/process-info/ItemRoutingTab.tsx diff --git a/frontend/app/(main)/production/process-info/ProcessMasterTab.tsx b/frontend/app/(main)/COMPANY_7/production/process-info/ProcessMasterTab.tsx similarity index 100% rename from frontend/app/(main)/production/process-info/ProcessMasterTab.tsx rename to frontend/app/(main)/COMPANY_7/production/process-info/ProcessMasterTab.tsx diff --git a/frontend/app/(main)/production/process-info/ProcessWorkStandardTab.tsx b/frontend/app/(main)/COMPANY_7/production/process-info/ProcessWorkStandardTab.tsx similarity index 100% rename from frontend/app/(main)/production/process-info/ProcessWorkStandardTab.tsx rename to frontend/app/(main)/COMPANY_7/production/process-info/ProcessWorkStandardTab.tsx diff --git a/frontend/app/(main)/production/process-info/page.tsx b/frontend/app/(main)/COMPANY_7/production/process-info/page.tsx similarity index 100% rename from frontend/app/(main)/production/process-info/page.tsx rename to frontend/app/(main)/COMPANY_7/production/process-info/page.tsx diff --git a/frontend/app/(main)/production/work-instruction/WorkStandardEditModal.tsx b/frontend/app/(main)/COMPANY_7/production/work-instruction/WorkStandardEditModal.tsx similarity index 100% rename from frontend/app/(main)/production/work-instruction/WorkStandardEditModal.tsx rename to frontend/app/(main)/COMPANY_7/production/work-instruction/WorkStandardEditModal.tsx diff --git a/frontend/app/(main)/production/work-instruction/page.tsx b/frontend/app/(main)/COMPANY_7/production/work-instruction/page.tsx similarity index 100% rename from frontend/app/(main)/production/work-instruction/page.tsx rename to frontend/app/(main)/COMPANY_7/production/work-instruction/page.tsx diff --git a/frontend/app/(main)/sales/claim/page.tsx b/frontend/app/(main)/COMPANY_7/sales/claim/page.tsx similarity index 100% rename from frontend/app/(main)/sales/claim/page.tsx rename to frontend/app/(main)/COMPANY_7/sales/claim/page.tsx diff --git a/frontend/app/(main)/sales/customer/page.tsx b/frontend/app/(main)/COMPANY_7/sales/customer/page.tsx similarity index 100% rename from frontend/app/(main)/sales/customer/page.tsx rename to frontend/app/(main)/COMPANY_7/sales/customer/page.tsx diff --git a/frontend/app/(main)/sales/order/page.tsx b/frontend/app/(main)/COMPANY_7/sales/order/page.tsx similarity index 100% rename from frontend/app/(main)/sales/order/page.tsx rename to frontend/app/(main)/COMPANY_7/sales/order/page.tsx diff --git a/frontend/app/(main)/sales/sales-item/page.tsx b/frontend/app/(main)/COMPANY_7/sales/sales-item/page.tsx similarity index 100% rename from frontend/app/(main)/sales/sales-item/page.tsx rename to frontend/app/(main)/COMPANY_7/sales/sales-item/page.tsx diff --git a/frontend/app/(main)/sales/shipping-order/page.tsx b/frontend/app/(main)/COMPANY_7/sales/shipping-order/page.tsx similarity index 100% rename from frontend/app/(main)/sales/shipping-order/page.tsx rename to frontend/app/(main)/COMPANY_7/sales/shipping-order/page.tsx diff --git a/frontend/app/(main)/sales/shipping-plan/page.tsx b/frontend/app/(main)/COMPANY_7/sales/shipping-plan/page.tsx similarity index 100% rename from frontend/app/(main)/sales/shipping-plan/page.tsx rename to frontend/app/(main)/COMPANY_7/sales/shipping-plan/page.tsx diff --git a/frontend/components/layout/AdminPageRenderer.tsx b/frontend/components/layout/AdminPageRenderer.tsx index 94813685..1472dbce 100644 --- a/frontend/components/layout/AdminPageRenderer.tsx +++ b/frontend/components/layout/AdminPageRenderer.tsx @@ -5,6 +5,7 @@ import dynamic from "next/dynamic"; import { Loader2 } from "lucide-react"; import { ScreenViewPageWrapper } from "@/app/(main)/screens/[screenId]/page"; import { apiClient } from "@/lib/api/client"; +import { useAuth } from "@/hooks/useAuth"; const LoadingFallback = () => (
@@ -91,23 +92,9 @@ const ADMIN_PAGE_REGISTRY: Record> = { "/admin/automaticMng/batchmngList": dynamic(() => import("@/app/(main)/admin/automaticMng/batchmngList/page"), { ssr: false, loading: LoadingFallback }), "/admin/automaticMng/crawlingList": dynamic(() => import("@/app/(main)/admin/automaticMng/crawlingList/page"), { ssr: false, loading: LoadingFallback }), - // 설계 관리 (커스텀 페이지) - "/design/task-management": dynamic(() => import("@/app/(main)/design/task-management/page"), { ssr: false, loading: LoadingFallback }), - "/design/my-work": dynamic(() => import("@/app/(main)/design/my-work/page"), { ssr: false, loading: LoadingFallback }), - "/design/design-request": dynamic(() => import("@/app/(main)/design/design-request/page"), { ssr: false, loading: LoadingFallback }), + // 회사별 커스텀 페이지는 레지스트리에서 제거 — 회사코드 prefix로 자동 import 처리 + // (design, sales, production, logistics, equipment, outsourcing, master-data) - // 영업 관리 (커스텀 페이지) - "/sales/shipping-plan": dynamic(() => import("@/app/(main)/sales/shipping-plan/page"), { ssr: false, loading: LoadingFallback }), - "/sales/shipping-order": dynamic(() => import("@/app/(main)/sales/shipping-order/page"), { ssr: false, loading: LoadingFallback }), - - // 생산 관리 (커스텀 페이지) - "/production/work-instruction": dynamic(() => import("@/app/(main)/production/work-instruction/page"), { ssr: false, loading: LoadingFallback }), - - // 물류 관리 (커스텀 페이지) - "/logistics/material-status": dynamic(() => import("@/app/(main)/logistics/material-status/page"), { ssr: false, loading: LoadingFallback }), - - // 설계 관리 (커스텀 페이지) - "/design/change-management": dynamic(() => import("@/app/(main)/design/change-management/page"), { ssr: false, loading: LoadingFallback }), "/admin/automaticMng/exconList": dynamic(() => import("@/app/(main)/admin/automaticMng/exconList/page"), { ssr: false, loading: LoadingFallback }), "/admin/automaticMng/exCallConfList": dynamic(() => import("@/app/(main)/admin/automaticMng/exCallConfList/page"), { ssr: false, loading: LoadingFallback }), @@ -292,10 +279,34 @@ interface AdminPageRendererProps { url: string; } +// 회사별 커스텀 페이지 경로 prefix 목록 +// 이 prefix로 시작하는 URL은 회사코드 폴더에서 로드 +const COMPANY_PAGE_PREFIXES = [ + "/sales/", + "/master-data/", + "/production/", + "/equipment/", + "/logistics/", + "/outsourcing/", + "/design/", +]; + +function isCompanyPage(url: string): boolean { + return COMPANY_PAGE_PREFIXES.some((prefix) => url.startsWith(prefix)); +} + export function AdminPageRenderer({ url }: AdminPageRendererProps) { + const { user } = useAuth(); + const companyCode = user?.companyCode || user?.company_code; const cleanUrl = url.split("?")[0].split("#")[0].replace(/\/$/, ""); - console.log("[AdminPageRenderer] 렌더링:", { url, cleanUrl }); + // 회사별 커스텀 페이지: companyCode를 prefix로 붙여 경로 변환 + // 예: /sales/order → /COMPANY_7/sales/order + const resolvedUrl = (companyCode && isCompanyPage(cleanUrl)) + ? `/${companyCode}${cleanUrl}` + : cleanUrl; + + console.log("[AdminPageRenderer] 렌더링:", { url, cleanUrl, resolvedUrl, companyCode }); // 화면 할당: /screens/[id] const screensIdMatch = cleanUrl.match(/^\/screens\/(\d+)$/); @@ -318,7 +329,7 @@ export function AdminPageRenderer({ url }: AdminPageRendererProps) { return ; } - // URL 직접 입력: 레지스트리 매칭 + // URL 직접 입력: 레지스트리 매칭 (admin 페이지 등 공통 페이지) const PageComponent = useMemo(() => { return ADMIN_PAGE_REGISTRY[cleanUrl] || null; }, [cleanUrl]); @@ -340,6 +351,7 @@ export function AdminPageRenderer({ url }: AdminPageRendererProps) { } // 레지스트리/패턴에 없으면 DynamicAdminLoader가 자동 import 시도 - console.log("[AdminPageRenderer] → 자동 import 시도:", cleanUrl); - return ; + // 회사별 페이지는 resolvedUrl로 import (예: COMPANY_7/sales/order/page) + console.log("[AdminPageRenderer] → 자동 import 시도:", resolvedUrl); + return ; }