fix(discord-bridge): plafonul de cost e optional (COST_CAP_USD_DAY=off)
Costul raportat de CLI e pretul echivalent la API; pe abonament nu se factureaza, deci plafonul zilnic oprea puntea fara motiv (5.71 / 5.00 USD). - limits.parse_cap(): `off`/`none`/`nelimitat`/`0`/gol/gunoi => fara plafon - stopped()/record_cost() nu mai opresc si nu mai alerteaza cand e dezactivat - implicit devine `off`; /status arata „(fara plafon)" - dashboard: /api/status si doctor nu mai crapa pe valoare ne-numerica - README + ops/env.example explica de ce ramane off pe abonament Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
This commit is contained in:
@@ -41,6 +41,7 @@ for _p in (str(_BRIDGE), str(_DASH)):
|
||||
sys.path.insert(0, _p)
|
||||
|
||||
import config # noqa: E402
|
||||
from limits import parse_cap # noqa: E402
|
||||
|
||||
# ── constante ───────────────────────────────────────────────────────────
|
||||
SERVICE = "claude-discord.service"
|
||||
@@ -288,12 +289,13 @@ def doctor() -> list[dict]:
|
||||
"detail": f'{len(st.get("threads") or {})} fire' if st else "ilizibil sau gol",
|
||||
})
|
||||
|
||||
cap = float(config.get("COST_CAP_USD_DAY") or 0)
|
||||
cap = parse_cap(config.get("COST_CAP_USD_DAY"), 0.0)
|
||||
spent = float((st.get("cost") or {}).get("usd") or 0)
|
||||
checks.append({
|
||||
"name": "Plafon de cost pe zi",
|
||||
"pass": cap <= 0 or spent < cap,
|
||||
"detail": f"{spent:.2f} / {cap:.2f} USD",
|
||||
"detail": f"{spent:.2f} / {cap:.2f} USD" if cap > 0
|
||||
else f"{spent:.2f} USD cheltuiti, fara plafon (abonament)",
|
||||
})
|
||||
|
||||
try:
|
||||
@@ -500,7 +502,7 @@ class Handler(SimpleHTTPRequestHandler):
|
||||
"dashboard": unit_info(SELF_SERVICE),
|
||||
"threads": threads_view(state),
|
||||
"cost": state.get("cost") or {},
|
||||
"cost_cap": float(config.get("COST_CAP_USD_DAY") or 0),
|
||||
"cost_cap": parse_cap(config.get("COST_CAP_USD_DAY"), 0.0),
|
||||
"pending_approvals": len(pending_approvals()),
|
||||
"auth": not auth_disabled(),
|
||||
"user": tailnet_user(self.headers),
|
||||
|
||||
Reference in New Issue
Block a user