\[artf122322\]\[JABIL\]\[XM520F\] NPE 그룹핑 하는데 예외 발생
---------------------------------------------------
### 0\. 결함 현상
- 이형부품 등록도중 리드들을 그루핑/언그루핑 하는 도중에 예외 발생하여 에러창이 뜨고, 일부 리드들 리드정보가 안보이는 문제
### 1\. 결함 식별
- 결함이 발견된 시기와 장소:
- \[2024\. 2월29일 09시45분\] JABIL고객사 발생
- 3월 4일 메일 받음 (3/1휴일 및 3/2~3 주말) - 통화하고 자료 요청함.
- 3월 5일 재연시나리오 및 동영상 받음
- 결함이 발견된 시스템/모듈/기능:
- NPE - Edit Shape 탭
- 결함의 유형:
- 예외발생
- 결함이 야기한 영향:
- 부품 등록이 잘 안되어 출장 인력들이 당황하고 고생하였음. 다시 여러번 등록하여 성공해서 생산에는 문제 없었음.
### 2\. 결함 분석
- 결함 발생 원인:
- 1. 상하/좌우 리드는 그루핑안되어야 하는데 체크 누락되어서 그루핑되었고,
- 1. 다른 탭 갔다 오면 그룹 ID를 새로 매기는데 이 부분에도 오류가 있어서 ID가 잘못 들어간다. 나중에 언그루핑하면 그룹ID를 못찾아서 예외발생
- 결함 생성 :
- **1번 문제는** **2020년이전**부터 있었음
- **2번 문제는 2023-07-06** 오후 1:20:16
r62154: 탭 이동시 부품데이터 새로 만들던 것을 시간단축을 위해 ID만 새로 매핑하도록 개선하면서 버그 발생
- 결함 배포 :
- Revision: 62393
Author: hg98_park
Date: **2023년 7월 27일** 2.6.13.0 (V4.600.000.020)
- 결함이 발견되지 않았던 이유:
- 발생 조건이 복잡해서
- 1. 리드그룹과 개별리드가 혼재된 부품에서
- 1. 다른 탭 이동후에 다시 왔다가
- 1. 언그루핑해야 발생한다.
- **어떻게 하면 더 빨리 발견되었을까?**
-
- 리뷰는 했는가?
- 했다. 수정부분 이전에 이미 ID가 잘못지정되는데
- 결함 수정에 필요한 자원:
- 부품 파트 인력(공수 3MD)
### 3\. 결함 수정
- 수정된 코드/패치:
```Revision: 65321
Author: hg98_park
Date: 2024년 3월 6일 수요일 오후 6:33:55
Message:
\[artf122322\]\[review_최태원\]: \[JABIL\]\[XM520F\] NPE 언그룹핑 하면 예외 발생 및 파라미터 표시 안됨
\[현상\] : \[JABIL\]\[XM520F\] NPE 언그룹핑 하면 예외 발생 및 파라미터 표시 안됨
\[원인\] : 리드언그루핑하면 내부 ID 꼬임
\[대책\]: ID 꼬이는 버그 수정
- 리드방향이 상하인 경우와 좌우인 경우는 그루핑하면 안되는데 그루핑되는 문제가 있어서 못하도록 수정
- ID 재매핑시 중복ID때문에 매핑 안되는 문제가 있어서 무조건 다 매핑 새로 하도록 수정
- 객체 비교시 null check 누락부분 수정 (문제와는 무관)
\[검토\]: LGTM
---
Modified : /trunk/src/NPE/NewPartEditor/NewUPE/Utility/CommonUtility.cs
Modified : /trunk/src/NPE/NewPartEditor/ShapeDrawingModule/Models/GenericCopier.cs
Modified : /trunk/src/NPE/NewPartEditor/ShapeDrawingModule/Models/ShapeDrawingData.cs
```
- 수정된 코드/패치의 효과:
- 자체 검증 완료.
- 3/8 고객사 전달 예정
- 수정 작업에 사용된 자원:
- 박형근 3MD
- 최태원 ?MD
- 수정 작업의 기간: 4일
- **어떻게 하면 더 빨리 해결할 수 있었을까?**
- 기존 코드 구조 및 동작 내용을 이해하고 있었으면 더 빨랐겠다.
- 코드가 복잡하고 가독성이 떨어져서 시간 걸린다. 어디가 문제인지 잘 안보인다.
### 4\. 결함 예방
- 이러한 결함이 다시 발생하지 않도록 하는 방법:
- 비전데이터를 NPE용 데이터로 변환하는 과정에서 그룹을 자동 생성하는데 이로 인해 불일치가 발생하기 쉬운 구조이다.
- 앞으로 만들때는 안정적인 구조로 설계하자.
- 일반적인 컨셉을 벗어나는 코딩하지 말자. ID가 중복되게 들어간다던지.
-
- 결함 예방을 위해 변경된 프로세스/절차:
-
- 추가적인 QA/QC 검증:
-
KPTA
----
- Keep (잘한점)
-
- Problem (개선할점)
-
- Try (시도할것)
- First()쓰지말고 FirstOrDefault()를 사용하도록 하자.
- Action (할일)
- ㅁㄴㅇㄹ