def calculate_margin_and_price(inputs): # 입력값 처리 tao_low_price = inputs["tao_low_price"] tao_high_price = inputs["tao_high_price"] delv_fee = inputs["delv_fee"] packing_fee = inputs["packing_fee"] ns_low_price = inputs["ns_low_price"] ns_high_price = inputs["ns_high_price"] plus_margin = 5000 # 기본값 # 계산 로직 ns_avg_price = (ns_low_price + ns_high_price) / 2 tao_cost = lambda price: price * 190 * 1.035 base_margin = lambda cost: cost * 0.12 def adjust_plus_margin_for_min_margin(seller_cost, mall_cost, selling_price): nonlocal plus_margin target_margin_rate = 22 while True: final_margin = selling_price - (seller_cost + mall_cost) final_margin_rate = (final_margin / selling_price) * 100 if final_margin_rate < target_margin_rate: plus_margin += 100 # 더하기 마진 증가 selling_price = seller_cost + plus_margin + mall_cost mall_cost = selling_price * 0.13 else: break return selling_price, final_margin_rate seller_cost = tao_cost(tao_low_price) + delv_fee + packing_fee mall_cost = seller_cost * 0.13 selling_price = seller_cost + plus_margin + mall_cost selling_price, final_margin_rate = adjust_plus_margin_for_min_margin(seller_cost, mall_cost, selling_price) # 결과 반환 results = { "selling_price": selling_price, "final_margin_rate": final_margin_rate, "seller_cost": seller_cost, "base_margin": base_margin(tao_cost(tao_low_price)), "plus_margin": plus_margin, "ns_avg_price": ns_avg_price } return results