feat: 排除内部员工补偿账号

This commit is contained in:
Codex
2026-07-15 06:22:56 +02:00
parent 7b43da1ab8
commit fc4befc583
6 changed files with 60 additions and 9 deletions
@@ -69,6 +69,15 @@ def credits_active_usage(token, since, active_start, active_end, active_start_ut
}
page += 1
def credits_excluded_selector(user, payload):
user_id = str(user.get("id")) if user.get("id") is not None else ""
email = str(user.get("email") or "").strip().lower()
for selector in payload.get("excludedUsers") or []:
normalized = str(selector).strip().lower()
if normalized == user_id or normalized == email:
return str(selector)
return None
def credits_selected_users(token, payload):
users = credits_all_users(token)
users_by_id = {str(item.get("id")): item for item in users if item.get("id") is not None}
@@ -85,8 +94,14 @@ def credits_selected_users(token, payload):
excluded = []
for user_id, request_count in requests.items():
user = users_by_id.get(user_id)
excluded_selector = credits_excluded_selector(user, payload) if isinstance(user, dict) else None
if not isinstance(user, dict):
excluded.append({"userId": user_id, "reason": "user-not-found"})
elif excluded_selector is not None:
excluded.append({
"userId": user.get("id"), "email": user.get("email"), "requestCount": request_count,
"reason": "yaml-excluded-user", "matchedSelector": excluded_selector,
})
elif user.get("role") == "admin":
excluded.append({"userId": user.get("id"), "email": user.get("email"), "reason": "admin-excluded"})
elif user.get("status") != "active" or user.get("deleted_at") is not None:
@@ -95,6 +110,7 @@ def credits_selected_users(token, payload):
selected.append((user, request_count))
return selected, excluded, selection
selected = []
excluded = []
seen = set()
for selector in payload.get("users") or []:
user = users_by_id.get(str(selector)) or users_by_email.get(str(selector).strip().lower())
@@ -104,8 +120,15 @@ def credits_selected_users(token, payload):
if user_id in seen:
raise RuntimeError("duplicate user selector: " + str(selector))
seen.add(user_id)
selected.append((user, None))
return selected, [], {"kind": "exact-users", "selectors": payload.get("users") or []}
excluded_selector = credits_excluded_selector(user, payload)
if excluded_selector is not None:
excluded.append({
"userId": user.get("id"), "email": user.get("email"), "requestCount": None,
"reason": "yaml-excluded-user", "matchedSelector": excluded_selector,
})
else:
selected.append((user, None))
return selected, excluded, {"kind": "exact-users", "selectors": payload.get("users") or []}
def run_credits_grant():
payload = json.loads(base64.b64decode(PAYLOAD_B64).decode("utf-8")) if PAYLOAD_B64 else {}