Expose credits_remaining (purchased minus cycle overspend) in broker usage + admin overview
This commit is contained in:
1 parent
052a109040
commit
38005127cb
1 file changed
+10
-1
+10
-1
@@ -589,11 +589,15 @@ def compute_max_budget(allowance: float, credit_balance: float, team_spend: floa
|
|||||||
allowance. The total spendable cap is simply `allowance + credit_balance`
|
allowance. The total spendable cap is simply `allowance + credit_balance`
|
||||||
— credits never shrink the allowance; they extend it.
|
— credits never shrink the allowance; they extend it.
|
||||||
|
|
||||||
|
`credit_balance` is the TOTAL purchased (the ledger's lifetime sum); the
|
||||||
|
amount still available this cycle is `credit_balance - credits_used`.
|
||||||
|
|
||||||
`team_spend` is the member's spend so far this cycle (from LiteLLM). It is
|
`team_spend` is the member's spend so far this cycle (from LiteLLM). It is
|
||||||
used only to split the spend between allowance vs credits for display, NOT
|
used only to split the spend between allowance vs credits for display, NOT
|
||||||
to reduce the cap.
|
to reduce the cap.
|
||||||
|
|
||||||
Returns {"max_budget", "allowance_used", "credits_used"} for dashboards.
|
Returns {"max_budget", "allowance_used", "credits_used", "credits_remaining"}
|
||||||
|
for dashboards.
|
||||||
"""
|
"""
|
||||||
max_budget = allowance + credit_balance
|
max_budget = allowance + credit_balance
|
||||||
if team_spend is None:
|
if team_spend is None:
|
||||||
@@ -601,6 +605,7 @@ def compute_max_budget(allowance: float, credit_balance: float, team_spend: floa
|
|||||||
"max_budget": max_budget,
|
"max_budget": max_budget,
|
||||||
"allowance_used": 0.0,
|
"allowance_used": 0.0,
|
||||||
"credits_used": 0.0,
|
"credits_used": 0.0,
|
||||||
|
"credits_remaining": credit_balance,
|
||||||
}
|
}
|
||||||
allowance_used = min(max(team_spend, 0.0), allowance)
|
allowance_used = min(max(team_spend, 0.0), allowance)
|
||||||
credits_used = max(0.0, team_spend - allowance)
|
credits_used = max(0.0, team_spend - allowance)
|
||||||
@@ -608,6 +613,7 @@ def compute_max_budget(allowance: float, credit_balance: float, team_spend: floa
|
|||||||
"max_budget": max_budget,
|
"max_budget": max_budget,
|
||||||
"allowance_used": allowance_used,
|
"allowance_used": allowance_used,
|
||||||
"credits_used": credits_used,
|
"credits_used": credits_used,
|
||||||
|
"credits_remaining": max(0.0, credit_balance - credits_used),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2170,6 +2176,7 @@ async def admin_overview(request: Request):
|
|||||||
"manual": email.lower() in MANUAL_MEMBERS,
|
"manual": email.lower() in MANUAL_MEMBERS,
|
||||||
"balance": float(balance) if balance is not None else MEMBER_BUDGET,
|
"balance": float(balance) if balance is not None else MEMBER_BUDGET,
|
||||||
"credit_balance": credits,
|
"credit_balance": credits,
|
||||||
|
"credits_remaining": max(0.0, credits - eff["credits_used"]),
|
||||||
"allowance_used": eff["allowance_used"],
|
"allowance_used": eff["allowance_used"],
|
||||||
"credits_used": eff["credits_used"],
|
"credits_used": eff["credits_used"],
|
||||||
"spend": spend,
|
"spend": spend,
|
||||||
@@ -2469,6 +2476,7 @@ async def broker_get_usage(email: str, days: int = 0) -> dict:
|
|||||||
"balance": balance,
|
"balance": balance,
|
||||||
"allowance": allowance,
|
"allowance": allowance,
|
||||||
"credits": credits,
|
"credits": credits,
|
||||||
|
"credits_remaining": max(0.0, credits - max(0.0, spend - allowance)),
|
||||||
"spend": spend,
|
"spend": spend,
|
||||||
"all_time_spend": round(all_time_spend, 2),
|
"all_time_spend": round(all_time_spend, 2),
|
||||||
"remaining": max(balance - spend, 0.0),
|
"remaining": max(balance - spend, 0.0),
|
||||||
@@ -2541,6 +2549,7 @@ async def broker_get_usage(email: str, days: int = 0) -> dict:
|
|||||||
"balance": balance,
|
"balance": balance,
|
||||||
"allowance": allowance,
|
"allowance": allowance,
|
||||||
"credits": credits,
|
"credits": credits,
|
||||||
|
"credits_remaining": max(0.0, credits - max(0.0, spend - allowance)),
|
||||||
"spend": spend,
|
"spend": spend,
|
||||||
"all_time_spend": all_time_spend,
|
"all_time_spend": all_time_spend,
|
||||||
"remaining": max(balance - spend, 0.0),
|
"remaining": max(balance - spend, 0.0),
|
||||||
|
|||||||
Reference in new issue
Block a user