2025-12-15 18:52:51 +08:00

150 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
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())