86 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
云顶之弈阵容推荐器 - 主程序
"""
import sys
import argparse
import logging
import os
from src.data_provider_demo import main as data_provider_demo
from src.recommendation_demo import main as recommendation_demo
from src.interface.cli import main as cli_main
from src.scoring.scoring_system import TeamScorer
from src.test_scoring import main as test_scoring
# 配置日志
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger("TFT-Strategist")
def main():
"""主程序入口"""
parser = argparse.ArgumentParser(description="云顶之弈阵容推荐器")
# 添加子命令
subparsers = parser.add_subparsers(dest="command", help="可用命令")
# 数据提供模块演示
data_parser = subparsers.add_parser("data", help="数据提供模块演示")
# 阵容推荐模块演示
recommend_parser = subparsers.add_parser("recommend", help="阵容推荐模块演示")
# 命令行界面
cli_parser = subparsers.add_parser("cli", help="交互式命令行界面")
cli_parser.add_argument("--population", type=int, help="阵容人口数量")
cli_parser.add_argument("--results", type=int, help="推荐结果数量")
cli_parser.add_argument("--level-weight", type=float, help="羁绊等级权重")
cli_parser.add_argument("--count-weight", type=float, help="羁绊数量权重")
cli_parser.add_argument("--cost-weight", type=float, help="棋子费用权重")
# 评分模块测试 (新增)
scoring_parser = subparsers.add_parser("scoring", help="评分模块测试")
scoring_parser.add_argument("--config", type=str, help="指定配置文件路径")
# 解析命令行参数
args = parser.parse_args()
# 根据子命令执行相应功能
if args.command == "data":
logger.info("启动数据提供模块演示")
# 调用数据提供模块演示函数
data_provider_demo()
elif args.command == "recommend":
logger.info("启动阵容推荐模块演示")
# 调用阵容推荐模块演示函数
recommendation_demo()
elif args.command == "cli":
logger.info("启动交互式命令行界面")
# 将命令行参数传递给cli_main函数
return cli_main(
population=args.population,
results=args.results,
level_weight=args.level_weight,
count_weight=args.count_weight,
cost_weight=args.cost_weight
)
elif args.command == "scoring":
logger.info("启动评分模块测试")
if args.config:
# 如果指定了配置文件路径,使用该路径进行测试
test_scoring(config_path=args.config)
else:
# 否则使用默认配置文件
test_scoring()
else:
parser.print_help()
if __name__ == "__main__":
sys.exit(main())