feat: Implement process work standard routes and controller

- Added a new controller for managing process work standards, including CRUD operations for work items and routing processes.
- Introduced routes for fetching items with routing, retrieving routings with processes, and managing work items.
- Integrated the new process work standard routes into the main application file for API accessibility.
- Created a migration script for exporting data related to the new process work standard feature.
- Updated frontend components to support the new process work standard functionality, enhancing the overall user experience.
This commit is contained in:
kjs
2026-02-24 12:37:33 +09:00
parent e8c0828d91
commit 4f6d9a689d
26 changed files with 3279 additions and 4 deletions

View File

@@ -1603,6 +1603,57 @@ export const SplitPanelLayoutComponent: React.FC<SplitPanelLayoutComponentProps>
const handleAddClick = useCallback(
(panel: "left" | "right") => {
console.log("🆕 [추가모달] handleAddClick 호출:", { panel, activeTabIndex });
// screenId 기반 모달 확인
const panelConfig = panel === "left" ? componentConfig.leftPanel : componentConfig.rightPanel;
const addModalConfig = panelConfig?.addModal;
if (addModalConfig?.screenId) {
if (panel === "right" && !selectedLeftItem) {
toast({
title: "항목을 선택해주세요",
description: "좌측 패널에서 항목을 먼저 선택한 후 추가해주세요.",
variant: "destructive",
});
return;
}
const tableName = panelConfig?.tableName || "";
const urlParams: Record<string, any> = {
mode: "add",
tableName,
};
const parentData: Record<string, any> = {};
if (panel === "right" && selectedLeftItem) {
const relation = componentConfig.rightPanel?.relation;
console.log("🟢 [추가모달] selectedLeftItem:", JSON.stringify(selectedLeftItem));
console.log("🟢 [추가모달] relation:", JSON.stringify(relation));
if (relation?.keys && Array.isArray(relation.keys)) {
for (const key of relation.keys) {
console.log("🟢 [추가모달] key:", key, "leftValue:", selectedLeftItem[key.leftColumn]);
if (key.leftColumn && key.rightColumn && selectedLeftItem[key.leftColumn] != null) {
parentData[key.rightColumn] = selectedLeftItem[key.leftColumn];
}
}
}
}
console.log("🆕 [추가모달] screenId 기반 모달 열기:", { screenId: addModalConfig.screenId, tableName, parentData, parentDataStr: JSON.stringify(parentData) });
window.dispatchEvent(
new CustomEvent("openScreenModal", {
detail: {
screenId: addModalConfig.screenId,
urlParams,
splitPanelParentData: parentData,
},
}),
);
return;
}
// 기존 인라인 모달 방식
setAddModalPanel(panel);
// 우측 패널 추가 시, 좌측에서 선택된 항목의 조인 컬럼 값을 자동으로 채움