From bb39b36d8412b56bf7684f3ce2c1e8500300412e Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Thu, 18 Jun 2026 23:51:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(client):=20P3=20=E8=B4=A6=E5=8F=B7/?= =?UTF-8?q?=E5=A5=97=E9=A4=90=E8=A7=86=E8=A7=92/=E9=85=8D=E9=A2=9D?= =?UTF-8?q?=E6=8E=A5=E7=9C=9F(#6=206C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - account_providers:新增 meProvider(GET /v1/me,登录态变化自动重取)、 plansProvider、usageProvider(family by days)。 - isFreePlanProvider 改为派生自 meProvider.plan(去掉可写演示开关)。 - quotaProvider:总额取 plans free.daily_minutes,今日剩余取 me.quota_today_min (后端已算好);adUnlocked 保留本地态(ad SDK 未接)。 - account_page:邮箱/套餐/到期接 me;删「演示:免费版视角」开关 + kDemoEmail; 协议标签 WireGuard→REALITY/Hysteria2。 - 重写 quota_controller_test 为 provider 驱动;account/quota golden 重生成。 flutter analyze 0 error;113 tests passed。统计页(weekly/月流量/延迟)随 P4 一并接(其均延迟依赖 P4 实测探针)。 Co-Authored-By: Claude Opus 4.8 --- client/lib/models/me.dart | 3 +- client/lib/screens/account_page.dart | 46 ++++++----- client/lib/state/account_providers.dart | 35 ++++++++ client/lib/state/app_providers.dart | 9 +- client/lib/state/quota_provider.dart | 43 +++++++--- .../test/golden/goldens/desktop_account.png | Bin 37994 -> 32828 bytes .../golden/goldens/quota_unlocked_dark.png | Bin 8240 -> 8393 bytes .../golden/goldens/quota_unlocked_light.png | Bin 8605 -> 8717 bytes client/test/unit/quota_controller_test.dart | 78 ++++++++++++------ 9 files changed, 151 insertions(+), 63 deletions(-) diff --git a/client/lib/models/me.dart b/client/lib/models/me.dart index 9541347..6165933 100644 --- a/client/lib/models/me.dart +++ b/client/lib/models/me.dart @@ -28,7 +28,8 @@ class Me { final int devicesUsed; final int devicesMax; - /// 今日额度上限(分钟);null = 不限(pro/team)。 + /// 今日**剩余**额度(分钟);null = 不限(pro/team)。 + /// 后端已算好 = 套餐每日上限 − 今日已用。 final int? quotaTodayMin; /// 今日已用流量(GB)。 diff --git a/client/lib/screens/account_page.dart b/client/lib/screens/account_page.dart index 2188129..ec8cda9 100644 --- a/client/lib/screens/account_page.dart +++ b/client/lib/screens/account_page.dart @@ -5,13 +5,19 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../core/responsive/form_factor.dart'; import '../l10n/app_text.dart'; import '../pangolin_theme.dart'; +import '../state/account_providers.dart'; import '../state/app_providers.dart'; import '../state/navigation_provider.dart'; import '../widgets/account_screens.dart'; import '../widgets/app_top_bar.dart'; import '../widgets/pangolin_icons.dart'; -const String kDemoEmail = 'me@pangolin.vpn'; +/// 格式化到期日为 YYYY-MM-DD(本地时区)。 +String _fmtDate(DateTime d) { + final l = d.toLocal(); + String two(int v) => v.toString().padLeft(2, '0'); + return '${l.year}-${two(l.month)}-${two(l.day)}'; +} class AccountPage extends ConsumerWidget { const AccountPage({super.key, required this.isWide}); @@ -22,6 +28,9 @@ class AccountPage extends ConsumerWidget { final c = context.pangolin; final t = ref.watch(appTextProvider); final isFree = ref.watch(isFreePlanProvider); + final me = ref.watch(meProvider).valueOrNull; + final email = (me?.email.isNotEmpty ?? false) ? me!.email : '—'; + final expiresLabel = me?.expiresAt != null ? _fmtDate(me!.expiresAt!) : ''; final lang = ref.watch(localeProvider); final isDark = Theme.of(context).brightness == Brightness.dark; final pad = isWide ? 28.0 : 20.0; @@ -39,12 +48,12 @@ class AccountPage extends ConsumerWidget { final body = ListView( padding: EdgeInsets.fromLTRB(pad, isWide ? 6 : 0, pad, 24), children: [ - _PlanBanner(t: t, isFree: isFree, onUpgrade: () => open(NavView.plans, PlansScreen(t: t))), + _PlanBanner(t: t, isFree: isFree, email: email, expiresLabel: expiresLabel, onUpgrade: () => open(NavView.plans, PlansScreen(t: t))), const SizedBox(height: 18), // 账户信息 _SectionLabel(text: t.accInfoTitle), _Card(children: [ - _InfoRow(icon: PangolinIcons.mail, title: t.accEmail, value: kDemoEmail, trailing: _changeHint(c, t)), + _InfoRow(icon: PangolinIcons.mail, title: t.accEmail, value: email, trailing: _changeHint(c, t)), Divider(height: 1, color: c.border), _InfoRow(icon: PangolinIcons.lock, title: t.accPassword, value: '••••••••••', trailing: _changeHint(c, t)), ]), @@ -79,20 +88,7 @@ class AccountPage extends ConsumerWidget { _CustomRow( icon: PangolinIcons.shield, title: t.protocol, - trailing: Text('WireGuard', style: PangolinText.mono.copyWith(color: c.fg3, fontSize: 13)), - ), - ]), - const SizedBox(height: 16), - // 演示:免费版视角开关 - _Card(children: [ - _CustomRow( - icon: PangolinIcons.clock, - title: lang == AppLang.zh ? '演示:免费版视角' : 'Demo: free-tier view', - subtitle: lang == AppLang.zh ? '切换额度卡与套餐横幅' : 'Toggles quota UI & plan banner', - trailing: _PangolinSwitch( - value: isFree, - onChanged: (v) => ref.read(isFreePlanProvider.notifier).state = v, - ), + trailing: Text('REALITY / Hysteria2', style: PangolinText.mono.copyWith(color: c.fg3, fontSize: 13)), ), ]), const SizedBox(height: 16), @@ -115,9 +111,17 @@ class AccountPage extends ConsumerWidget { } class _PlanBanner extends StatelessWidget { - const _PlanBanner({required this.t, required this.isFree, required this.onUpgrade}); + const _PlanBanner({ + required this.t, + required this.isFree, + required this.email, + required this.expiresLabel, + required this.onUpgrade, + }); final AppText t; final bool isFree; + final String email; + final String expiresLabel; final VoidCallback onUpgrade; @override @@ -141,7 +145,7 @@ class _PlanBanner extends StatelessWidget { ), const SizedBox(width: 12), Expanded(child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(kDemoEmail, style: PangolinText.body.copyWith(color: c.fg1, fontWeight: FontWeight.w700)), + Text(email, style: PangolinText.body.copyWith(color: c.fg1, fontWeight: FontWeight.w700)), const SizedBox(height: 4), Container( padding: const EdgeInsets.symmetric(horizontal: 9, vertical: 2), @@ -173,9 +177,9 @@ class _PlanBanner extends StatelessWidget { ), const SizedBox(width: 12), Expanded(child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(kDemoEmail, style: const TextStyle(color: PangolinColors.white, fontWeight: FontWeight.w700, fontSize: 16)), + Text(email, style: const TextStyle(color: PangolinColors.white, fontWeight: FontWeight.w700, fontSize: 16)), const SizedBox(height: 4), - Text('${t.proMember} · 2026-12-31', + Text(expiresLabel.isEmpty ? t.proMember : '${t.proMember} · $expiresLabel', style: TextStyle(color: PangolinColors.white.withOpacity(0.85), fontSize: 12)), ])), FilledButton( diff --git a/client/lib/state/account_providers.dart b/client/lib/state/account_providers.dart index c6caa4e..8d68333 100644 --- a/client/lib/state/account_providers.dart +++ b/client/lib/state/account_providers.dart @@ -5,6 +5,9 @@ // 在后续阶段加入本文件。 import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../models/me.dart'; +import '../models/plan.dart'; +import '../models/usage_point.dart'; import '../services/account_api.dart'; import '../services/api_client.dart'; import '../services/api_config.dart'; @@ -23,3 +26,35 @@ final apiClientProvider = Provider((ref) { final accountApiProvider = Provider( (ref) => AccountApi(ref.watch(apiClientProvider)), ); + +// ── 数据 provider ─────────────────────────────────────────────────────────── + +/// 当前账户聚合视图(GET /v1/me)。登录态变化自动重取;未登录返回默认免费档。 +class MeNotifier extends AsyncNotifier { + @override + Future build() async { + final auth = ref.watch(authProvider); + if (!auth.isLoggedIn) return const Me(email: '', plan: 'free'); + return ref.read(accountApiProvider).me(); + } + + /// 手动刷新(如连接/兑换后)。 + Future refresh() async { + state = const AsyncLoading(); + state = await AsyncValue.guard(() => ref.read(accountApiProvider).me()); + } +} + +final meProvider = AsyncNotifierProvider(MeNotifier.new); + +/// 套餐定义(GET /v1/plans)。未登录返回空。 +final plansProvider = FutureProvider>((ref) async { + if (!ref.watch(authProvider).isLoggedIn) return const []; + return ref.read(accountApiProvider).plans(); +}); + +/// 最近 N 天用量(GET /v1/usage?days=N)。未登录返回空。 +final usageProvider = FutureProvider.family, int>((ref, days) async { + if (!ref.watch(authProvider).isLoggedIn) return const []; + return ref.read(accountApiProvider).usage(days: days); +}); diff --git a/client/lib/state/app_providers.dart b/client/lib/state/app_providers.dart index 3ed9aab..509941d 100644 --- a/client/lib/state/app_providers.dart +++ b/client/lib/state/app_providers.dart @@ -5,6 +5,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../l10n/app_text.dart'; import '../l10n/strings_en.dart'; import '../l10n/strings_zh.dart'; +import 'account_providers.dart'; /// 当前语言(单显)。设置/账户页段控切换。 final localeProvider = StateProvider((ref) => AppLang.zh); @@ -18,5 +19,9 @@ final appTextProvider = Provider((ref) { /// 主题模式。默认跟随系统;设置页可显式切深色。 final themeModeProvider = StateProvider((ref) => ThemeMode.system); -/// 演示:是否「免费版视角」。免费版才显示额度卡与免费横幅。 -final isFreePlanProvider = StateProvider((ref) => true); +/// 是否免费档——派生自真实账户(meProvider.plan == 'free')。 +/// 免费版才显示额度卡与免费横幅;加载中默认按免费处理。 +final isFreePlanProvider = Provider((ref) { + final me = ref.watch(meProvider).valueOrNull; + return me?.isFree ?? true; +}); diff --git a/client/lib/state/quota_provider.dart b/client/lib/state/quota_provider.dart index 0d49d41..fe2ab24 100644 --- a/client/lib/state/quota_provider.dart +++ b/client/lib/state/quota_provider.dart @@ -1,15 +1,18 @@ -// quota_provider.dart — 免费版每日额度状态机(Riverpod,mock 数据) +// quota_provider.dart — 免费版每日额度状态(Riverpod) // -// 设计约定(design/CLAUDE.md §7 / §2):免费额度权威在服务端,本地仅展示。 -// 这里以 mock 实现 UI 与数据层解耦的接口形态:剩余分钟 + 是否已看广告解锁。 -// 接 API 时只替换本通知器内部,UI 不动。 +// 设计约定(design/CLAUDE.md §7 / §2):免费额度权威在服务端。 +// 总额度取自 plans 的 free.daily_minutes,今日剩余取自 me.quota_today_min +// (后端已算好 = 上限 − 今日已用)。adUnlocked 为本地会话态(看广告需 ad SDK, +// 尚未接入,保留本地乐观置位)。 import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'account_providers.dart'; + /// 免费额度快照。 class FreeQuotaState { const FreeQuotaState({ this.totalMinutes = 10, - this.remainingMinutes = 6, + this.remainingMinutes = 10, this.adUnlocked = false, }); @@ -38,16 +41,32 @@ class FreeQuotaState { } class QuotaController extends StateNotifier { - QuotaController([FreeQuotaState? initial]) - : super(initial ?? const FreeQuotaState()); + QuotaController(this._ref) : super(const FreeQuotaState()) { + _sync(); + // me / plans 任一就绪或变化都重算。 + _ref.listen(meProvider, (_, __) => _sync()); + _ref.listen(plansProvider, (_, __) => _sync()); + } - /// 观看激励视频后解锁今日使用。 + final Ref _ref; + + void _sync() { + final me = _ref.read(meProvider).valueOrNull; + final plans = _ref.read(plansProvider).valueOrNull; + var total = 10; // §7 默认免费 10 分钟,plans 就绪后以其为准 + if (plans != null) { + for (final p in plans) { + if (p.code == 'free' && p.dailyMinutes != null) total = p.dailyMinutes!; + } + } + final remaining = (me?.quotaTodayMin ?? total).clamp(0, total); + state = state.copyWith(totalMinutes: total, remainingMinutes: remaining); + } + + /// 观看激励视频后解锁今日使用(本地乐观;真实 ad 校验待 ad SDK 接入)。 void watchAd() => state = state.copyWith(adUnlocked: true); - - /// 演示重置(回到未解锁)。 - void reset() => state = const FreeQuotaState(); } final quotaProvider = StateNotifierProvider( - (ref) => QuotaController(), + (ref) => QuotaController(ref), ); diff --git a/client/test/golden/goldens/desktop_account.png b/client/test/golden/goldens/desktop_account.png index 024b923b9f733e6be917185aa8e2d93e6208e0a8..39f05cf404d1a2316c560e2dd63b64b00d3aa67d 100644 GIT binary patch literal 32828 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 literal 37994 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 SX2-xSfeV&)i0X5`N&f|Esn`Gj literal 8240 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 E2T>KYrT_o{ diff --git a/client/test/golden/goldens/quota_unlocked_light.png b/client/test/golden/goldens/quota_unlocked_light.png index 2ac71ce7a62007d429fc10bada37b603bd146cde..d5003dacd5bc9b11790997a10420f23f079e0020 100644 GIT binary patch literal 8717 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

*mJP}R`# zH`C9OsB(3Aml~s&N)pVulKUP?Q5uNtRdk3i;;U6Jg>Ua@@o>%&vcCAwmZc!^F_Vb? z7Iv<0$^>7(bN39xc ztA&lNt0$Iz|NcUD{QTA=%elEtFuP5gXd=!LzTphplauj5XO=PFbpwVWL-TY+|A{=z_^oLLQP^5u_N=V>5F9B)lgVB7YhpxJ4#U zj8~mW8zTej!{Y6F`$d0`ecDq(Hhsr_)p){EH6K9kbyBL_3q|@Ig1VEEQWm=7BQLH; zcpT?cLmXW@(trP|vqoN7c*IqEnI07Y=zCQQr8U33aZD*fQ8TXxnCRCo+t|x>`ld~} z0f|KCi-}wrrI;kpPSQOgKWQoZ`6UJS<4U?&76Ab8#>M$vmCSNsToY3iC<+Os-gecH z#U^Kq>pb4wVb^Zi!}Oua;eqX^5D zDP~#aM`T`zD9(I94Wu<&rG8KZ${Fa^tr6g6bujBD2!u7P@Dl=of`PgO^rvkqP=o(p z40~u;(1#?q*RK9N=n9kvWnC_J&6JQXmX#?^u_`_rZ{1q44^-!n3aY=_?u5~s5FT%&LhL>o|IYwSvUG9iw zpdeY!$?-HIOerwXL%ptctLE10dTZvL*N|lZWU4iLyL!v!}SujS){SkrOBfgX&dZ5(rnc9?qvPS zzQldhExi;Tyz?kX(OgLQ&sC@quQVego|aov0>57FF{Yxz;NasLBvrs*l$bQ>HUfh+ z8_GNg;EDIQ?AH*CoW!@t=wz>y zzIiSqatLtg6*{A9{qh;LBgV9Q$fT#Hv(<;=h<*&eV*GCQr7!_g2}25HO&ii$0;^JD z-|@dRq#5$v&s#L#j0REhVXZs}DwyTxqA*a)v(U6Qo%-wRoP??z!wd#6py z@6FHV!lx>0P)C#bm+;XM!JDi@ihB~H<^uhNRcvgL*mz^0Cm;u2{R*dri;187L5tI@g3F~5cjSAZRf>^+!u!Q3#mSxG1 z!cIUMM?F$L{*dX4fowLq$Ncpse&m7}iG(v%&be15zgTU;dN&bns6a0GUSm8HcB2X% zVzBa1)`-U)DcX8v^s+kKARwhbVB_;*?AvXjRA?{wSgK9AzoxDk@2~eEpS^Cj6u^@*mkISNS`9s5OyxJN^XSS8FR{a$lXZHi zMQrlep}LU1_f^auHoOk7DoqyIFfPGxL4D26C0p{@dHAE2^)} zIMD=gq?Ja_#LFtHU}LA&M%Ta?1$l*M@JaR@yS_KjxoRX}aySjWxaS!A0mlF~Y2*`2 z?w##24bPr#{?20#S0XJqtre6b+h{RH24uJOs2$P~>4lhY0DO%6)~>;|B-XpZ$9xtJ zsJ07kmw3RXZmbyYDW;4!#F;!_fANGE}2D;Jspwz`lD{ppZ(E?JPOkVLY**Xx<5fz_{JRohU z;2qs{8BUgyAr7!_z{XqjPgUl+o4o(k!6PX$IySlykqA1wA}am??)NTm;JhZNK*mf= z6a>1W{$D}-=kVXj?57-l%HgM9{0s`hKaJq05&SfQpYQ-EaDQTg{|}fz)d}cp1=RhU zNUbAhSicyc2Y+Z&v)sFpW!pad55wB-gR;hd`>z`=_+v3b!V!}}-zuFn*e0TdNwca> zcy~0wJp+x74?X~a4YVXC%nuj1iHiTaytX426V42PURf=Bv|2@mt?txtT6^LY>EVR=$<)9$fd3rD z-@Ozay=}+%a9=|@`SAVNJ*M^<4J-P^t-(X5%kClWoW7z`$&~)Ppxe>0Ta5@0P`^fQ zH(r*~aN%BV_tKJF29}ai;bWz+|5#8R(0K<~9;XsTl*e7|ta9gQmTty>A4AYZT+_2e zJ z3^Ty)A_hs4&!y6>PaH^hmdqk*NM3W&j+uPo Qmjt?c*}IIpjjesJ9CThR{ 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 yLuJf4!xMy2`KPDdU@(~L)AQH(Db6lJ saveTokens({required String access, required String refresh}) async {} + @override + Future loadAccessToken() async => null; + @override + Future loadRefreshToken() async => null; + @override + Future clear() async {} + @override + Future markOnboarded() async {} + @override + Future isOnboarded() async => true; +} + +ProviderContainer _container() => ProviderContainer( + overrides: [tokenStoreProvider.overrideWithValue(const _NullTokenStore())], + ); + void main() { - test('默认值:10 分钟总额 / 6 分钟剩余 / 未解锁', () { - final ctl = QuotaController(); - expect(ctl.state.totalMinutes, 10); - expect(ctl.state.remainingMinutes, 6); - expect(ctl.state.adUnlocked, false); + // 纯状态逻辑(与数据源无关)。 + group('FreeQuotaState', () { + test('progress = 剩余/总额', () { + expect(const FreeQuotaState(totalMinutes: 10, remainingMinutes: 5).progress, + closeTo(0.5, 1e-9)); + }); + test('isLow:剩余 ≤3 分钟为真', () { + expect(const FreeQuotaState(remainingMinutes: 3).isLow, true); + expect(const FreeQuotaState(remainingMinutes: 4).isLow, false); + }); }); - test('progress = 剩余/总额', () { - final ctl = QuotaController(const FreeQuotaState(totalMinutes: 10, remainingMinutes: 5)); - expect(ctl.state.progress, closeTo(0.5, 1e-9)); - }); + // 未登录默认态:总额 10 / 剩余 10 / 未解锁;watchAd 本地置位。 + group('quotaProvider', () { + test('默认 10/10 未解锁', () { + final c = _container(); + addTearDown(c.dispose); + final q = c.read(quotaProvider); + expect(q.totalMinutes, 10); + expect(q.remainingMinutes, 10); + expect(q.adUnlocked, false); + }); - test('isLow:剩余 ≤3 分钟为真', () { - expect(const FreeQuotaState(remainingMinutes: 3).isLow, true); - expect(const FreeQuotaState(remainingMinutes: 4).isLow, false); - }); - - test('watchAd 解锁今日使用', () { - final ctl = QuotaController(); - expect(ctl.state.adUnlocked, false); - ctl.watchAd(); - expect(ctl.state.adUnlocked, true); - }); - - test('reset 回到未解锁初始态', () { - final ctl = QuotaController()..watchAd(); - ctl.reset(); - expect(ctl.state.adUnlocked, false); - expect(ctl.state.remainingMinutes, 6); + test('watchAd 解锁今日使用', () { + final c = _container(); + addTearDown(c.dispose); + c.read(quotaProvider.notifier).watchAd(); + expect(c.read(quotaProvider).adUnlocked, true); + }); }); }