驗證點數購買有勾選應用程式方案的扣點邏輯。確保使用者在購買綁定 App 方案的點數套餐時,實際獲得的點數已扣除 App 方案的成本。
此技能用於驗證當點數套餐綁定了「應用程式方案 (App Plan)」且該方案設有「點數成本 (Points Cost)」時,系統是否能正確執行扣點邏輯。
/settings/pricing 中,可以為「點數套餐」勾選多個「應用程式方案」。pointsCost,存於 prePurchasePointsCost 欄位。/pricing 頁面中,套餐應顯示預計扣除後的可用點數 (例如:購買 100 點後可用 50 點)。/api/plan-upgrades 的 points 數值應為 淨點數 (套餐點數 - 預領扣除點數)。jvtutorcorner-user-points 所增加的餘額應與結帳時的淨點數相符。.env.local 必須包含 LOGIN_BYPASS_SECRET.env.local 必須包含 TEST_STUDENT_EMAIL / TEST_STUDENT_PASSWORDe2e/pricing_deduction.spec.tsnpx playwright test e2e/pricing_deduction.spec.ts
結帳參數傳遞錯誤
原先 /pricing/checkout 頁面在建立訂單時,僅傳送原套餐的 points 數值(例如 100),未考慮 prePurchasePointsCost(例如 50),導致支付完成後使用者獲得全額點數而非扣除後的淨額。
app/pricing/checkout/page.tsx 中加入扣除計算:points: Math.max(0, points - (itemData?.prePurchasePointsCost || 0))。API 資料欄位遺失
/api/plan-upgrades 及其對應的 DynamoDB 表結構未記錄 appPlanIds,導致後續無法追蹤是哪些 App 方案被購買。
appPlanIds 陣列。App 方案啟用機制缺失
原先 PATCH /api/plan-upgrades/[upgradeId] 僅更新點數餘額,未處理 appPlanIds 的啟用。
activeAppPlanIds (或其他相關狀態表)。當被要求驗證點數扣除邏輯時:
auto-login 機制登入學生帳號。npx playwright test e2e/pricing_deduction.spec.ts。initialPoints + (pkgPoints - cost) = finalPoints。app/pricing/checkout/page.tsx 的點數計算部分。