바타입 검사기의 CClientDlg::Get_Defect_Type() (ClientDlg.cpp:9321~9551) 을
있는 그대로 웹 화면에 옮겨 놓은 도구다. 분기 순서, 비교 연산자(> / <),
그리고 소스에 남아 있는 폴스루까지 그대로 재현한다.
run.bat (또는) python server.py
브라우저가 http://127.0.0.1:8731/ 로 자동으로 열린다.
Python 3.8 이상만 있으면 되고, 별도 패키지 설치는 필요 없다.
| 영역 | 내용 |
|---|---|
| 좌측 상단 | 모델 INI 파라미터. 값을 고치면 트리 조건문이 즉시 바뀌고, [INI 저장] 으로 실제 파일에 반영 |
| 좌측 하단 | 판정 입력값(DEFECT_INFO). CSV 없이 직접 값을 넣어 시뮬레이션 가능 |
| 중앙 | 로직 트리. 판정이 지나간 경로가 파란색, 최종 판정 노드가 초록색으로 표시 |
| 우측 | DEFECT_Detail CSV 목록 / 행 선택 / 전체 행 일괄 검증 |
C:\glim\Parameter\SPEC\*.ini 를 자동으로 리스트업한다. (소스의 PATH_PARAM 과 동일)
트리가 실제로 참조하는 파라미터는 아래 9개뿐이다.
| INI 키 | 내부 인덱스 | 의미 | 쓰이는 분기 |
|---|---|---|---|
| dParam3 | D_IDX_RATIO_W | 백 종횡비 | 절연 라인/핀홀, 돌출/미세라인 |
| dParam5 | D_IDX_RATIO_B | 흑 종횡비 | 무지부 주름 |
| dParam7 | D_IDX_VAL_PINHOLE | 핀홀 밝기 | 백불량 강제승격, 핀홀 |
| dParam8 | D_IDX_VAL_EXTRUDING | 돌출 밝기 | 돌출 / 찍힘 |
| dParam10 | D_IDX_LINE_V | 라인 밝기 | 라인 / 미세라인 |
| dParam11 | D_IDX_COMPACT | 진원도 | 분화구 |
| dParam20 | D_IDX_AREA | 최소 면적 | 분화구 |
| dParam21 | D_IDX_AREA_DARK_PERCENT | 영역내 비율 | 분화구 |
| m_nMinDarkDefectValue | (별도 int 멤버) | 흑불량 최소 밝기 | 스크래치·크랙 / 약흑점 |
스크래치 각도 기준(10도 / 80도)은 INI 가 아니라 소스에 하드코딩되어 있다 (ClientDlg.cpp:9519). 화면에서는 바꿔볼 수 있지만 저장 대상이 아니다.
- 저장 대상은 위 9개 키뿐이다. 그 외 키·주석·순서는 원본 그대로 보존된다.
- 저장 직전 원본을
C:\glim\Parameter\SPEC\_backup\<모델>_<날짜시각>.ini로 복사한다. - 인코딩은 CP949(멀티바이트) 로 읽고 쓴다.
D:\DATA\LOT_DATA 이하의 *DEFECT_Detail*.csv 를 찾아 목록으로 보여준다.
다른 PC 파일은 파일 선택 버튼으로 직접 올릴 수 있다.
행을 클릭하면 그 불량의 값으로 트리를 타고, 재현 결과를 CSV 에 기록된
Defect Code 와 비교해 준다. [전체 행 일괄 검증] 은 파일 전체를 한 번에 돌린다.
CSV(WriteCSV_defect_detail, ClientDlg.cpp:2694)에 기록되는 값은 판정이 끝난
뒤의 결과라서, 트리 상단 분기의 입력 플래그는 들어 있지 않다.
- CSV 에서 직접 얻는 값 — White, Line, MaxV, MinV, Ratio(Y/X), Ratio(Mopol), Angle, Area, Area-Obj, Compact, NG
- CSV 에 없어 최종 Defect Code 로 역추론하는 값 — bInsuDefect, bEdgeDefect, bBurrDefect, bHugeDefect, bNullDefect, bUseWhiteImg, 폭 알람 플래그 일체
역추론된 항목에는 화면에 추론 배지가 붙는다. 값을 직접 고쳐서 다시 돌려볼 수 있다.
MaxV / MinV 는 nID = bWhite ? 0 : 1 로 한쪽 채널만 기록된다.
따라서 흑불량 행(White=0)은 dPeakValue[W][MAX] 를 알 수 없고,
단계 8의 백불량 강제 승격 여부를 CSV 만으로는 확인할 수 없다.
이 경우 화면은 판정을 멈추고 "판정 불가" 로 표시한다 —
값을 지어내지 않고 모르는 것은 모른다고 표시하기 위해서다.
해당 칸에 값을 직접 입력하면 그 지점부터 이어서 판정한다.
- 절연 종횡비 폴스루 (9348~9352) —
>도<도 아닌 경우(정확히 같은 값)return이 없어 절연 판정을 빠져나가 아래 단계로 흘러내린다. - 무지부 분기 무의미 (9388, 9400) —
bLine과dRatio[B] > dParam5분기가 참/거짓 양쪽 모두 같은 결과(ISLAND / WRINKLE_NULL)를 낸다. dParam5 는 이 경로에서 결과에 영향을 주지 않는다. - 핀홀 조건 중복 (9453 과 9481) — 승격 조건과 핀홀 판정 조건이 완전히 같다.
승격을 거친 원형 백불량은 항상 핀홀이 되고, 돌출/찍힘에는 원래부터
bWhite였던 불량만 도달한다.