From 0341e62726514c5e027ef45daa6b88a483993141 Mon Sep 17 00:00:00 2001 From: Guoguo Date: Thu, 2 Jul 2026 06:05:04 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20add=20smart=5Fmode=5Ffree=20toggle=20?= =?UTF-8?q?=E2=80=94=20all=20users=20get=20smart=20mode=20when=20enabled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Server: subscription API returns active when smart_mode_free is true. Admin console: add toggle switch in settings page under feature flags. Default: true (free for all users during promotion period). --- admin-console/src/views/SettingsView.vue | 10 ++++++++++ server/src/routes/subscription.js | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/admin-console/src/views/SettingsView.vue b/admin-console/src/views/SettingsView.vue index 30ca041..a33a10a 100644 --- a/admin-console/src/views/SettingsView.vue +++ b/admin-console/src/views/SettingsView.vue @@ -105,6 +105,15 @@ + + + 智能模式免费 + 开启后所有用户可免费使用智能模式 + + + + + 维护模式 @@ -142,6 +151,7 @@ export default { enable_register: true, enable_binding: true, enable_free_mode: true, + smart_mode_free: true, maintenance_mode: false }, timezoneOptions: ['Asia/Shanghai', 'Asia/Tokyo', 'America/New_York', 'Europe/London'], diff --git a/server/src/routes/subscription.js b/server/src/routes/subscription.js index 3dd36b6..dc57b2c 100644 --- a/server/src/routes/subscription.js +++ b/server/src/routes/subscription.js @@ -28,6 +28,10 @@ router.get('/subscription/plans', wrap(async (req, res) => { })) router.get('/subscription', requireUser, wrap(async (req, res) => { + const settings = await getSettings() + if (settings.smart_mode_free === true || settings.smart_mode_free === 'true') { + return res.json(ok({ status: 'active', plan: 'free', remaining_days: 9999, trial_used: false })) + } const sub = await subscriptionDao.findActive(req.user.user_id) const trialUsed = await subscriptionDao.findTrial(req.user.user_id) if (!sub) return res.json(ok({ status: 'inactive', plan: 'none', remaining_days: 0, trial_used: !!trialUsed }))