From 8062a5425273971ee169d76b003c263633b44232 Mon Sep 17 00:00:00 2001 From: Liuxinyu176 <1041316040@qq.com> Date: Fri, 9 Oct 2026 22:31:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(trae):=20=E5=9B=BD=E9=99=85=E7=89=88?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E7=AD=BE=E5=88=B0=E5=8D=A1=EF=BC=8C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E6=8C=89=E7=BE=8E=E5=85=83/=E6=9C=88?= =?UTF-8?q?=E9=85=8D=E9=A2=9D=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - INTL 详细页不再显示每日签到卡(国际版无签到体系),改为说明卡 - Trae 账户信息卡在美元计费时显示套餐名 + Premium 快速/慢速、高级、自动补全月配额 - INTL 不再生成 0 积分权益包计数,避免残留“积分”字样 --- app/build.gradle.kts | 4 +- .../token/data/repository/TraeRepository.kt | 2 +- .../ui/servicedetail/ServiceDetailScreen.kt | 50 ++++++++++++++++++- app/src/main/res/values-b+zh+Hans/strings.xml | 4 ++ app/src/main/res/values-b+zh+Hant/strings.xml | 4 ++ app/src/main/res/values/strings.xml | 4 ++ 6 files changed, 63 insertions(+), 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 66751c3..5281277 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.rainy.token" minSdk = 31 targetSdk = 35 - versionCode = 37 - versionName = "1.7.17" + versionCode = 38 + versionName = "1.7.18" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/com/rainy/token/data/repository/TraeRepository.kt b/app/src/main/java/com/rainy/token/data/repository/TraeRepository.kt index 2f43437..a3d2f74 100644 --- a/app/src/main/java/com/rainy/token/data/repository/TraeRepository.kt +++ b/app/src/main/java/com/rainy/token/data/repository/TraeRepository.kt @@ -211,7 +211,7 @@ class TraeRepository constructor( } } } - if (packCount > 0) { + if (packCount > 0 && !isDollarBilling) { extras["pack_count"] = packCount.toString() extras["general_credits"] = trimNum(generalSum) extras["work_credits"] = trimNum(workSum) diff --git a/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt b/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt index 473674a..72e490b 100644 --- a/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt +++ b/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt @@ -235,9 +235,12 @@ fun ServiceDetailScreen( item { OllamaUsageCard(uiState.state) } } ServiceType.TRAE -> { - // 每日签到卡;未配置凭据时展示引导卡,避免暴露必然失败的签到按钮 + // 每日签到卡;未配置凭据时展示引导卡,国际版无签到则展示说明卡 item { - if (uiState.hasCredential) { + val intl = uiState.region != null && uiState.region.equals("INTL", ignoreCase = true) + if (intl) { + TraeIntlNoCheckinCard() + } else if (uiState.hasCredential) { CheckinCard( state = checkinState, todayCheckedIn = checkinInfo?.todayCheckedIn == true, @@ -1504,6 +1507,26 @@ internal fun TraeAccountInfoCard(state: State) { extras["pack_count"]?.toIntOrNull()?.takeIf { it > 0 }?.let { add(stringResource(R.string.extra_label_pack_count) to it.toString()) } + if (extras["billing_mode"] == "dollar") { + extras["intl.plan_name"]?.let { + add(stringResource(R.string.trae_intl_plan_title) to it) + } + extras["intl.premium_fast_limit"]?.let { + add(stringResource(R.string.trae_intl_premium_fast_title) to "$it " + stringResource(R.string.trae_intl_quota_unit)) + } + extras["intl.premium_slow_limit"]?.let { + add(stringResource(R.string.trae_intl_premium_slow_title) to "$it " + stringResource(R.string.trae_intl_quota_unit)) + } + extras["intl.advanced_limit"]?.let { + add(stringResource(R.string.trae_intl_advanced_title) to "$it " + stringResource(R.string.trae_intl_quota_unit)) + } + extras["intl.auto_completion_limit"]?.let { + add(stringResource(R.string.trae_intl_auto_completion_title) to "$it " + stringResource(R.string.trae_intl_quota_unit)) + } + extras["intl.basic_used"]?.let { + add(stringResource(R.string.trae_intl_basic_used_title) to it) + } + } // 计费方式:两个英文布尔键合并为一行自然语言 val billingLabel = when { extras["is_credits_billing"] == "true" -> stringResource(R.string.extra_value_billing_credits) @@ -1531,6 +1554,29 @@ internal fun TraeAccountInfoCard(state: State) { * * 旧缓存无 wb_detail_raw 时回退为「资源 #007」简化行。无任何数据时整卡不渲染。 */ +@Composable +private fun TraeIntlNoCheckinCard() { + Card( + modifier = Modifier.fillMaxWidth(), + shape = RoundedCornerShape(20.dp), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface), + elevation = CardDefaults.cardElevation(defaultElevation = 0.dp) + ) { + Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(4.dp)) { + Text( + text = stringResource(R.string.trae_intl_no_checkin_title), + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.SemiBold + ) + Text( + text = stringResource(R.string.trae_intl_no_checkin_desc), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.outline + ) + } + } +} + @Composable internal fun WorkBuddyResourcesCard(state: State) { val balance = when (state) { diff --git a/app/src/main/res/values-b+zh+Hans/strings.xml b/app/src/main/res/values-b+zh+Hans/strings.xml index ef3fe77..abe73b2 100644 --- a/app/src/main/res/values-b+zh+Hans/strings.xml +++ b/app/src/main/res/values-b+zh+Hans/strings.xml @@ -798,4 +798,8 @@ 自动补全 次/月 充值 / 升级 + 套餐 + 基础用量已用 + 国际版没有每日签到 + Trae 国际版按美元计费,使用月度请求额度,没有签到积分体系。 \ No newline at end of file diff --git a/app/src/main/res/values-b+zh+Hant/strings.xml b/app/src/main/res/values-b+zh+Hant/strings.xml index 2fe0e33..af27a3d 100644 --- a/app/src/main/res/values-b+zh+Hant/strings.xml +++ b/app/src/main/res/values-b+zh+Hant/strings.xml @@ -798,4 +798,8 @@ 自動補全 次/月 儲值 / 升級 + 套餐 + 基礎用量已用 + 國際版沒有每日簽到 + Trae 國際版按美元計費,使用月度請求額度,沒有簽到積分體系。 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 749e51a..2ebfed2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -803,4 +803,8 @@ Auto completion /mo Upgrade / Top up + Plan + Basic usage used + International edition has no daily check-in + TRAE International uses USD billing with monthly request quotas instead of credit check-ins. \ No newline at end of file