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

  1. Feature 생성

    1. 스키마 : f_database, 테이블 : fct_database

    2. 시간 범위 : 컬럼 end_day : 2025-09-17 ~ 2025-12-19

    3. ** 중요- 컬럼 end_day의 각 속성값(날짜) 별로 구분

    4. 컬럼 station : FCT1~4 별로 분류

    5. 컬럼 step_description 의 속성값 NULL은 제외

    6. 컬럼 step_description 의 속성값 중 컬럼 value의 속성값이 NULL인 행과 아닌 행 구분

    7. 컬럼 step_description 의 속성값 중 컬럼 value의 속성값이 NULL인 행

    7-1) 컬럼 step_description 의 속성값 별 컬럼 step_up_or_test_ct 의 속성값 평균, 30개 이하 제외

    → set_up_av의 테이블 속성값으로 입력

    → 높을 수록 negative

    7-2) 컬럼 step_description 의 속성값 별 컬럼 step_up_or_test_ct 의 속성값 분산, 30개 이하 제외

    → set_up_dis의 테이블 속성값으로 입력

    → 높을 수록 negative

    1. 컬럼 step_description 의 속성값 중 컬럼 value의 속성값이 NULL이 아닌 행 구분

    8-1) 컬럼 step_description 의 속성값 별 컬럼 value의 속성값 평균, 30개 이하 제외

    → value_av의 테이블 속성값으로 입력

    → 같은 행의 컬럼 result의 속성값 pass면 문제없음

    8-2) 컬럼 step_description 의 속성값 별 컬럼 value의 속성값 분산, 30개 이하 제외

    → value_dis의 테이블 속성값으로 입력

    → 높을 수록 negative

    8-2) 컬럼 step_description 의 속성값 별 컬럼 step_up_or_test_ct 의 속성값 평균, 30개 이하 제외

    → test_ct_av의 테이블 속성값으로 입력

    → 높을 수록 negative

    8-3) 컬럼 step_description 의 속성값 별 컬럼 step_up_or_test_ct 의 속성값 분산, 30개 이하 제외

    → test_ct_dis의 테이블 속성값으로 입력

    → 높을 수록 negative

    1. 첨부파일과 같이 pivot하여 총 6개의 dataframe 출력
[set_up_av] step_description nonpd_0.00_d_sig_val_090_set nonpd_0.00_load_a_cc_set
end_day station
20251113 FCT1
FCT2
FCT3
FCT4
20251114 FCT1
FCT2
FCT3
FCT4
  1. Step-wise Z 정규화

    1. step_description 기준 정규화

    2. 설비, 날짜 차이 제거

    3. 모든 설비에서 동일 기준 벡터 공간 형성

    [z]set_up_av, [z]set_up_dis, [z]value_av, [z]value_dis, [z]test_ct_av, [z]test_ct_dis

  2. Cluster 생성(결정계수 & VIF & p-value (유의확률)& beta(회귀계수))

    1. 결정 계수 → 높음 → VIF 산출 대상, 중요**) 단 같은 항목끼리의 결정계수는 제외할 것

    → 3가지 dataframe 있을 것

    컬럼 [vector]를 넣어 [z]set_up_av, [z]set_up_dis, [z]value_av, [z]value_dis, [z]test_ct_av, [z]test_ct_dis들을 속성값으로 가질 것

    1-1) 컬럼 feat_a, feat_b의 속성값 별 조건 없음, 1번째 dataframe

    1-2) 아래의 조건에 따라 dataframe 산출할 것

    1-2-1) 컬럼 feat_a, feat_b의 속성값 별 조건 “pd_” or “nonpd_” 에 따라 분류

    1-2-2) nonpd 별 분류 - 2번째 dataframe

    nonpd_1.06 Test Input Voltage(V)

    nonpd_1.07 Test Idle Current(mA)

    nonpd_1.10 Test VUSB_usb(ELoad1=5A)Volt(V)

    nonpd_1.11 Test VUSB_usb(ELoad1=5A)Curr(A)

    nonpd_1.12 Test VUSB_type-C(ELoad2=5A)(V)

    nonpd_1.13 Test VUSB(ELoad2=5A)Volt(V)

    nonpd_1.14 Test VUSB(ELoad2=5A)Curr(A)

    nonpd_1.15 Test VUSB_usb (ELoad1=5A)(V)

    nonpd_1.16 Test Check CC1 level(V)

    nonpd_1.17 Test Check CC2 level(B side)(V)

    nonpd_1.18 Test VUSB_usb(ELoad1=2.4A)(V)

    nonpd_1.19 Test IELoad1(A)

    nonpd_1.20 Test VUSB_type-C(ELoad2=3A)(V)

    nonpd_1.21 Test IELoad2(A)

    nonpd_1.32 Test iqz(uA)

    1-2-3) pd별 분류 - 3번째 dataframe

    pd_1.01 Test Input Voltage(V)

    pd_1.18 Test Input Voltage(V)

    pd_1.19 Test Idle Current(mA)

    pd_1.20 Test VUSB_type-C(No-Load-A_side)

    pd_1.21 Test VUSB_Type-A(No-Load)

    pd_1.22 Test VUSB_Type-A(ELoad1=5A)Current

    pd_1.23 Test VUSB_Type-A(ELoad1=5A)Volt

    pd_1.24 Test VUSB_Type-C(ELoad2=5A)

    pd_1.25 Test VUSB_Type-C(ELoad2=5A)Current

    pd_1.26 Test VUSB_Type-C(ELoad2=5A)Volt

    pd_1.27 Test VUSB_Type-A(ELoad1=5A)

    pd_1.28_Test_IELoad2_Type-C(B_side)

    pd_1.29_Test_VUSB_type-C_B_side(ELoad2=3A)

    pd_1.30 Test IELoad1_Type-A

    pd_1.31_Test_Type-A(ELoad1=2.4A)

    pd_1.33_Test_VUSB_Type-C_A(ELoad2=1.35A)cur

    pd_1.34_Test_VUSB_Type-C_A(ELoad2=1.35A)vol

    pd_1.35 Test Check CC1 level(A side)

    pd_1.36 Test iqz(uA)

    1. VIF 계산 → 10이상 항목 → 회귀계수 이용 → 동일 하드웨어 경로 파악, 중요**) 단 같은 항목끼리는 회귀계수 계산 관련 제외할 것

    2-1) 컬럼 feat_a, feat_b의 속성값 별 조건 없음, 1번째 dataframe

    2-2) 아래의 조건에 따라 dataframe 산출할 것

  3. Track A - 장비 Health Index(단조 경감) : 설비 내 장비 이상 유무 체크**(cell14번의 결정계수는 단순히 후보일 뿐)**

  4. Track B - Fail Risk Index( 스페어파트 이벤트)

  5. 원인 판별 로직

| --- | --- | --- | --- |

  1. 운영 안정 장치

| --- | --- |

  1. Random Forest 예측

| --- | --- |