feat(claude-code): 只读展示重置机会(cedar_ember)并补齐额度文案国际化

This commit is contained in:
dalamudx
2026-09-29 23:55:27 +08:00
parent 125cd40aa5
commit b49f5c0fd7
11 changed files with 211 additions and 6 deletions
@@ -441,6 +441,33 @@
</template>
</ProviderQuotaProgressRow>
</div>
<div
v-if="getClaudeCodeResetCreditAvailableCount(key) !== null"
class="mt-3 border-t border-border/60 pt-2"
>
<div class="flex flex-wrap items-center gap-x-1 gap-y-1 text-[10px] leading-4 text-muted-foreground">
<span>{{ formatCodexResetCreditCountLabel(getClaudeCodeResetCreditAvailableCount(key)) }}</span>
<template v-if="getVisibleClaudeCodeResetCreditItems(key).length > 0">
<span aria-hidden="true">|</span>
<span>{{ legacyT('临近过期') }}</span>
<template
v-for="(item, itemIndex) in getVisibleClaudeCodeResetCreditItems(key)"
:key="`${item.displayKey}-${item.expiresAt}`"
>
<span
:title="item.title"
class="tabular-nums"
>
{{ item.displayKey }} {{ formatCodexResetCreditExpiresAt(item.expiresAt) }}
</span>
<span
v-if="itemIndex < getVisibleClaudeCodeResetCreditItems(key).length - 1"
aria-hidden="true"
>·</span>
</template>
</template>
</div>
</div>
</div>
<!-- Gemini CLI 上游模型配额 -->
<div
@@ -3646,6 +3673,25 @@ function getClaudeCodeQuotaUpdatedAt(key: EndpointAPIKey): number | undefined {
return Number.isFinite(updatedAt) && updatedAt > 0 ? updatedAt : undefined
}
function getClaudeCodeResetCreditsDisplay(key: EndpointAPIKey): QuotaResetCreditsSnapshot | null {
return getQuotaSnapshotForProvider(key, 'claude_code')?.reset_credits
?? key.upstream_metadata?.claude_code?.reset_credits
?? null
}
function getClaudeCodeResetCreditAvailableCount(key: EndpointAPIKey): number | null {
return getCodexResetCreditAvailableCountFromSnapshot(getClaudeCodeResetCreditsDisplay(key))
}
function getVisibleClaudeCodeResetCreditItems(key: EndpointAPIKey) {
return getVisibleCodexResetCreditItemsFromSnapshot(
getClaudeCodeResetCreditsDisplay(key),
undefined,
5,
legacyT('Claude 重置机会'),
)
}
function hasClaudeCodeQuotaDisplayData(key: EndpointAPIKey): boolean {
return getClaudeCodeQuotaItems(key).length > 0
}
@@ -272,6 +272,7 @@ export function getVisibleCodexResetCreditItems(
snapshot: QuotaResetCreditsSnapshot | null | undefined,
nowUnixSecs = Math.floor(Date.now() / 1000),
limit = 5,
titleLabel = 'Codex 重置机会',
): CodexResetCreditDisplayItem[] {
const credits = snapshot?.credits
if (!snapshot || !Array.isArray(credits)) return []
@@ -295,7 +296,7 @@ export function getVisibleCodexResetCreditItems(
return {
...item,
displayKey,
title: `Codex 重置机会 ${displayKey}`,
title: `${titleLabel} ${displayKey}`,
} satisfies CodexResetCreditDisplayItem
})
}