제조 소프트웨어/설계

제조업 경험을 도메인으로(4) - MES/MSA 완제품 관리 설계

문쿼리 2025. 4. 12. 20:22

완제품 관리

주요 업무

  • 생산 계획표에 맞춰 생산된 제품을 등록, 보관, 공급 및 출하 관리
  • 부족하거나 긴급하게 필요한 제품에 따라 생산 계획표를 신속하게 수정
  • (추가) 제품 정의(ProductDefinition)에 따라 전선뿐만 아니라 다양한 조립품/제품에 대한 생산 대응
  • (추가) 생산된 제품의 Lot ID, 수량, 상태, 보관 위치 등 이력 정보 관리
  • (추가) BOM 및 레시피(RMS) 기준에 따라 제품 사양과 공정 조건을 일관되게 적용
  • (추가) 생산 계획 ↔ 생산 결과 ↔ 공급 ↔ 품질 검증 도메인 간 데이터 흐름 연계
  • (추가) 긴급 생산 여부, 우선순위, BOM/Recipe 버전 등 계획 기준 정보 고정 및 추적 가능

설계 목적

  • 제품 중심 구조로의 통합을 통해 단품이 아닌 조립품까지 포함한 유연한 생산 흐름 관리
  • 재귀적 BOM 구조를 활용하여 제품 간 구성 관계 및 생산 자재 구조를 정형화
  • 레시피(RMS)와의 연계를 통해 장비/공정 제어 자동화 기반 마련
  • 생산 계획과 실행 이력 간 추적성 확보를 통해 공정 이탈 여부, 품질 이슈 등을 분석 가능
  • 생산–검사–출하 도메인 간 데이터 정합성 확보 및 MES 내 흐름 통합 완성
고민한 내용
1. 부품과 레시피를 어떤 방식으로 표현할 것인가?
  -> 제품 정의(ProductDefinition)에 부품(BOM)과 레시피(RMS)를 따로 연결한다.
      장점 : 상품 중심 설계. 책임이 분리되어 개념이 명확하고, 재사용이 용이함, RMS와 무관한 시스템 운용이 가능함.
      단점 : 레시피와 부품의 동기화가 어려움, 레시피를 통한 생산 제어 어려움
  -> 레시피(Recipe)에 부품(BOM)을 포함시키도록 구조화한다.
      장점 : 공정 중심 설계. 공정과정과 부품을 일체형으로 표현 하기에 용이함
      단점 : 부품 관리와 레시피 관리를 분리해서 사용하기 어려움, 제품의 부품이 레시피 없이는 알 수 없음

결론 : 제품 정의(ProductDefinition)에 부품(BOM)과 레시피(RMS)를 따로 연결한다.

2. 제품이 다른 제품의 부품이 되는 경우는 어떻게 처리할 것인가?
-> 재귀적인 부품관리 필요. 제품 정의 정보를 바탕으로 부품을 관리할 수 있도록 처리

3. 동일 제품이어도, 생산 계획 당시의 레시피와 부품이 시기에 따라 다를 수 있는데 어떻게 처리할 것인가?
-> 제품과 생산계획에 모두 레시피와 부품을 넣어준다. 단 계획 중 레시피와 부품이 미정일 수 있으므로 Optional 처리

 

Productuction (생산 관리)

속성명 타입 설명 관계 / 특징
productionId UUID 생산 고유 식별자 식별자, Aggregate Root
productDefinitionId UUID 생산 대상 제품 정의 ID ProductDefinition과 연관
lotId String 생산된 제품의 Lot 번호 품질 검증, 추적성 연계
quantity Int 생산 수량 단위는 ProductDefinition 또는 UOM에 종속
status Enum 생산 상태 (진행 중, 완료, 보류, 취소 등) 상태 전이 흐름 기반
startTime LocalDateTime 생산 시작 일시 생산 일정, 분석용
endTime LocalDateTime 생산 완료 일시 생산 흐름, 리드타임 분석용
supplyPlanId UUID (Optional) 연동된 생산 계획 ID 계획 기반 생산 시 연결
isUrgent Boolean 긴급 수요 기반 생산 여부 계획 우선순위 변경 트리거용
recipeId UUID (Optional) 사용된 레시피 ID (RMS 연동) 장비 제어, 공정 제어 기준 연결 가능
remarks String 비고 및 메모 자유 기입

 

