tonykang22 / hello-world-auto-store

3 stars 1 forks source link

[product-analyzer] 현 Select-score / Sourcing-results 로직 정리 #184

Closed tonykang22 closed 1 year ago

tonykang22 commented 1 year ago

현 Select-score / Sourcing-results 로직 정리

개요



Select-score

Naver-category

변경 전

  1. Filtered 네이버 카테고리 엑셀 파일을 읽어옴
    • 생성할 Select-score의 size가 명시되지 않으면 모든 카테고리를 가져온다.
    • Size가 명시되면 Random을 통하여 size에 맞춰 리스트를 자른다.
  2. Webdriver를 사용하여, 리스트의 element로 itemscout에 검색
    • Element로 검색한 결과의 카테고리가 다중 카테고리라면 가져온 데이터를 버린다.
    • ItemScoutIndicatorDto에 가져온 정보들을 매핑한다.
  3. SelectScoreFactory를 통하여 계산
    • Threshold를 계산한 후, threshold에 부합하지 않는 상품은 제외한다.
    • Min-max scaling을 한 후, 내부 weight를 적용한 값으로 점수를 메겨 순위를 결정한다.



변경 후

  1. 동일
  2. (ThreadPool 적용) API를 사용하여, 리스트의 element로 itemscout를 호출
    • Element로 검색한 결과의 카테고리가 유효한 카테고리인지 검증한다.
    • NaverCategoryReader를 통해, 초기화될 때 읽어둔 엑셀 파일 정보를 사용한다.
  3. 계산 시작 전, 해외 상품 지수 = 0 상품은 제외한다.



Panda-rank

변경 전

  1. Webdriver를 통해 판다랭크 홈페이지 접근
    • 카테고리란을 선택하여, 모든 1차 & 2차 카테고리의 키워드를 확인한다.
    • 황금 키워드라면 리스트에 저장해둔다.
  2. Naver-category와 동일 (ItemScout)
  3. Naver-category와 동일 (SelectScoreFactory)



변경 후

  1. API를 통해 판다랭크 호출
    • NaverCategoryReader의 유효한 카테고리 에서 약 200 개의 카테고리를 선정한다. (Random)
      • Panda-rank는 1 분에 28회의 호출만 허용하며 API 호출에서 예외 상황이 적으므로 싱글 스레드를 사용한다.
  2. 동일
  3. 동일



Sourcing-results

Naver-category == Panda-rank

변경 전

  1. (단일 스레드) Rainforest API를 통해 select-score 검색
  2. AmazonSourcingProductFactory를 통해 상품 정보 매핑
  3. 상품 검증
    • 금기어, 가격, 재고 등



변경 후

  1. (ForkJoinPool 적용) 동일
    • Rainforest API 사용 시 올바른 refinements 사용하도록 한다.
      • 555

  2. 상품 검증 로직은 AmazonSourcingProductFactory의 관심사로 변경



이슈 사항

ItemScout 카테고리 필터링



tonykang22 commented 1 year ago

중간 결론

지엽적인 Itemscout 키워드



대분류 카테고리 id