DB_CONFIG = { "host": "localhost", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "",}
예방보전
목적 : sparepart 타이밍 예측
대상 스키마 : b1_sparepart_usage
대상 테이블 : sparepart_usage
sparepart usage 정리
컬럼 end_day, dayornight이외에 모든 컬럼의 값이 ‘0’인 행은 제외
컬럼 end_day, dayornight이외에 모든 컬럼을 분리하고 새로운 컬럼 station, sparepart의 속성값으로 들어갈 것
예시) FCT1_mini_b > station : FCT1, sparepart : mini_b
단, power는 probe로 전환할 것
예시) FCT1_power> station : FCT1, sparepart : probe
예시) - 첨부파일 참조
이전>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>변환
| end_day | dayornight | FCT1_mini_b |
|---|---|---|
| 20250804 | night | 1 |
| end_day | dayornight | station | sparepart |
|---|---|---|---|
| 20250804 | night | FCT1 | mini_b |
4-1) 컬럼 end_day 속성값을 기준으로 day 는 d-day 08:30:00 ~ 20:29:59까지
4-2) 컬럼 end_day 속성값을 기준으로 night 는 d-day 08:30:00 ~ 23:59:59 + d-day+1일 00:00:00 ~ 08:29:59까지
→ 새로운 컬럼 from_day, from_time, to_day, to_time의 속성값으로 넣을 것
예시) end_day : 20250801, dayornight : day → 20250801 08:30:00 ~ 20:29:59
from_day : 20250801, from_time : 08:30:00, to_day : 20250801, to_time : 20:29:59
예시) end_day : 20250801, dayornight : night → 20250801 20:30:00 ~ 23:59:59 + 20250802 00:00:00 ~ 08:29:59까지
from_day : 20250801, from_time : 20:30:00, to_day : 20250802, to_time : 08:29:59
| station | sparepart | from_day | from_time | to_day | to_time |
|---|---|---|---|---|---|
| FCT1 | mini_b | 20250804 | 20:30:00 | 20250807 | 08:59:59 |
| FCT1 | mini_b | … | … | … | … |
| FCT1 | mini_b | … | … | … | … |
| FCT1 | mini_b | … | … | … | … |
| FCT4 | mini_b | … | … | … | … |
대상 스키마 : d1_machine_log, 테이블 : FCT1~4_machine_log
6-1) station의 속성값 별로 테이블 선택할 것
예시) station : FCT1 > FCT1_machine_log 선택
6-2) contents : Manual mode 전환 이 있는 행의 컬럼 end_time의 속성값에서 contents : Auto mode 있는 행의 컬럼 end_time의 속성값 차이가 최소 3분 이상인 구간을 선택
6-3) contents : Manual mode 전환 의 행의 컬럼 end_time을 manual_time컬럼을 만들어 속성값으로 기입
6-4) contents : Auto mode 전환의 행의 컬럼 end_time을 auto_time 컬럼을 만들어 속성값으로 기입
6-5) dataframe 출력 - 첨부파일 참고, 결측치 NA는 제외
| station | sparepart | from_day | from_time | to_day | to_time | maunual_day | manual_time | auto_day | auto_time |
|---|---|---|---|---|---|---|---|---|---|
| FCT1 | mini_b | 20250804~20250805 | 20:30:00 | 20250807 | 08:59:59 | 20250807 | 20:53:09 | 20250807 | 20:53:57 |
| FCT1 | mini_b | … | … | … | … | .. | … | ||
| FCT1 | mini_b | … | … | … | … | … | … | ||
| FCT1 | mini_b | … | … | … | … | … | … | ||
| FCT4 | mini_b | … | … | … | … | … | … |
→ 현재행의 컬럼 auto_day, auto_time > from_day, from_time의 속성값으로
→ 다음행의 컬럼 manual_day, manual_time > to_day, to_time의 속성값으로 변환
DB_CONFIG = { "host": "100.105.75.47", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "leejangwoo1!",}
대상 스키마 : a1_fct_vision_testlog_txt_processing_history, 테이블 : fct_vision_testlog_txt_processing_history
7-1) 컬럼 station, sparpart의 속성값 별로 구분
7-2) 시간 범위 안의 행의 갯수(staion : FCT1~4 만 해당)를 amount라는 컬럼의 속성값으로 들어갈 것
7-3) amount 값 0 제외, 1000이상만 출력
7-4) dataframe은 첨부파일과 같이 출력될 것
| station | sparepart | from_day | from_time | to_day | to_time | maunual_day | manual_time | auto_day | auto_time | amount |
|---|---|---|---|---|---|---|---|---|---|---|
| FCT1 | mini_b | 20250804 | 20:30:00 | 20250807 | 08:59:59 | 20250807 | 20:53:09 | 20250807 | 20:53:57 | |
| FCT1 | mini_b | … | … | … | … | .. | … | |||
| FCT1 | mini_b | … | … | … | … | … | … | |||
| FCT1 | mini_b | … | … | … | … | … | … | |||
| FCT4 | mini_b | … | … | … | … | … | … |
8-1) min, p10, p25, p50, p75, max를 구할 것, 내림하여 정수로 출력
8-2) 컬럼 plotly_graph을 추가하고 json 데이터를 넣을 것
8-2) 첨부파일과 같이 dataframe 출력
| sparepart | min | p10 | p25 | p50 | p75 | max | plotly_graph |
|---|---|---|---|---|---|---|---|
| mini_b | 1000 | … | … | … | 2000 | … | |
| usb_a | … | … | … | … | … | … | |
| usb_c | … | … | … | … | … | … | |
| probe | … | … | … | … | … | … |
DB_CONFIG = { "host": "localhost", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "",}
스키마 : e3_sparepart_replacement, 테이블 : sparepart_life_amount → 없으면 생성하여 만들기
upper_outlier_ct_list > c1_fct_detail > ct > TOP 3 > 다른 것들과 비교
11/17일에 FCT2에 pd_board 교체
기계 이상 예측
DB_CONFIG = { "host": "localhost", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "",}
1)컬럼 station의 속성값은 FCT2 만 해당
2)날짜 범위 컬럼 end_day : 20251001 ~ 20251124
3)컬럼 step_description의 속성값 1.34_Test_VUSB_Type-C_A(ELoad2=1.35A)vol 만 해당
각 MMDD 별로 컬럼 Value의 속성값을 평균으로 만들어서 y축 값이 MMDD 당 하나씩만 가지게 해서 그래프, 계산 값은 소수점 3자리에서 반올림해서 2자리까지 나타낼 것
y축칸을 8칸으로 설정, mmdd, value_avg, sample_amount
7)이 이상치 벡터를 가지고 구간별 벡터들에 대한 스코어는 유클리드 거리로 구하고
8)anomaly_score가 정상 기준을 지속적으로 초과하기 시작한 지점 부터 교체되기 직전 지점 까지의 벡터들의 평균을 구해서 대표 anomaly_vector들의 패턴을 만듬
9)anomaly_vector들을 스키마 : e4_perecitive_maintance 테이블 predictive_maintence로 저장하고 나머지 컬럼들은 유지,
1번째 pd_board 관련 테스트 항목 측정값의 변화를 하루마다의 평균으로 그래프화 함 2번쨰 10월 1일 ~ 30일까지의 정상 간주 벡터와 10월 31일 ~ 11월 13일까지의 비정상 의심 벡터를 표준편차, 평균, 진폭, 차분 평균, 차분 표준편차로 구하고 3번째 비정상 의심 벡터 - 정상 간주 벡터 → anomaly_vector_pattern(이상치 벡터 패턴)을 구하고 4번째 이 이상치 벡터 패턴을 가지고 구간별 벡터들에 대한 스코어는 유클리드 거리로 구하고
5번째 anomaly_score가 정상 기준을 지속적으로 초과하기 시작한 지점 부터 교체되기 직전 지점 까지의 벡터들의 평균을 구해서 대표 anomaly_vector들의 패턴을 만듬
6번째 anomaly_pattern이 5일 이상 지속 시 → pd_board 교체 판단
DB_CONFIG = { "host": "localhost", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "",}
1)컬럼 station의 속성값은 FCT1,3,4 만 해당
2)날짜 범위 컬럼 end_day : 20251201 ~ 20251218
3)컬럼 step_description의 속성값 1.34_Test_VUSB_Type-C_A(ELoad2=1.35A)vol 만 해당