Skip to content
isdnetworks
Go back

할인 셋, 저장소 셋

(수정됨)

이관으로 복사된 할인들을 보정해야 하는지를 판단해야 했다. 그러려면 여기서 말하는 할인이 무엇인지부터 정리해야 했다.

Table of contents

Open Table of contents

배경 — 저장소가 다른 세 종류

코드를 뒤지니 할인이 세 종류였다. products.discount_rate 에 붙은 상시 할인과 channel_promotions 에 있는 채널 프로모션과 limited_discounts 에 기간이 있는 한정 할인이다.

셋의 저장소가 전부 다르고 보정하려는 것은 본사가 일괄로 건 상시 할인이었다. 나머지 둘은 별개이므로 건드리면 안 됐다.

조치 — 담당자 소속으로 한 판별

상시 할인이라고 전부 대상은 아니어서 본사가 건 것과 입점사가 건 것을 갈라야 했다. 입점사가 의도적으로 건 할인을 지우면 안 되기 때문이다.

product_histories.admin_id 와 admins.seller_id 를 JOIN 하면 본사인지 입점사인지가 갈린다. seller_id 가 NULL 이면 본사 관리자이고 값이 있으면 그 업체 소속이다.

원인 — 막힌 판별과 분포 우회

그런데 일부는 admin_id 가 비어 있어서 판별이 안 됐는데 API 로 등록된 상품이었다. 사람이 아니라 시스템이 등록한 것이라 누가 걸었는지를 알 수 없다.

두 가지 방법이 있었는데 판별 불가로 두고 전부 보류하는 것과 업체별 discount_rate 분포로 우회하는 것이다. 뒤쪽을 골랐다. 이유는 보류하면 본사가 건 것까지 못 지워 이관 보정 자체가 끝나지 않아서다. 대신 분포 판정이 틀릴 수 있는 건이 섞이는 것을 감수했다. GROUP BY seller_id 로 분포를 봤더니 두 패턴이 나왔다. 전 상품이 정확히 같은 값인 균일한 패턴과 상품마다 값이 다른 편차 패턴인데 사람이 하나씩 설정했으면 균일할 수 없으므로 균일한 쪽이 일괄 적용이고 편차가 큰 쪽이 개별 설정이다.

주의 — 복사분이어도 안 지운 것

편차가 있는 것들도 이관으로 복사된 것은 맞았지만 지우지 않았다. 입점사가 의도한 할인이므로 복사된 경로와 무관하게 지금 유효한 설정이기 때문이다.

이 구분 없이 이관 복사분이라는 이유로 전부 제거했으면 입점사가 설정한 할인이 사라지고 가격이 올라 문의가 몰렸을 것이다. 복사된 경로가 아니라 지금 그 값이 의도된 것인지가 판단 기준이다.

검증 — 우회 판정의 한계

분포로 판정하는 것이 완벽하지는 않다. 본사가 업체마다 다른 율을 걸었을 수도 있고 입점사가 우연히 전 상품에 같은 율을 걸었을 수도 있다.

그래서 STDDEV 가 0도 아니고 크지도 않은 애매한 건은 담당자에게 확인하기로 했다. 분포는 후보를 가르는 도구이지 확정 수단이 아니므로 그 한계를 함께 적어야 다음 사람이 그것만으로 확정하지 않는다.

정리


Share this post on:

Previous Post
등식을 만드는 중복 제거 위치
Next Post
음수 재고가 실재한다