| 123456789101112131415161718192021222324 |
- package billingexpr
- // ComputeTieredQuota runs the Expr from a frozen BillingSnapshot against
- // actual token counts and returns the settlement result.
- func ComputeTieredQuota(snap *BillingSnapshot, params TokenParams) (TieredResult, error) {
- return ComputeTieredQuotaWithRequest(snap, params, RequestInput{})
- }
- func ComputeTieredQuotaWithRequest(snap *BillingSnapshot, params TokenParams, request RequestInput) (TieredResult, error) {
- cost, trace, err := RunExprByHashWithRequest(snap.ExprString, snap.ExprHash, params, request)
- if err != nil {
- return TieredResult{}, err
- }
- afterGroup := QuotaRound(cost * snap.GroupRatio)
- crossed := trace.MatchedTier != snap.EstimatedTier
- return TieredResult{
- ActualQuotaBeforeGroup: cost,
- ActualQuotaAfterGroup: afterGroup,
- MatchedTier: trace.MatchedTier,
- CrossedTier: crossed,
- }, nil
- }
|