문제
TCG·스포츠카드 수집가를 위한 등록·검색, 경매, 채팅, 에스크로 결제·판매자 정산, 시세를 웹과 앱 한 코드로 만들어야 했습니다.
결정
- 시세: eBay 활성 호가에는 저가 미끼·오타 앵커가 섞이고 표본 n≤9가 81%라 중앙값·가중평균은 의미가 없었습니다. 상·하위 각 1건을 잘라 낸 뒤 최솟값을 쓰고, 표본 3건 미만은 표시하지 않습니다.
- 자동 구매확정은 발송 등록 + 7일로, PG의 6일보다 항상 먼저입니다. 10일 미발송 자동취소는 전자상거래법 환급 의무 논리로 유지하도록 클라이언트를 설득했습니다.
- 수수료 기준을 배송비 포함 총액으로 통일했습니다.
부서진 곳과 고친 방법
- 경매 오픈 전 점검에서 에스크로 모드 낙찰 대금을 낼 경로가 없다는 것을 찾아, 낙찰 전용 결제 RPC를 새로 만들었습니다.
- 알림을 눌러도 이동이 안 됐습니다. 같은 이름 라우트가 탭과 스택 두 곳에 있어 중첩 이동이 경고 없이 버려졌습니다. 루트 전체 경로로 통일해 실클릭 10/10.
결과
- 테이블 74 · 외래키 99 · 트리거 34 · 함수 242 · 뷰 8
- Deno 테스트 119(자금 경로 서명 30 포함), 커밋 게이트
- 마이그레이션마다 프로덕션 BEGIN…ROLLBACK 드라이런 4~11 시나리오
- 마이그레이션 270개 이상 · 어드민 화면 18개
- 발주자가 웹·앱에서 보고한 결함 전부 실결함 확인·수정