1. 경로 설정 Postgre 접속

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

  2. FAIL된 바코드 리스트 가지고 오기

    스키마 : e2_fct_vision_test_ct

    테이블 : fct_test_fail_info

    FAIL 처리된 테이블의 컬럼 barcode_information의 속성값들을 가지고 오고 dataframe 출력

  3. FAIL된 리스트에 가성 불량인 것 & 최초 fail 시기 골라 내기

    스키마 : a2_fct_vision_testlog_json_processing

    테이블 : fct_vision_testlog_json_processing

    3-1번째 조건 : 2번의 컬럼 barcode_information의 속성값과 일치

    3-2번째 조건 : 컬럼 station의 속성값이 FCT1~4만 해당 3-3번째 조건 : 아래의 조건에 따라 주간 또는 야간 시간 조건만 해당

    주간 : (D-DAY, end_time의 속성값) 08:30:00 ~ 20:29:59

    야간 : (D-DAY, end_time의 속성값) 20:30:00 ~ 23:59:59 + (D-DAY, end_time의 속성값+1일) 00:.00:00 ~ 08:29:59

    3-4번째 조건 : 3-1~3번을 만족하면서 제일 늦은 시간(end_time)에 컬럼 result의 속성값이 PASS인 경우

    3-5번째 조건 : dataframe 출력하는데 컬럼은 [station, end_day, end_time, barcode_information, result] 순서

    3-6번째 조건 : 컬럼 station의 속성값 FCT1 따로 FCT2따로 FCT3따로 FCT4따로 4개의 dataframe 출력

    3-7번째 조건 : 컬럼 end_day과 end_time은 오름차순으로 정렬

    3-8번째 조건 : 컬럼 end_time을 기준으로 최초로 컬럼 result에 속성값 FAIL로 기록된 dataframe 출력

    [station, end_day, end_time, barcode_information, result] 순서로 출력하고 컬럼 station 속성값 FCT1 따로 FCT2따로 FCT3따로 FCT4따로 4개의 dataframe 출력

  4. 시간 순서대로 PASS 데이터 정렬

    스키마 : a2_fct_vision_testlog_json_processing

    테이블 : fct_vision_testlog_json_processing

    4-1번째 조건 : 컬럼 station의 속성값이 FCT1~4만 해당

    4-2번째 조건: 컬럼 result의 속성값이 PASS만 해당 4-3번째 조건 : dataframe 출력하는데 컬럼은 [station, end_day, end_time, barcode_information, result] 순서로 출력

    4-4번째 조건 : 컬럼 station의 속성값 FCT1 ,FCT2, FCT3, FCT4, 4개의 dataframe 출력

    4-5번째 조건 : 컬럼 end_day과 end_time은 오름차순으로 정렬

  5. 시간 순서대로 정렬된 PASS 데이터를 최초 FAIL 데이터 사이에 넣기

    4-5번째의 조건에 맞게 FCT1~4별로 출력된 dataframe들을 아래의 조건에 맞게 3-8번에 출력된 dataframe 사이에 삽입되어 새롭게 출력될 것

    5-1번째 조건 : 3-8번에 출력된 dataframe의 컬럼 [station, end_day, end_time, barcode_information, result]에서 station 속성값이 같을 것

    5-2번째 조건 : 3-8번 dataframe의 end_day와 end_time의 속성값이 아래의 시간 조건에 따라 주간이면 주간, 야간이면 야간에 해당될 것, 이외의 조건이라면 제외

    주간 : (D-DAY, end_time의 속성값) 08:30:00 ~ 20:29:59

    야간 : (D-DAY, end_time의 속성값) 20:30:00 ~ 23:59:59 + (D-DAY, end_time의 속성값+1일) 00:.00:00 ~ 08:29:59

    5-3번째 조건 : 3-8번에 출력된 dataframe의 컬럼 [station, end_day, end_time, barcode_information, result]에서 end_time의 속성값보다 이전 시간일 것(시간이 빠른 것)

    5-4번째 조건 : 최고 30개까지 가지고 와서 3-8번 출력된 dataframe 사이에 출력하고 PASS 최대 30개 + FAIL 1개 블럭 구조마다 컬럼 fail_estimation_group 으로 만들어서 컬럼 end_time 오름차순 순서대로 속성값 1,2,3….으로 만들 것

    예시

    station end_day end_time barcode_information result fail_estimation_group
    1 FCT4 20251001 01:25:10 BA1WJ25273504235SJ8T-14F014-AE PASS 1
    2 FCT4 20251001 01:25:40 BA1WJ25273504231SJ8T-14F014-AE PASS 1
    3 FCT4 20251001 01:26:41 BA1WJ25273504232SJ8T-14F014-AE PASS 1
    4 FCT4 20251001 01:27:17 BA1WJ25273504230SJ8T-14F014-AE PASS 1
    5 FCT4 20251001 01:27:52 BA1WJ25273504242SJ8T-14F014-AE PASS 1
    6 FCT4 20251001 01:28:35 BA1WJ25273504240SJ8T-14F014-AE PASS 1
    FCT4 20251001 01:29:09 BA1WJ25273504238SJ8T-14F014-AE PASS 1
    FCT4 20251001 01:29:49 BA1WJ25273504250SJ8T-14F014-AE PASS 1
    FCT4 20251001 01:30:30 BA1WJ25273504248SJ8T-14F014-AE FAIL 1
    FCT4 20251001 01:31:06 BA1WJ25273504246SJ8T-14F014-AE PASS 1
    FCT4 20251001 01:31:47 BA1WJ25273504244SJ8T-14F014-AE PASS 1
    FCT4 20251001 01:32:21 BA1WJ25273504213SJ8T-14F014-AE PASS 1
    FCT4 20251001 01:32:54 BA1WJ25273504211SJ8T-14F014-AE 1
    29 FCT4 20251001 01:33:38 BA1WJ25273504209SJ8T-14F014-AE PASS 1
    30 FCT4 20251001 01:33:38 BA1WJ25273504209SJ8T-14F014-AE PASS 2
    31 FCT4 20251001 01:34:19 BA1WJ25273504222SJ8T-14F014-AE PASS 1
    32 FCT4 20251001 01:34:19 BA1WJ25273504222SJ8T-14F014-AE PASS 2
    33 FCT4 20251001 01:35:02 BA1WJ25273504219SJ8T-14F014-AE PASS 1
    34 FCT4 20251001 01:35:02 BA1WJ25273504219SJ8T-14F014-AE PASS 2
    35 FCT4 20251001 01:35:43 BA1WJ25273504217SJ8T-14F014-AE PASS 1
    36 FCT4 20251001 01:35:43 BA1WJ25273504217SJ8T-14F014-AE PASS 2
    37 FCT4 20251001 01:36:17 BA1WJ25273504215SJ8T-14F014-AE PASS 1
    38 FCT4 20251001 01:36:17 BA1WJ25273504215SJ8T-14F014-AE PASS 2
    24
    25
    26
    27
    28
    29
    30
    31 FCT4 20251001 01:30:40 BA1WJ25273504204SJ8T-14F014-AE FAIL
  6. 시간 순서대로 정렬된 PASS 데이터를 최초 FAIL 데이터 사이에 넣기 + 아래의 조건으로 나누기

    5번에 출력된 dataframe에 컬럼 result의 속성값 FAIL을 제외한 모든 데이터들을 컬럼 station 속성값 FCT1~4 별로 출력하는 데

    컬럼 remark를 추가하여 속성값 PD 또는 Non-PD로 나눌 것, 기준은 아래와 같음

    barcode_information 의 18번째 자리가 ‘J 또는 S’일 경우 ‘PD’로 분류

    barcode_information 의 18번째 자리가 ‘J 또는 S’가 아닐 경우 ‘Non-PD’로 분류

  7. 6번까지의 가성 불량발생 전 30개의 PASS 데이터를 가지고 와서 아래와 같이 분류

    스키마 : a4_fct_json_table_processing

    테이블 : fct_json_table_processing

    해당 테이블의 데이터들을 가지고 오는데 아래의 조건을 따를 것

    7-1번째 : 6번 출력된 dataframe안의 [station, end_day, end_time, barcode_information, result, remark, fail_estimation_group]의 컬럼 stataion과 end_day, end_time, barcode_information, result가 동일한 데이터를 가질 것

    7-2번째 : 7-1번째에 해당하는 데이터들의 step_description의 속성값과 그에 해당하는 컬럼 value의 속성값 추가

    7-3번째 : 속성값에 결측치가 있으면 제외

    7-4번째 : 컬럼 station 속성값 FCT1~4별 / 컬럼 remark 속성값 PD or Non-PD 별로 나눠서 총 8가지의 dataframe을 첨부된 예시와 같이 출력할 것

    예시

    remark station end_day barcode_information step_decription value
    1 PD FCT4 20251001 BA1WJ25273504235SJ8T-14F014-AE 1.01 Test Input Voltage(V) 14.67
    2 PD FCT4 20251001 BA1WJ25273504231SJ8T-14F014-AE 1.02_Test_USB2_error(Type-C_A_side) 0
    3
    4
    5
    1. 해당 dataframe을 postgreSQL로 저장

    2. 스키마 : a4_fct_json_table_processing

    3. 스키마 : a4_fct_json_table_processing

    4. 10번의 dataframe들을 postgre로 저장

    5. 스키마 : e3_fct_dataframe




    1. 경로 설정 Postgre 접속

    2.스키마는 e3_fct_dataframe

    테이블 fct1_pd_pass_dataframe

    테이블 fct1_non_pd_pass_dataframe