DB 설정
DB_CONFIG = {"host": "100.105.75.47", "port": 5432, "dbname": "postgres", "user": "postgres", "password": "",} #비번은 보안사항
기본 설정 : 주 야간 생산 분류 - 한국 시간(KST) 로컬 기준
주간 : [D-DAY] 08:30:00 ~ 20:29:59 → day 로 설정(08:30:00 & 20:29:59 포함)
야간 : [D-DAY] 20:30:00 ~ 23:59:59 + [DAY+1일] 00:00:00 ~ 08:29:59 → night 로 설정(20:30:00 & 08:29:59 포함)
→ 주 야간 별로 시간 겹치지 않을 것
→ DB 시간 형식 관련 "HH:MI:SS"형식으로 정규화
계획 정지 시간 → 20260130 day와 20260130 night 기준으로 계산할 것
3-1) 계획 정지 시간 집계
3-2) 계획 정지 시간 총합 산출
컬럼 to_time의 속성값 - 컬럼 from_time의 속성값 = 계획 정지 시간, 초로 환산하고 총합을 컬럼 total_planned_time에 속성값으로 넣을 것
그리고 그 총합을 계획 정지 시간을 “h시간 m분 s초”로, 단 0인 단위는 제외하여 41초, 2분 5초, 1시간 3초, 1시간 2분 5초 이런식으로 표현하여 컬럼 Total 계획 정지 시간의 속성값으로 넣을 것
컬럼 updated_at의 속성값은 해당 dataframe이 만들어지고 update되는 timestamp를 속성값으로 넣을 것
분류 기준에 맞춰 아래와 같이 day와 night는 분류하여 dataframe 출력
| prod_day | shift_type | from_time | to_time | Total 계획 정지 시간 | total_planned_time | updated_at |
|---|---|---|---|---|---|---|
| 20260108 | day |
| prod_day | shift_type | from_time | to_time | Total 계획 정지 시간 | total_planned_time | updated_at |
|---|---|---|---|---|---|---|
| 20250108 | night | from_time | to_time |
비가동 시간 → 20260130 day와 20260130 night 기준으로 계산할 것
4-1) 비가동 시간 집계 제외 기준
3-1) 번 계획 정지 시간 집계에 들어간 스키마 : g_production_film, 테이블 : planned_time 안에 컬럼 end_day, from_time, to_time의 속성값 범위는 제외할 것
→ 계획 정지 시간이 우선시 될 것
예시 계획 정지 시간 → end_day : 20260130, from_time : 13:20:00, to_time : 13:30:00
비가동 시간 → end_day : 20260130, from_time : 13:10:00, to_time : 13:21:00 → 비가동 시간 to_time : 13:19:59.59 로 반영될 것
비가동 시간 → end_day : 20260130, from_time : 13:29:00, to_time : 13:31:00 → 비가동 시간 from_time : 13:30:00.01 로 반영될 것
4-2) 비가동 시간 집계
4-3) 컬럼 station의 속성값 별 비가동 시간 총합
4-4) Vision 비가동 시간 총합 산출
| prod_day | shift_type | 비가동 FCT1 | 비가동 FCT2 | 비가동 Vision1 | 비가동 FCT3 | 비가동 FCT4 | 비가동 Vision2 | Total Vision 비가동 시간 | vision1_non_time | vision2_non_time | total_vision_non_time | updated_at |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260108 | day |
| prod_day | shift_type | 비가동 FCT1 | 비가동 FCT2 | 비가동 Vision1 | 비가동 FCT3 | 비가동 FCT4 | 비가동 Vision2 | Total Vision 비가동 시간 | vision1_non_time | vision2_non_time | total_vision_non_time | updated_at |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260108 | night |
윈도우 설정
주간 : [D-DAY] 08:30:00 ~ 20:29:59 → day 로 설정(08:30:00 & 20:29:59 포함)
야간 : [D-DAY] 20:30:00 ~ 23:59:59 + [DAY+1일] 00:00:00 ~ 08:29:59 → night 로 설정(20:30:00 & 08:29:59 포함)
날짜는 [WINDOW]기준 현재날짜 및 현재 시각으로 Default하여 자동으로 전환될 것
멀티프로세스 = 1개
무한 루프 인터벌 5초
DB 서버 접속 실패 시 무한 재시도(연결 성공할 때까지 블로킹)
DB 서버 접속 후 중간에 끊어지면 다시 접속 무한 재시도할 것
백엔드별 상시 연결을 1개로 고정(풀 최소화)
work_mem 폭증 방지: 기존처럼 PG_WORK_MEM 환경변수 읽어서 연결 시 SET work_mem = '4MB' 으로 연결
*DB접속 시 “PK 이후 데이터” 증분 조건은 (Barcode_information, end_day, end_time, station) 기준으로 적용
seen_pk: set[(Barcode_information, end_day, end_time, station )] 중복 방지 캐시 추가할 것