한 번 입력한 선박 데이터가 여러 계산서와 보고서에 흐르게 하려면 ‘중앙 DB’라는 말만으로는 부족하다. 무엇을 하나의 객체로 볼지, 어느 시스템의 값을 공식으로 인정할지, Excel의 어느 셀이 어떤 의미를 갖는지부터 정해야 한다. 기술의 핵심은 데이터 저장보다 업무 사이의 계약을 만드는 데 있다.

“한 번 입력”이라는 말의 실제 의미

데이터를 한 번만 입력하자는 말은 쉽다. 그러나 선박 프로젝트에서 같은 장비도 단계에 따라 여러 값을 갖는다. 개념설계에서는 과거선 추정 중량을 사용하고, 기본설계에서는 공급사 예비 데이터가 들어오며, 상세설계에서는 승인 도면의 확정값이 반영된다. 설치 후에는 실제 계근값이나 현장 변경까지 추가될 수 있다.

따라서 한 번 입력한다는 것은 값이 영원히 하나라는 뜻이 아니다. 각 단계의 공식 값과 그 근거를 한곳에서 관리하고, 필요한 계산서가 올바른 버전을 참조하게 한다는 뜻이다. 중량 계산서는 설계 중량을, 구매 문서는 계약 중량을, 생산 계획은 실제 운반 중량을 사용할 수 있다. 서로 다른 값을 허용하되 그 차이와 책임을 명시해야 한다.

Equipment P-2101Central Cooling Water Pump · 공식 객체 예시
Object IDEQ-P-2101 · 프로젝트 전 영역에서 유지되는 식별자
설계 중량12.6 t · Basic Design Rev. B
계약 중량13.1 t · Vendor Datasheet Rev. 03
설치 위치Engine Room · Deck 02 · Frame 88–92
무게중심LCG 74.82 m · TCG -1.20 m · VCG 8.45 m
책임 원본Vendor Data: 구매팀 · 위치: 3D 모델 · 상태: PMT
연결 문서Equipment List · Weight Report · Foundation Drawing · Lifting Plan
검토 상태Vendor Confirmed · Weight Review Pending
그림 1. 중앙 객체는 값을 하나로 평평하게 만들지 않는다. 단계별 값, 책임 원본, 연결 문서와 상태를 함께 관리해 어떤 계산이 어느 값을 사용해야 하는지 분명히 한다.

선박 데이터 모델은 형상보다 관계에서 시작한다

중앙 선박 모델이라고 하면 흔히 3D 형상을 먼저 떠올린다. 물론 형상은 중요하다. 그러나 Excel과 업무 프로세스를 연결하려면 관계가 더 중요하다. 장비는 어느 구획에 놓이고, 어떤 시스템에 속하며, 어떤 지지 구조와 전원을 사용하고, 어느 구매 패키지와 연결되는가. 탱크는 어느 Deck과 Frame 사이에 있고, 어떤 용액을 담으며, 어떤 로딩 조건에서 사용되는가.

이 관계를 객체 그래프로 표현하면 같은 데이터가 여러 업무에 재사용된다. 구획의 면적과 체적은 도장·보온·HVAC·소방·견적 계산으로 흐를 수 있다. 장비의 중량과 위치는 중량관리, 지지 구조, 운반과 리프팅 계획에 연결된다. 배관 라인의 구경과 재질은 물량, 구매, 제작과 시험 기록으로 이어진다.

Vessel·Project선종, 주요 제원, 계약 조건, 설계 단계와 기준 개정
Spatial StructureZone · Deck · Compartment · Tank · Coordinate System
Physical ObjectsEquipment · Pipe · Cable · Structure · Outfit Item
Engineering Properties중량·재질·용량·압력·온도·등급·상태
Documents & Models도면, 3D 모델, 데이터시트, 계산서, 보고서
Process & Governance작성·검토·승인, 구매·제작·설치 상태, 변경 이력
Ship Engineering Knowledge Graph객체와 문서, 계산, 책임과 상태를 연결하는 관계 계층
그림 2. 선박 데이터 모델은 객체 목록이 아니라 공간·시스템·문서·업무 상태가 연결된 관계망이다.

Excel과 중앙 모델 사이에는 ‘Workbook Contract’가 필요하다

Excel을 데이터 모델에 연결할 때 가장 위험한 방식은 특정 셀에 값을 밀어 넣는 스크립트를 급하게 만드는 것이다. 파일의 열이 하나 추가되거나 시트가 복사되면 연결이 깨지고, 누가 왜 그 셀을 사용했는지 설명하기 어렵다.

