토스쇼핑 Open API 상품 선별을 위한 데이터 구조 만들기 (개발기 9편)

토스쇼핑 Open API 개발기 9편에서는 플러그인 v1.7.0에서 기존 상품 DB를 바탕으로 상품 선별용 데이터를 별도 테이블로 만들고, 같은 상품을 다시 실행해도 중복 생성 없이 기존 데이터가 갱신되는 것까지 실제로 확인한 과정을 기록합니다. 이번 버전은 상품을 추천하거나 점수화하는 기능이 아니라, 그 판단에 쓸 데이터 구조를 준비하는 단계입니다.

이번 글의 위치: 상품을 고르기 전에 데이터부터 정리하기

이번 글은 토스쇼핑 상품을 소개하거나 평가하는 글이 아닙니다. WordPress 기반 토스쇼핑 Open API 연동 플러그인을 개발하면서, v1.7.0에서 상품 선별용 데이터 구조를 만들고 검증한 과정을 남기는 개발기입니다.

앞선 1편에서는 API 키 발급을 다뤘고, 2편에서는 OAuth와 Health API 연결을 테스트했습니다. 이어서 3편에서 상품을 조회해 상품 ID를 확보했고, 4편에서 상품 상세 조회 API를, 5편에서 쉐어링크 발급을 테스트했습니다.

6편에서는 상품 정보를 WordPress DB에 저장하는 구조를 만들었고, 7편과 8편에서는 상품 상세 정보를 저장하고 여러 상품의 상세 정보를 일괄 갱신할 수 있도록 확장했습니다.

단계내용
1~5편API 키 발급, OAuth·Health 연결, 상품 조회, 상세 조회, 쉐어링크 발급 테스트
6편상품 정보를 WordPress DB에 저장
7편저장된 상품의 상세 정보 업데이트
8편상품 상세 정보 일괄 조회 및 DB 업데이트
9편(이번 글)상품 DB를 바탕으로 상품 선별용 데이터 구조 생성

왜 상품 선별용 데이터가 필요한가

여기까지의 흐름은 상품 조회, 상품 상세 조회, WordPress DB 저장, 상세 정보 업데이트, 일괄 갱신입니다. 데이터를 쌓고 최신 상태로 유지하는 기능은 갖춰졌지만, 그 데이터를 “어떤 상품을 다룰지 고르는 용도”로 쓰기 위한 구조는 아직 없었습니다.

그래서 v1.7.0에서는 상품을 실제로 고르는 로직보다 먼저, 선별 로직이 읽어 갈 수 있는 형태로 데이터를 정리하는 데 집중했습니다. 어떤 상품이 좋은지 판단하려면 그 판단에 필요한 데이터가 안정적으로 확보되고 구조화되어 있어야 하기 때문입니다.

v1.7.0의 핵심 흐름

기존 상품 DB → 상품 선별용 데이터 생성 → 신규 상품이면 생성, 이미 존재하면 갱신

v1.7.0 설계: 원본 데이터와 선별용 데이터의 분리

이번 버전에서는 기존 상품 데이터와 향후 선별 과정에서 사용할 데이터를 서로 다른 테이블로 나누는 방향으로 설계했습니다.

구분테이블역할
기존 상품 데이터{WP prefix}jb_toss_productsAPI에서 받아온 상품 원본·상세 데이터 보존
상품 선별용 데이터{WP prefix}jb_toss_product_candidates향후 상품 선별 로직이 사용할 정보를 정리해 보관

별도 테이블로 분리한 이유

기존 상품 DB는 API에서 받아온 데이터를 보존하는 역할을 합니다. 반면 선별용 데이터는 개발이 진행되면서 기준이 바뀔 가능성이 큽니다. 예를 들어 이후에 다음과 같은 조건이 바뀌거나 추가될 수 있습니다.

  • 할인율 조건 변경
  • 리뷰 조건 변경
  • 평점 조건 변경
  • 콘텐츠 소재 조건 추가
  • SNS 활용 조건 추가

선별 기준이 바뀔 때마다 원본 상품 테이블 구조를 건드리면 유지보수가 어려워집니다. 원본과 선별용 데이터를 분리해 두면 기준이 바뀌더라도 원본 데이터에 미치는 영향을 최소화할 수 있다고 판단했습니다.

선별용 데이터에 담은 정보

선별용 데이터에는 기존 상품 DB에서 가져올 수 있는 정보를 정리해 담습니다. 개념 단위로 묶으면 다음과 같습니다.

분류포함 정보
상품 기본 정보상품 식별 정보, 상품명, 상품 URL, 썸네일, 카테고리 관련 정보
가격·평가 정보판매가, 정가, 할인율, 품절 여부, 평점, 리뷰 수
존재 여부 정보가격, 할인, 평점, 리뷰, 이미지, URL 정보의 존재 여부
이미지 정보이미지 개수
관리 정보원본 상품 데이터 갱신 시각, 선별용 데이터 버전, 정규화된 후보 데이터

가격, 할인, 평점, 리뷰, 이미지, URL이 “있는지 없는지”를 따로 기록해 두면, 이후 선별 단계에서 필요한 값이 비어 있는 상품을 구분하기 쉬워집니다. 여기서는 구현된 범위의 필드만 정리했고, 구현되지 않은 값을 임의로 채우지는 않았습니다.

