# 8. 로그 및 데이터 관리 [← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md) --- ## 8.1 검사 데이터 로그 (CSV) ### 기본 정보 | 항목 | 내용 | |------|------| | **저장 위치** | `C:\LeakTest\Logs\yyyy-MM-dd.csv` | | **파일 형식** | CSV (UTF-8 인코딩) | | **파일 생성** | 날짜별 자동 생성 (해당 날짜 첫 시험 시) | | **데이터 추가** | 매 시험 완료 시 자동으로 해당 날짜 파일에 1행 추가 | ### CSV 헤더 및 컬럼 ``` IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line,Lot_No,Jig_No,Channel,Spec_UL,Spec_LL,Leak_Value,Result ``` | 컬럼 | 예시 | 설명 | |------|------|------| | `IC_SN` | `260508A00123B01C` | 제품 고유 시리얼 번호 (PK/FK) | | `PCB_Barcode` | `260508A00123B01C` | PCB 바코드 고유 식별 정보 (UK) | | `Maker` | `Hyundai` | 메이커 정보 | | `Model` | `NE1aW` | 모델 정보 | | `Variant_1` | `PT` | 변형1 정보 | | `Variant_2` | `SENSOR` | 변형2 정보 | | `Operator` | `op001` | 작업자 ID | | `Production_Date` | `2026-05-08 10:30:15` | 검사 수행 일시 | | `Line` | `L1` | 작업 라인 번호 | | `Lot_No` | `LOT001` | Lot 번호 | | `Jig_No` | `JIG01` | 지그 번호 | | `Channel` | `LEFT` | 검사 채널 (LEFT 또는 RIGHT) | | `Spec_UL` | `1.00` | 규격 상한값 | | `Spec_LL` | `-1.00` | 규격 하한값 | | `Leak_Value` | `0.5234` | 측정된 릭 측정값 (소수점 4자리) | | `Result` | `OK` | 최종 판정 결과 (OK 또는 NG) | ### CSV 예시 ```csv IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line,Lot_No,Jig_No,Channel,Spec_UL,Spec_LL,Leak_Value,Result 260508A00123B01C,260508A00123B01C,Hyundai,NE1aW,PT,SENSOR,op001,2026-05-08 10:30:15,L1,LOT001,JIG01,LEFT,1.00,-1.00,0.5234,OK 260508A00456D02E,260508A00456D02E,Hyundai,NE1aW,PT,SENSOR,op002,2026-05-08 10:30:45,L1,LOT001,JIG01,RIGHT,1.00,-1.00,1.2000,NG ``` > **참고**: 타임아웃 발생 시에도 측정값 `0.0000`, 판정 `NG`로 로그에 기록됩니다. > **참고**: CSV 값에 쉼표, 따옴표, 줄바꿈이 포함된 경우 자동으로 이스케이프 처리됩니다. --- ## 8.2 시스템 로그 ### 기본 정보 | 항목 | 내용 | |------|------| | **저장 위치** | `C:\LeakTest\Logs\yyyy-MM-dd_system.log` | | **파일 형식** | 텍스트 파일 (UTF-8 인코딩) | | **내용** | 통신 오류, 시스템 이벤트 등 | ### 로그 형식 ``` [HH:mm:ss.fff] [TAG] 메시지 내용 ``` ### 예시 ``` [10:30:00.123] [SYSTEM] 프로그램 시작 [10:30:01.456] [COMM] Sentinel C28 포트 연결 성공 (COM1) [10:35:15.789] [ERROR] Sentinel C28 통신 타임아웃 ``` --- ## 8.3 설정 파일 ### config.xml | 항목 | 내용 | |------|------| | **위치** | 프로그램 실행 폴더 (`C:\LeakTest\config.xml`) | | **생성** | 최초 실행 시 기본값으로 자동 생성 | | **수정** | Comm. Settings 또는 Parameters에서 저장 시 갱신 | ```xml COM1 9600 COM3 115200 5000 1.00 -1.00 true ``` | 설정 키 | 기본값 | 설정 위치 | 설명 | |---------|--------|----------|------| | `SensorPort` | COM1 | Comm. Settings | C28 센서 COM 포트 | | `SensorBaudRate` | 9600 | Comm. Settings | C28 센서 통신 속도 | | `Board4251Port` | COM3 | Comm. Settings | 4251 보드 COM 포트 | | `Board4251BaudRate` | 115200 | Comm. Settings | 4251 보드 통신 속도 | | `Board4251Timeout` | 5000 | (코드 내 고정) | 4251 보드 응답 대기 시간(ms) | | `SpecUL` | 1.00 | Parameters | 누설 상한 규격값 | | `SpecLL` | -1.00 | Parameters | 누설 하한 규격값 | | `EnableSpecMismatchAlarm` | true | Comm. Settings | 스펙 불일치 알림 활성화 여부 (true/false) | ### Database.ini | 항목 | 내용 | |------|------| | **위치** | `C:\LeakTest\Database.ini` | | **생성** | 최초 실행 시 해당 파일이 없으면 기본 양식으로 자동 생성. 배포 폴더(`C:\LeakTest\`)와 동일 위치에 저장되어 경로 관리가 단순함 | | **수정** | 메모장 등의 텍스트 에디터를 통해 연결 주소 및 프로시저 정보 직접 수정 | ```ini ; ===================================================================== ; Leak Test System - 데이터베이스 및 로그인 설정 파일 (Database.ini) ; ===================================================================== ; [데이터베이스 접속 상세 설정] ; Db_Server : 중앙 MSSQL 데이터베이스 서버의 IP 주소 또는 호스트명 ; Db_Name : 검사 데이터를 저장할 대상 데이터베이스 이름 ; Db_User : 데이터베이스 접속 계정 ID (예: sa) ; Db_Password: 데이터베이스 접속 계정의 비밀번호 Db_Server=127.0.0.1, 1433 Db_Name=Test_DB Db_User=db_user Db_Password=db_password [Login] ; Procedure: 로그인 검증에 사용할 DB 저장 프로시저명입니다. (공란일 경우 기본 테이블 조회 쿼리 작동) Procedure=dbo.CheckOperator ; ProcessName: 로그인 검증 시 전달할 공정 이름입니다. ProcessName=EOL ; OfflinePreview: 오프라인 모드 활성화 여부 (true = DB 연결 없이 로그인 통과, false = 실제 DB 인증) OfflinePreview=false ``` | 설정 키 | 예시 / 기본값 | 설명 | |---------|--------|------| | `Db_Server` | `[서버IP], [포트번호]` (예: 127.0.0.1, 1433) | 데이터베이스 서버 IP 주소 및 포트 번호 | | `Db_Name` | `[데이터베이스명]` (예: Test_DB) | 대상 데이터베이스(DB) 이름 | | `Db_User` | `[사용자ID]` (예: db_user) | 데이터베이스 접속 계정 ID | | `Db_Password` | `[비밀번호]` (예: db_password) | 데이터베이스 접속 계정 비밀번호 | | `Procedure` | dbo.CheckOperator | 로그인 계정 검증용 데이터베이스 프로그램명 | | `ProcessName` | EOL | 검증 공정명 | | `OfflinePreview` | false | true 시 DB 연결 없이 로그인 즉시 성공 (오프라인 모드) | > **SSL 인증 오류 방지**: DB 연결 시 SSL 인증서 신뢰 오류가 발생하는 환경을 방지하기 위해 프로그램 내부에서 자동으로 `TrustServerCertificate=True;` 옵션을 연결 문자열 끝에 추가하여 안정적인 동작을 보장합니다. ### LoginOptions.json / LoginHistory.json | 항목 | 내용 | |------|------| | **위치** | `C:\LeakTest\` | | **생성** | 최초 실행 시 자동 생성 | | **수정** | 프로그램 내 로그인 화면 사용 시 자동 갱신 | | 파일 | 설명 | |------|------| | `LoginOptions.json` | 로그인 화면 각 필드(Maker, Model, Variant_1 등)의 자동완성 드롭다운 선택지 목록 저장 | | `LoginHistory.json` | 최근 로그인 정보(작업자 ID, 라인, 모델 등 전체 세트)를 최대 10건 저장하여 재사용 | ### DioConfig.ini | 항목 | 내용 | |------|------| | **위치** | `[프로그램 폴더]\Settings\DioConfig.ini` | | **생성** | 최초 실행 시 자동 생성 | | **수정** | 일반적으로 수정 불필요 (하드웨어 변경 시에만) | ```ini [DIO] CompanyName=ADLink BoardCnt=1 [BOARD_1] BoardType=PCI_7432 BoardNumber=0 [BOARD_1_IN] 0=LEFT_START,1,좌측 시험 시작 신호 1=RIGHT_START,1,우측 시험 시작 신호 [BOARD_1_OUT] 0=LEFT_OK,1,좌측 합격 출력 1=RIGHT_OK,1,우측 합격 출력 2=PC_ON,1,PC 가동 신호 3=LEFT_NG,1,좌측 불합격 출력 4=RIGHT_NG,1,우측 불합격 출력 ``` **INI 포맷 설명**: `비트인덱스=신호명,활성여부,설명` --- ## 8.4 파일 관리 주의사항 | 주의사항 | 설명 | |---------|------| | Logs 폴더 삭제 금지 | 검사 기록이 영구 삭제됩니다 | | CSV 파일 직접 편집 | Excel 등으로 편집 시 인코딩이 변경될 수 있으므로 주의 | | config.xml 직접 편집 | 잘못된 값 입력 시 프로그램 오작동 가능. 프로그램 내 설정 화면 사용 권장 | | 디스크 용량 | 일일 수백 건 검사 기준, 연간 약 50~100MB 정도의 로그가 생성됩니다 | --- ## 8.5 데이터베이스 데이터 관리 (dbo.EOL) 매 시험 완료 시 검사 결과 및 로그인 정보가 데이터베이스에 실시간으로 저장(MERGE/UPSERT)됩니다. ### 데이터베이스 저장 항목 안내 * **대상 테이블**: `[dbo].[EOL]` * **매핑 상세**: | 데이터베이스 항목명 | 구분 | 설명 | | :--- | :--- | :--- | | **`IC_SN`** | 문자형 (최대 10자) | 제품 고유 IC 일련번호 | | **`PCB_Barcode`** | 문자형 (최대 10자) | 조회된 PCB 바코드 정보 | | `Maker` | 문자형 (최대 10자) | 로그인 시 입력한 제조사명 | | `Model` | 문자형 (최대 10자) | 로그인 시 입력한 검사 모델명 | | `Variant_1` | 문자형 (최대 10자) | 로그인 시 입력한 파생 모델명 1 | | `Variant_2` | 문자형 (최대 10자) | 로그인 시 입력한 파생 모델명 2 | | `Operator` | 문자형 (최대 10자) | 검사자(작업자) ID | | `Production_Date` | 날짜/시간형 | 검사가 완료된 시간 | | `Line` | 문자형 (최대 30자) | 로그인 시 입력한 작업 라인명 | | `Lot_No` | 문자형 (최대 8자) | 로그인 시 입력한 Lot 번호 | | `Jig_No` | 문자형 (최대 10자) | 로그인 시 입력한 지그 번호 | | `Channel` | 문자형 (최대 5자) | 검사가 수행된 채널 (LEFT / RIGHT) | | `Spec_UL` | 숫자형 | 리크 판정 상한 기준값 | | `Spec_LL` | 숫자형 | 리크 판정 하한 기준값 | | `Leak_Value` | 숫자형 | 측정된 누설량 | | `Result` | 문자형 (최대 5자) | 최종 판정 결과 (OK / NG) | --- [← 이전: 시험 프로세스](07_시험_프로세스.md) | [다음: 오류 대응 →](09_오류_대응.md)