1. db 접속 경로

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

  2. 해당 스키마 : c1_fct_detail, 해당 테이블 : fct_detail

  3. 컬럼 end_day 조건 : 2025-11-16 ~ 2025-11-18

  4. 컬럼 group을 추가하여 컬럼 barcode_information, end_day, end_time이 같으면 같은 컬럼 group의 속성값 대입 1,2,3…..

  5. 컬럼 contents의 속성값에 ‘MES’ 단어가 들어가는 행과 그 group 전체는 제외

  6. 컬럼 end_day, end_time의 속성값을 오름차순 정렬

  7. 컬럼 group, barcode_information, remark, end_day, end_time, contents, test_ct, test_time, file_path 순서로 dataframe 출력

  8. 컬럼 group의 동일한 속성값 안에 들어가 있는 행들은 컬럼 test_time의 속성값을 오름차순으로 정렬

  9. 컬럼 remark의 속성값 ‘PD’ 인 경우, 컬럼 contents : 테스트 결과 : OK 또는 테스트 결과 : NG → 총 78개

    9-1) 컬럼 test_time 속성값 오름차순으로 정렬 후, 각 group 별로 반드시 아래와 같이 진행될 것

    1번째 contents : ‘테스트 결과 : OK or 테스트 결과 : NG행’ 에 해당하는 행의 컬럼 test_ct의 속성값과 이전 모든 행의 컬럼 test_ct의 속성값을 모두 더한 값을 컬럼 set_up_or_test_ct의 속성값으로 넣을 것

    2번째부터 78번째의 contents : ‘테스트 결과 : OK or 테스트 결과 : NG행’ 에 해당하는 행의 컬럼 test_ct의 속성값과 바로 이전 contents : ‘테스트 결과 : OK or 테스트 결과 : NG’ 에 해당하는 행 이전까지의 행의 test_ct 속성값을 모두 더해서 컬럼 set_up_or_test_ct의 속성값으로 넣을 것

    예시) contents : 00674~192.168.108.154~FCT~PPIDBA1WJ25350502026USJ8T-14F014-AF~00~OK~END, test_ct : [NULL]

    contents : START :: DMM SET CURRENT RANGE, test_ct : 2.24

    contents : MODE SET :: CURR_RANG, test_ct : 4.33

    1번째 contents : 테스트 결과 : OK, test_ct : 0.01 → set_up_or_test_ct : 6.58

    contents : START :: DO SET, test_ct : 0.02

    contents : DO_SET Value :: 0900800080005000, test_ct : 0.01

    2번째 contents : 테스트 결과 : OK, test_ct : 0.01 → 0.04

  10. 컬럼 remark의 속성값 ‘PD’ 인 경우, 컬럼 contents의 속성값 : 테스트 결과 : OK 또는 테스트 결과 : NG → 총 78개

    10-1) 아래의 컬럼 contents의 속성값 : 테스트 결과 : OK 또는 테스트 결과 : NG 의 순서 별로 컬럼 step_decription을 만들어서 속성값으로 넣을 것

    1번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_dmm_c_rng_set

    2번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_d_sig_val_090_set

    3번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_load_c_set_cc

    4번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_load_c_cc_rng_set

    5번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_d_sig_val_000_set

    6번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_dmm_dc_v_set

    7번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_dmm_ac_0.6_set

    8번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_ps_14.7_set

    9번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_dmm_dc_c_set

    10번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.01_ps_14.7_on

    11번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.00_dmm_ac_0.6_set

    12번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.01 Test Input Voltage(V)

    13번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.02_Test_USB2_error(Type-C_A_side)

    14번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.03_Test USB2 benchmark.maxrd(Mbit/s)

    15번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.04 Test USB2 benchmark.maxwr(Mbit/s)

    16번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.05 Test USB2 benchmark.avgrw(Mbit/s)

    17번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.06_Test_USB1_error(Type-A)

    18번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.07 Test USB1 benchmark.maxrd(Mbit/s)

    19번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.08 Test USB1 benchmark.maxwr(Mbit/s)

    20번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.09 Test USB1 benchmark.avgrw(Mbit/s)

    21번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.10 Test Boston Firmware Version

    22번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.11 Test Boston ASIC Version

    23번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.12_Test_Carplay_Type-C(B_side)

    24번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.13_Test_Carplay_Type-A

    25번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.14 Profile Count Check

    26번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_dmm_c_rng_set

    27번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_load_a_cc_set

    28번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_load_a_rng_set

    29번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_load_c_cc_set

    30번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_load_c_rng_set

    31번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_dmm_regi_set

    32번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_dmm_regi_ac_0.6_set

    33번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15_d_sig_val_000_set

    34번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.15 Test Power-NC_Line(ohm)Resistor

    35번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.16 Test DIM-NC_Line(ohm)

    36번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.17 Test DIM-GND(ohm)

    37번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_dmm_dc_v_set

    38번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_dmm_ac_0.6_set

    39번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_dmm_dc_c_set

    40번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_load_a_sensing_on

    41번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_load_c_sensing_on

    42번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_ps_18v_set

    43번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_ps_18v_on

    44번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18_dmm_ac_0.6_set

    45번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.18 Test Input Voltage(V)

    46번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.19 Test Idle Current(mA)

    47번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.20 Test VUSB_type-C(No-Load-A_side)

    48번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.21 Test VUSB_Type-A(No-Load)

    49번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.22_dmm_3c_rng_set

    50번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.22_load_a_5c_set

    51번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.22_load_a_on

    52번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.22 Test VUSB_Type-A(ELoad1=5A)Current

    53번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.23 Test VUSB_Type-A(ELoad1=5A)Volt

    54번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.24 Test VUSB_Type-C(ELoad2=5A)

    55번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.25_load_a_off

    56번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.25_load_c_5c_set

    57번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.24_load_c_on

    58번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.25 Test VUSB_Type-C(ELoad2=5A)Current

    59번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.26 Test VUSB_Type-C(ELoad2=5A)Volt

    60번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.27 Test VUSB_Type-A(ELoad1=5A)

    61번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.28_load_c_off

    62번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.28_load_a_2.4c_set

    63번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.28_load_c_3c_set

    64번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.28_load_a_2.4c_on

    65번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.28_load_c_3c_on

    66번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.28_Test_IELoad2_Type-C(B_side)

    67번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.29_Test_VUSB_type-C_B_side(ELoad2=3A)

    68번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.30 Test IELoad1_Type-A

    69번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.31_Test_Type-A(ELoad1=2.4A)

    70번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.32_load_c_1.3c_set

    71번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.32_PD Negotiation SET PDO4

    72번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.33_Test_VUSB_Type-C_A(ELoad2=1.35A)cur

    73번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.34_Test_VUSB_Type-C_A(ELoad2=1.35A)vol

    74번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.35 Test Check CC1 level(A side)

    75번째 테스트 결과 : OK or 테스트 결과 : NG > pd_1.36_load_c_off

  11. 컬럼 step_description의 속성값 pd_1.10 Test Boston Firmware Version, pd_1.11 Test Boston ASIC Version, pd_1.02_Test_USB2_error(Type-C_A_side)

