# LNG선 생산관리 기반 Web Digital Twin 구축

**Educational Web-based Digital Twin Prototype | 2026-09-16**

## 1. 추진 배경
조선 생산관리의 일정표와 3D 형상이 분리되면 작업자가 특정 부품의 상태와 지연 영향을 함께 파악하기 어렵다. 본 프로젝트는 교육용 LNG선 형상에 객체 ID를 부여하고 생산 데이터·일정·시뮬레이션을 연결하는 방법을 검증한다.

## 2. 프로젝트 목적
QR 또는 URL로 접속하여 선박을 조작하고, 객체별 생산정보를 확인하고, 생산 차질이 후속 공정과 인도일에 미치는 영향을 설명할 수 있는 웹 프로토타입을 구축한다.

## 3. Digital Twin 개념
물리적 개념을 디지털 객체로 표현하고 Object ID로 공정 데이터와 연결한다. 이 프로젝트는 실제 물리 자산의 실시간 양방향 동기화가 없는 교육용 Web-based Digital Twin Prototype이다. 상용 디지털 트윈과 구분한다.

## 4. 프로젝트 범위
단일 LNG선, 23개 데이터 객체, 19개 물리 개념 그룹, 8개 일정 의존관계, 3개 What-if 시나리오를 구현했다. 기본 한국어 UI와 영문 객체명·ID를 제공한다. 실제 한화오션 CAD·공정 일정·기업 내부 데이터는 포함하지 않는다.

## 5. LNG Carrier 3D Model
곡면 선체와 선수·선미, 중앙 4개 막형 화물구역, 선미 거주구·선교, 배관·매니폴드, 구명정, 레이더·마스트, 추진부를 절차적으로 모델링했다. 344개 mesh, 36,228개 삼각형이며 GLB로도 제공한다. 치수와 내부 배치는 교육용 개념이다. Three.js WebGL을 우선 사용하며 WebGL이 없는 환경에서는 동일한 3D 기하구조와 Raycaster를 사용하는 SVG 호환 모드로 선택·회전·확대를 유지한다.

## 6. Object Hierarchy
L1은 LNG-001, L2는 선수·선미·선체·화물구역·기관실·거주구·갑판·배관·전기·통합시험·시운전·인도, L3는 4개 탱크·추진·발전·선교·공조·구명·소화배관이다. 계층 목록·3D·정보 패널이 같은 selected ID를 공유한다. 공정 객체인 TEST/SEA/DEL은 전체 선박에 연결한다.

## 7. 데이터 구조
각 객체에 objectId, parentId, hierarchyLevel, name, category, process, progress, plannedStart, plannedFinish, actualStart, expectedFinish, status, location, delayDays, description을 저장한다. 시뮬레이션에는 expectedStart를 확장했다. 원본 JSON 세 파일을 보존하고, 별도 scheduleProfiles.json에 시연용 변경사항만 정의했다. 중복 ID, 부모 누락, 잘못된 계층·날짜·공정률, 의존성 누락·순환을 검증한다.

## 8. 시스템 Architecture
데이터 계층(JSON) → 계산 계층(검증·일정·KPI) → 단일 React 상태 → 표현 계층(계층·3D·상세·KPI·간트·시뮬레이션·로그)으로 구성한다. UI 변경과 시뮬레이션은 동일 상태를 갱신하며 중복 객체 데이터를 개별 컴포넌트에 하드코딩하지 않는다. React·TypeScript·Three.js·Vite 기반 Vinext를 사용한다.

## 9. Production Dashboard
전체 공정률, 객체 수, 진행·주의·지연·완료·계획 상태별 수, 계획 인도일·예상 인도일·지연 일수를 데이터에서 계산한다. L2 작업의 계획 기간을 가중치로 사용하는 교육용 공정률은 시연 초기 49.9%이다. 최상위와 자식을 중복 집계하지 않는다. 공정률은 실제 작업량 변화 없이 일정 지연만으로 감소시키지 않는다.

## 10. Schedule Visualization
계획 막대와 예상 막대를 나란히 표시한다. 일정표에서 공정·상태·예상 종료·지연을 확인하고 행을 선택해 원래 계획 시작·종료 및 실제/예상 일정을 상세 패널에서 확인할 수 있다. 시뮬레이션 후 예상 막대가 새 날짜로 이동·연장된다. 주요 L2 또는 전체 객체를 전환한다.

## 11. What-if Simulation
| 시나리오 | 직접 지연 | 초기 인도 예상 | 실행 후 인도 예상 | 추가 인도 지연 |
|---|---:|---|---|---:|
| Heavy Rain | 3일 | 2027-01-17 | 2027-01-19 | 2일 |
| Crane Breakdown | 2일 | 2027-01-17 | 2027-01-18 | 1일 |
| Material Delay | 5일 | 2027-01-17 | 2027-01-21 | 4일 |

