From 385022002b2a1e3910da8c148b7f2e884f75f927 Mon Sep 17 00:00:00 2001 From: Hera Zhao Date: Tue, 14 Apr 2026 00:11:00 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A5=97=E8=A3=85=E6=8A=98=E6=89=A3?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=BB=9F=E4=B8=80=E6=8A=98=E6=89=A3=E7=8E=87?= =?UTF-8?q?=EF=BC=8C=E9=85=8D=E4=BB=B6=E5=92=8C=E7=B2=BE=E6=B2=B9=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E5=90=8C=E4=B8=80=E6=8A=98=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 折扣率 = 套装价 / (油瓶总价 + 配件零售价) 芳香调理32.4%, 家庭医生32.8%, 居家呵护36.1% Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/composables/useKitCost.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/src/composables/useKitCost.js b/frontend/src/composables/useKitCost.js index c7b5af9..5134f32 100644 --- a/frontend/src/composables/useKitCost.js +++ b/frontend/src/composables/useKitCost.js @@ -37,15 +37,17 @@ export function useKitCost() { } if (totalBottlePrice === 0) return {} - // Proportional allocation — subtract accessory value, then cap at bottle price sum - const oilBudget = kit.price - (kit.accessoryValue || 0) - const effectivePrice = Math.min(oilBudget, totalBottlePrice) + // Uniform discount: kit price covers oils + accessories at the same discount rate + // discount_rate = kit_price / (oil_total + accessory_value) + // each oil's kit cost = bottle_price × discount_rate + const totalValue = totalBottlePrice + (kit.accessoryValue || 0) + const discountRate = Math.min(kit.price / totalValue, 1) // cap at 1 (no markup) const perDrop = {} for (const name of resolved) { const meta = oils.oilsMeta[name] const count = bc[name] || 1 const bp = oilBottlePrices[name] - const kitCostForOil = (bp / totalBottlePrice) * effectivePrice + const kitCostForOil = bp * discountRate const totalDrops = meta ? meta.dropCount * count : 1 perDrop[name] = totalDrops > 0 ? kitCostForOil / totalDrops : 0 }