fix(billing): apply margin multiplier to subscription quota consumption
Memind CI / Test, build, and release guards (push) Successful in 5m1s
Memind CI / Test, build, and release guards (push) Successful in 5m1s
Subscription plans now deduct period_tokens_used as upstream tokens × marginMultiplier, aligning package quota burn with wallet cost-mode pricing. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+8
-2
@@ -3,7 +3,12 @@ import fs from 'node:fs';
|
||||
import net from 'node:net';
|
||||
import path from 'node:path';
|
||||
import { Algorithm as Argon2Algorithm, hashRawSync as argon2HashRawSync } from '@node-rs/argon2';
|
||||
import { computeDeltaCostCents, loadBillingConfig, normalizeTokenState } from './billing.mjs';
|
||||
import {
|
||||
computeDeltaCostCents,
|
||||
computeSubscriptionQuotaTokens,
|
||||
loadBillingConfig,
|
||||
normalizeTokenState,
|
||||
} from './billing.mjs';
|
||||
import { buildInsufficientBalancePayload, loadRechargeConfig } from './billing-recharge.mjs';
|
||||
import {
|
||||
buildAgentExtensionPolicy,
|
||||
@@ -1444,6 +1449,7 @@ export function createUserAuth(pool, options = {}) {
|
||||
tokenState.accumulatedOutputTokens - Number(previous?.lastOutputTokens ?? 0),
|
||||
);
|
||||
const deltaTokens = deltaIn + deltaOut;
|
||||
const subscriptionQuotaTokens = computeSubscriptionQuotaTokens(deltaIn, deltaOut, config);
|
||||
|
||||
await conn.query(
|
||||
`INSERT INTO h5_session_billing_state
|
||||
@@ -1467,7 +1473,7 @@ export function createUserAuth(pool, options = {}) {
|
||||
// Subscription quota check: consume tokens from active plan before touching balance.
|
||||
let subscriptionCovered = false;
|
||||
if (costCents > 0 && subscriptionService) {
|
||||
const coverage = await subscriptionService.consumeQuota(userId, deltaTokens, conn);
|
||||
const coverage = await subscriptionService.consumeQuota(userId, subscriptionQuotaTokens, conn);
|
||||
if (coverage.fullyCovers) {
|
||||
costCents = 0;
|
||||
subscriptionCovered = true;
|
||||
|
||||
Reference in New Issue
Block a user