package ai import ( "context" "github.com/jackc/pgx/v5/pgxpool" "github.com/ultisuite/ulti-backend/internal/ai/cost" "github.com/ultisuite/ulti-backend/internal/llm" ) // RecordFeatureUsage meters an LLM call from a non-gateway feature. func RecordFeatureUsage(ctx context.Context, db *pgxpool.Pool, externalUserID, feature, modelID string, provider llm.Provider, usage llm.UsageDetail) { if db == nil || externalUserID == "" { return } q := NewQuotaService(db) scope := ResolveBillingScope(ctx, db, externalUserID, provider, false) _ = q.RecordUsage(ctx, cost.RecordInput{ ExternalUserID: externalUserID, Feature: feature, ModelID: modelID, ProviderID: provider.ID, BillingScope: scope, ProviderKeyFingerprint: cost.KeyFingerprint(provider.ID, provider.APIKey), Usage: cost.UsageDetail{ PromptTokens: usage.PromptTokens, CompletionTokens: usage.CompletionTokens, CachedInputTokens: usage.CachedInputTokens, ReasoningTokens: usage.ReasoningTokens, TotalTokens: usage.TotalTokens, }, }) }