""" autoTAPD 主程序 Debug阶段自动开单工具 - 第一阶段1.1版本 """ import sys import argparse from pathlib import Path # 添加项目根目录到Python路径 project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from src.config import ConfigManager def parse_arguments(): """ 解析命令行参数 Returns: argparse.Namespace: 解析后的参数对象 """ parser = argparse.ArgumentParser( description='autoTAPD - Debug阶段自动开单工具', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" 示例用法: python main.py --access-token YOUR_ACCESS_TOKEN python main.py -t YOUR_ACCESS_TOKEN --config /path/to/config.ini """ ) # 必需参数 parser.add_argument( '-t', '--access-token', required=True, help='企业微信access_token(必填)' ) # 可选参数 parser.add_argument( '-c', '--config', default=None, help='配置文件路径(默认: config/config.ini)' ) parser.add_argument( '-v', '--verbose', action='store_true', help='显示详细输出信息' ) return parser.parse_args() def validate_access_token(access_token): """ 验证access_token是否有效 Args: access_token: 待验证的token Raises: ValueError: token无效时抛出 """ if not access_token or not access_token.strip(): raise ValueError("access_token不能为空") # 基本格式检查(企业微信的access_token通常较长) if len(access_token.strip()) < 20: raise ValueError("access_token格式可能不正确(长度过短)") def main(): """主函数""" print("=" * 60) print("autoTAPD - Debug阶段自动开单工具") print("版本: 0.1.0 (第一阶段1.1)") print("=" * 60) print() try: # 1. 解析命令行参数 print("[1/3] 解析命令行参数...") args = parse_arguments() if args.verbose: print(f" - access_token: {args.access_token[:10]}...(已隐藏)") print(f" - config: {args.config or '使用默认路径'}") print(f" - verbose: {args.verbose}") # 2. 验证access_token print("[2/3] 验证access_token...") validate_access_token(args.access_token) print(" ✓ access_token格式验证通过") # 3. 加载配置文件 print("[3/3] 加载配置文件...") config_manager = ConfigManager(config_path=args.config) # 获取并显示配置信息 all_config = config_manager.get_all_config() print(" ✓ 配置文件加载成功") print() # 显示配置摘要 print("=" * 60) print("配置摘要:") print("-" * 60) print(f"TAPD workspace_id: {all_config['tapd']['workspace_id']}") print(f"SmartSheet docid: {all_config['smartsheet']['docid'][:20]}...") print(f"Access Token: {args.access_token[:10]}...(已隐藏)") print("=" * 60) print() print("✓ 所有初始化步骤完成!") print() print("提示: 第一阶段1.1已完成,后续将实现智能表格数据读取功能。") return 0 except FileNotFoundError as e: print(f"\n✗ 错误: {e}") print("\n解决方案:") print(" 1. 检查配置文件是否存在") print(" 2. 使用 --config 参数指定正确的配置文件路径") return 1 except ValueError as e: print(f"\n✗ 错误: {e}") print("\n解决方案:") print(" 1. 检查配置文件中的配置项是否完整") print(" 2. 确保所有必填项都已填写") print(" 3. 检查access_token是否正确") return 1 except Exception as e: print(f"\n✗ 未预期的错误: {e}") print(f"错误类型: {type(e).__name__}") if args.verbose: import traceback print("\n详细错误信息:") traceback.print_exc() return 1 if __name__ == "__main__": sys.exit(main())