chore: auto release commit (2026-06-19 11:19:10)
All checks were successful
技能自动化发布 / release (push) Successful in 5s
All checks were successful
技能自动化发布 / release (push) Successful in 5s
This commit is contained in:
128
scripts/service/legacy_commands.py
Normal file
128
scripts/service/legacy_commands.py
Normal file
@@ -0,0 +1,128 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Legacy delete and human-readable list CLI commands."""
|
||||
from db.accounts_repo import get_account_by_id, find_accounts
|
||||
from db.connection import get_conn, init_db
|
||||
from service._svc_common import (
|
||||
_remove_profile_dir,
|
||||
_resolve_or_fail,
|
||||
_say,
|
||||
_say_err,
|
||||
)
|
||||
from util.logging_config import get_skill_logger
|
||||
from util.platforms import get_platform_spec
|
||||
from util.runtime_paths import _runtime_paths_debug_text
|
||||
|
||||
|
||||
def cmd_delete_by_id(account_id) -> None:
|
||||
"""delete id <id> — legacy"""
|
||||
log = get_skill_logger()
|
||||
log.info("delete_by_id id=%r", account_id)
|
||||
acc = get_account_by_id(account_id)
|
||||
if not acc:
|
||||
_say(f"ERROR:ACCOUNT_NOT_FOUND 账号 id={account_id} 不存在。")
|
||||
_say_err(_runtime_paths_debug_text())
|
||||
return
|
||||
profile_dir = acc.get("profile_dir", "")
|
||||
conn = get_conn()
|
||||
try:
|
||||
cur = conn.cursor()
|
||||
cur.execute("DELETE FROM accounts WHERE id = ?", (int(account_id),))
|
||||
cur.execute("DELETE FROM credentials WHERE account_id = ?", (int(account_id),))
|
||||
conn.commit()
|
||||
finally:
|
||||
conn.close()
|
||||
_remove_profile_dir(profile_dir)
|
||||
log.info("delete_by_id_done id=%s", account_id)
|
||||
_say(f"✅ 已删除账号 ID {account_id}。")
|
||||
|
||||
|
||||
def cmd_delete_by_platform(platform_input: str) -> None:
|
||||
"""delete platform <platform> — legacy"""
|
||||
log = get_skill_logger()
|
||||
log.info("delete_by_platform platform=%r", platform_input)
|
||||
key = _resolve_or_fail(platform_input)
|
||||
if not key:
|
||||
return
|
||||
conn = get_conn()
|
||||
try:
|
||||
cur = conn.cursor()
|
||||
cur.execute("SELECT id, profile_dir FROM accounts WHERE platform_key = ?", (key,))
|
||||
rows = cur.fetchall()
|
||||
if not rows:
|
||||
_say("ERROR:NO_ACCOUNTS_FOUND 该平台下没有账号记录。")
|
||||
return
|
||||
for rid, pdir in rows:
|
||||
_remove_profile_dir(pdir)
|
||||
cur.execute("DELETE FROM accounts WHERE platform_key = ?", (key,))
|
||||
cur.execute(
|
||||
"DELETE FROM credentials WHERE platform_key = ? AND account_id IS NOT NULL",
|
||||
(key,),
|
||||
)
|
||||
conn.commit()
|
||||
log.info("delete_by_platform_done platform=%s count=%s", key, len(rows))
|
||||
display = get_platform_spec(key, conn=conn).get("display_name", key)
|
||||
_say(f"✅ 已删除 {display} 下共 {len(rows)} 条账号。")
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
def cmd_delete_by_platform_phone(platform_input: str, phone: str) -> None:
|
||||
"""Legacy: delete by platform+phone — now uses login_id matching"""
|
||||
log = get_skill_logger()
|
||||
log.info("delete_by_platform_phone platform=%r", platform_input)
|
||||
key = _resolve_or_fail(platform_input)
|
||||
if not key:
|
||||
return
|
||||
phone_norm = "".join(c for c in phone if c.isdigit())
|
||||
conn = get_conn()
|
||||
try:
|
||||
cur = conn.cursor()
|
||||
cur.execute(
|
||||
"SELECT id, profile_dir FROM accounts WHERE platform_key = ? AND login_id = ?",
|
||||
(key, phone_norm),
|
||||
)
|
||||
row = cur.fetchone()
|
||||
if not row:
|
||||
_say("ERROR:ACCOUNT_NOT_FOUND 该平台下无此手机号。")
|
||||
return
|
||||
rid, pdir = row
|
||||
_remove_profile_dir(pdir)
|
||||
cur.execute("DELETE FROM accounts WHERE id = ?", (rid,))
|
||||
cur.execute("DELETE FROM credentials WHERE account_id = ?", (rid,))
|
||||
conn.commit()
|
||||
log.info("delete_by_platform_phone_done id=%s", rid)
|
||||
_say(f"✅ 已删除账号 ID {rid}。")
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
def cmd_list(platform="all", limit: int = 10) -> None:
|
||||
"""Legacy: human-readable list output."""
|
||||
log = get_skill_logger()
|
||||
log.info("list filter=%r", platform)
|
||||
init_db()
|
||||
accounts = find_accounts(
|
||||
platform_key=None if (not platform or platform in ("all", "全部")) else platform,
|
||||
limit=limit,
|
||||
)
|
||||
if not accounts:
|
||||
_say("ERROR:NO_ACCOUNTS_FOUND")
|
||||
_say_err(_runtime_paths_debug_text())
|
||||
return
|
||||
log.info("list_ok rows=%s", len(accounts))
|
||||
for i, acc in enumerate(accounts):
|
||||
_say(f"id:{acc['id']}")
|
||||
_say(f"label:{acc['account_label']}")
|
||||
_say(f"platform:{acc['platform_key']}")
|
||||
_say(f"login_id:{acc['login_id']}")
|
||||
_say(f"env:{acc['environment']} role:{acc['role']}")
|
||||
_say(f"status:{acc['status']} session:{acc['session_status']}")
|
||||
_say(f"profile_dir:{acc['profile_dir']}")
|
||||
_say(f"url:{acc['url']}")
|
||||
_say(f"created_at:{acc['created_at']}")
|
||||
_say(f"updated_at:{acc['updated_at']}")
|
||||
if acc.get("last_error_code"):
|
||||
_say(f"last_error:{acc['last_error_code']} {acc.get('last_error_message', '')}")
|
||||
if i < len(accounts) - 1:
|
||||
_say("_______________________________________")
|
||||
_say("")
|
||||
Reference in New Issue
Block a user