feeeei
9d475f9edb
feat(settings): 新增「站点类型」三态开关,关闭订阅后用户端收起所有「订阅」入口与文案
后台功能开关页新增「站点类型」单选:充值 & 订阅(默认,即现状)/ 仅充值 / 仅订阅。
它由两个后端开关派生并在保存时同时写回:
- subscription_enabled(新增;默认 true,缺省/空值视为开启,仅显式 false 关闭),按既有
开关模式贯通常量、公共设置、SSR 注入载荷、默认值、更新写入、DTO、审计 diff 与前端注册表;
- payment_balance_disabled(支付配置里既有的 BALANCE_PAYMENT_DISABLED,此前只能走接口/数据库
改),补进公共设置与注入载荷,让用户端在任何鉴权请求之前就能推导站点类型。
两者都关闭是接口层可表达但 UI 不提供的组合,前端归为「仅充值」,后台保存时会把余额充值重新打开。
「仅充值」时的表现:
- 用户侧边栏隐藏「我的订阅」,「充值/订阅」入口收窄为「充值」;管理端侧边栏隐藏「订阅管理」
入口(页面仍可通过地址访问);
- 购买页不再渲染「订阅」tab,只剩单个 tab 时顶部切换器随之隐藏;tab 列表变化时当前 tab
自动收敛到可用项(关闭订阅回到充值、仅订阅站点重新打开订阅进入订阅),列表为空时展示
「充值与订阅均暂未开放」而不是一个必定被后端拒绝的充值表单;
- /purchase 的页头标题/描述与 document.title 改走 resolveRouteMetaKeys 按站点类型切换;
- /subscriptions 路由新增 requiresSubscription 守卫,直达时重定向到仪表盘;
- 顶栏订阅进度徽章不再挂载,App.vue、PaymentView 与徽章组件都不再预加载/轮询订阅接口;
- 用量页隐藏「计费类型(余额/订阅)」筛选,Key 用量公开页「订阅类型」行改为「计费方式」。
「仅订阅」时侧边栏入口与页头显示为「订阅」,购买页只剩订阅 tab(余额下单由后端既有逻辑拒绝)。
购买订阅接口、已有订阅的计费、兑换码发放订阅与管理端订阅管理页面本身均不受影响。
featureFlags 抽出纯函数 resolveFeatureFlag,新增 utils/siteBillingMode 承载三态派生与反解,
PaymentView 测试改用响应式 store mock 覆盖开关双向切换。
2026-09-11 00:50:17 +08:00
..
2026-09-07 18:48:04 +08:00
2026-09-02 11:09:21 +08:00
2026-09-07 18:22:56 +08:00
2026-08-29 17:30:18 +08:00
2026-09-08 17:41:29 +08:00
2026-08-31 09:12:09 +08:00
2026-09-07 18:22:56 +08:00
2026-09-06 15:15:21 +08:00
2026-09-06 15:15:21 +08:00
2026-09-09 11:04:59 +08:00
2026-09-01 16:50:04 +08:00
2026-09-07 21:54:22 +08:00
2026-09-09 11:04:59 +08:00
2026-09-09 11:04:59 +08:00
2026-09-08 18:50:06 +08:00
2026-09-01 16:50:04 +08:00
2026-09-07 09:20:48 +08:00
2026-09-05 16:05:17 +08:00
2026-09-07 18:33:39 +08:00
2026-09-08 18:50:06 +08:00
2026-09-08 13:37:52 +08:00
2026-09-08 13:38:41 +08:00
2026-09-08 20:10:20 +08:00
2026-09-07 18:22:56 +08:00
2026-09-06 08:11:23 +08:00
2026-09-07 09:20:48 +08:00
2026-09-05 16:05:17 +08:00
2026-09-07 09:20:48 +08:00
2026-08-31 09:12:09 +08:00
2026-09-08 13:38:41 +08:00
2026-09-08 13:37:52 +08:00
2026-09-07 21:54:22 +08:00
2026-09-07 21:54:22 +08:00
2026-09-05 14:36:07 +08:00
2026-09-05 14:36:07 +08:00
2026-09-05 14:36:07 +08:00
2026-09-03 14:20:39 +08:00
2026-09-03 14:20:39 +08:00
2026-09-05 14:18:13 +08:00
2026-09-02 05:47:01 +08:00
2026-09-08 15:02:32 +08:00
2026-09-08 15:02:32 +08:00
2026-09-05 00:10:24 +08:00
2026-09-05 16:05:17 +08:00
2026-09-05 00:10:24 +08:00
2026-09-05 00:10:24 +08:00
2026-09-05 16:05:17 +08:00
2026-09-07 18:33:39 +08:00
2026-09-08 13:37:53 +08:00
2026-09-01 10:15:45 +08:00
2026-09-08 13:37:53 +08:00
2026-09-02 05:47:01 +08:00
2026-09-01 14:23:33 +08:00
2026-09-05 16:05:17 +08:00
2026-09-07 11:07:35 +08:00
2026-09-07 11:07:35 +08:00
2026-09-07 18:47:46 +08:00
2026-09-07 18:47:46 +08:00
2026-09-08 20:42:45 +08:00
2026-09-02 20:16:57 +08:00
2026-09-02 20:16:57 +08:00
2026-09-05 23:30:45 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-08 17:41:29 +08:00
2026-09-08 17:41:29 +08:00
2026-09-08 17:41:29 +08:00
2026-09-07 18:31:03 +08:00
2026-09-07 18:31:03 +08:00
2026-09-08 17:41:29 +08:00
2026-09-04 10:14:29 +08:00
2026-09-08 20:42:45 +08:00
2026-09-08 20:42:45 +08:00
2026-09-02 20:16:57 +08:00
2026-09-08 19:12:37 +08:00
2026-09-08 19:12:37 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-08 17:41:29 +08:00
2026-09-08 17:41:29 +08:00
2026-09-08 17:41:29 +08:00
2026-09-07 23:21:29 +08:00
2026-08-29 17:30:23 +08:00
2026-09-11 00:50:17 +08:00
2026-09-07 21:54:22 +08:00
2026-09-05 14:36:07 +08:00
2026-09-05 16:43:54 +08:00
2026-09-05 16:34:00 +08:00
2026-09-02 11:46:37 +08:00
2026-09-04 18:01:34 +00:00
2026-09-06 00:34:05 +08:00
2026-09-07 21:54:22 +08:00
2026-09-01 14:23:33 +08:00
2026-09-05 14:36:07 +08:00
2026-09-05 14:36:07 +08:00
2026-09-05 14:36:07 +08:00
2026-09-06 16:42:57 +08:00
2026-09-06 16:42:57 +08:00
2026-09-06 10:12:20 +08:00
2026-09-07 18:49:19 +08:00
2026-09-04 08:15:41 +08:00
2026-09-06 00:34:05 +08:00
2026-09-06 10:12:20 +08:00
2026-09-06 02:02:49 +08:00
2026-09-07 21:54:22 +08:00
2026-09-06 20:38:17 +08:00
2026-09-03 15:11:36 +08:00
2026-09-03 15:11:36 +08:00
2026-09-06 15:15:21 +08:00
2026-09-05 14:36:07 +08:00
2026-09-01 01:26:55 +08:00
2026-09-05 14:36:07 +08:00
2026-08-31 09:12:09 +08:00
2026-09-03 18:02:15 +08:00
2026-09-03 14:20:39 +08:00
2026-09-03 14:20:39 +08:00
2026-09-05 14:36:07 +08:00
2026-09-05 16:05:17 +08:00
2026-09-05 00:10:24 +08:00
2026-09-05 16:05:17 +08:00
2026-09-07 19:44:03 +08:00
2026-09-06 08:11:23 +08:00
2026-09-07 18:33:39 +08:00
2026-09-08 20:47:07 +08:00
2026-09-08 20:47:07 +08:00
2026-09-07 16:34:35 +08:00
2026-09-07 16:34:35 +08:00
2026-09-07 16:34:35 +08:00
2026-09-08 13:37:52 +08:00
2026-09-08 13:37:52 +08:00
2026-09-06 20:38:17 +08:00
2026-09-08 20:42:45 +08:00
2026-09-07 11:07:35 +08:00
2026-08-29 17:29:21 +08:00
2026-09-02 20:16:57 +08:00
2026-08-29 17:30:18 +08:00
2026-09-07 21:54:22 +08:00
2026-09-07 21:54:22 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-06 20:38:17 +08:00
2026-09-08 20:46:07 +08:00
2026-09-08 20:46:07 +08:00
2026-09-01 19:10:37 +08:00
2026-09-06 20:38:17 +08:00
2026-09-01 16:50:04 +08:00
2026-09-01 16:50:04 +08:00
2026-09-07 17:58:20 +08:00
2026-09-07 17:58:20 +08:00
2026-09-07 11:27:08 +08:00
2026-09-06 00:50:01 +08:00
2026-09-07 19:13:01 +08:00
2026-09-07 18:46:11 +08:00
2026-09-05 00:10:24 +08:00
2026-09-05 19:58:47 +08:00
2026-09-08 18:50:06 +08:00
2026-09-08 18:50:06 +08:00
2026-09-07 10:47:51 +08:00
2026-09-07 18:58:00 +08:00
2026-09-09 11:04:59 +08:00
2026-09-03 15:11:36 +08:00
2026-09-03 15:11:36 +08:00
2026-09-05 16:13:28 +08:00
2026-09-05 10:58:05 +08:00
2026-09-05 10:58:05 +08:00
2026-09-05 15:32:29 +08:00
2026-09-06 20:38:17 +08:00
2026-08-31 01:02:13 +08:00
2026-08-31 01:02:13 +08:00
2026-09-04 10:14:29 +08:00
2026-09-04 10:14:29 +08:00
2026-09-04 10:14:29 +08:00
2026-09-03 15:23:22 +08:00
2026-09-03 15:11:36 +08:00
2026-09-06 20:38:17 +08:00
2026-09-05 14:36:07 +08:00
2026-09-07 16:47:51 +08:00
2026-09-03 15:11:36 +08:00
2026-09-08 20:47:25 +08:00
2026-09-04 10:14:29 +08:00
2026-09-07 16:47:51 +08:00
2026-09-07 18:22:56 +08:00
2026-09-03 15:16:18 +08:00
2026-09-03 14:20:39 +08:00
2026-09-07 21:54:21 +08:00
2026-09-03 14:20:39 +08:00
2026-08-31 11:15:33 +08:00
2026-09-08 20:47:25 +08:00
2026-09-04 08:15:41 +08:00
2026-09-07 21:54:22 +08:00
2026-09-01 10:15:45 +08:00
2026-09-07 10:12:42 +08:00
2026-09-07 10:12:42 +08:00
2026-09-07 21:54:21 +08:00
2026-09-07 21:54:21 +08:00
2026-09-07 21:54:21 +08:00
2026-09-07 11:27:08 +08:00
2026-09-06 15:15:21 +08:00
2026-09-03 09:42:50 +08:00
2026-09-07 17:58:20 +08:00
2026-09-07 11:27:08 +08:00
2026-09-05 14:36:07 +08:00
2026-08-30 13:06:32 +09:00
2026-09-07 21:54:21 +08:00
2026-09-07 18:22:56 +08:00
2026-09-06 20:38:17 +08:00
2026-08-31 20:58:49 +08:00
2026-09-05 19:58:47 +08:00
2026-09-06 20:38:17 +08:00
2026-09-03 14:20:39 +08:00
2026-09-06 15:15:21 +08:00
2026-09-05 16:13:28 +08:00
2026-09-05 15:50:56 +08:00
2026-09-05 15:50:56 +08:00
2026-09-09 11:04:59 +08:00
2026-09-09 11:04:59 +08:00
2026-09-09 11:04:59 +08:00
2026-09-06 20:38:17 +08:00
2026-09-06 20:38:17 +08:00
2026-09-05 16:13:28 +08:00
2026-09-07 14:12:21 +08:00
2026-09-07 14:12:21 +08:00
2026-09-07 18:33:39 +08:00
2026-09-07 18:33:39 +08:00
2026-09-07 14:12:21 +08:00
2026-09-04 12:45:06 +08:00
2026-09-04 12:45:06 +08:00
2026-09-07 17:58:20 +08:00
2026-09-03 15:11:36 +08:00
2026-09-07 10:12:42 +08:00
2026-09-07 10:12:42 +08:00
2026-09-06 09:33:53 +08:00
2026-09-06 09:33:53 +08:00
2026-09-07 18:22:56 +08:00
2026-09-04 10:14:29 +08:00
2026-09-04 10:14:29 +08:00
2026-09-03 14:20:39 +08:00
2026-09-06 20:38:17 +08:00
2026-09-06 20:38:17 +08:00
2026-09-03 14:20:39 +08:00
2026-09-08 20:46:07 +08:00
2026-08-31 14:52:07 +08:00
2026-09-03 15:23:22 +08:00
2026-08-31 21:04:29 +08:00
2026-09-05 14:32:11 +08:00
2026-08-31 01:01:20 +08:00
2026-09-07 17:36:36 +08:00
2026-09-05 14:32:11 +08:00
2026-08-29 11:14:54 +08:00
2026-09-05 15:32:29 +08:00
2026-09-08 20:42:59 +08:00
2026-09-01 10:15:45 +08:00
2026-09-06 17:05:06 +08:00
2026-09-05 15:32:29 +08:00
2026-09-06 20:38:17 +08:00
2026-09-05 15:32:29 +08:00
2026-09-01 08:13:29 +08:00
2026-08-31 21:04:29 +08:00
2026-08-31 21:04:29 +08:00
2026-08-31 01:01:20 +08:00
2026-09-06 17:05:06 +08:00
2026-09-06 17:05:06 +08:00
2026-08-31 01:02:13 +08:00
2026-09-07 18:44:18 +08:00
2026-09-06 18:42:06 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-09-03 15:23:22 +08:00
2026-09-03 14:20:39 +08:00
2026-08-31 19:04:58 +08:00
2026-09-08 20:43:54 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-08-31 19:04:58 +08:00
2026-09-03 15:11:36 +08:00
2026-09-03 15:11:36 +08:00
2026-09-07 19:00:04 +08:00
2026-09-05 23:56:59 +08:00
2026-09-03 16:33:30 +08:00
2026-09-03 16:33:30 +08:00
2026-09-03 16:33:30 +08:00
2026-09-07 23:21:29 +08:00
2026-09-07 23:21:29 +08:00
2026-09-03 10:35:20 +08:00
2026-09-01 01:26:55 +08:00
2026-09-07 18:44:55 +08:00
2026-09-09 11:04:59 +08:00
2026-09-01 01:26:55 +08:00
2026-09-08 13:38:41 +08:00
2026-09-02 11:02:38 +08:00
2026-08-31 11:13:52 +08:00
2026-08-30 00:02:14 +08:00
2026-08-29 17:30:18 +08:00
2026-09-08 20:42:35 +08:00
2026-08-31 09:12:09 +08:00
2026-09-07 19:00:04 +08:00
2026-09-05 23:38:50 +08:00
2026-09-07 18:49:51 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 11:40:11 +00:00
2026-09-07 11:40:11 +00:00
2026-09-07 11:40:11 +00:00
2026-09-07 11:40:11 +00:00
2026-08-30 13:40:19 +09:00
2026-08-30 13:40:19 +09:00
2026-09-02 18:45:20 +08:00
2026-09-02 18:45:20 +08:00
2026-09-04 10:14:29 +08:00
2026-08-31 14:52:07 +08:00
2026-09-11 00:50:17 +08:00
2026-09-11 00:50:17 +08:00
2026-09-11 00:50:17 +08:00
2026-09-11 00:50:17 +08:00
2026-09-11 00:50:17 +08:00
2026-09-05 16:05:17 +08:00
2026-09-07 18:22:56 +08:00
2026-09-07 18:22:56 +08:00
2026-09-05 16:24:15 +08:00
2026-09-07 21:54:22 +08:00
2026-09-03 18:02:15 +08:00
2026-09-05 14:18:13 +08:00
2026-08-30 13:06:11 +09:00
2026-09-03 18:02:15 +08:00
2026-09-07 00:23:49 +08:00