DB_CONFIG = { "host": "localhost", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "",}

  1. 예방보전

    목적 : sparepart 타이밍 예측

    대상 스키마 : b1_sparepart_usage

    대상 테이블 : sparepart_usage

    1. sparepart usage 정리

      1. 컬럼 end_day, dayornight이외에 모든 컬럼의 값이 ‘0’인 행은 제외

      2. 컬럼 end_day, dayornight이외에 모든 컬럼을 분리하고 새로운 컬럼 station, sparepart의 속성값으로 들어갈 것

      예시) FCT1_mini_b > station : FCT1, sparepart : mini_b

      단, power는 probe로 전환할 것

      예시) FCT1_power> station : FCT1, sparepart : probe

      1. 각 열에 ‘0’이 아닌 영역에 sparepart 의 속성값이 들어가고 dataframe 출력

      예시) - 첨부파일 참조

      이전>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>변환

      end_day dayornight FCT1_mini_b
      20250804 night 1
      end_day dayornight station sparepart
      20250804 night FCT1 mini_b
      1. 스키마 : 컬럼 end_day, dayornight의 속성값을 변환할 것

      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

      1. 첨부파일과 같이 dataframe 출력할 것
      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
      1. 컬럼 from_day, from_time, to_day, to_time의 속성값을 시간 범위로 하여

      대상 스키마 : 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
      1. 현재행의 컬럼 auto_day, auto_time의 속성값과 다음행의 manual_day, manual_time의 속성값을 시간 범위로 만들 것

      → 현재행의 컬럼 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
    1. 컬럼 sparepart 속성값 별로 amount의 속성값으로 퍼센타일 분석 실시

    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
    1. dataframe 저장

    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 교체

  2. 기계 이상 예측

    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 만 해당

    1. 1~4번에 해당하는 행의 컬럼 value의 속성값을 년도 빼고 mmdd를 x축으로 하고 컬럼 value의 속성값을 y축으로 plotly 그래프화하여 표현

    각 MMDD 별로 컬럼 Value의 속성값을 평균으로 만들어서 y축 값이 MMDD 당 하나씩만 가지게 해서 그래프, 계산 값은 소수점 3자리에서 반올림해서 2자리까지 나타낼 것

    y축칸을 8칸으로 설정, mmdd, value_avg, sample_amount

    1. 11월 17일 ~ 24일까지의 정상 확정 벡터와 10월 31일 ~ 11월 13일까지의 비정상 의심 벡터를 표준편차, 평균, 진폭, 차분 평균, 차분 표준편차로 구하고
    2. 비정상 의심 벡터 - 정상 확정 벡터 → anomaly_vector(이상치 벡터)를 구하고

    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 만 해당

    1. 1~4번에 해당하는 행의 컬럼 value의 속성값을 년도 빼고 mmdd를 x축으로 하고 컬럼 value의 속성값을 y축으로 plotly 그래프화하여 표현