WordPress 플러그인 관리자 기능

v1.7.0에서는 WordPress 관리자의 도구 → 토스쇼핑 API 테스트 영역에서 상품 선별용 데이터 생성·갱신 기능을 실행할 수 있도록 했습니다. 실행 흐름은 다음과 같습니다.

  1. 기존 상품 DB 확인
  2. 선별용 데이터 존재 여부 확인
  3. 없으면 신규 생성
  4. 있으면 기존 데이터 갱신
  5. 처리 결과 표시

처리 결과에는 원본 상품 수, 신규 생성, 기존 데이터 갱신, 오류 네 가지 항목이 표시됩니다.

테스트 1: 최초 실행

기존 상품 DB에 저장되어 있던 상품을 기준으로 선별용 데이터 생성·갱신을 처음 실행했습니다.

항목결과
원본 상품 수1
신규 생성1
기존 데이터 갱신0
오류0

기존 상품 DB에 있던 상품 1건을 기준으로 선별용 데이터가 최초로 생성되었습니다.

테스트 2: 같은 작업 재실행

이어서 같은 작업을 한 번 더 실행했습니다.

항목결과
원본 상품 수1
신규 생성0
기존 데이터 갱신1
오류0

동일한 상품을 다시 처리했을 때 새 데이터가 만들어지지 않고 기존 선별용 데이터가 갱신되었습니다.

테스트 결과 분석

두 번의 실행을 나란히 놓고 보면 동작이 분명하게 갈립니다.

구분원본 상품 수신규 생성기존 데이터 갱신오류
1차 테스트1100
2차 테스트1010

처음에는 신규 생성 1건, 다시 실행했을 때는 기존 데이터 갱신 1건으로 처리되었고 두 번 모두 오류는 0건이었습니다. 이를 통해 없으면 생성하고, 있으면 갱신하는 Upsert 성격의 동작이 정상적으로 확인되었습니다. 같은 상품을 여러 번 실행해도 선별용 데이터가 중복으로 쌓이지 않는다는 점이 이번 테스트의 핵심입니다.

다만 이번 테스트는 원본 상품 1건 기준입니다. 여러 상품이 섞인 상황이나 대량 처리는 아직 검증하지 않았습니다.

이번 버전에서 완료된 것과 아직 구현하지 않은 것

완료(v1.7.0)아직 구현하지 않음
상품 선별용 데이터 구조 설계추천 점수
기존 상품 DB를 바탕으로 한 선별용 데이터 생성AI 상품 평가
신규 생성과 기존 데이터 갱신 분기가성비 점수
관리자 화면에서 실행 및 결과 표시SNS 적합도 점수
2회 실행 테스트로 중복 없는 갱신 확인자동 추천/비추천, 최종 상품 선정

아직 점수화하지 않은 이유

이번 단계에서 바로 추천 점수를 만들지 않은 데에는 이유가 있습니다. 어떤 상품이 좋은 상품인지 판단하기 전에, 판단에 필요한 데이터를 안정적으로 확보하고 구조화하는 일이 먼저라고 보았기 때문입니다. 기준 없이 점수부터 만들면 나중에 기준이 바뀔 때 다시 뜯어고쳐야 합니다. 그래서 v1.7.0은 데이터 구조와 생성·갱신 기능에 범위를 한정했습니다.

다음 개발 단계

현재까지의 흐름은 다음과 같습니다.

API 연결 → 상품 조회 → 상세 조회 → DB 저장 → 상세 정보 갱신 → 일괄 갱신 → 선별용 데이터 구조 생성

다음 단계에서는 이 선별용 데이터를 실제로 활용해 상품 선별 기준을 설계하고, 후보 상품을 판단할 수 있는 구조로 확장할 예정입니다. 구체적인 점수나 기준은 아직 정해지지 않았고, 다음 개발기에서 다룰 계획입니다.

자주 묻는 질문

상품 선별용 데이터는 기존 상품 테이블과 무엇이 다른가요?

기존 상품 테이블은 API에서 받아온 원본·상세 데이터를 보존하는 용도이고, 선별용 테이블은 향후 선별 로직이 사용할 정보를 정리해 두는 용도입니다. 기준이 바뀌어도 원본에 미치는 영향을 줄이려고 분리했습니다.

같은 상품을 다시 실행하면 데이터가 중복되나요?

중복되지 않습니다. 2차 테스트에서 원본 상품 1건을 다시 처리했을 때 신규 생성은 0건, 기존 데이터 갱신은 1건으로 확인되었습니다.

v1.7.0에서 상품 추천 점수도 계산하나요?

아니요. 추천 점수, AI 상품 평가, 가성비 점수, SNS 적합도 점수, 자동 추천은 이번 버전에 포함되지 않았고 이후 버전에서 다룰 예정입니다.

관리자 화면에서 어디서 실행하나요?

WordPress 관리자의 도구 → 토스쇼핑 API 테스트 영역에서 실행합니다. 결과로 원본 상품 수, 신규 생성, 기존 데이터 갱신, 오류가 표시됩니다.

댓글 남기기