위 결과는 각 시나리오를 초기화 후 1회 실행한 시연 프로필의 계산값이다. 버튼을 반복 실행하면 누적되며 완료 객체는 제외한다. 원본 데이터에서는 시험 전 여유로 인해 단일 시나리오가 인도일에 영향을 주지 않을 수 있다.

## 12. Dependency Logic
FS는 선행 종료 다음 날 후속 시작으로 정의하며 날짜는 UTC 달력일이다. DAG 위상 정렬로 계산하고, 복수 선행 중 가장 늦은 날짜를 사용한다. 폭우 예제에서 HULL 종료 10월 18일 → 21일, PIPE/ELEC 종료 12월 5일 → 8일, TEST 종료 1월 7일 → 9일, SEA 종료 1월 16일 → 18일, 인도 1월 17일 → 19일로 전달된다. 시험 전 여유 1일이 흡수된다. 원본에는 배관·전기 시작이 선체 종료보다 앞서는 2개 FS 충돌이 있어 이를 고치지 않고 기준 편차로 보존하며 추가 지연만 전달한다. 엄밀한 FS 시연은 별도 프로필에서 수행한다.

## 13. 구현 결과
3D 조작, mesh 선택과 계층 동기화, ID·이름 검색, 전체 상세정보, KPI, 간트, 3개 시나리오, 의존성 전파, 이벤트 로그, 초기화, 반응형, QR 생성, JSON 내보내기, GLB 파일을 구현했다. TypeScript 검사와 production build가 성공했다. 단위·회귀 검증 20개를 통과했다. 브라우저에서 호환 3D의 객체 직접 선택·회전·확대 및 검색·시뮬레이션 3종·초기화를 확인했다. 390px 화면의 수평 넘침 없음과 폭우 시뮬레이션 동작을 확인했다. 검증 환경의 WebGL 비활성화로 GPU 모드 및 실물 모바일 멀티터치 성능은 미검증이다. WebMCP는 환경 미지원으로 호출 검증하지 못했다.

## 14. 기대효과
복잡한 객체 ID와 생산관리 표를 공간 정보와 연결해 설명할 수 있다. 특정 작업의 지연과 전체 인도 지연이 항상 같지 않음을 여유 일정 예제로 보여준다. 이는 조선 생산관리·DX 학습과 구현 역량을 시연하는 포트폴리오에 활용할 수 있다. 실제 업무시간 절감률이나 생산성 향상률은 측정하지 않았다.

## 15. 한계점
교육용 가상 데이터이며 특정 선박의 디지털 복제본이 아니다. 선박 안정성·선급·구조 검증용이 아니다. 제공된 8개 의존관계만 계산하므로 계층상 자식의 지연이 부모 일정에 자동 전파되지는 않는다. 자원 용량·휴일·교대·비용·현장 실측·상용 인증은 포함하지 않는다. 상태는 브라우저 메모리에서만 유지되며 새로고침하면 초기화된다. JSON 다운로드로 현재 결과를 보존할 수 있다.

## 16. 향후 발전방향
실제 사용 허가가 있는 MES·ERP·IoT 데이터 연결, 데이터 계약과 실측 시점 관리, 공수 기반 가중치, 실제 캘린더, 자원 제약 계획, 승인된 실선 모델, 변경 이력 DB, 다선박·역할별 접근, AI 지연 예측, 예지보전, AR/VR은 향후 확장 항목이다. 현재 구현으로 주장하지 않는다.

## 공개 참고와 고지
공개 외형 참고: [Hanwha Energy & Maritime Solutions](https://www.hanwha.com/industries/energy-and-maritime-solutions.do). 모든 기하구조는 이 프로젝트에서 생성한 개념 모델이며 공식 로고·내부 CAD를 사용하지 않았다.

Educational LNG Carrier Digital Twin Prototype. This is not an official Hanwha Ocean digital model and does not contain proprietary shipyard data.


## 공정률 직접 조정 업데이트

객체 정보에 0~100 정수 입력, 슬라이더, 적용 버튼을 추가했습니다. 주요 공정(L2) 수정은 계획 기간 가중 평균을 통해 전체 공정률에 반영되고, 하위 설비(L3)는 원본 모델에 따라 별도의 개별 기록으로 관리합니다. L3에서 상위 L2 편집으로 바로 이동할 수 있습니다. 100%는 완료 상태가 되며 후속 지연 대상에서 제외됩니다. 공정률만 변경해 예상 종료일이나 실제 날짜를 임의로 변경하지 않습니다.

값은 현재 페이지에서만 유지되며 새로고침·일정 전환·초기화하면 원래 값으로 돌아갑니다. 변경 기록과 결과 JSON에 수정 내역을 포함합니다.

자동 회귀 테스트는 20개 통과했고, 브라우저에서 101 입력 차단과 주 선체 78% → 90%, 전체 49.9% → 51.8% 갱신을 확인했습니다. 이후 미리보기 접근 정책 제한으로 추가 브라우저 캡처는 중단했습니다. 초기화는 자동 테스트로 검증했습니다. 새 안내서는 확보된 변경 전후 실제 화면을 참고해 제작한 그림 설명서입니다.