ProductDefinition (제품 정의)

속성명 타입 설명 관계 / 특징
productDefinitionId UUID 제품 정의 고유 식별자 식별자, 생산/계획/검사 도메인과 광범위 연계
name String 제품명 UI/보고서/검색 등 전반에서 사용
code String 제품 코드 (사내 품번, 고객 코드 등) ERP, 품질, 출하 등 외부 연계 포인트
type Enum 제품 유형 (전선, 하네스, 조립품 등) 도메인 내 분기, BOM 조건 결정
description String 제품 용도, 특이사항 등 설명 문서 연동, 보고서용
quantityUnit Enum 제품 수량 단위 (개, m, 세트 등) 제품 공급 단위와 연관, 단위 표준화 필요
bomId UUID 해당 제품의 BOM ID BOM 참조 (재귀 구성 가능)
recipeId UUID RMS 연동용 레시피 ID 공정 조건 자동화 대응
designSpecRef String (URL) 제품 설계 문서, 도면 등 문서 관리 시스템과 연계 가능
isActive Boolean 유효한 제품 여부 과거 정의와 구분, 비활성 시 생산 불가
createdAt LocalDateTime 생성일 변경 이력 관리용
updatedAt LocalDateTime 수정일 최신 정보 판단용

 

partProduct (부품 관리)

속성명 타입 설명 관계 / 특징
bomId UUID BOM 고유 ID ProductDefinition에서 참조
version String BOM 버전 버전별 BOM 관리 가능
createdAt LocalDateTime 생성일 BOM 변경 이력 관리
isActive Boolean 유효 여부 설계 변경 시 BOM 선택 관리

 

partProductComponent (부품 구성)

속성명 타입  설명 관계 / 특징
bomId UUID 상위 BOM ID BOM과 연결
componentId UUID 구성품 제품 정의 ID (ProductDefinition) 재귀 참조 가능 → 제품이 다른 제품의 부품이 될 수 있음
quantity Int 필요한 수량 단위는 외부 도메인(UOM)으로 관리 가능
quantityUnit String 단위 (개, m, 세트 등) 단위 표준화 필요
sequence Int 조립 순서 공정 흐름 대응 가능 (선택 사항)
remarks String 비고 Optional

 

SupplyPlan (생산 계획)

속성명 타입 설명 관계 / 특징
supplyPlanId UUID 생산 계획 고유 ID 식별자, Aggregate Root
planDate LocalDateTime 계획이 등록된 날짜 분석, 히스토리 관리 기준
scheduledDate LocalDateTime 실제 생산 예정 일자 MES 생산 캘린더 기준
productDefinitionId UUID 생산할 제품 정의 ID ProductDefinition과 연관
targetQuantity Int 목표 생산 수량 단위는 ProductDefinition에 종속
priority Enum / Int 생산 우선순위 (일반, 우선, 긴급 등) 긴급 생산 트리거 또는 스케줄링에 영향
status Enum 계획 상태 (계획됨 / 확정 / 진행 중 / 완료 / 취소 등) 상태 전이 기반 흐름 제어
modifiedByUrgent Boolean 긴급 요청에 의해 변경된 계획 여부 이력 추적 및 자동화 기준
appliedBomId UUID (Optional) 적용될 BOM 버전 ID 사양 고정된 계획일 경우 명시적으로 고정 가능
appliedRecipeId UUID (Optional) 사용할 RMS 레시피 ID Recipe 기반으로 생산 통제 필요 시 명시
createdBy String 계획 작성자 사용자 기록 또는 자동 생성 기준
remarks String 비고 및 기타 메모 자유 기입
createdAt LocalDateTime 계획 생성 일시 타임스탬프
updatedAt LocalDateTime 최근 수정 일시 히스토리 기반 변경 감지 용도