""" 笑话优化 CLI 工具。 循环检测所有笑话 → AI 质量检测 → AI 润色 → AI 评价分类。 用法: python optimizer/main.py # 处理所有 pending/approved 笑话 python optimizer/main.py --status rejected # 只处理已拒绝的 python optimizer/main.py --limit 10 # 只处理前 10 条 python optimizer/main.py --id 1,2,3 # 指定 ID 处理 python optimizer/main.py --api-url http://localhost:8001 """ import argparse import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from optimizer.optimizer import Optimizer def parse_args(): parser = argparse.ArgumentParser(description="笑话优化工具 — 质量检测 / AI 润色 / 评价分类") parser.add_argument( "--api-url", type=str, default=os.getenv("API_URL", "http://localhost:8001"), help="API 地址(默认: http://localhost:8001)", ) parser.add_argument( "--username", type=str, default=os.getenv("API_USERNAME", "admin"), help="管理员用户名(默认: admin)", ) parser.add_argument( "--password", type=str, default=os.getenv("API_PASSWORD", "admin123"), help="管理员密码(默认: admin123)", ) parser.add_argument( "--status", type=str, default=None, choices=["pending", "approved", "rejected"], help="按状态筛选(默认: 全部)", ) parser.add_argument( "--limit", type=int, default=None, help="最多处理 N 条(默认: 全部)", ) parser.add_argument( "--id", type=str, default=None, dest="ids", help="指定笑话 ID,逗号分隔(如: 1,2,3)", ) return parser.parse_args() def main(): args = parse_args() ids = None if args.ids: ids = [int(x.strip()) for x in args.ids.split(",") if x.strip()] print(f"=" * 50) print(f"笑话优化工具") print(f"API 地址: {args.api_url}") print(f"筛选状态: {args.status or '全部'}") if args.limit: print(f"处理上限: {args.limit} 条") if ids: print(f"指定 ID: {ids}") print(f"=" * 50) optimizer = Optimizer( api_base=args.api_url, username=args.username, password=args.password, ) try: optimizer.run(status=args.status, limit=args.limit, ids=ids) except KeyboardInterrupt: print("\n用户中断") except Exception as e: print(f"\n[!] 运行错误: {e}") sys.exit(1) if __name__ == "__main__": main()