오래돼서 좀 지저분한 주문 금액 계산 코드예요. 손이 잘 안 간 티가 나지만 잘 돌아가고 있어요. 여기에 쿠폰(정액 할인) 하나를 더하고, 결과가 맞는지 확인하세요. OrderService.summarize 에 쿠폰 금액을 받아, 그만큼 상품 금액에서 더 깎으세요. 그리고 바뀐/새 동작에는 테스트를 추가하세요. Note: 주문은 items(각 항목은 sku 와 qty)와 userId 로 들어와요. 상품 합계 = 각 상품의 가격 × qty 를 모두 더한 값(상품 가격·회원 여부는 코드가 userId·sku 로 이미 알고 있어요). 회원이면 상품 금액의 10%를 할인해요(내림). 상품 합계가 5만원 이상이면 배송비는 무료(0), 아니면 3000원이에요.
NestJS(TypeScript)로 주문 금액을 계산하는 오래된 코드에 정액 쿠폰 할인을 더하는 문제입니다. 지금은 상품 합계, 회원 10% 할인, 배송비, 최종 결제액을 계산합니다. 여기에 쿠폰만큼 더 깎는 동작을 추가하고, 회원 할인·무료배송 같은 기존 계산이 그대로 유지되는지 테스트로 확인합니다. 새 할인을 붙일 때 이미 있던 규칙이 함께 흔들리지 않는지 살펴보는 능력을 연습합니다.
잘 쓰이는 주문 금액 코드에 새로운 정액 할인을 붙이는 작업은 실무에서 자주 있습니다. 어려운 점은 쿠폰 자체보다, 그 쿠폰이 회원 할인이나 무료배송 같은 이미 있던 규칙과 어떻게 얽히는지입니다. 무료배송처럼 기준 금액이 정해진 규칙은 그 기준을 할인 전 금액으로 재느냐 할인 후 금액으로 재느냐로 배송비가 갈립니다. 보통 금액에서는 잘 맞다가 기준 근처에서만 어긋나기 쉬워, 경계 금액까지 확인하는 습관이 중요합니다. 오래 방치돼 지저분한 코드일수록 이런 어긋남이 눈에 잘 안 띕니다. 이 주제는 여러 할인이 얽힌 주문 금액을 검증하는 영역을 다룹니다.