4f2543686a
신규 컬럼: momo_items.limit_qty INTEGER (null/0 = 제한 없음) · ensureColumns 에서 ADD COLUMN IF NOT EXISTS 자동 보장 · 관리자 품목 폼: '한정 수량 (이번 마감 사이클 누적 상한)' 필드 추가 마감 사이클 정의 (sale_end_date 요일 기준): · 월요일 마감(DOW=1): 저번주 금~월 마감 시각 (마감일 -3일 00:00 ~ 마감일) · 화요일 마감(DOW=2): 저번주 금~화 마감 시각 (마감일 -4일 00:00 ~ 마감일) · 그 외: sale_start_date ~ sale_end_date (fallback) 누적 합산 대상: 같은 사이클 안에 등록된 momo_order_items.qty · status: REQUESTED/APPROVED/PAID/INVOICED (CANCELLED 제외) · kind='ITEM' (택배/용차/환불 제외) 검증 (모든 사용자/관리자/unlimited_qty 권한 무관 적용): · orders/save: 이번 요청 합 + reserved <= limit_qty 체크 · orders/items/add: 동일 검증 (트랜잭션 client 사용) · orders/items/update: newQty - oldQty 차이만 비교 (수량 증가 시) 신규 파일: · src/lib/momo-cycle.ts — getReservedQty(itemObjid, client?) 헬퍼 사용자 출고요청 화면(/m/orders/new): · 카드/리스트에 RESERVED_QTY 받아 '한정 잔여 N / 한정 M' 표시 · 한정 소진 시 '한정 수량 소진' 배지 + 담기 버튼 비활성 · 이미지 위 출고일 배지: 월요일 마감 → '수요일 출고', 화요일 마감 → '금요일 출고' · limit_qty 가 없는 품목은 무한대 (기존 동작 유지) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>