feat: resolve/pick accounts by login_id or label
All checks were successful
技能自动化发布 / release (push) Successful in 11s

This commit is contained in:
2026-07-18 15:45:52 +08:00
parent 8d36e193b4
commit 7bac647673
11 changed files with 387 additions and 30 deletions

View File

@@ -229,6 +229,26 @@ def get_account_by_id(account_id) -> Optional[dict]:
conn.close()
def _append_human_ref_filters(
conditions: list[str],
params: list,
*,
login_id: Optional[str] = None,
label: Optional[str] = None,
table_alias: str = "",
) -> None:
"""Optional case-insensitive exact match on login_id / account_label."""
prefix = f"{table_alias}." if table_alias else ""
lid = (login_id or "").strip()
if lid:
conditions.append(f"LOWER({prefix}login_id) = LOWER(?)")
params.append(lid)
lab = (label or "").strip()
if lab:
conditions.append(f"LOWER({prefix}account_label) = LOWER(?)")
params.append(lab)
def find_accounts(
platform_key: Optional[str] = None,
environment: Optional[str] = None,
@@ -236,6 +256,8 @@ def find_accounts(
role: Optional[str] = None,
status: Optional[str] = None,
provider_code: Optional[str] = None,
login_id: Optional[str] = None,
label: Optional[str] = None,
limit: int = 200,
) -> list[dict]:
"""Find accounts by optional filters. Returns list of dicts."""
@@ -263,6 +285,9 @@ def find_accounts(
if provider_code:
conditions.append("provider_code = ?")
params.append(provider_code)
_append_human_ref_filters(
conditions, params, login_id=login_id, label=label
)
where = ""
if conditions:
@@ -289,6 +314,8 @@ def count_active_accounts(
environment: Optional[str] = None,
tenant_id: Optional[str] = None,
role: Optional[str] = None,
login_id: Optional[str] = None,
label: Optional[str] = None,
) -> int:
"""Count active accounts matching filters (ignores lease occupancy)."""
conn = get_conn()
@@ -306,6 +333,9 @@ def count_active_accounts(
if role:
conditions.append("role = ?")
params.append(role)
_append_human_ref_filters(
conditions, params, login_id=login_id, label=label
)
where = " AND ".join(conditions)
cur.execute(f"SELECT COUNT(*) FROM accounts WHERE {where}", params)
row = cur.fetchone()
@@ -319,6 +349,8 @@ def find_account_ids(
environment: Optional[str] = None,
tenant_id: Optional[str] = None,
role: Optional[str] = None,
login_id: Optional[str] = None,
label: Optional[str] = None,
) -> list[int]:
"""Return account IDs matching filters, excluding those with active leases."""
conn = get_conn()
@@ -336,6 +368,9 @@ def find_account_ids(
if role:
conditions.append("a.role = ?")
params.append(role)
_append_human_ref_filters(
conditions, params, login_id=login_id, label=label, table_alias="a"
)
# Exclude accounts with active non-expired leases
now = _now_unix()