설비 관리(유지보수)
주요 업무
- 산소 센서의 전선 생산 자동화 설비 관리
- 자재 공급 (전선, 씰, 단자)
- 설비 청소 및 칼날, 그리스 교체
- 설비 설정값 관리 및 최적화
설계 목적
- 설비 안정성 확보
- 예방 정비 + 긴급 대응 통합 관리
- 자재 사용 이력 및 교체 주기 추적
- 작업자 기술 수준 기반 책임 할당
- 유지보수 상태 기반 자동 트리거
고민한 내용
1. 설비 테이블의 속성으로 유지보수 내역을 추가하는게 좋을까? (1:N 관계)
장점 :설비를 통해 유지보수 내역을 쉽게 조회할 수 있다.
단점 :유지보수 내역만 조회하였을 때, 상위 도메인인 설비가 엮이기 때문에 제약을 두지 않는 이상 성능적 효율성이 낮아진다.
결론 :성능적 효율성을 위해 하위로 List를 두지 않음 (1:N 관계 미설정)
2. 작업 담당을 개인으로 할 것인가 팀으로 구성할 것인가, 팀으로 한다면?
장점 :일반적으로 주/부 담당 팀이 있을 것이고, 주간/야간 등 다양한 형태의 작업 담당을 표현할 수 있어야 한다
단점 :시스템의 복잡도가 늘어난다. 가령 인력사무소에서 1주일 파견나온 직원의 경우 시스템을 효율적으로 사용하기 어렵다.
결론 :작업 담당 그룹을 통해 다양한 근로 형태를 표현 할 수 있도록 적용한다.
3. 유지보수 항목에서 변경된 설정의 이력을 어떻게 남길것인가?
Enum이나 Code로 모든 설정을 등록하는게 더 어려움이 있을것같다. 설비 자체에 스냅샷처럼 히스토리를 남길 수 있는 기능이 있을수도 있고 없을 수도 있다. 확장성에 근거하여 json을 통해 변경된 설정을 저장하고자한다.
다만, 어떤 설정을 변경한 이력들을 조회한다고 가정했을때 성능적인 고민이된다.
결론 :해당 영역은 고객사에 따라 커스텀이 필수불가결일 것으로 보인다. 설비 스펙과 작업 형태에 근거하여 진행되어야 할 것이다. 설비가 자체 기능을 갖추고 있다면 변경 사항을 확인 할 수 있는 참조정보를 저장하는게 좋을것 같고, 연동이 불가능한 종류의 환경에서는 작업자가 직접 설정 할 수 있도록 UI 구성이 필요해보인다.
EquipmentMaintenance (설비 유지보수)
속성명 | 타입 | 설명 | 관계 / 특징 |
maintenanceId | UUID | 설비 유지보수 작업 고유 식별자 | 식별자 Aggregate Root |
equipmentId | String | 유지보수가 필요한 설비의 ID | Equipment 엔티티와 연관 |
type | Enum | 유지보수 유형 (정기교체/자재공급/긴급) | Value Domain (업무 규칙) |
startDate | LocalDateTime | 유지보수 예정 또는 수행 일시 | 시간 기반 분석 및 일정 기준 |
endDate | LocalDateTime | 유지보수 종료 일시 | 시간 기반 분석 및 일정 기준 |
technicianSetId | String | 유지보수 작업 담당 그룹 ID | TechnicianSet 또는 Technician과 연관 |
status | Enum | 유지보수 작업 상태 | 상태 전이 기반 흐름 관리 |
checkItems | List<MaintenanceItem> | 점검 항목 목록 (칼날 교체, 전선 공급, 씰 공급, 그리스 교체 등등) | Value Object 컬렉션 (템플릿 도메인 고려) |
remarks | String | 기타 특이사항 및 비고 | 자유 기입 필드 |
MaintenanceItem (유지보수 항목)
속성명 | 타입 | 설명 | 관계 / 특징 |
maintenanceItemId | UUID | 유지보수 항목 고유 식별자 | 식별자 |
type | Enum | 유지보수 항목 (칼날 교체, 전선 공급, 씰 공급, 그리스 교체 등등) | Value Domain (업무 규칙) |
isChangeAttr | Boolean | 속성 변경 유무 | 설비 스펙과 연관 |
attrAsIs | Json | 변경 속성 이전 값 | 설비 스펙과 연관 |
attrToBe | Json | 변경 속성 이후 값 | 설비 스펙과 연관 |
replacementCycle | Json | 점검 및 교체 주기(30일에 1번 교체, 소음 수치 120이상 등등) | 설비 스펙과 연관 (유지보수 규칙 도메인으로 분리 고려) |
replacementAction | Json | 점검이 발생하게 된 값 (지난 35일간 교체횟수 0회, 소음 수치 178 발생) | 설비 스펙과 연관 (유지보수 트리거 도메인으로 분리 고려) |
isUsedMaterial | Boolean | 자재 사용 유무 | 재고와 연계 |
materialList | List<Material> | 사용 자재 목록(씰, 그리스, 칼날, 전선, 단자 등) | 재고와 연계 |
remarks | String | 기타 특이사항 및 비고 | 자유 기입 필드 |
TechnicaianSet (작업 담당 그룹)
속성명 | 타입 | 설명 | 관계 / 특징 |
setId | UUID | 작업 담당자 세트 ID | 식별자 Aggregate Root |
setNm | String | 작업 담당자 세트 이름(설비1팀, 정비 2팀 등) | |
equipmentId | String | 담당 설비 ID | Equipment 와 연관 |
mainTechnicianId | String | 주 담당자 ID | Technician 와 1:1 참조 |
subTechnicianIds | List<String> | 부 담당자 ID 목록 | Technician 과 1: N 참조 |
Technicaian (작업자)
속성명 | 타입 | 설명 | 관계 / 특징 |
technicianId | String | 작업자 고유 ID | 식별자 |
type | Enum | 구분(내부 직원/ 외주 업체 등) | HR 시스템에 연관 |
companyId | String | 식별정보(사번, 외부 코드 등) | |
name | String | 작업자 이름 | 보고서 및 책임 추적 용 |
department | String | 소속 부서 | 관리 체계 분류용 |
String | 이메일 | 보고서 및 책임 추적 용 | |
phone | String | 전화번호 | 보고서 및 책임 추적 용 |
skillLevel | Enum (초급, 중급, 고급) | 기술 숙련도 | 특정 설비 유지보수 자격 판단에 사용 |
certifications | List<String> | 보유 자격증 목록 | 유지보수 작업 권한 확인에 사용 |
assignedEquipmentIds | List<String> | 담당 설비 목록 | 장비 배정 관리와 연계 |
active | Boolean | 현재 활동 중 여부 | 퇴사자, 휴가자 필터링용 |
Equipment (설비)
속성명 | 타입 | 설명 | 관계 / 특징 |
equipmentId | String | 설비 고유 ID | EquipmentMaintenance에서 참조 |
name | String | 설비 이름 (예: 전선 압착기 #1) | 사용자 UI 및 보고서에서 사용 |
model | String | 설비 모델명 (예: XM-400) | 기술 문서 및 유지보수 기준과 연계 |
location | String | 설비 설치 위치 | 작업자 할당 및 위치 기반 점검 |
status | Enum (가동중, 정지, 유지보수중) | 설비 현재 상태 | 자동 유지보수 트리거 조건 |
installationDate | LocalDate | 설치일자 | 설비 수명 및 교체 계획과 연계 |
lastMaintenanceDate | LocalDateTime | 최근 유지보수 일자 | 유지보수 이력 트래킹 |
'제조 소프트웨어 > 설계' 카테고리의 다른 글
제조업 경험을 도메인으로(5) - MES/MSA 자재 관리 설계 (0) | 2025.04.14 |
---|---|
제조업 경험을 도메인으로(4) - MES/MSA 완제품 관리 설계 (0) | 2025.04.12 |
제조업 경험을 도메인으로(3) - MES/MSA 품질 검증 설계 (0) | 2025.04.10 |
제조업 경험을 도메인으로(1) (0) | 2025.04.05 |
제조업 경험 다시 읽기 (2) | 2025.03.27 |