제조 소프트웨어/설계

제조업 경험을 도메인으로(3) - MES/MSA 품질 검증 설계

문쿼리 2025. 4. 10. 02:01

품질 검증

주요 업무

  • 전선을 설비에 공급하기 전, 전기적 특성에 대한 사전 검사 수행
  • 자동화 설비에서 생산된 제품에 대해 시각적 검사 수행 (길이, 씰 고정, 단자 압착 상태 등)
  • (추가) 검사 기준에 따라 Lot 단위 또는 시간·수량 기반 샘플링 방식으로 검증
  • (추가) 검사 결과에 따른 합격/불합격/재검 판정 및 불량 이력 관리
  • (추가) 검사 장비와 검사 인력(또는 검사조)을 기반으로 한 검사 이력 추적

설계 목적

  • 전선 품질의 일관성과 신뢰성 확보
  • 검사 방식(Lot, 시간, 수량 등)에 따른 유연한 결과 구조 표현
  • 불량 코드, 위치, 이미지 등 상세 항목 기록을 통한 분석 기반 제공
  • 검사 결과를 기반으로 한 공정 피드백 및 설비 품질 최적화
  • 검사자 그룹 관리, 자동화 장비 연계, 데이터 기반 판단 자동화 흐름을 위한 기반 구축
고민한 내용
1. 품질검증의 다양성을 어떻게 표현해낼 것인가?
생산 이전의 원자재에 대한 검증도 있고, 생산 한 제품에 대한 검증도 있다. 그에 따른 다양한 검증 결과도 마찬가지일 것이다.
1-1. 품질검증을 분리해서 원자재와 완제품으로 품질 검증을 나눌것인가?
-> 원자재/완제품 두 가지 카테고리만으로는 다양한 검증들을 포함하기 어렵고, 완제품이 다른 제품의 원자재가 되는경우 데이터의 혼선이 발생할 수 있다.

결론 :하위 도메인을 구성하여 검증 대상과 절차에 대한 유연성과 검증결과의 다양성을 표현한다.
장점 :다양한 품질검증을 구현해낼 수 있고, 하위 도메인으로 인해 직관적으로 인식할 수 있다. 도메인 정합성, 유지보수 및 확장성
단점 :구조가 갖는 복잡성 증대로 개발 난이도 상승, 성능적 우려, 고객사 마다 하위 도메인에 대한 커스텀 필요.

1-2. 하위 도메인이 필요 없는 단순 결과에도 하위 도메인을 설정할 것인가?
장점 :데이터의 계층을 일관되게 설정할 수 있다. 유지보수, 유연성 증대
단점 :상위 도메인에 있는 내용과 중복적인 성격이 있다.
결론 :하위 도메인에 단순 결과 도메인을 추가하여 데이터 일관성을 높인다(비정규화)

 

QualityInspection (품질 검증)

속성명 타입 설명 관계 / 특징
inspectionId UUID 품질 검증 고유 식별자 식별자, Aggregate Root
inspectionType Enum 검증 유형 (ELECTRICAL, VISUAL 등) 업무 규칙 기반
modeType Enum 검증 모드 (LOT_BASED, TIME_SAMPLING, QUANTITY_SAMPLING) 서브타입 구분 용도
inspectionDate LocalDateTime 품질 검증 수행 일시 시간 기반 이력 관리
technicianSetId String 검사 수행 담당 그룹 ID TechnicianSet과 연관
equipmentId String 검사 대상 장비 ID (자동화 장비 등) Equipment과 연관 가능
resultCode Enum 1차 결과 코드 (PASS, FAIL, RETEST 등) 업무 흐름 제어용
resultDetail UUID (FK) 상세 검사 결과 ID (InspectionResult와 연결) 서브타입 결과 구조와 연결
refUrl String 이미지, 검사결과서 등 외부 자료의 참조 URL 외부 저장소 연계
remarks String 비고 및 추가 메모 자유 기입 필드

 

* modeType 에 해당 하는 서브타입 테이블

 

InspectionResult (단순 결과 도메인)

속성명 타입 설명
resultDetailId UUID 결과 상세 ID (PK)
inspectionId UUID (FK) QualityInspection의 ID와 연결
modeType Enum 검사 방식에 따른 결과 유형 구분
resultCode Enum 결과 요약 코드 (PASS, FAIL, WARNING 등)
createdAt LocalDateTime 결과 생성 일시

 

LotBasedResult (LOT 기반 서브타입)

속성명 타입 설명
resultDetailId UUID (PK, FK) 상위 결과 ID
lotId String 검사 대상 Lot ID
criticalDefects Int 치명적 불량 수
minorDefects Int 경미한 불량 수
decision Enum 최종 판정 (PASS, FAIL 등)

 

TimeSamplingResult (시간 기반 서브타입)

속성명 타입 설명
resultDetailId UUID (PK, FK) 상위 결과 ID
targetStartTime LocalDateTime 샘플링 시작 시각
targetEndTime LocalDateTime 샘플링 종료 시각
sampleCount Int 검사 샘플 개수
failCount Int 불량 개수
defectRate Float 불량률 (%)
warningLevel Float 경고 기준 불량률 (%)
failLevel Float 불합격 기준 불량률 (%)
decision Enum 최종 결과 (PASS, WARNING 등)

 

QuantitySamplingResult (수량 기반 서브타입)

속성명 타입 설명
resultDetailId UUID (PK, FK) 상위 결과 ID
sampleSize Int 기준 수량 단위 (예: 1000개당 10개)
sampledCount Int 실제 검사한 샘플 수
failCount Int 불량 수
defectRate Float 불량률 (%)
decision Enum 최종 판정

 

DefectItem (불량 항목 VO)

샘플 또는 시각적 검사에서 발생한 개별 불량 이력
QualityInspection 또는 InspectionResult에 연결

속성명 타입 설명
defectCode String 불량 코드 (예: SEAL_MISALIGN, LENGTH_ERR)
severity Enum 불량 심각도 (HIGH, MEDIUM, LOW)
position String 위치 정보 (예: 120mm 지점)
refUrl String 불량 이미지, 동영상 등 자료 참조 URL