증상
"화면엔 맞게 나오는데 전송/저장만 0 또는 빈값."
원인
검수 화면(GET)과 실제 전송(POST)이 각자 같은 빌더 함수를 호출했다. 한쪽만 환율 파라미터를 주입해서, GET은 수십만 원대 가격을 표시하고 POST는 None → int(None or 0) → 0을 전송했다.
판별
처방
int(x or 0)은 "모름"을 "0"으로 둔갑시켜 조용히 전송한다두 경로만이 아니라 정본과 사본도 갈라진다
소싱 맵의 krw가 마켓플레이스의 실제 등록가와 달랐다. 등록가는 마켓플레이스가 정본이고 로컬 맵은 사본이다 — 사본을 근거로 마진을 계산하면 틀린다. 갈라지는 건 코드 경로 두 개만이 아니다. "정본 시스템 vs 로컬 복사본"도 같은 형태다.
같은 맵에서 6,541건 중 618건은 usd·jpy가 모두 비어 있었다. 소싱처가 연결돼 있어도 가격이 없으면 마진 검사에서는 미연결과 같다. 필수 입력이 빠진 레코드는 링크가 없는 레코드와 동치로 취급한다.
상류 값 0이 파생값을 음수로 만든다
한 채널의 판매가 필드가 0인 상품이 있었다(임시 실패 상태 등). 이걸 그대로 가져와 다른 채널 가격을 원가 − 랜덤으로 파생하면 음수 가격이 나온다. 파생 공식은 상류가 정상값이라는 가정 위에 서 있다 — 하한 검증을 파생 직전에 건다. 0은 "값이 있다"가 아니라 "값이 없다"의 다른 표기일 수 있다.