from __future__ import annotations import sys import argparse import ctypes import os # 添加当前目录到 Python 路径 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # Windows DPI 感知设置 - 必须在导入 tkinter 之前设置 if sys.platform == 'win32': try: # 设置 DPI 感知模式(支持 Windows 8.1 及以上) ctypes.windll.shcore.SetProcessDpiAwareness(1) # 系统 DPI 感知 except Exception: try: # 兼容旧版本 Windows ctypes.windll.user32.SetProcessDPIAware() except Exception: pass from config_loader import get_config from step1 import Step1FeastCoding from step2 import Step2Converter def run_business_flow(project_name: str | None = None) -> int: """运行完整的业务流程(Step1 + Step2)""" config = get_config() chrome_path = config.chrome_path step1_config = config.step1_config username = step1_config.get("username", "wangpeng") password = step1_config.get("password", "Feastcoding@123") try: # Step 1 step1 = Step1FeastCoding(chrome_path, username, password) if project_name: step1.project_name = project_name step1.run() # Step 2 step2 = Step2Converter() step2.run() print("[INFO] 完整流程执行成功!") return 0 except Exception as e: print(f"[ERROR] 流程执行失败: {e}") return 1 def main() -> int: # 解析命令行参数 parser = argparse.ArgumentParser(description="自动化工具") parser.add_argument("--cli", action="store_true", help="使用命令行模式(默认启动 GUI)") parser.add_argument("--project", type=str, help="设置项目名称") args = parser.parse_args() # 如果没有指定 --cli 参数,默认启动 GUI if not args.cli: from gui import main as gui_main gui_main() return 0 # 否则运行命令行模式 return run_business_flow(project_name=args.project) if __name__ == "__main__": raise SystemExit(main())