개요

중요 포인트

데이터 연결

데이터 연결이 필수적인 시스템으로 기존 데이터가 Google Spread Sheet에 저장되어 있는 것을 그대로 활용하기 위해서 Google API를 연결하여 사용

연결 프로세스를 위해서 gspread를 사용하여 Spread Sheet에 있는 데이터를 불러온 다음 pandas DataFrame에 담아 저장했다.

수정된 데이터를 위해서는 반대 방향으로 위의 프로세스를 이행할 수 있도록 했다.

가장 처음 프로그래밍 언어를 배우고 실용적인 사용에 적용했던 코드였다. 그래서 처음에는 중구난방으로 작성했다. 시간이 지나가면서 내가 보기 좋은 구조로 바꾸고, 클래스도 도입했던 부분이다.

데이터 처리 과정

데이터 처리하는 과정을 함수로 최대한 짜기 시작했다. 처리해야할 내용은 다음과 같았다.

  1. 전 처리
    1. 주문 내용을 가져온다.
    2. 주문자의 정보를 확인한다 - 이전 주문의 유무, 상품의 종류
    3. 상품의 종류 중 랜덤 박스의 상품의 경우 해당 달의 랜덤 상품들에서 회원의 선호도를 바탕으로 여러가지의 후보군을 생성
  2. 후 처리
    1. 후보군 생성을 보고 최종 아이템을 선택
    2. 선택한 아이템들의 중복 여부 및 오류 확인
    3. 재고가 있는 상품과 주문해야할 상품 확인
  3. 라벨 생성
    1. 상품에 맞는 택배사를 확인 한 후 상품 정보가 담긴 포장용 라벨 생성
    2. 포장 후 포장용 라벨 정보를 바탕으로 각 택배사에 맞는 라벨 정보를 테이블 데이터 출력
    3. 최종 라벨 출력

간략하게 만들어지는 데이터 처리의 과정은 말로는 간단해보였지만 각각의 과정마다 어려움이 있었다. 처리된 데이터를 저장하는 것에 어려움이 있었고, 이런 처리 과정을 코드를 직접 실행하는 것이 아닌 사용자 친화적인 조금의 인터페이스가 존재해야하는 것도 생각할 수 있었다.

전 처리

  1. 주문 내용을 가져온다

    가장 먼저 데이터 연결하는 과정을 통해 Google Spread Sheet에 있는 데이터를 가져왔다. 그리고 Paypal API를 통해서 가장 최근 주문부터 라벨이 출력되었던 날짜의 데이터를 가져와 내가 처리한 형식으로 바꿔주는 과정을 거치고 저장했다.

    처음에는 Paypal 데이터를 직접 추출하여 입력하기도 했지만 추후 Paypal API 사용해보면서 정보 조회를 직접 코드에 넣는 방식으로 바뀌었다.

  2. 주문자의 정보를 확인한다.

    주문자의 정보는 주문 정보를 통해 확인 할 수 있었는데, 이 고객의 고유 번호 혹은 이메일을 통해 기존의 배송된 아이템들과 선호 데이터를 가져오거나 신규 회원인지 확인하는 과정을 거쳐야 했다.

  3. 후보군 생성

    여기까지 마친 후 상품 배송 및 선택하는 담당자에게 넘겨졌다. 먼저 이번 달에 선택될 아이템들과 재고있는 아이템 풀을 가지고 회원이 받지 않았던 상품들을 추려서 몇 가지의 후보군을 생성해서 테이블에 보여줬다.

    재고 같은 경우에는 직접 입력하는 방식을 맨 처음에 채택했지만 아이템이 많아짐에 따라 관리가 어려워졌다. 그래서 최종 라벨을 출력하는 단계에서 아이템을 확인하고 재고를 자동으로 관리할 수 있게 변화를 줬다.

후 처리