대신 계산서마다 Workbook Contract를 정의해야 한다. 이는 계산서가 어떤 입력을 요구하고, 어떤 결과를 내며, 어느 단위와 조건을 사용하는지 명시한 계약이다. 가능한 경우 Named Range를 사용하고, 그렇지 않다면 셀 주소와 주변 라벨, 수식 의존성을 함께 저장한다. 계약에는 필수 입력, 허용 범위, 빈 값의 의미, 공식 원본, 변환 규칙, 계산 버전이 포함되어야 한다.

셀 매핑의 예

Weight_Control.xlsx · Equipment_Input!D18을 단순 주소로 저장하지 않음. `Equipment.Weight.Design`, 단위 `t`, Object ID `EQ-P-2101`, Source `Vendor Datasheet Rev.03`, 변환 `kg→t`, 상태 `검토 대기`까지 하나의 입력 계약으로 관리함.

01Workbook 분석입력·출력·수식·Named Range·외부 링크·VBA와 보호 영역을 파악함.
02의미 매핑셀을 장비 중량, 구획 체적, 탱크 용량 같은 도메인 속성에 연결함.
03데이터 주입공식 원본과 단위 변환 규칙을 적용해 지정 입력에 값을 공급함.
04결정론적 실행원본 Excel 또는 호환 계산 엔진에서 수식을 동일하게 실행함.
05결과 등록출력값과 입력 스냅샷, 계산 버전, 오류·경고를 중앙 이력에 저장함.
06차이 승인이전 개정과 결과 차이를 검토자가 확인한 뒤 공식 상태로 전환함.
그림 3. Workbook Contract는 기존 계산서를 파괴하지 않고 중앙 데이터와 안전하게 연결하는 인터페이스다.

모든 값을 중앙에서 소유하려 하지 말 것

중앙 데이터 계층은 데이터의 독점자가 아니라 교통정리자여야 한다. 장비의 공급사 확정 중량은 구매·Vendor Document 시스템이 책임질 수 있고, 설치 위치는 3D 모델이, 생산 상태는 MES나 현장 시스템이 책임질 수 있다. 중앙 계층은 각 속성의 책임 원본과 마지막 개정을 기억하고 필요한 곳에 전달한다.

속성별 책임을 나누면 데이터 충돌도 더 정확히 다룰 수 있다. 3D 모델의 장비 중량과 공급사 데이터시트의 중량이 다를 때 시스템이 임의로 하나를 선택해서는 안 된다. “모델 값은 12.6톤, Vendor 값은 13.1톤이며 구매팀이 책임 원본”이라고 보여주고, 모델 갱신 또는 예외 승인 절차를 제안해야 한다.

하나의 DB가 모든 값을 소유함

원본 시스템과 중앙 DB 중 어느 값이 최신인지 다시 다툼
동기화 주기와 실패가 새로운 불일치를 만듦
업무 책임자가 중앙 시스템 수정 권한을 기다림
프로젝트별 예외가 공통 스키마를 빠르게 복잡하게 만듦

속성별 책임 원본을 연결함

각 값의 공식 Source of Record를 지정함
중앙 계층은 식별자·의미·버전·관계를 관리함
충돌을 숨기지 않고 차이와 책임자를 보여줌
프로젝트별 확장은 Domain Pack과 매핑으로 흡수함
그림 4. 연합형 구조는 통합을 포기하는 방식이 아니다. 오히려 어느 시스템이 어떤 사실에 책임지는지를 더 엄격하게 정의하는 방식이다.

펌프 중량 변경이 흐르는 실제 경로

앞선 펌프 사례를 연결된 구조에서 다시 보자. 공급사 데이터시트 Rev.03이 승인되면 문서 파서가 장비 태그와 중량, 무게중심 후보를 읽는다. 시스템은 기존 공식 값과 차이를 계산하고 구매 담당자에게 확인을 요청한다. 담당자가 승인하면 `Equipment P-2101`의 계약 중량과 근거 문서가 갱신된다.

그다음 영향 그래프가 움직인다. 중량 관리 계산서의 입력 셀, 장비 기초 검토서, 리프팅 계획과 경하중량 보고서가 영향 후보로 표시된다. 각 계산은 자동으로 샌드박스에서 다시 실행되지만 공식 결과를 바로 덮어쓰지 않는다. 이전 개정과의 차이, 허용 마진, 오류와 경고를 검토자에게 보여준 후 승인된 결과만 프로젝트 기준선에 반영한다.

