경매 상품 (auction_item)
auction_item
├─ id
├─ lot_id (or product_id)
├─ start_price
├─ buyout_price
├─ min_bid_increment
├─ start_at / end_at
├─ status (active, closed, canceled...)
경매 예치금 (auction_deposit)
auction_deposit
├─ id
├─ user_id
├─ auction_item_id
├─ amount
├─ pg_transaction_id
├─ status (held, refunded, used...)
경매 입찰 (auction_bid)
auction_bid
├─ id
├─ auction_item_id
├─ user_id
├─ bid_amount
├─ created_at
경매 주문 (auction_order or 그냥 order 재사용)
order 테이블에 type 구분(fixed vs auction) 필드 추가도 가능auction_order
├─ id
├─ auction_item_id
├─ user_id (낙찰자)
├─ final_price
├─ status (pending, paid, shipped...)
경매 결제 (auction_payment or 그냥 payment 재사용)
payment 테이블에 연결 (order_id FK)auction_payment
├─ id
├─ order_id
├─ pg_transaction_id
├─ amount
├─ status (pending, success, failed, refunded...)
auction_deposit), 일반 결제/정산과는 별도로 처리됨.order가 생성됨.order와 연결되므로, 일반 결제 구조(payment)를 재사용하는 게 가장 깔끔합니다.👉 그러면 전체 플로우는:
auction_item → auction_deposit(참가자 보증금) → auction_bid(입찰) → 경매종료 → order 생성 → payment 완료
여기서 질문!