@kenz1117/dsh-ui-usage-billing 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +2 -0
- package/README.md +35 -25
- package/lib/client.js +1241 -490
- package/lib/index.js +679 -50
- package/lib/types/client/locales.d.ts +1 -1
- package/lib/types/client/pricing.d.ts +65 -5
- package/lib/types/client/vendor-logos.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Locale dictionaries for the usage billing surface. */
|
|
2
|
-
export type UsageBillingKey = 'billing.title' | 'billing.subtitle' | 'billing.cost' | 'billing.todayCost' | 'billing.monthCost' | 'billing.yearCost' | 'billing.monthProjected' | 'billing.liveTurn' | 'billing.liveSession' | 'billing.totalCost' | 'billing.calls' | 'billing.cacheHitRate' | 'billing.tokens' | 'billing.inputTokens' | 'billing.outputTokens' | 'billing.avgCost' | 'billing.trend' | 'billing.trend7d' | 'billing.trend30d' | 'billing.trendMetric' | 'billing.trendMetricCost' | 'billing.trendMetricTokens' | 'billing.trendEmpty' | 'billing.budget' | 'billing.budgetAmount' | 'billing.budgetSummary' | 'billing.sessions' | 'billing.sessionTitle' | 'billing.project' | 'billing.lastActive' | 'billing.sessionOverflow' | 'billing.budgetTierBody' | 'billing.models' | 'billing.providerBilling' | 'billing.estimated' | 'billing.actual' | 'billing.pricing' | 'billing.showPricing' | 'billing.hidePricing' | 'billing.pricePerM' | 'billing.input' | 'billing.output' | 'billing.cacheHit' | 'billing.peak' | 'billing.offPeak' | 'billing.flat' | 'billing.peakHours' | 'billing.band' | 'billing.openDashboard' | 'billing.close' | 'billing.footer' | 'billing.footerCredit' | 'billing.lastUpdated' | 'billing.noData' | 'billing.todayRate' | 'billing.rateLive' | 'billing.rateBuiltin' | 'billing.pricingTip' | 'billing.pricingUnit' | 'billing.pricingNotes' | 'billing.ubPeak' | 'billing.ubOff' | 'billing.peakBand' | 'billing.pricingSource' | 'billing.noteCache' | 'billing.noteBand' | 'billing.noteSource' | 'billing.balance' | 'billing.balanceUnconfigured' | 'billing.balanceUnauthorized' | 'billing.balanceUnreachable' | 'billing.uncatalogued' | 'billing.estimatedPricing' | 'billing.balanceDays' | 'billing.balanceLowBody' | 'billing.reconcileDrift' | 'billing.reconcileDismiss' | 'billing.subscriptions' | 'billing.subscriptionNotConfigured' | 'billing.subscriptionUnauthorized' | 'billing.subscriptionUnavailable' | 'billing.subscriptionInvalid' | 'billing.subscriptionRateLimited' | 'billing.subscriptionSession' | 'billing.subscriptionWeekly' | 'billing.subscriptionMonthly' | 'billing.subscriptionBilling' | 'billing.subscriptionRemaining' | 'billing.subscriptionExhausted' | 'billing.subscriptionReset' | 'billing.subscriptionNoApi' | 'billing.floatWindow' | 'billing.floatModeCombined' | 'billing.floatModeSubscription' | 'billing.floatMode' | 'billing.floatTargets' | 'billing.floatWindowHint' | 'billing.floatNoTargets' | 'billing.floatNoTargetsHint' | 'billing.floatPrev' | 'billing.floatNext' | 'billing.subscriptionsStale' | 'billing.heatmapLess' | 'billing.heatmapMore' | 'billing.currency' | 'billing.currencyCny' | 'billing.currencyUsd' | 'billing.heatmap' | 'billing.rounds' | 'billing.roundsHint' | 'billing.anomaly' | 'billing.workspaces' | 'billing.workspacesHint' | 'billing.plan' | 'billing.remaining' | 'billing.unknownModel' | 'billing.model' | 'billing.thModel' | 'billing.thInputMiss' | 'billing.thInputHit' | 'billing.currentRound' | 'billing.costAbbr' | 'billing.tabOverview' | 'billing.tabTrends' | 'billing.tabProviders' | 'billing.tabDetails' | 'billing.tabPricing' | 'billing.tabSettings' | 'billing.settingsHead' | 'billing.settingsHint' | 'billing.budgetHint' | 'billing.peakAlertHint' | 'billing.peakAlertDescPeak' | 'billing.peakAlertDescOff' | 'billing.export' | 'billing.exportCsvDay' | 'billing.exportCsvSession' | 'billing.exportJson' | 'billing.peakShare' | 'billing.peakShareHint' | 'billing.weekCost' | 'billing.roleCost' | 'billing.roleUser' | 'billing.roleAssistant' | 'billing.roleTool' | 'billing.roleHint' | 'billing.tierPeak' | 'billing.tierOff' | 'billing.tierToPeak' | 'billing.tierToOff' | 'billing.tierAlertEnterPeak' | 'billing.tierAlertEnterOff' | 'billing.peakAlertTitlePeak' | 'billing.peakAlertTitleOff' | 'billing.peakAlert' | 'billing.peakAlertLeadMin' | 'billing.peakAlertPos' | 'billing.peakAlertMode' | 'billing.peakAlertPosCorner' | 'billing.peakAlertPosCenter' | 'billing.peakAlertModePeak' | 'billing.peakAlertModeOff' | 'billing.peakAlertModeBoth' | 'billing.peakAlertWebNotify' | 'billing.peakAlertPreview' | 'billing.planTypeCode' | 'billing.planTypeToken' | 'billing.subscriptionFeePerMonth' | 'billing.triggerToday' | 'billing.triggerMonth' | 'billing.subscriptionIncluded' | 'billing.free' | 'billing.official' | 'billing.thirdParty' | 'billing.officialCost' | 'billing.thirdPartyCost' | 'billing.perfSamples' | 'billing.perfTtft' | 'billing.perfP50' | 'billing.perfP90' | 'billing.perfTps' | 'billing.perfLatency' | 'billing.perfEstimated' | 'billing.perfEmpty' | 'billing.perfTpsUnit' | 'billing.perfTitle' | 'billing.perfHint' | 'billing.heatmapYear' | 'billing.heatmapMonth' | 'billing.activeDays' | 'billing.streakDays' | 'billing.subscriptionAutoDetect' | 'billing.pluginInfo' | 'billing.pluginName' | 'billing.pluginDescription' | 'billing.pluginVersion' | 'billing.pluginAuthor' | 'billing.pluginRepository' | 'billing.pluginNpm' | 'billing.pluginLicense' | 'billing.tabToken' | 'billing.tokenExport' | 'billing.tokenExportCsv' | 'billing.tokenCacheHitRate' | 'billing.tokenReasoningShare' | 'billing.tokenReasoningShort' | 'billing.tokenIo' | 'billing.tokenPeak' | 'billing.tokenDaily' | 'billing.tokenByModel' | 'billing.tokenMiss' | 'billing.tokenHit' | 'billing.tokenOutput' | 'billing.tokenTotal' | 'billing.tokenShare' | 'billing.usageStatsTool' | 'billing.usageStatsToolHint' | 'billing.balanceGranted' | 'billing.balanceTopped' | 'billing.balanceDaily' | 'billing.balanceDaysLong' | 'billing.balanceDaysUnit' | 'billing.popTodayModel' | 'billing.popNoConsumption' | 'billing.popQuotaAlert' | 'billing.popRiskNone' | 'billing.popTitle' | 'billing.popDirectLead' | 'billing.popSubLead' | 'billing.popBalanceNormal' | 'billing.popBalanceLow' | 'billing.popQuotaNormal' | 'billing.popQuotaLow' | 'billing.alertBalanceLow' | 'billing.alertQuotaLow' | 'billing.unpricedHint' | 'billing.exportCsvSite' | 'billing.panelRelay' | 'billing.relaySite' | 'billing.relayDirect' | 'billing.relayUnknown' | 'billing.panelRelayQuota' | 'billing.relayBalance' | 'billing.relayNoQuota' | 'billing.relayWindowUsed' | 'billing.relayKindNewApi' | 'billing.relayKindSub2Api' | 'billing.relayKindUnknown' | 'billing.relayCalls';
|
|
2
|
+
export type UsageBillingKey = 'billing.title' | 'billing.subtitle' | 'billing.cost' | 'billing.todayCost' | 'billing.monthCost' | 'billing.yearCost' | 'billing.monthProjected' | 'billing.liveTurn' | 'billing.liveSession' | 'billing.totalCost' | 'billing.calls' | 'billing.cacheHitRate' | 'billing.tokens' | 'billing.inputTokens' | 'billing.outputTokens' | 'billing.avgCost' | 'billing.trend' | 'billing.trend7d' | 'billing.trend30d' | 'billing.trendMetric' | 'billing.trendMetricCost' | 'billing.trendMetricTokens' | 'billing.trendEmpty' | 'billing.budget' | 'billing.budgetAmount' | 'billing.budgetSummary' | 'billing.sessions' | 'billing.sessionTitle' | 'billing.project' | 'billing.lastActive' | 'billing.sessionOverflow' | 'billing.budgetTierBody' | 'billing.models' | 'billing.providerBilling' | 'billing.estimated' | 'billing.actual' | 'billing.pricing' | 'billing.showPricing' | 'billing.hidePricing' | 'billing.pricePerM' | 'billing.input' | 'billing.output' | 'billing.cacheHit' | 'billing.peak' | 'billing.offPeak' | 'billing.flat' | 'billing.peakHours' | 'billing.band' | 'billing.openDashboard' | 'billing.close' | 'billing.footer' | 'billing.footerCredit' | 'billing.lastUpdated' | 'billing.noData' | 'billing.todayRate' | 'billing.rateLive' | 'billing.rateBuiltin' | 'billing.promoBadge' | 'billing.promoUntil' | 'billing.promoOpenEnded' | 'billing.pricingTip' | 'billing.pricingUnit' | 'billing.pricingNotes' | 'billing.ubPeak' | 'billing.ubOff' | 'billing.peakBand' | 'billing.pricingSource' | 'billing.noteCache' | 'billing.noteBand' | 'billing.noteSource' | 'billing.balance' | 'billing.balanceUnconfigured' | 'billing.balanceUnauthorized' | 'billing.balanceUnreachable' | 'billing.uncatalogued' | 'billing.estimatedPricing' | 'billing.balanceDays' | 'billing.balanceLowBody' | 'billing.reconcileDrift' | 'billing.reconcileDismiss' | 'billing.subscriptions' | 'billing.subscriptionNotConfigured' | 'billing.subscriptionUnauthorized' | 'billing.subscriptionUnavailable' | 'billing.subscriptionInvalid' | 'billing.subscriptionRateLimited' | 'billing.subscriptionSession' | 'billing.subscriptionWeekly' | 'billing.subscriptionMonthly' | 'billing.subscriptionBilling' | 'billing.subscriptionRemaining' | 'billing.subscriptionExhausted' | 'billing.subscriptionReset' | 'billing.subscriptionNoApi' | 'billing.floatWindow' | 'billing.floatModeCombined' | 'billing.floatModeSubscription' | 'billing.floatMode' | 'billing.floatTargets' | 'billing.floatWindowHint' | 'billing.floatNoTargets' | 'billing.floatNoTargetsHint' | 'billing.floatPrev' | 'billing.floatNext' | 'billing.subscriptionsStale' | 'billing.heatmapLess' | 'billing.heatmapMore' | 'billing.currency' | 'billing.currencyCny' | 'billing.currencyUsd' | 'billing.heatmap' | 'billing.rounds' | 'billing.roundsHint' | 'billing.anomaly' | 'billing.workspaces' | 'billing.workspacesHint' | 'billing.plan' | 'billing.remaining' | 'billing.unknownModel' | 'billing.model' | 'billing.thModel' | 'billing.thInputMiss' | 'billing.thInputHit' | 'billing.currentRound' | 'billing.costAbbr' | 'billing.tabOverview' | 'billing.tabTrends' | 'billing.tabProviders' | 'billing.tabDetails' | 'billing.tabPricing' | 'billing.tabSettings' | 'billing.settingsHead' | 'billing.settingsHint' | 'billing.budgetHint' | 'billing.peakAlertHint' | 'billing.peakAlertDescPeak' | 'billing.peakAlertDescOff' | 'billing.export' | 'billing.exportCsvDay' | 'billing.exportCsvSession' | 'billing.exportJson' | 'billing.peakShare' | 'billing.peakShareHint' | 'billing.weekCost' | 'billing.roleCost' | 'billing.roleUser' | 'billing.roleAssistant' | 'billing.roleTool' | 'billing.roleHint' | 'billing.tierPeak' | 'billing.tierOff' | 'billing.tierToPeak' | 'billing.tierToOff' | 'billing.tierAlertEnterPeak' | 'billing.tierAlertEnterOff' | 'billing.peakAlertTitlePeak' | 'billing.peakAlertTitleOff' | 'billing.peakAlert' | 'billing.peakAlertLeadMin' | 'billing.peakAlertPos' | 'billing.peakAlertMode' | 'billing.peakAlertPosCorner' | 'billing.peakAlertPosCenter' | 'billing.peakAlertModePeak' | 'billing.peakAlertModeOff' | 'billing.peakAlertModeBoth' | 'billing.peakAlertWebNotify' | 'billing.peakAlertPreview' | 'billing.planTypeCode' | 'billing.planTypeToken' | 'billing.subscriptionFeePerMonth' | 'billing.triggerToday' | 'billing.triggerMonth' | 'billing.subscriptionIncluded' | 'billing.free' | 'billing.official' | 'billing.thirdParty' | 'billing.officialCost' | 'billing.thirdPartyCost' | 'billing.perfSamples' | 'billing.perfTtft' | 'billing.perfP50' | 'billing.perfP90' | 'billing.perfTps' | 'billing.perfLatency' | 'billing.perfEstimated' | 'billing.perfEmpty' | 'billing.perfTpsUnit' | 'billing.perfTitle' | 'billing.perfHint' | 'billing.heatmapYear' | 'billing.heatmapMonth' | 'billing.activeDays' | 'billing.streakDays' | 'billing.subscriptionAutoDetect' | 'billing.pluginInfo' | 'billing.pluginName' | 'billing.pluginDescription' | 'billing.pluginVersion' | 'billing.pluginAuthor' | 'billing.pluginRepository' | 'billing.pluginNpm' | 'billing.pluginLicense' | 'billing.tabToken' | 'billing.tokenExport' | 'billing.tokenExportCsv' | 'billing.tokenCacheHitRate' | 'billing.tokenReasoningShare' | 'billing.tokenReasoningShort' | 'billing.tokenIo' | 'billing.tokenPeak' | 'billing.tokenDaily' | 'billing.tokenByModel' | 'billing.tokenMiss' | 'billing.tokenHit' | 'billing.tokenOutput' | 'billing.tokenTotal' | 'billing.tokenShare' | 'billing.usageStatsTool' | 'billing.usageStatsToolHint' | 'billing.balanceGranted' | 'billing.balanceTopped' | 'billing.balanceDaily' | 'billing.balanceDaysLong' | 'billing.balanceDaysUnit' | 'billing.popTodayModel' | 'billing.popNoConsumption' | 'billing.popQuotaAlert' | 'billing.popRiskNone' | 'billing.popTitle' | 'billing.popDirectLead' | 'billing.popSubLead' | 'billing.popBalanceNormal' | 'billing.popBalanceLow' | 'billing.popQuotaNormal' | 'billing.popQuotaLow' | 'billing.alertBalanceLow' | 'billing.alertQuotaLow' | 'billing.unpricedHint' | 'billing.exportCsvSite' | 'billing.panelRelay' | 'billing.relaySite' | 'billing.relayDirect' | 'billing.relayUnknown' | 'billing.panelRelayQuota' | 'billing.relayBalance' | 'billing.relayNoQuota' | 'billing.relayWindowUsed' | 'billing.relayKindNewApi' | 'billing.relayKindSub2Api' | 'billing.relayKindUnknown' | 'billing.relayCalls';
|
|
3
3
|
export declare const NS = "usageBilling";
|
|
4
4
|
export declare const zh: Record<UsageBillingKey, string>;
|
|
5
5
|
export declare const en: Record<UsageBillingKey, string>;
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
* (weekdays 09:00-12:00 / 14:00-18:00 Beijing) at 2x the off-peak rate —
|
|
13
13
|
* weekends (Sat/Sun, Beijing) are charged at the off-peak rate all day.
|
|
14
14
|
* The estimator mixes both bands by a configured peak share ({@link DEFAULT_PEAK_SHARE}).
|
|
15
|
+
*
|
|
16
|
+
* Time-limited launch promos ({@link PricePromo}) never mutate the catalog:
|
|
17
|
+
* entries keep list price and a promo window; the estimator and the rate
|
|
18
|
+
* table apply the discount factor until the deadline, then auto-revert.
|
|
15
19
|
*/
|
|
16
20
|
import type { LivePricing } from '../pricing-shared.ts';
|
|
17
21
|
/**
|
|
@@ -124,6 +128,36 @@ export interface ModelPrice extends PriceBand {
|
|
|
124
128
|
/** Off-peak band (Gemini Flex / DeepSeek 低谷档); absent = flat pricing. */
|
|
125
129
|
offPeak?: PriceBand;
|
|
126
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* 限时促销窗口(新模型上线折扣等厂商营销活动):生效期内该条目所有档位
|
|
133
|
+
* (主档与 offPeak)单价按 factor 折扣计价与显示,截止时刻起自动恢复刊例价。
|
|
134
|
+
*/
|
|
135
|
+
export interface PricePromo {
|
|
136
|
+
/** 折扣系数(0.5 = 五折);仅 (0,1) 区间有效,非法值视为无促销。 */
|
|
137
|
+
factor: number;
|
|
138
|
+
/**
|
|
139
|
+
* 截止时刻(epoch ms):该时刻及之后恢复刊例价。缺省表示厂商未公布截止日
|
|
140
|
+
* 的长期活动(如「限时 5 折直至另行通知」),持续生效直至收到公告后补填。
|
|
141
|
+
*/
|
|
142
|
+
endsAtMs?: number;
|
|
143
|
+
/** 展示备注(如「限时 5 折至 …」),供界面提示活动性质。 */
|
|
144
|
+
note?: string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 附加计价行(纯展示参考价):承载主三桶之外的厂商计价维度,如 Batch
|
|
148
|
+
* 半价档、显式缓存创建/命中等。不参与估算计费——用量统计源只有
|
|
149
|
+
* input/cacheHit/cacheMiss/output 四桶,无 batch 与显式缓存维度可区分。
|
|
150
|
+
*/
|
|
151
|
+
export interface PriceRow {
|
|
152
|
+
/** 行标签(沿用目录单语风格,直接中文)。 */
|
|
153
|
+
label: string;
|
|
154
|
+
/** 输入侧单价(元或美元 / 每百万 token);缺省显示 —。 */
|
|
155
|
+
input?: number;
|
|
156
|
+
/** 输出侧单价;缺省显示 —。 */
|
|
157
|
+
output?: number;
|
|
158
|
+
/** 补充说明(如与标准价的关系)。 */
|
|
159
|
+
note?: string;
|
|
160
|
+
}
|
|
127
161
|
/** One catalog entry: identity, brand color token, and price. */
|
|
128
162
|
export interface ModelEntry {
|
|
129
163
|
/** Model key used by `.dsh-usage-stats.json` `byModel`. */
|
|
@@ -138,6 +172,13 @@ export interface ModelEntry {
|
|
|
138
172
|
price: ModelPrice;
|
|
139
173
|
/** Peak-hour window label for time-of-day priced models. */
|
|
140
174
|
peakHours?: string;
|
|
175
|
+
/**
|
|
176
|
+
* 限时促销:生效期内 price 各档位按 factor 打折,过期自动恢复。
|
|
177
|
+
* price 表本身永远保存刊例价,促销只在计价/显示出口处折算,不回写目录。
|
|
178
|
+
*/
|
|
179
|
+
promo?: PricePromo;
|
|
180
|
+
/** 附加计价行(Batch / 显式缓存等展示性参考价),费率表在该模型行下方列出。 */
|
|
181
|
+
extraRows?: readonly PriceRow[];
|
|
141
182
|
/**
|
|
142
183
|
* 单价为估算价:厂商未公布按量官方单价(公测 / 套餐制),表内价格为估算,
|
|
143
184
|
* 展示时标注以免误当正式定价;正式定价公布后移除。
|
|
@@ -193,12 +234,30 @@ export declare function modelOf(key: string): ModelEntry;
|
|
|
193
234
|
* 聚合层的计价闸门(目录外模型不产生费用,避免兜底档误估)。
|
|
194
235
|
*/
|
|
195
236
|
export declare function isPriced(key: string): boolean;
|
|
237
|
+
/**
|
|
238
|
+
* 促销在 nowMs 是否生效:factor 必须落在 (0,1) 区间,截止时刻及之后视为过期;
|
|
239
|
+
* endsAtMs 缺省表示长期活动,在 factor 合法期间持续生效。
|
|
240
|
+
* 导出供测试:纯函数。
|
|
241
|
+
* @param promo - 待判定的促销窗口。
|
|
242
|
+
* @param nowMs - 判定时刻(epoch ms)。
|
|
243
|
+
*/
|
|
244
|
+
export declare function isPromoActive(promo: PricePromo, nowMs: number): boolean;
|
|
245
|
+
/**
|
|
246
|
+
* 把限时促销折入条目单价:生效期内返回 price 主档与 offPeak 全部乘 factor 的
|
|
247
|
+
* 副本,其余字段原样保留;不在促销期(过期/未开始/factor 非法)原样返回。
|
|
248
|
+
* 幂等由调用方保证——计价与费率表显示各自只折一次,勿对已折价副本重复应用。
|
|
249
|
+
* @param entry - 目录条目(price 保持刊例价口径)。
|
|
250
|
+
* @param nowMs - 判定时刻(epoch ms)。
|
|
251
|
+
*/
|
|
252
|
+
export declare function applyPromo(entry: ModelEntry, nowMs: number): ModelEntry;
|
|
196
253
|
/**
|
|
197
254
|
* 费率表渲染的完整目录:内置 + models.dev 补充条目 + 探活模型(无价标记)。
|
|
198
|
-
*
|
|
199
|
-
*
|
|
255
|
+
* 内置条目按 nowMs 折算限时促销(生效中的条目显示折后单价,过期自动恢复
|
|
256
|
+
* 刊例价)。探活模型去重(按归一化 id):内置/补充已有的不再重复;无价的
|
|
257
|
+
* 保留并标记 `uncatalogued`,费率表据此显示「未收录」。
|
|
258
|
+
* @param nowMs - 促销判定时刻;缺省当前时刻。
|
|
200
259
|
*/
|
|
201
|
-
export declare function catalogEntries(): readonly ModelEntry[];
|
|
260
|
+
export declare function catalogEntries(nowMs?: number): readonly ModelEntry[];
|
|
202
261
|
/** Resolve a price-table row by its CSS variable name (theme token or fallback color). */
|
|
203
262
|
export declare function resolveToken(name: string): string;
|
|
204
263
|
/**
|
|
@@ -216,11 +275,12 @@ export declare function resolveToken(name: string): string;
|
|
|
216
275
|
* @param peakShare - share of traffic in the peak band (0..1); defaults to {@link DEFAULT_PEAK_SHARE}.
|
|
217
276
|
* @returns the estimated cost in CNY.
|
|
218
277
|
*/
|
|
219
|
-
export declare function computeCost(entry: ModelEntry, buckets: TokenUsageBuckets, peakShare?: number): number;
|
|
278
|
+
export declare function computeCost(entry: ModelEntry, buckets: TokenUsageBuckets, peakShare?: number, nowMs?: number): number;
|
|
220
279
|
/**
|
|
221
280
|
* 按调用时刻精确判定高峰/空闲档并计价(P0-1:替代固定比例混合)。时刻未知
|
|
222
281
|
* (null/NaN,理论不发生在真实事件流)时回退 {@link DEFAULT_PEAK_SHARE} 混合,
|
|
223
|
-
* 保持旧语义不低估。平档模型(无 offPeak
|
|
282
|
+
* 保持旧语义不低估。平档模型(无 offPeak)两个时段同价。限时促销与峰谷档
|
|
283
|
+
* 同口径:按事件时刻判定该笔流量当时享受的单价。
|
|
224
284
|
* @param entry - the catalog entry whose prices apply.
|
|
225
285
|
* @param buckets - token usage counts.
|
|
226
286
|
* @param timeMs - the call's wall-clock time (epoch ms); null falls back to the peak-share mix.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendandor logos: inlined data URIs fetched from models.dev /logos/{id}.svg.
|
|
3
|
+
* Keyed by the MODEL_CATALOG entry provider display name so the pricing table
|
|
4
|
+
* / model rows can render a real vendor mark before the model name. Vendors not
|
|
5
|
+
* listed here fall back to a brand-color letter badge in the UI.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VENDOR_LOGOS: Readonly<Record<string, string>>;
|
|
8
|
+
export declare function vendorLogoOf(provider: string): string | undefined;
|
|
9
|
+
//# sourceMappingURL=vendor-logos.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenz1117/dsh-ui-usage-billing",
|
|
3
3
|
"description": "Usage billing dashboard for DeepSeek Harness: sidebar cost metrics plus a full dashboard modal, priced from a current multi-provider catalog with real usage aggregated from session logs.",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|