Vendor 문서 수신Rev.03 데이터시트에서 태그·중량·CG 후보를 추출함.
차이 감지기존 12.6 t와 신규 13.1 t, VCG 차이를 표시함.
책임자 확인구매 담당자가 공식 값과 적용 시점을 승인함.
영향 탐색중량표·기초·리프팅·보고서의 연결을 따라 재검토 대상을 찾음.
샌드박스 재계산원본을 덮지 않고 새 입력으로 계산 결과와 경고를 생성함.
검토·기준선 반영엔지니어가 차이를 승인하면 개정과 감사 이력을 고정함.
그림 5. 자동화의 핵심은 “새 값으로 덮어쓰기”가 아니라, 변경을 감지하고 영향·계산·승인을 하나의 트랜잭션으로 묶는 것이다.

API보다 먼저 필요한 것은 단위와 상태의 표준화다

연동 프로젝트가 기술적으로 실패하는 이유는 API가 없어서가 아니라 의미가 맞지 않아서인 경우가 많다. 같은 중량도 Estimated, Design, Vendor, Installed Weight가 다르고, 좌표 기준과 부호가 다르며, 상태 값의 정의도 부서마다 다르다. 이 차이를 해결하지 않은 채 API를 연결하면 오류가 더 빠르게 이동할 뿐이다.

첫 스키마는 작아야 한다. 객체 ID, 이름, 분류, 단위, 값의 종류, 책임 원본, 개정, 유효 시점, 신뢰 상태 정도로 시작할 수 있다. 모든 속성을 처음부터 표준화하려 하지 말고, 선택한 업무 흐름에서 실제로 필요한 값만 정의한다. 프로젝트가 늘어나면서 용어 사전과 매핑 규칙을 축적하는 편이 현실적이다.

웹 기반 계산 워크벤치가 가져야 할 화면

사용자 화면도 데이터 구조를 그대로 반영해야 한다. 왼쪽에는 선박 객체와 도면을, 가운데에는 기존 Excel과 동일한 계산 흐름을, 오른쪽에는 출처·변경·검토 상태를 보여주는 구성이 적합하다. 사용자는 계산식을 수정할 수 있지만, 변경은 버전으로 남고 기준 케이스와 자동 비교된다.

중요한 기능은 AI 채팅창이 아니라 “이 셀의 값은 어디서 왔는가”, “이 결과가 이전 개정과 왜 달라졌는가”, “승인하면 어떤 문서가 영향을 받는가”를 한두 번의 클릭으로 확인하는 것이다. AI는 이 질문을 자연어로 받아 연결된 데이터를 탐색하고, 사용자가 직접 근거 영역과 계산 경로를 열어볼 수 있게 해야 한다.

왜 경하중량이 0.5 t 증가했는가?

P-2101의 Vendor Confirmed Weight가 12.6 t에서 13.1 t로 변경되었음. 중량관리 계산서에는 +0.5 t가 반영되었으나 장비 기초 검토서는 아직 Rev.B 입력을 사용하고 있어 재계산이 필요함. 자동 반영 전 구조 담당자의 확인이 요구됨.
Vendor Datasheet Rev.03Page 4 · Operating Weight
Weight Control WorkbookEquipment_Input!D18
Foundation Check Rev.BInput Sheet · P-2101
그림 6. 좋은 AI 인터페이스는 답만 말하지 않는다. 값의 출처, 계산서의 셀, 아직 갱신되지 않은 문서와 다음 승인자를 함께 보여준다.

중앙 모델은 데이터 저장소가 아니라 신뢰의 경로다

선박 데이터와 Excel을 연결하는 일은 단순한 자동 입력 프로젝트가 아니다. 객체의 의미, 값의 단계, 책임 원본, 계산 계약과 승인 절차를 함께 설계해야 한다. 이 구조가 갖춰지면 조선소가 오랫동안 축적한 Excel은 더 이상 고립된 파일이 아니라 재사용 가능한 계산 서비스가 된다.

다음 글에서는 이 위에 AI를 올릴 때 무엇을 맡기고 무엇을 맡기지 말아야 하는지 살펴본다. AI가 선박을 대신 설계한다고 과장하는 대신, 계산의 근거를 연결하고 변경의 영향을 놓치지 않게 만드는 현실적인 역할을 다룬다.

doAZ Point of View

두아즈가 지향하는 선박 계산 플랫폼의 핵심은 Ship Model, Workbook Contract, Provenance Graph, Change Workflow의 결합임. 데이터 연결 없이 채팅부터 붙이는 방식은 편리해 보이지만 장기적으로 검증과 확장을 어렵게 함.

YT
김영태 · CEO · doAZ

건설·엔지니어링 현장과 연구개발, 산업 AI 사업을 오가며 도면과 문서, 계산서에 흩어진 지식을 연결하는 방법을 고민하고 있음. 이 시리즈는 doAZ가 지향하는 제품 철학과 실증 방향을 공개적으로 정리한 기록임.