将散落在多个文件中的预扣费/结算/退款逻辑抽象为统一的 BillingSession 生命周期管理: - 新增 BillingSettler 接口 (relay/common/billing.go) 避免循环引用 - 新增 FundingSource 接口 + WalletFunding / SubscriptionFunding 实现 (service/funding_source.go) - 新增 BillingSession 封装预扣/结算/退款原子操作 (service/billing_session.go) - 新增 SettleBilling 统一结算辅助函数,替换各 handler 中的 quotaDelta 模式 - 重写 PreConsumeBilling 为 BillingSession 工厂入口 - controller/relay.go 退款守卫改用 BillingSession.Refund() 修复的 Bug: - 令牌额度泄漏:PreConsumeTokenQuota 成功但 DecreaseUserQuota 失败时未回滚 - 订阅退款遗漏:FinalPreConsumedQuota=0 但 SubscriptionPreConsumed>0 时跳过退款 - 订阅多扣费:subConsume 强制为 1 但 FinalPreConsumedQuota 不同步 - 退款路径不统一:钱包/订阅退款逻辑现统一由 FundingSource.Refund 分派
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| billing.go | Loading commit data... | |
| channel-billing.go | Loading commit data... | |
| channel-test.go | Loading commit data... | |
| channel.go | Loading commit data... | |
| channel_affinity_cache.go | Loading commit data... | |
| checkin.go | Loading commit data... | |
| codex_oauth.go | Loading commit data... | |
| codex_usage.go | Loading commit data... | |
| console_migrate.go | Loading commit data... | |
| custom_oauth.go | Loading commit data... | |
| deployment.go | Loading commit data... | |
| group.go | Loading commit data... | |
| image.go | Loading commit data... | |
| log.go | Loading commit data... | |
| midjourney.go | Loading commit data... | |
| misc.go | Loading commit data... | |
| missing_models.go | Loading commit data... | |
| model.go | Loading commit data... | |
| model_meta.go | Loading commit data... | |
| model_sync.go | Loading commit data... | |
| oauth.go | Loading commit data... | |
| option.go | Loading commit data... | |
| passkey.go | Loading commit data... | |
| performance.go | Loading commit data... | |
| playground.go | Loading commit data... | |
| prefill_group.go | Loading commit data... | |
| pricing.go | Loading commit data... | |
| ratio_config.go | Loading commit data... | |
| ratio_sync.go | Loading commit data... | |
| redemption.go | Loading commit data... | |
| relay.go | Loading commit data... | |
| secure_verification.go | Loading commit data... | |
| setup.go | Loading commit data... | |
| subscription.go | Loading commit data... | |
| subscription_payment_creem.go | Loading commit data... | |
| subscription_payment_epay.go | Loading commit data... | |
| subscription_payment_stripe.go | Loading commit data... | |
| swag_video.go | Loading commit data... | |
| task.go | Loading commit data... | |
| task_video.go | Loading commit data... | |
| telegram.go | Loading commit data... | |
| token.go | Loading commit data... | |
| topup.go | Loading commit data... | |
| topup_creem.go | Loading commit data... | |
| topup_stripe.go | Loading commit data... | |
| twofa.go | Loading commit data... | |
| uptime_kuma.go | Loading commit data... | |
| usedata.go | Loading commit data... | |
| user.go | Loading commit data... | |
| vendor_meta.go | Loading commit data... | |
| video_proxy.go | Loading commit data... | |
| video_proxy_gemini.go | Loading commit data... | |
| wechat.go | Loading commit data... |