, pd_1.03_Test USB2 benchmark.maxrd(Mbit/s), pd_1.04 Test USB2 benchmark.maxwr(Mbit/s), pd_1.05 Test USB2 benchmark.avgrw(Mbit/s), pd_1.06_Test_USB1_error(Type-A), pd_1.07 Test USB1 benchmark.maxrd(Mbit/s), pd_1.08 Test USB1 benchmark.maxwr(Mbit/s), pd_1.09 Test USB1 benchmark.avgrw(Mbit/s)에 해당하는 행은 삭제

  1. 컬럼 remark의 속성값 ‘Non-PD’ 인 경우, 컬럼 contents : 테스트 결과 : OK 또는 테스트 결과 : NG → 총 67개

  2. 컬럼 remark의 속성값 ‘Non-PD’ 인 경우, 컬럼 contents : 테스트 결과 : OK 또는 테스트 결과 : NG → 총 67개

  3. 컬럼 step_description의 속성값 nonpd_1.08 Test Boston Firmware Version, nonpd_1.09 Test Boston ASIC Version, nonpd_1.24 Test USB2 error, nonpd_1.25 Test USB2 benchmark.maxrd(Mbit/s), nonpd_1.26 Test USB2 benchmark.maxwr(Mbit/s), nonpd_1.27 Test USB2 benchmark.avgrw(Mbit/s), nonpd_1.28 Test USB1 error, nonpd_1.29 Test USB1 benchmark.maxrd(Mbit/s), nonpd_1.30 Test USB1 benchmark.maxwr(Mbit/s), nonpd_1.31 Test USB1 benchmark.avgrw(Mbit/s) 에 해당하는 행은 삭제

  4. 컬럼 group, barcode_information, remark, end_day, end_time, contents, step_description, set_up_or_test_ct, test_ct, test_time, file_path 순서로 dataframe 출력

  5. 출력된 dataframe에 컬럼 barcode_information, end_day, end_time의 속성값이 같은 행을 스키마 : a2_fct_table, 테이블 : fct_table에서 찾아 컬럼 station, run_time과 그 속성값을 dataframe에 추가할 것

  6. 컬럼 step_description에 속성값 제일 앞에 ‘pd_’와 ‘nonpd_’를 제외하고 스키마 : a2_fct_table, 테이블 : fct_table의 컬럼 step_description을 찾아 해당 행의 컬럼 value, min, max, result의 속성값을 컬럼 value, min, max, result로 만들어서 추가할 것

  7. 컬럼 group, barcode_information, station, remark, end_day, end_time, run_time, contents, step_description, set_up_or_test_ct, value, min, max, result, test_ct, test_time, file_path 순서로 dataframe 출력

  8. 해당 dataframe 스키마 : f_database, 테이블 : fct_database(없으면 만들 것, 있으면 data만 update)