Fix UTF-8 request body handling
This commit is contained in:
@@ -37,11 +37,14 @@
|
|||||||
"지형,지층 보정 모델"
|
"지형,지층 보정 모델"
|
||||||
],
|
],
|
||||||
"format": "glb",
|
"format": "glb",
|
||||||
|
"programType": "internal",
|
||||||
"predecessors": [],
|
"predecessors": [],
|
||||||
"successors": [
|
"successors": [
|
||||||
"wayPrimal",
|
"wayPrimal",
|
||||||
"program-1782180934346"
|
"program-1782180934346",
|
||||||
|
"program-1782264403218"
|
||||||
],
|
],
|
||||||
|
"mergeGroup": "",
|
||||||
"detailGates": [
|
"detailGates": [
|
||||||
{
|
{
|
||||||
"key": "gate1",
|
"key": "gate1",
|
||||||
@@ -88,7 +91,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "노폭계획",
|
"title": "노폭계획",
|
||||||
"feature": "선형계획, 노즈, 편경사,\n구조물, 시설계획 입력",
|
"feature": "선형계획, 노즈, 편경사, 구조물,\n시설계획 입력",
|
||||||
"note": "노선의 폭, 선형, 구조물 조건 입력"
|
"note": "노선의 폭, 선형, 구조물 조건 입력"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -106,13 +109,17 @@
|
|||||||
"deliverables": [
|
"deliverables": [
|
||||||
"평면도, 횡단면도, 종평면도, 기본설계모델"
|
"평면도, 횡단면도, 종평면도, 기본설계모델"
|
||||||
],
|
],
|
||||||
|
"programType": "internal",
|
||||||
"predecessors": [
|
"predecessors": [
|
||||||
"cheonjiin"
|
"cheonjiin"
|
||||||
],
|
],
|
||||||
"successors": [
|
"successors": [
|
||||||
"program-1782180934346",
|
"program-1782180934346",
|
||||||
"program-1782201626309"
|
"program-1782201626309",
|
||||||
|
"program-1782264403218",
|
||||||
|
"program-1782264979690"
|
||||||
],
|
],
|
||||||
|
"mergeGroup": "",
|
||||||
"linkLabel": "천지인 결과물을 WayPrimal로 연계",
|
"linkLabel": "천지인 결과물을 WayPrimal로 연계",
|
||||||
"linkSourceIds": [
|
"linkSourceIds": [
|
||||||
"cheonjiin"
|
"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": [
|
"extraPrograms": [
|
||||||
{
|
{
|
||||||
"id": "program-1782201626309",
|
"id": "program-1782201626309",
|
||||||
@@ -189,9 +232,13 @@
|
|||||||
"successors": [
|
"successors": [
|
||||||
"program-1782180934346",
|
"program-1782180934346",
|
||||||
"program-1782191391645",
|
"program-1782191391645",
|
||||||
"program-1782194494893"
|
"program-1782194494893",
|
||||||
|
"program-1782264403218",
|
||||||
|
"program-1782264979690"
|
||||||
],
|
],
|
||||||
"linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계"
|
"linkLabel": "이전 프로그램 산출물을 새 프로그램 입력으로 연계",
|
||||||
|
"programType": "internal",
|
||||||
|
"mergeGroup": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "program-1782194494893",
|
"id": "program-1782194494893",
|
||||||
@@ -262,8 +309,11 @@
|
|||||||
"program-1782201626309"
|
"program-1782201626309"
|
||||||
],
|
],
|
||||||
"successors": [
|
"successors": [
|
||||||
"program-1782180934346"
|
"program-1782180934346",
|
||||||
]
|
"program-1782264403218"
|
||||||
|
],
|
||||||
|
"programType": "internal",
|
||||||
|
"mergeGroup": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "program-1782191391645",
|
"id": "program-1782191391645",
|
||||||
@@ -291,7 +341,7 @@
|
|||||||
{
|
{
|
||||||
"id": "program-1782191391645-4",
|
"id": "program-1782191391645-4",
|
||||||
"title": "교각",
|
"title": "교각",
|
||||||
"feature": "교좌면, 코핑, 기둥, 기초 형식 및 상세치수 입력",
|
"feature": "교좌면, 코핑, 기둥, 기초 형상 및 상세치수 입력",
|
||||||
"note": "교대 변수 입력\n(전환BIM - 도면 치수 입력)"
|
"note": "교대 변수 입력\n(전환BIM - 도면 치수 입력)"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -341,8 +391,90 @@
|
|||||||
"program-1782201626309"
|
"program-1782201626309"
|
||||||
],
|
],
|
||||||
"successors": [
|
"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",
|
"id": "program-1782180934346",
|
||||||
@@ -353,7 +485,7 @@
|
|||||||
"id": "program-1782180934346-1",
|
"id": "program-1782180934346-1",
|
||||||
"title": "모델병합 및 수정",
|
"title": "모델병합 및 수정",
|
||||||
"feature": "모델의 정합성 확인 및 편집\n기본기능 및 Grasshopper 사용",
|
"feature": "모델의 정합성 확인 및 편집\n기본기능 및 Grasshopper 사용",
|
||||||
"note": "Way 파일 내 도로 형상 모델 추출 시WayExport3DAppo를 사용하여 obj 모델 생성\n그 외의 구조물을 각 프로그램에서 obj 불러오기"
|
"note": "Way 파일에서 형상 모델 추출 시WayExport3DAppo를 사용하여 obj 모델 생성\n그 외의 구조물 각 프로그램에서 obj 불러오기"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "program-1782180934346-2",
|
"id": "program-1782180934346-2",
|
||||||
@@ -363,7 +495,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "program-1782180934346-3",
|
"id": "program-1782180934346-3",
|
||||||
"title": "3단계",
|
"title": "변환포맷",
|
||||||
"feature": "wpbifc 포맷으로 저장",
|
"feature": "wpbifc 포맷으로 저장",
|
||||||
"note": "설치된 Plugin에서 wbpifc 포맷으로 저장"
|
"note": "설치된 Plugin에서 wbpifc 포맷으로 저장"
|
||||||
},
|
},
|
||||||
@@ -417,10 +549,52 @@
|
|||||||
"wayPrimal",
|
"wayPrimal",
|
||||||
"program-1782201626309"
|
"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": {},
|
"programStates": {},
|
||||||
"updatedAt": "2026-06-23T08:50:22.594Z"
|
"updatedAt": "2026-06-24T23:37:33.312Z"
|
||||||
}
|
}
|
||||||
BIN
data/flow.db
BIN
data/flow.db
Binary file not shown.
@@ -92,17 +92,19 @@ async function writeDatabase(data) {
|
|||||||
|
|
||||||
function readRequestBody(request) {
|
function readRequestBody(request) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let body = '';
|
const chunks = [];
|
||||||
|
let bodyLength = 0;
|
||||||
|
|
||||||
request.on('data', (chunk) => {
|
request.on('data', (chunk) => {
|
||||||
body += chunk;
|
chunks.push(chunk);
|
||||||
if (body.length > 5_000_000) {
|
bodyLength += chunk.length;
|
||||||
|
if (bodyLength > 5_000_000) {
|
||||||
reject(new Error('Request body is too large'));
|
reject(new Error('Request body is too large'));
|
||||||
request.destroy();
|
request.destroy();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
request.on('end', () => resolve(body));
|
request.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
||||||
request.on('error', reject);
|
request.on('error', reject);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user