From 7c313cf09e86601c8feed7233cfcd106a3ce7d87 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 15 Sep 2026 09:51:06 +0800 Subject: [PATCH] fix(1895): pages/generate/GeneratePage.tsx - fix TS errors (import types, hasEnoughPoints API, field names, DiscountKey) --- apps/web/src/pages/generate/GeneratePage.tsx | 32 ++++++-------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index d8d52b6ab..e41a8da8c 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -29,7 +29,7 @@ import { useTitleStyleUpdaters } from "./hooks/useStep4Title/useTitleStyleUpdate import { getAssetsByKind } from "@/api/assets" import { previewTts } from "@/api/tts" import { usePointsStore } from "@/store/pointsStore" -import { estimatePointsCost } from "./hooks/pointsCost" +import { hasEnoughPoints } from "./hooks/pointsCost" import "./generate.css" import "./generate-points.css" @@ -358,16 +358,9 @@ const GeneratePage: React.FC = () => { const handleConfirmGenerate = useCallback(async () => { // 积分预检查 const units = isBatch ? Math.max(selectedVariantIds.length, 1) : 1 - const est = estimatePointsCost({ - scene: "generate_video", - units, - isMember: !!balance?.is_member, - freeClipsUsedToday: balance?.free_clips_used_today ?? 0, - dailyFreeQuota: balance?.daily_free_quota ?? 2, - }) - const currentBalance = balance?.balance ?? 0 - if (est.pointsCost > 0 && currentBalance < est.pointsCost) { - message.error(`积分不足,还需 ${est.pointsCost - currentBalance} 积分,请充值`) + const check = hasEnoughPoints(balance ?? null, units) + if (!check.sufficient) { + message.error(check.reason ?? "积分不足,请充值") return } if (isBatch) { @@ -430,18 +423,10 @@ const GeneratePage: React.FC = () => { /* ── 积分消耗估算(步骤3确认生成展示用) ── */ const unitsForCost = isBatch ? Math.max(selectedVariantIds.length, 1) : 1 const pointsEstimate = useMemo( - () => - estimatePointsCost({ - scene: "generate_video", - units: unitsForCost, - isMember: !!balance?.is_member, - freeClipsUsedToday: balance?.free_clips_used_today ?? 0, - dailyFreeQuota: balance?.daily_free_quota ?? 2, - }), + () => hasEnoughPoints(balance ?? null, unitsForCost), [unitsForCost, balance], ) - const insufficientPoints = - pointsEstimate.pointsCost > 0 && (balance?.balance ?? 0) < pointsEstimate.pointsCost + const insufficientPoints = !pointsEstimate.sufficient /* ================================================================ 渲染 @@ -646,9 +631,10 @@ const GeneratePage: React.FC = () => { generated={generated} generateError={generateError} selectedCount={isBatch ? selectedVariantIds.length : 1} - estimatedCost={pointsEstimate.pointsCost} - freeClipsUsedThisTime={pointsEstimate.usingFreeClips} + estimatedCost={pointsEstimate.cost} + freeClipsUsedThisTime={pointsEstimate.freeClipsUsed ?? 0} pointsInsufficient={insufficientPoints} + insufficientReason={pointsEstimate.reason} onRecharge={() => navigate("/app/points/recharge")} />