diff --git a/data/flow-db.json b/data/flow-db.json index 35f94ef..cccef3e 100644 --- a/data/flow-db.json +++ b/data/flow-db.json @@ -37,11 +37,14 @@ "지형,지층 보정 모델" ], "format": "glb", + "programType": "internal", "predecessors": [], "successors": [ "wayPrimal", - "program-1782180934346" + "program-1782180934346", + "program-1782264403218" ], + "mergeGroup": "", "detailGates": [ { "key": "gate1", @@ -88,7 +91,7 @@ }, { "title": "노폭계획", - "feature": "선형계획, 노즈, 편경사,\n구조물, 시설계획 입력", + "feature": "선형계획, 노즈, 편경사, 구조물,\n시설계획 입력", "note": "노선의 폭, 선형, 구조물 조건 입력" }, { @@ -106,13 +109,17 @@ "deliverables": [ "평면도, 횡단면도, 종평면도, 기본설계모델" ], + "programType": "internal", "predecessors": [ "cheonjiin" ], "successors": [ "program-1782180934346", - "program-1782201626309" + "program-1782201626309", + "program-1782264403218", + "program-1782264979690" ], + "mergeGroup": "", "linkLabel": "천지인 결과물을 WayPrimal로 연계", "linkSourceIds": [ "cheonjiin" @@ -166,6 +173,42 @@ } ] }, + "comparisons": [ + { + "id": "comparison-program-1782180934346__program-1782264403218", + "title": "", + "leftProgramId": "program-1782264403218", + "rightProgramId": "program-1782180934346", + "stepMatches": [ + { + "id": "step-0", + "leftStepIndex": "0", + "rightStepIndex": "0", + "reason": "현재 Visual Script 기능인 [redbold]GrassHopper[/redbold]로 작성하여 작업하는 단계들은 EG-BIM Modeler에서 구현 불가능함" + }, + { + "id": "step-1", + "leftStepIndex": "1", + "rightStepIndex": "1", + "reason": "사내에서 개발한 [redbold]Plugin[/redbold]으로 Rhino에서 도로에 대한 속성정보(WBS)는 선택하여 입력 가능하며, 그 외는 사용자가 직접 입력해야함\nEG-BIM Modeler에서도 사용자가 직접 입력하는 기능은 있음" + }, + { + "id": "step-2", + "leftStepIndex": "2", + "rightStepIndex": "2", + "reason": "위의 Plugin에는 [redbold]wpbifc로 저장하는 기능[/redbold]도 있어서 wpbifc로 저장하지만 EG-BIM Modeler에서는 obj와 hmeg 저장 지원" + }, + { + "id": "step-3", + "leftStepIndex": "3", + "rightStepIndex": "3", + "reason": "PJT 제출 파일은 작업원본과 ifc 파일\n위의 2,3단계에서 변환포맷(wpbifc)을\n사내에서 개발한 [redbold]DataChange[/redbold] 프로그램으로\n ifc로 변환하여 제출 가능\nEG-BIM Modeler는 변환포맷(wpbifc)\n지원하지 않음" + } + ], + "note": "EG-BIM Modeler은 모델병합 및 수정, 속성정보, 변환포맷, 중립포맷 생성에서 기능 구현 또는 자동화 범위에 한계가 있어 Rhino의 기능 보완이 필요합니다.\n\n주요 사유\n- 현재 Visual Script 기능인 [redbold]GrassHopper[/redbold]로 작업하는 단계들은 EG-BIM Modeler에서 구현 불가능함\n- 사내에서 개발한 [redbold]Plugin[/redbold]으로 Rhino에서 도로에 대한 속성정보(WBS)는 선택하여 입력 가능하며, 그 외는 사용자가 직접 입력해야함\n (EG-BIM Modeler에서도 사용자가 직접 입력하는 기능은 있음)\n- 위의 Plugin에는 [redbold]wpbifc[/redbold]로 저장하는 기능도 있음 (EG-BIM Modeler에서는 obj와 hmeg 저장만 지원)\n\n따라서 현재 업무 흐름에서는 해당 구간을 Rhino으로 연계하여 결과 품질과 작업 연속성을 확보하는 것이 적절합니다.", + "updatedAt": "2026-06-24T05:30:17.265Z" + } + ], "extraPrograms": [ { "id": "program-1782201626309", @@ -189,9 +232,13 @@ "successors": [ "program-1782180934346", "program-1782191391645", - "program-1782194494893" + "program-1782194494893", + "program-1782264403218", + "program-1782264979690" ], - "linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계" + "linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계", + "programType": "internal", + "mergeGroup": "" }, { "id": "program-1782194494893", @@ -262,8 +309,11 @@ "program-1782201626309" ], "successors": [ - "program-1782180934346" - ] + "program-1782180934346", + "program-1782264403218" + ], + "programType": "internal", + "mergeGroup": "" }, { "id": "program-1782191391645", @@ -291,7 +341,7 @@ { "id": "program-1782191391645-4", "title": "교각", - "feature": "교좌면, 코핑, 기둥, 기초 형식 및 상세치수 입력", + "feature": "교좌면, 코핑, 기둥, 기초 형상 및 상세치수 입력", "note": "교대 변수 입력\n(전환BIM - 도면 치수 입력)" } ], @@ -341,8 +391,90 @@ "program-1782201626309" ], "successors": [ - "program-1782180934346" - ] + "program-1782180934346", + "program-1782264403218" + ], + "programType": "internal", + "mergeGroup": "" + }, + { + "id": "program-1782264979690", + "name": "WayDraw", + "description": "새 프로그램 업무 플로우", + "steps": [ + { + "id": "program-1782264979690-1", + "title": "1단계", + "feature": "주요 기능 입력", + "note": "단계 설명을 입력합니다." + }, + { + "id": "program-1782264979690-2", + "title": "2단계", + "feature": "주요 기능 입력", + "note": "단계 설명을 입력합니다." + } + ], + "format": "", + "deliverables": [ + "grm, dwg, dfx" + ], + "programType": "internal", + "predecessors": [ + "program-1782201626309", + "wayPrimal" + ], + "successors": [ + "program-1782264980554" + ], + "linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계", + "mergeGroup": "" + }, + { + "id": "program-1782264403218", + "name": "EG-BIM Modeler", + "description": "새 프로그램 업무 플로우", + "steps": [ + { + "id": "program-1782264403218-1", + "title": "모델병합 및 수정", + "feature": "기본기능만 가능", + "note": "" + }, + { + "id": "program-1782264403218-2", + "title": "속성정보", + "feature": "탬플릿만 불러오기 가능하며, 사용자가 입력해야함", + "note": "" + }, + { + "id": "program-1782264403218-1782264427883-3", + "title": "변환포맷", + "feature": "obj, hmeg로만 저장 가능", + "note": "" + }, + { + "id": "program-1782264403218-1782264428058-4", + "title": "중립포맷 생성", + "feature": "기능 없음", + "note": "" + } + ], + "format": "", + "deliverables": [ + "성과물" + ], + "programType": "internal", + "predecessors": [ + "cheonjiin", + "program-1782201626309", + "program-1782191391645", + "wayPrimal", + "program-1782194494893" + ], + "successors": [], + "linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계", + "mergeGroup": "program-1782264403218" }, { "id": "program-1782180934346", @@ -353,7 +485,7 @@ "id": "program-1782180934346-1", "title": "모델병합 및 수정", "feature": "모델의 정합성 확인 및 편집\n기본기능 및 Grasshopper 사용", - "note": "Way 파일 내 도로 형상 모델 추출 시WayExport3DAppo를 사용하여 obj 모델 생성\n그 외의 구조물을 각 프로그램에서 obj 불러오기" + "note": "Way 파일에서 형상 모델 추출 시WayExport3DAppo를 사용하여 obj 모델 생성\n그 외의 구조물 각 프로그램에서 obj 불러오기" }, { "id": "program-1782180934346-2", @@ -363,7 +495,7 @@ }, { "id": "program-1782180934346-3", - "title": "3단계", + "title": "변환포맷", "feature": "wpbifc 포맷으로 저장", "note": "설치된 Plugin에서 wbpifc 포맷으로 저장" }, @@ -417,10 +549,52 @@ "wayPrimal", "program-1782201626309" ], - "successors": [] + "successors": [], + "programType": "commercial", + "mergeGroup": "program-1782264403218" + }, + { + "id": "program-1782264980554", + "name": "EG-BIM Drawer", + "description": "새 프로그램 업무 플로우", + "steps": [ + { + "id": "program-1782264980554-1", + "title": "1단계", + "feature": "주요 기능 입력", + "note": "단계 설명을 입력합니다." + }, + { + "id": "program-1782264980554-2", + "title": "2단계", + "feature": "주요 기능 입력", + "note": "단계 설명을 입력합니다." + } + ], + "format": "", + "deliverables": [ + "" + ], + "programType": "internal", + "predecessors": [ + "program-1782264979690" + ], + "successors": [], + "linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계", + "mergeGroup": "", + "detailGates": [ + { + "key": "gate1", + "targetProgramId": "program-1782264980554", + "stepId": "program-1782264980554-1", + "question": "변경?", + "yes": "예: 계 재진입", + "no": "아니오: 변경사항 없음" + } + ] } ] }, "programStates": {}, - "updatedAt": "2026-06-23T08:50:22.594Z" + "updatedAt": "2026-06-24T23:37:33.312Z" } \ No newline at end of file diff --git a/data/flow.db b/data/flow.db index 2c512b7..2ab3067 100644 Binary files a/data/flow.db and b/data/flow.db differ diff --git a/vite.config.js b/vite.config.js index 2b6410a..8aba1c2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -92,17 +92,19 @@ async function writeDatabase(data) { function readRequestBody(request) { return new Promise((resolve, reject) => { - let body = ''; + const chunks = []; + let bodyLength = 0; request.on('data', (chunk) => { - body += chunk; - if (body.length > 5_000_000) { + chunks.push(chunk); + bodyLength += chunk.length; + if (bodyLength > 5_000_000) { reject(new Error('Request body is too large')); request.destroy(); } }); - request.on('end', () => resolve(body)); + request.on('end', () => resolve(Buffer.concat(chunks).toString('utf8'))); request.on('error', reject); }); }