refactor: task_logs, task_service, run CLI; remove platform_playwright

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-10 10:00:37 +08:00
parent 4730cd527d
commit f3f59278b4
14 changed files with 240 additions and 192 deletions

View File

@@ -6,11 +6,11 @@ import argparse
import sys
from typing import List, Optional
from service.publish_service import (
from service.task_service import (
cmd_health,
cmd_log_get,
cmd_logs,
cmd_publish,
cmd_run,
cmd_version,
)
from util.argparse_zh import ZhArgumentParser
@@ -25,34 +25,34 @@ def _cli_str_or_none(raw: Optional[str]) -> Optional[str]:
return v or None
def _handle_publish(args: argparse.Namespace) -> int:
tail = [str(x).strip() for x in (args.publish_tail or []) if str(x).strip()]
def _handle_run(args: argparse.Namespace) -> int:
tail = [str(x).strip() for x in (args.run_tail or []) if str(x).strip()]
if len(tail) > 2:
print("❌ 参数过多。")
print("用法python main.py publish [账号id [文章id]] | publish [-a 账号id] [-i 文章id]")
print("用法python main.py run [target [input_id]] | run [-t target] [-i input_id]")
return 1
t_acc: Optional[str] = None
t_art: Optional[str] = None
t_target: Optional[str] = None
t_input: Optional[str] = None
if len(tail) == 2:
t_acc, t_art = tail[0], tail[1]
t_target, t_input = tail[0], tail[1]
elif len(tail) == 1:
if tail[0].isdigit():
t_art = tail[0]
t_input = tail[0]
else:
t_acc = tail[0]
t_target = tail[0]
pick_a = _cli_str_or_none(getattr(args, "account_id", None))
pick_i = _cli_str_or_none(getattr(args, "article_id", None))
acc = pick_a or t_acc
art = pick_i or t_art
return cmd_publish(account_id=acc, article_id=art)
pick_t = _cli_str_or_none(getattr(args, "target", None))
pick_i = _cli_str_or_none(getattr(args, "input_id", None))
target = pick_t or t_target
input_id = pick_i or t_input
return cmd_run(target=target, input_id=input_id)
def _print_full_usage() -> None:
print("模板技能main.py可用命令")
print(" python main.py publish [账号id [文章id]] [-a 账号] [-i 文章id]")
print(" python main.py logs [--limit N] [--status s] [--account-id a]")
print("通用业务技能模板main.py可用命令")
print(" python main.py run [target [input_id]] [-t target] [-i input_id]")
print(" python main.py logs [--limit N] [--status s] [--task-type t] [--target-id tid]")
print(" python main.py log-get <log_id>")
print(" python main.py health")
print(" python main.py version")
@@ -61,24 +61,27 @@ def _print_full_usage() -> None:
def build_parser() -> ZhArgumentParser:
p = ZhArgumentParser(
prog="main.py",
description="模板技能:发布命令骨架、日志查询、健康检查、版本输出。",
description="通用业务技能模板:任务执行命令骨架、日志查询、健康检查、版本输出。",
formatter_class=argparse.RawDescriptionHelpFormatter,
)
sub = p.add_subparsers(dest="cmd", required=True, parser_class=ZhArgumentParser)
sp = sub.add_parser("publish", help="发布型技能命令骨架")
sp.add_argument("--account-id", "-a", default=None, metavar="账号id")
sp.add_argument("--article-id", "-i", default=None, metavar="文章id")
sp.add_argument("publish_tail", nargs="*", metavar="位置参数")
sp.set_defaults(handler=_handle_publish)
sp = sub.add_parser("run", help="任务执行命令骨架")
sp.add_argument("--target", "-t", default=None, metavar="目标")
sp.add_argument("--input-id", "-i", default=None, metavar="输入id", dest="input_id")
sp.add_argument("run_tail", nargs="*", metavar="位置参数")
sp.set_defaults(handler=_handle_run)
sp = sub.add_parser("logs", help="查看发布记录")
sp = sub.add_parser("logs", help="查看任务日志")
sp.add_argument("--limit", type=int, default=10)
sp.add_argument("--status", default=None)
sp.add_argument("--account-id", default=None)
sp.set_defaults(handler=lambda a: cmd_logs(limit=a.limit, status=a.status, account_id=a.account_id))
sp.add_argument("--task-type", default=None, dest="task_type")
sp.add_argument("--target-id", default=None, dest="target_id")
sp.set_defaults(handler=lambda a: cmd_logs(
limit=a.limit, status=a.status, task_type=a.task_type, target_id=a.target_id
))
sp = sub.add_parser("log-get", help="按 log_id 查看单条发布记录(JSON)")
sp = sub.add_parser("log-get", help="按 log_id 查看单条任务日志(JSON)")
sp.add_argument("log_id")
sp.set_defaults(handler=lambda a: cmd_log_get(a.log_id))
@@ -97,8 +100,8 @@ def main(argv: Optional[List[str]] = None) -> int:
if not argv:
_print_full_usage()
return 1
if len(argv) == 2 and argv[0] not in {"publish", "logs", "log-get", "health", "version", "-h", "--help"}:
return cmd_publish(account_id=argv[0], article_id=argv[1])
if len(argv) == 2 and argv[0] not in {"run", "logs", "log-get", "health", "version", "-h", "--help"}:
return cmd_run(target=argv[0], input_id=argv[1])
parser = build_parser()
args = parser.parse_args(argv)
return int(args.handler(args))