안녕하세요? 11기 Yo토르 (심성욱) 입니다.
반복 및 변경사항에 대해서 알려주지 않는 고객 WEB EDI 발주에 대해서 발주수량 forecast 변동 분석을 자동화 하여 해당 업무 소요시간을 줄이고 보다 빠른 내용을 사내에 공유하고 담당수기 입력 실수로 인해 발생 될수 있는 실수 방지 하는것을 목표로 개발 합니다.
<개발 과정 요약>
고객 웹 EDI를 다운 받습니다. in CSV format (ZAP or Make로 연계 가능여부 확인)
고객 WEB EDI CSV format이 불규칙한 structure로 되어 있어서 이 부분을 GPT에 러닝 시킵니다. (매주 1개 excel file이 고객 portal로 부터 생성 업데이트 되며 해당 파일 안에는 10가지 이상 다른 제품에 대한 발주 정보가 각각 있습니다.) 많은 정보안에서 원하는 DATA를 “Product Part Number” 입력시 자동으로 불러와서 원하는 양식으로 만들어 주도록 러닝 시킵니다.
2번이 완료되면 지난주 vs 이번주 2가지 raw data를 자동으로 정리하여 고객 발주 변화를 catch 하도록 합니다.
해당 분석을 Product Part Number 별로 자동 summary 요약본으로 작성하여 변동을 표현하고 특히 변동폭이 15% 이상 이하 일 경우 주의로 색깔 표시하여 담당이 인지하고 누락없이 챙길 수 있도록 알려 줍니다.
[진행 사항]
고객 Portal에서 다운받은 CSV format 불규칙한 부분을 문장으로 설명하기에 어려움이 있어서 몇차례 시도 이후에 아래와 같이
a. 색깔로 해당 Product Part Number을 찾아
b. 다른 색깔로 표시한 data를 가져오도록
직접 capture 하여 그 림파일로 교육을 시켰습니다.
—> 여기서 추가로 제가 원한 output format 으로 정리 해달라고 요청했습니다.
—> GPT가 부족한 가르침에도 원하는 부분이 습득을 한거 같아 기분이 좋아졌습니다.
—>우연의 일치인지…. 코딩 확인 해보고 추가 점검이 필요합니다..ㅜㅜ
노코딩인지라… 어릴때 Java 조금 배운거 말곤… python 배워야겠네요..
도움 요청 예정 ㅎㅎ
# Extracting data for "EB1B2A5ZBA01" and organizing it into the specified format
# Initialize lists to store firm and forecast orders
firm_orders = []
forecast_orders = []
# Define the starting index based on identified "EB1B2A5ZBA01" in 'Material'
start_index = 462
# Extracting the firm order data
for offset in range(1, 20): # Check the next 20 rows for relevant data
current_index = start_index + offset
if current_index >= len(data):
break
current_row = data.iloc[current_index]
if current_row[0] == 'Date_Daily_Start':
for inner_offset in range(1, 10): # Check the next few rows for NetQty_Daily
potential_index = current_index + inner_offset
if potential_index >= len(data):
break
potential_row = data.iloc[potential_index]
if potential_row[2] == 'NetQty_Daily':
firm_orders.append([current_row[1], potential_row[4]])
if current_row[0] == 'Date_Daily_Planning_Start':
for inner_offset in range(1, 10): # Check the next few rows for NetQty_Daily_Planning
potential_index = current_index + inner_offset
if potential_index >= len(data):
break
potential_row = data.iloc[potential_index]
if potential_row[2] == 'NetQty_Daily_Planning':
forecast_orders.append([current_row[1], potential_row[4]])
# Convert lists to DataFrames for visualization
firm_orders_df = pd.DataFrame(firm_orders, columns=['Date_Daily_Start', 'NetQty_Daily'])
forecast_orders_df = pd.DataFrame(forecast_orders, columns=['Date_Daily_Planning_Start', 'NetQty_Daily_Planning'])
# Combining both firm and forecast orders into a single DataFrame for display
combined_df = pd.concat([firm_orders_df, forecast_orders_df], axis=1)
# Display the combined DataFrame in the desired format
import ace_tools as tools; tools.display_dataframe_to_user(name="Organized Orders Data for EB1B2A5ZBA01", dataframe=combined_df)
combined_df
—>이제 random Product Part Number를 넣어서 같은 format으로 자동으로 정확한 data을 찾아 정리 해준다면 다음으로 이동해서 변동사항 자동분석 완성 해보도록 하겠습니다.
raw data 파일이 GPT 읽기 쉽게 정리가 되지 않는 점이 아쉽지만…
이런 raw data가 고객사별로 format 및 logic 들이 다른데 이 부분을 어떻게 극복할지가 이번 개발 이후 큰 숙제일거 같습니다.
아무튼 이 해당 고객사 발주변화 분석 업무 우선 자동화 시켜서 더 업그레이드 하여 하나의 고객에 국한 되지 않고 해당 업무 자동화를 공용화 하는 방법 찾아보고자 합니다.
끝까지 부족한 내용 봐주셔서 감사드리며 부족한점 그리고 더 좋은 방법 이나 도움 말씀 주시면 감사하겠습니다.