feat: [공정관리] parent_id 기반 트리 구조 — processGroup 제거, parentId/children 도입
This commit is contained in:
@@ -289,18 +289,26 @@ export default function WorkerScreen() {
|
||||
return processListCache.filter((p) => p.status === '사용중');
|
||||
}, [processListCache]);
|
||||
|
||||
// 그룹별 탭 구성 (process_group 기준, 없으면 공정명 사용)
|
||||
// 그룹별 탭 구성 (parent_id 기반 트리 구조)
|
||||
const groupedTabs = useMemo(() => {
|
||||
const groupMap = new Map<string, Process[]>();
|
||||
|
||||
// 루트 공정 기준 그룹 구성
|
||||
activeProcesses.forEach((p) => {
|
||||
const group = p.processGroup || p.processName;
|
||||
if (p.parentId) return; // 자식은 건너뜀
|
||||
|
||||
const group = p.processName;
|
||||
if (!groupMap.has(group)) groupMap.set(group, []);
|
||||
groupMap.get(group)!.push(p);
|
||||
|
||||
// 자식 공정 추가
|
||||
const children = activeProcesses.filter((c) => c.parentId === p.id);
|
||||
children.forEach((c) => groupMap.get(group)!.push(c));
|
||||
});
|
||||
|
||||
return Array.from(groupMap.entries()).map(([group, processes]) => ({
|
||||
group,
|
||||
processes,
|
||||
// 그룹 내 첫 번째 공정 ID를 탭 value로 사용
|
||||
defaultProcessId: processes[0].id,
|
||||
}));
|
||||
}, [activeProcesses]);
|
||||
@@ -315,8 +323,9 @@ export default function WorkerScreen() {
|
||||
const activeGroup = useMemo(() => {
|
||||
const process = processListCache.find((p) => p.id === activeTab);
|
||||
if (!process) return null;
|
||||
const group = process.processGroup || process.processName;
|
||||
return groupedTabs.find((g) => g.group === group) || null;
|
||||
// 자식이면 부모 공정명, 루트면 자기 공정명
|
||||
const groupName = process.parentProcessName || process.processName;
|
||||
return groupedTabs.find((g) => g.group === groupName) || null;
|
||||
}, [activeTab, processListCache, groupedTabs]);
|
||||
|
||||
// 공정 목록 로드 후 첫 번째 그룹을 기본 선택
|
||||
|
||||
Reference in New Issue
Block a user