Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into mhkim-node
This commit is contained in:
commit
1e582fb971
|
|
@ -1,24 +1,7 @@
|
|||
"use client";
|
||||
|
||||
/**
|
||||
* 제어 시스템 페이지 (리다이렉트)
|
||||
* 이 페이지는 /admin/dataflow로 리다이렉트됩니다.
|
||||
*/
|
||||
|
||||
import { useEffect } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import DataFlowPage from "../page";
|
||||
|
||||
export default function NodeEditorPage() {
|
||||
const router = useRouter();
|
||||
|
||||
useEffect(() => {
|
||||
// /admin/dataflow 메인 페이지로 리다이렉트
|
||||
router.replace("/admin/systemMng/dataflow");
|
||||
}, [router]);
|
||||
|
||||
return (
|
||||
<div className="flex h-screen items-center justify-center bg-muted">
|
||||
<div className="text-muted-foreground">제어 관리 페이지로 이동중...</div>
|
||||
</div>
|
||||
);
|
||||
return <DataFlowPage />;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,7 +82,9 @@ const ADMIN_PAGE_REGISTRY: Record<string, React.ComponentType<any>> = {
|
|||
"/admin/systemMng/tableMngList": dynamic(() => import("@/app/(main)/admin/systemMng/tableMngList/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/systemMng/i18nList": dynamic(() => import("@/app/(main)/admin/systemMng/i18nList/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/systemMng/collection-managementList": dynamic(() => import("@/app/(main)/admin/systemMng/collection-managementList/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/systemMng/cascading-managementList": dynamic(() => import("@/app/(main)/admin/cascading-management/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/systemMng/dataflow": dynamic(() => import("@/app/(main)/admin/systemMng/dataflow/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/systemMng/dataflow/node-editorList": dynamic(() => import("@/app/(main)/admin/systemMng/dataflow/page"), { ssr: false, loading: LoadingFallback }),
|
||||
|
||||
// 자동화 관리
|
||||
"/admin/automaticMng/flowMgmtList": dynamic(() => import("@/app/(main)/admin/automaticMng/flowMgmtList/page"), { ssr: false, loading: LoadingFallback }),
|
||||
|
|
@ -117,13 +119,13 @@ const ADMIN_PAGE_REGISTRY: Record<string, React.ComponentType<any>> = {
|
|||
|
||||
// 기타
|
||||
"/admin/cascading-management": dynamic(() => import("@/app/(main)/admin/cascading-management/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/cascading-relations": dynamic(() => import("@/app/(main)/admin/cascading-relations/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/cascading-relations": dynamic(() => import("@/app/(main)/admin/cascading-management/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/layouts": dynamic(() => import("@/app/(main)/admin/layouts/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/templates": dynamic(() => import("@/app/(main)/admin/templates/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/monitoring": dynamic(() => import("@/app/(main)/admin/monitoring/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/standards": dynamic(() => import("@/app/(main)/admin/standards/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/flow-external-db": dynamic(() => import("@/app/(main)/admin/flow-external-db/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/auto-fill": dynamic(() => import("@/app/(main)/admin/auto-fill/page"), { ssr: false, loading: LoadingFallback }),
|
||||
"/admin/auto-fill": dynamic(() => import("@/app/(main)/admin/cascading-management/page"), { ssr: false, loading: LoadingFallback }),
|
||||
};
|
||||
|
||||
const DYNAMIC_ADMIN_IMPORTS: Record<string, () => Promise<any>> = {
|
||||
|
|
@ -135,7 +137,7 @@ const DYNAMIC_ADMIN_IMPORTS: Record<string, () => Promise<any>> = {
|
|||
"/admin/aiAssistant/chat": () => import("@/app/(main)/admin/aiAssistant/chat/page"),
|
||||
"/admin/screenMng/barcodeList": () => import("@/app/(main)/admin/screenMng/barcodeList/page"),
|
||||
"/admin/automaticMng/batchmngList/create": () => import("@/app/(main)/admin/automaticMng/batchmngList/create/page"),
|
||||
"/admin/systemMng/dataflow/node-editorList": () => import("@/app/(main)/admin/systemMng/dataflow/node-editorList/page"),
|
||||
"/admin/systemMng/dataflow/node-editorList": () => import("@/app/(main)/admin/systemMng/dataflow/page"),
|
||||
"/admin/standards/new": () => import("@/app/(main)/admin/standards/new/page"),
|
||||
};
|
||||
|
||||
|
|
@ -201,25 +203,52 @@ function DynamicAdminLoader({ url, params }: { url: string; params?: Record<stri
|
|||
const [failed, setFailed] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const staticImport = DYNAMIC_ADMIN_IMPORTS[url];
|
||||
if (staticImport) {
|
||||
staticImport()
|
||||
.then((mod) => setComponent(() => mod.default))
|
||||
.catch(() => setFailed(true));
|
||||
return;
|
||||
}
|
||||
let cancelled = false;
|
||||
|
||||
for (const { pattern, getImport, extractParams } of DYNAMIC_ADMIN_PATTERNS) {
|
||||
const match = url.match(pattern);
|
||||
if (match) {
|
||||
getImport()
|
||||
.then((mod) => setComponent(() => mod.default))
|
||||
.catch(() => setFailed(true));
|
||||
const tryLoad = async () => {
|
||||
// 1) 정적 import 목록
|
||||
const staticImport = DYNAMIC_ADMIN_IMPORTS[url];
|
||||
if (staticImport) {
|
||||
try {
|
||||
const mod = await staticImport();
|
||||
if (!cancelled) setComponent(() => mod.default);
|
||||
} catch {
|
||||
if (!cancelled) setFailed(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
setFailed(true);
|
||||
// 2) 동적 라우트 패턴 매칭
|
||||
for (const { pattern, getImport } of DYNAMIC_ADMIN_PATTERNS) {
|
||||
const match = url.match(pattern);
|
||||
if (match) {
|
||||
try {
|
||||
const mod = await getImport();
|
||||
if (!cancelled) setComponent(() => mod.default);
|
||||
} catch {
|
||||
if (!cancelled) setFailed(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 3) URL 경로 기반 자동 import 시도
|
||||
const pagePath = url.replace(/^\//, "");
|
||||
try {
|
||||
const mod = await import(
|
||||
/* webpackMode: "lazy" */
|
||||
/* webpackInclude: /\/page\.tsx$/ */
|
||||
`@/app/(main)/${pagePath}/page`
|
||||
);
|
||||
if (!cancelled) setComponent(() => mod.default);
|
||||
} catch {
|
||||
console.warn("[DynamicAdminLoader] 자동 import 실패:", url);
|
||||
if (!cancelled) setFailed(true);
|
||||
}
|
||||
};
|
||||
|
||||
tryLoad();
|
||||
return () => { cancelled = true; };
|
||||
}, [url]);
|
||||
|
||||
if (failed) return <AdminPageFallback url={url} />;
|
||||
|
|
@ -291,12 +320,7 @@ export function AdminPageRenderer({ url }: AdminPageRendererProps) {
|
|||
}
|
||||
}
|
||||
|
||||
// 정적 동적 import 목록에 있으면
|
||||
if (DYNAMIC_ADMIN_IMPORTS[cleanUrl]) {
|
||||
console.log("[AdminPageRenderer] → 동적 import:", cleanUrl);
|
||||
return <DynamicAdminLoader url={cleanUrl} />;
|
||||
}
|
||||
|
||||
console.error("[AdminPageRenderer] 미등록 URL:", cleanUrl);
|
||||
return <AdminPageFallback url={url} />;
|
||||
// 레지스트리/패턴에 없으면 DynamicAdminLoader가 자동 import 시도
|
||||
console.log("[AdminPageRenderer] → 자동 import 시도:", cleanUrl);
|
||||
return <DynamicAdminLoader url={cleanUrl} />;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue