统一月付价格为 10 USDC 并清理所有 trial 文案

- 默认月付 fallback 从 5U 改为 10U(contract_checkout.py、AccountCenter.tsx)
- 移除 LoginClient / HeaderBar / AccountCenter / UnlockProOverlay 中的试用推广文案
- VPS 同步: PLAN_CATALOG_JSON、GROUP_MEMBER_PRICE_USDC 更新为 10
- SIGNUP_TRIAL_ENABLED=false 保持关闭
@
This commit is contained in:
2569718930@qq.com
2026-05-20 11:12:29 +08:00
parent 6e3b7f60a2
commit 60093d3162
5 changed files with 24 additions and 59 deletions
+9 -28
View File
@@ -819,14 +819,6 @@ export function AccountCenter() {
freeTier: "FREE TIER",
proPendingSync: isEn ? "Activated (pending sync)" : "已开通(待同步)",
noProSubscription: isEn ? "No Pro subscription" : "暂无 Pro 订阅",
trialEndsSoonTitle: isEn ? "Trial ending soon" : "试用即将结束",
trialEndsSoonBody: isEn
? "Your 3-day trial is almost over. Upgrade to Pro to keep full intraday analysis and decision cards."
: "你的 3 天试用即将结束。升级 Pro 后可继续使用完整日内分析和城市决策卡。",
trialExpiredTitle: isEn ? "Trial ended" : "试用已结束",
trialExpiredBody: isEn
? "Your trial access has ended. Renew with Pro to restore full access."
: "试用权限已结束。开通 Pro 后可恢复完整权限。",
proEndsSoonTitle: isEn ? "Pro renewal due soon" : "Pro 即将到期",
proEndsSoonBody: isEn
? "Your Pro membership will expire soon. Renew now to avoid interruption."
@@ -836,7 +828,6 @@ export function AccountCenter() {
? "Your Pro membership has expired. Renew now to restore premium access."
: "你的 Pro 会员已到期。立即续费可恢复高级权限。",
renewNow: isEn ? "Renew Now" : "立即续费",
trialBadge: isEn ? "TRIAL" : "试用中",
daysLeft: isEn ? "{days} days left" : "剩余 {days} 天",
queuedExtensionSummary: isEn
? "Current plan until {current}. Queued extension: +{days} days. Total access until {total}."
@@ -1513,7 +1504,7 @@ export function AccountCenter() {
telegram_pricing?: TelegramPricing | null;
};
if (data.telegram_pricing?.is_group_member) {
const amount = data.telegram_pricing.amount_usdc || "5";
const amount = data.telegram_pricing.amount_usdc || "10";
setPaymentInfo(`Telegram 群成员验证成功,当前会员价 ${amount}U。`);
}
await loadSnapshot();
@@ -1576,25 +1567,17 @@ export function AccountCenter() {
const paymentFeatureReady = paymentReadyForRecovery;
const canOpenCheckoutOverlay = Boolean(
paymentFeatureReady &&
(!isSubscribed || isTrialPlan || showExpiringSoon || showExpiredReminder),
(!isSubscribed || showExpiringSoon || showExpiredReminder),
);
const subscriptionStatusTitle = showExpiredReminder
? isTrialPlan
? copy.trialExpiredTitle
: copy.proExpiredTitle
? copy.proExpiredTitle
: showExpiringSoon
? isTrialPlan
? copy.trialEndsSoonTitle
: copy.proEndsSoonTitle
? copy.proEndsSoonTitle
: "";
const subscriptionStatusBody = showExpiredReminder
? isTrialPlan
? copy.trialExpiredBody
: copy.proExpiredBody
? copy.proExpiredBody
: showExpiringSoon
? isTrialPlan
? copy.trialEndsSoonBody
: copy.proEndsSoonBody
? copy.proEndsSoonBody
: "";
const subscriptionStatusMeta =
expiryInfo && (showExpiringSoon || showExpiredReminder)
@@ -1738,7 +1721,7 @@ export function AccountCenter() {
const billing = useMemo(() => {
const parsedPlanAmount = Number(
backend?.telegram_pricing?.amount_usdc ?? selectedPlan?.amount_usdc ?? 5,
backend?.telegram_pricing?.amount_usdc ?? selectedPlan?.amount_usdc ?? 10,
);
const planAmount =
Number.isFinite(parsedPlanAmount) && parsedPlanAmount > 0
@@ -2778,9 +2761,7 @@ export function AccountCenter() {
className={`px-2 py-0.5 rounded-full text-[10px] font-black uppercase tracking-tighter border ${isSubscribed ? "bg-blue-500/20 border-blue-500/40 text-blue-400" : "bg-slate-700/50 border-white/10 text-slate-500"}`}
>
{isSubscribed
? isTrialPlan
? copy.trialBadge
: copy.proMember
? copy.proMember
: copy.freeTier}
</span>
</div>
@@ -2861,7 +2842,7 @@ export function AccountCenter() {
Top 2-3
</span>
<span className="text-xs font-bold text-slate-300">
+100 & 3Pro
+100
</span>
</div>
<div className="flex items-center justify-between p-3 bg-white/5 rounded-xl border border-white/5">