Fix duplicate session billing and align pricing with DeepSeek ×3.

Serialize billSessionUsage with row locks, expose rates on recharge, add compensation script and admin usage views.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
John
2026-06-16 03:10:05 -07:00
parent befeedfd37
commit 03690ee354
14 changed files with 472 additions and 52 deletions
+7
View File
@@ -3,6 +3,7 @@ import { createPortal } from 'react-dom';
import QRCode from 'qrcode';
import { createRechargeOrder, getBillingConfig, getRechargeOrder } from '../api/client';
import type { BillingConfig, RechargeOrder } from '../types';
import { formatBillingRates } from '../utils/billing';
import { invokeWechatJsapiPay, isWeChatBrowser } from '../utils/wechatPay';
function formatYuan(cents: number) {
@@ -215,6 +216,12 @@ export function RechargeModal({
<p className="recharge-muted">
{formatYuan(config?.minRechargeCents ?? 500)} AI
</p>
{config && (
<p className="recharge-rates">
{formatBillingRates(config.inputCentsPer1k, config.outputCentsPer1k)}
Agent
</p>
)}
<div className="recharge-tier-grid">
{tiers.map((tier) => (
<button