2025-12-26 15:40:24 +08:00
|
|
|
|
package service
|
|
|
|
|
|
|
|
|
|
|
|
import "time"
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
|
BillingTypeBalance int8 = 0 // 钱包余额
|
|
|
|
|
|
BillingTypeSubscription int8 = 1 // 订阅套餐
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
type UsageLog struct {
|
|
|
|
|
|
ID int64
|
|
|
|
|
|
UserID int64
|
2026-01-04 19:27:53 +08:00
|
|
|
|
APIKeyID int64
|
2025-12-26 15:40:24 +08:00
|
|
|
|
AccountID int64
|
|
|
|
|
|
RequestID string
|
|
|
|
|
|
Model string
|
2026-02-03 14:36:29 +08:00
|
|
|
|
// ReasoningEffort is the request's reasoning effort level (OpenAI Responses API),
|
|
|
|
|
|
// e.g. "low" / "medium" / "high" / "xhigh". Nil means not provided / not applicable.
|
|
|
|
|
|
ReasoningEffort *string
|
2025-12-26 15:40:24 +08:00
|
|
|
|
|
|
|
|
|
|
GroupID *int64
|
|
|
|
|
|
SubscriptionID *int64
|
|
|
|
|
|
|
|
|
|
|
|
InputTokens int
|
|
|
|
|
|
OutputTokens int
|
|
|
|
|
|
CacheCreationTokens int
|
|
|
|
|
|
CacheReadTokens int
|
|
|
|
|
|
|
2026-02-14 18:15:35 +08:00
|
|
|
|
CacheCreation5mTokens int `gorm:"column:cache_creation_5m_tokens"`
|
|
|
|
|
|
CacheCreation1hTokens int `gorm:"column:cache_creation_1h_tokens"`
|
2025-12-26 15:40:24 +08:00
|
|
|
|
|
|
|
|
|
|
InputCost float64
|
|
|
|
|
|
OutputCost float64
|
|
|
|
|
|
CacheCreationCost float64
|
|
|
|
|
|
CacheReadCost float64
|
|
|
|
|
|
TotalCost float64
|
|
|
|
|
|
ActualCost float64
|
|
|
|
|
|
RateMultiplier float64
|
2026-01-14 16:12:08 +08:00
|
|
|
|
// AccountRateMultiplier 账号计费倍率快照(nil 表示历史数据,按 1.0 处理)
|
|
|
|
|
|
AccountRateMultiplier *float64
|
2025-12-26 15:40:24 +08:00
|
|
|
|
|
|
|
|
|
|
BillingType int8
|
|
|
|
|
|
Stream bool
|
|
|
|
|
|
DurationMs *int
|
|
|
|
|
|
FirstTokenMs *int
|
2026-01-06 16:23:56 +08:00
|
|
|
|
UserAgent *string
|
2026-01-09 21:59:32 +08:00
|
|
|
|
IPAddress *string
|
2025-12-26 15:40:24 +08:00
|
|
|
|
|
2026-02-17 11:22:08 +03:00
|
|
|
|
// Cache TTL Override 标记(管理员强制替换了缓存 TTL 计费)
|
|
|
|
|
|
CacheTTLOverridden bool
|
|
|
|
|
|
|
2026-01-05 17:07:29 +08:00
|
|
|
|
// 图片生成字段
|
|
|
|
|
|
ImageCount int
|
|
|
|
|
|
ImageSize *string
|
|
|
|
|
|
|
2025-12-26 15:40:24 +08:00
|
|
|
|
CreatedAt time.Time
|
|
|
|
|
|
|
|
|
|
|
|
User *User
|
2026-01-04 19:27:53 +08:00
|
|
|
|
APIKey *APIKey
|
2025-12-26 15:40:24 +08:00
|
|
|
|
Account *Account
|
|
|
|
|
|
Group *Group
|
|
|
|
|
|
Subscription *UserSubscription
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (u *UsageLog) TotalTokens() int {
|
|
|
|
|
|
return u.InputTokens + u.OutputTokens + u.CacheCreationTokens + u.CacheReadTokens
|
|
|
|
|
|
}
|