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,
		},
	})
}
