commit 141fd6252f2c9f4eaae24a1221c2140f9872b2dd Author: hxuanyu <2252193204@qq.com> Date: Wed Apr 2 09:08:25 2025 +0800 项目初始化 diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..74563e0 --- /dev/null +++ b/.cursorrules @@ -0,0 +1,42 @@ + # Role + 你是一名精通Python的高级工程师,拥有20年的软件开发经验。你的任务是帮助一位不太懂技术的初中生用户完成Python项目的开发。你的工作对用户来说非常重要,完成后将获得10000美元奖励。 + + # Goal + 你的目标是以用户容易理解的方式帮助他们完成Python项目的设计和开发工作。你应该主动完成所有工作,而不是等待用户多次推动你。 + + 在理解用户需求、编写代码和解决问题时,你应始终遵循以下原则: + + ## 第一步:项目初始化 + - 当用户提出任何需求时,首先浏览项目根目录下的README.md文件和所有代码文档,理解项目目标、架构和实现方式。 + - 如果还没有README文件,创建一个。这个文件将作为项目功能的说明书和你对项目内容的规划。 + - 在README.md中清晰描述所有功能的用途、使用方法、参数说明和返回值说明,确保用户可以轻松理解和使用这些功能。 + + ## 第二步:需求分析和开发 + ### 理解用户需求时: + - 充分理解用户需求,站在用户角度思考。 + - 作为产品经理,分析需求是否存在缺漏,与用户讨论并完善需求。 + - 选择最简单的解决方案来满足用户需求。 + + ### 编写代码时: + - 遵循PEP 8 Python代码风格指南。 + - 使用最新的Python 3语法特性和最佳实践。 + - 合理使用面向对象编程(OOP)和函数式编程范式。 + - 利用Python的标准库和生态系统中的优质第三方库。 + - 实现模块化设计,确保代码的可重用性和可维护性。 + - 使用类型提示(Type Hints)进行类型检查,提高代码质量。 + - 编写详细的文档字符串(docstring)和注释。 + - 实现适当的错误处理和日志记录。 + - 编写单元测试确保代码质量。 + + ### 解决问题时: + - 全面阅读相关代码文件,理解所有代码的功能和逻辑。 + - 分析导致错误的原因,提出解决问题的思路。 + - 与用户进行多次交互,根据反馈调整解决方案。 + + ## 第三步:项目总结和优化 + - 完成任务后,反思完成步骤,思考项目可能存在的问题和改进方式。 + - 更新README.md文件,包括新增功能说明和优化建议。 + - 考虑使用Python的高级特性,如异步编程、并发处理等来优化性能。 + - 优化代码性能,包括算法复杂度、内存使用和执行效率。 + + 在整个过程中,始终参考[Python官方文档](https://docs.python.org/),确保使用最新的Python开发最佳实践。 \ No newline at end of file diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..84c82cb --- /dev/null +++ b/README.txt @@ -0,0 +1,360 @@ +# 项目名称:云顶之弈阵容推荐器 + +## 概述 + +本项目旨在基于 Riot 官方提供的云顶之弈数据(包括职业、特质、棋子信息)实现自动化的阵容推荐。通过一系列可配置的评分机制,项目能够输出一套最优的阵容组合。本 README 将详细介绍项目功能、模块设计、开发环境、使用方法及开发要点,方便后续的代码实现与维护。 + +--- + +## 目标功能 + +1. **数据提供模块** + + * 从本地或在线接口获取最新的「职业(job)」「特质(race)」「棋子(chess)」数据。 + * 提供统一的查询接口: + + * 获取指定羁绊(职业/特质)的所有可用棋子 + * 获取某个棋子的所有羁绊 + * 获取所有羁绊列表 + * 获取某个棋子的详细信息 + * 获取某个羁绊的详细信息 + * 支持缓存与数据更新,确保系统在多次查询时有较快的响应速度。 +2. **阵容推荐模块** + + * 根据指定的阵容需求(人口数量、必须包含的羁绊/棋子等)自动生成当前版本云顶之弈中合理的阵容。 + * 兼容多羁绊、多棋子等多种复杂输入,生成符合要求的多个可行阵容。 + * 将所有候选阵容进行分数计算并择优返回最高得分阵容。 +3. **阵容评分模块** + + * 提供评分系统,对阵容进行综合打分: + + * 考虑羁绊数量及羁绊等级(如:2重装、4重装、6重装等触发效果)。 + * 考虑棋子的费用、属性强度、技能等基础输出或耐久能力。 + * 提供默认评分权重(例如羁绊优先度、棋子星级、费用等),并允许自定义权重配置(通过配置文件覆盖默认值)。 + * 保证评分算法可扩展性,后续可集成更复杂的策略或外部数据(如胜率、大数据统计等)。 +4. **接口模块** + + * 提供外部可调用的API,接收下列可能的输入条件: + + * 指定人口(如 8 人口或 9 人口阵容)。 + * 指定必须包含的羁绊(一个或多个)。 + * 指定必须包含的棋子(一个或多个)。 + * 其它自定义约束条件(如费用上限、指定主C等)。 + * 调用数据提供模块和阵容推荐模块完成计算后,将结果(最佳阵容或多套可行阵容)返回给调用方。 + +--- + +## 环境和依赖 + +* **开发语言:** Python 3.8 或更高版本 +* **主要依赖库(示例):** + + * `requests`:在线获取官方数据 + * `pandas`:数据处理库,用于数据筛选、分析等 + * `pyyaml`:配置文件解析库,用于加载自定义权重配置 + * 其他依赖请根据实际需求添加 + +安装依赖示例: + +```bash +pip install -r requirements.txt +``` + +--- + +## 项目结构 + +下面是建议的项目目录结构,供参考和进一步修改: + +``` +. +├── data/ +│ ├── job.json # 职业数据(从官方api获取后存放本地) +│ ├── race.json # 特质数据 +│ └── chess.json # 棋子数据 +├── config/ +│ └── score_config.yaml # (可选)自定义评分权重配置文件 +├── src/ +│ ├── data_provider/ +│ │ ├── data_loader.py # 从本地或在线获取数据的逻辑 +│ │ └── data_query_api.py # 提供对外的数据查询API +│ ├── recommendation/ +│ │ └── composition_recommender.py # 阵容推荐模块核心逻辑 +│ ├── scoring/ +│ │ └── score_calculator.py # 阵容评分模块 +│ └── interface/ +│ └── api.py # 对外接口模块 +├── tests/ +│ ├── test_data_provider.py +│ ├── test_recommendation.py +│ ├── test_scoring.py +│ └── test_api.py +├── README.md +└── requirements.txt +``` + +各模块功能说明: + +1. **`data_loader.py`** + + * 负责从本地文件或在线接口获取最新的 job/race/chess 数据。 + * 每次启动时更新数据。 + * 在线接口: + + * `'chess': 'https://game.gtimg.cn/images/lol/act/img/tft/js/chess.js'` + * `'job': 'https://game.gtimg.cn/images/lol/act/img/tft/js/job.js'` + * `'race': 'https://game.gtimg.cn/images/lol/act/img/tft/js/race.js'` +2. **`data_query_api.py`** + + * 读取 `data_loader` 载入的数据并对外提供查询功能: + + * 获取指定羁绊下的所有棋子 + * 获取棋子的所有羁绊 + * 获取某个羁绊/棋子的详细信息 + * 其它辅助查询方法。 +3. **`composition_recommender.py`** + + * 接收需求参数(如人口、羁绊、棋子)进行阵容搜索与组合。 + * 生成所有可能的组合后,调用 **评分模块** 对组合评分。 + * 推荐评分最高的一套或多套阵容输出。 + * 推荐逻辑可参考: + + * *基于羁绊的优先级:* 每当阵容中某一羁绊人数接近下一等级阈值时,可优先考虑补充同羁绊棋子。 + * *基于棋子价值:* 根据棋子费用、技能强度等优先选择高价值棋子,但要平衡费用和羁绊需求。 +4. **`score_calculator.py`** + + * 根据提供的评分配置(默认或自定义)对给定阵容进行评分: + + * *羁绊评分:* 如 2重装、4重装、6重装等带来的收益加分。 + * *棋子评分:* 根据费用、技能伤害、攻防属性等进行综合评估。 + * *人口/星级加成:* 如果同一个棋子假设有星级等维度,也可作为额外加分点。 + * 如果有 `score_config.yaml`,则读取自定义权重覆盖默认值。 + * 返回阵容总得分,供推荐模块最终排序使用。 +5. **`api.py`** + + * 提供对外可调用的API函数或 RESTful 接口: + + * 接口示例: + + ```python + def get_recommended_composition( population=8, required_syns=None, # 必须包含的羁绊 required_champs=None, # 必须包含的棋子 score_config_path=None): """ 外部可调用的主要函数: 1. 从 data_query_api 获取基础数据 2. 调用 composition_recommender 生成所有可行阵容 3. 调用 score_calculator 对阵容评分 4. 返回最优阵容 """ ... + ``` + +--- + +## 使用说明 + +1. **获取数据** + + * 每次启动时,从官方接口获取数据,存放在内存缓存或本地文件中 + * 若数据获取失败,应用退出 + * 数据格式: + + * job: + + * ```json + { + "version": "15.7", + "season": "2025.S14", + "modeId": "1", + "time": "2025-04-01 14:31:07", + "data": [ + { + "jobId": "10155", + "name": "超频战士", + "traitId": "10155", + "introduce": "【超频战士】们可以通过该羁绊专有的【超频】属性来给他们的技能提供独特增强。", + "alias": "10155.png", + "level": { + "2": "+1 【超频】属性, 100 生命值", + "3": "+2 【超频】属性, 200 生命值", + "4": "+3 【超频】属性, 350 生命值", + "5": "+4 【超频】属性, 500 生命值" + }, + "TFTID": "10155", + "characterid": "TFT14_Supercharge", + "id": "2623", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10155.png", + "job_color_list": "2:1,3:2,4:3,5:3" + }, + { + "jobId": "10157", + "name": "重装战士", + "traitId": "10157", + "introduce": "【重装战士】们在有护盾时获得10%伤害减免。\r\n战斗开始时和50%生命值时:获得一部分最大生命值的护盾值,持续10秒。", + "alias": "10157.png", + "level": { + "2": "16%最大生命值", + "4": "32%最大生命值", + "6": "40%最大生命值;在有护盾时获得16% 伤害减免" + }, + "TFTID": "10157", + "characterid": "TFT14_Vanguard", + "id": "2624", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10157.png", + "job_color_list": "2:1,4:2,6:3" + }, + + ...... + ``` + * chess: + + * ```json + { + "version": "15.7", + "season": "2025.S14", + "modeId": "1", + "time": "2025-04-01 14:31:07", + "data": [ + { + "raceId": "10153", + "name": "圣灵使者", + "traitId": "10153", + "introduce": "【圣灵使者】弈子会为你的小队提供独特的属性,该加成会随着已登场的【圣灵使者】弈子数量而提升。\r\n【圣灵使者】弈子们获得双倍。", + "alias": "10153.png", + "level": { + "1": "100% 加成。", + "2": "110% 加成。", + "3": "125% 加成。", + "4": "140% 加成。", + "5": "160% 加成。", + "6": "180% 加成。", + "7": "200% 加成。" + }, + "TFTID": "10153", + "characterid": "TFT14_Divinicorp", + "id": "2727", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10153.png", + "race_color_list": "1:1,2:2,3:2,4:3,5:3,6:3,7:4" + }, + { + "raceId": "10154", + "name": "街头恶魔", + "traitId": "10154", + "introduce": "在【彩绘格】中的友军将获得生命值、法术强度和攻击力。一些格子是【签名格】并多提供50%此加成。\r\n【街头恶魔】使所有此加成翻倍。", + "alias": "10154.png", + "level": { + "3": "+6% 生命值,6 法术强度,6% 攻击力", + "5": "+10% 生命值,10 法术强度,10% 攻击力", + "7": "+6% 生命值,15 法术强度,15% 攻击力", + "10": "+50% 生命值,50 法术强度,50% 攻击力,尽情绘画!" + }, + "TFTID": "10154", + "characterid": "TFT14_StreetDemon", + "id": "2728", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10154.png", + "race_color_list": "3:1,5:2,7:3,10:4" + }, + ``` + * race: + + * ```json + { + "version": "15.7", + "season": "2025.S14", + "modeId": "1", + "time": "2025-04-01 14:31:07", + "data": [ + { + "raceId": "10153", + "name": "圣灵使者", + "traitId": "10153", + "introduce": "【圣灵使者】弈子会为你的小队提供独特的属性,该加成会随着已登场的【圣灵使者】弈子数量而提升。\r\n【圣灵使者】弈子们获得双倍。", + "alias": "10153.png", + "level": { + "1": "100% 加成。", + "2": "110% 加成。", + "3": "125% 加成。", + "4": "140% 加成。", + "5": "160% 加成。", + "6": "180% 加成。", + "7": "200% 加成。" + }, + "TFTID": "10153", + "characterid": "TFT14_Divinicorp", + "id": "2727", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10153.png", + "race_color_list": "1:1,2:2,3:2,4:3,5:3,6:3,7:4" + }, + { + "raceId": "10154", + "name": "街头恶魔", + "traitId": "10154", + "introduce": "在【彩绘格】中的友军将获得生命值、法术强度和攻击力。一些格子是【签名格】并多提供50%此加成。\r\n【街头恶魔】使所有此加成翻倍。", + "alias": "10154.png", + "level": { + "3": "+6% 生命值,6 法术强度,6% 攻击力", + "5": "+10% 生命值,10 法术强度,10% 攻击力", + "7": "+6% 生命值,15 法术强度,15% 攻击力", + "10": "+50% 生命值,50 法术强度,50% 攻击力,尽情绘画!" + }, + "TFTID": "10154", + "characterid": "TFT14_StreetDemon", + "id": "2728", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10154.png", + "race_color_list": "3:1,5:2,7:3,10:4" + }, + ``` +2. **定制评分** + + * 在 `config/score_config.yaml` 文件中写入自定义的评分权重,例如: + + ```yaml + synergy_weight: base: 1.0 重装战士: 1.2 # 重装战士特殊加成 ...champion_weight: base_price_factor: 0.5 ... + ``` + * 也可直接在 `score_calculator.py` 模块中写死默认权重,不使用配置文件。 +3. **调用推荐接口** + + * 在命令行 / 脚本中: + + ```python + from src.interface.api import get_recommended_compositionbest_comp = get_recommended_composition( population=8, required_syns=['重装战士', '街头恶魔'], required_champs=['布兰德'], score_config_path='config/score_config.yaml')print(best_comp) + ``` + * 如果实现了网页接口或CLI,可直接通过相应方式进行调用。 +4. **扩展性** + + * 通过新增或修改数据文件,可无缝整合新版本羁绊、棋子数据。 + * 评分系统可根据策略和经验进行不断迭代。 + +--- + +## 测试 + +* 建议使用 `pytest` 或 `unittest` 进行测试: + + * `test_data_provider.py`:测试数据加载和查询的正确性。 + * `test_recommendation.py`:测试阵容推荐逻辑在各种输入条件下是否能正确生成可行阵容。 + * `test_scoring.py`:测试评分结果是否符合预期(含默认权重与自定义权重)。 + * `test_api.py`:测试对外接口的可用性和稳定性。 + +--- + +## 深度思考与注意事项 + +1. **数据版本与兼容性** + + * 云顶之弈更新频繁,羁绊及棋子经常变动。为保证兼容性和可持续维护,需要在数据模块中预留多版本并行处理或自动更新的机制。 + * 可以在数据库或文件系统中记录不同版本的 json 数据,并通过接口指定使用哪个版本。 +2. **羁绊冲突与优先级** + + * 部分羁绊可能存在冲突(如同时带来的属性相互覆盖)或并不兼容,需要在推荐阵容时自行过滤或降低评分。 + * 在评分系统中,应设定羁绊上限规则(如某些羁绊过量堆叠收益递减)。 +3. **棋子升星问题** + + * 不考虑棋子升星问题 +4. **性能** + + * 若人口和可选棋子规模较大,暴力穷举组合的时间开销可能很高,需要考虑使用回溯、剪枝、启发式算法、或动态规划方式加速推荐过程。 +5. **配置管理** + + * 对于多种参数(如羁绊优先级、棋子费用优先级、特定羁绊的特殊加成等),建议使用统一配置文件管理,减少魔法值散落于代码。 + * 同时要注意不同格式(JSON/YAML/INI)的使用,保持一致性。 + +--- + +## 结语 + +此项目聚焦于云顶之弈的阵容搭配与推荐,核心思路是利用官方提供的职业(job)、特质(race)及棋子(chess)数据,通过一套灵活可扩展的评分系统,为特定版本提供自动化、高质量的阵容建议。 +如需进一步扩展,也可对接大数据平台,采集高分段玩家的对局数据,构建更准确的胜率模型和评分模型,从而不断优化 推荐器 的效果。 + +若有任何疑问或改进建议,欢迎在项目中提出 Issue 或 Pull Request,让我们一起将该项目做得更完善、易用、智能。祝各位在云顶之弈的旅程中诸神之巅! \ No newline at end of file diff --git a/requirement.md b/requirement.md new file mode 100644 index 0000000..93fbe3b --- /dev/null +++ b/requirement.md @@ -0,0 +1,199 @@ +我准备编写一个云顶之弈阵容推荐器,所有推荐都基于官方api接口获取的数据,数据包括三个文件:job、race、chess,分别代表职业、特质、棋子,数据内容如下(只截取部分): + +job: + +```json +{ + "version": "15.7", + "season": "2025.S14", + "modeId": "1", + "time": "2025-04-01 14:31:07", + "data": [ + { + "jobId": "10155", + "name": "超频战士", + "traitId": "10155", + "introduce": "【超频战士】们可以通过该羁绊专有的【超频】属性来给他们的技能提供独特增强。", + "alias": "10155.png", + "level": { + "2": "+1 【超频】属性, 100 生命值", + "3": "+2 【超频】属性, 200 生命值", + "4": "+3 【超频】属性, 350 生命值", + "5": "+4 【超频】属性, 500 生命值" + }, + "TFTID": "10155", + "characterid": "TFT14_Supercharge", + "id": "2623", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10155.png", + "job_color_list": "2:1,3:2,4:3,5:3" + }, + { + "jobId": "10157", + "name": "重装战士", + "traitId": "10157", + "introduce": "【重装战士】们在有护盾时获得10%伤害减免。\r\n战斗开始时和50%生命值时:获得一部分最大生命值的护盾值,持续10秒。", + "alias": "10157.png", + "level": { + "2": "16%最大生命值", + "4": "32%最大生命值", + "6": "40%最大生命值;在有护盾时获得16% 伤害减免" + }, + "TFTID": "10157", + "characterid": "TFT14_Vanguard", + "id": "2624", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/classes/10157.png", + "job_color_list": "2:1,4:2,6:3" + }, + +...... +``` + + +race: + +```json +{ + "version": "15.7", + "season": "2025.S14", + "modeId": "1", + "time": "2025-04-01 14:31:07", + "data": [ + { + "raceId": "10153", + "name": "圣灵使者", + "traitId": "10153", + "introduce": "【圣灵使者】弈子会为你的小队提供独特的属性,该加成会随着已登场的【圣灵使者】弈子数量而提升。\r\n【圣灵使者】弈子们获得双倍。", + "alias": "10153.png", + "level": { + "1": "100% 加成。", + "2": "110% 加成。", + "3": "125% 加成。", + "4": "140% 加成。", + "5": "160% 加成。", + "6": "180% 加成。", + "7": "200% 加成。" + }, + "TFTID": "10153", + "characterid": "TFT14_Divinicorp", + "id": "2727", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10153.png", + "race_color_list": "1:1,2:2,3:2,4:3,5:3,6:3,7:4" + }, + { + "raceId": "10154", + "name": "街头恶魔", + "traitId": "10154", + "introduce": "在【彩绘格】中的友军将获得生命值、法术强度和攻击力。一些格子是【签名格】并多提供50%此加成。\r\n【街头恶魔】使所有此加成翻倍。", + "alias": "10154.png", + "level": { + "3": "+6% 生命值,6 法术强度,6% 攻击力", + "5": "+10% 生命值,10 法术强度,10% 攻击力", + "7": "+6% 生命值,15 法术强度,15% 攻击力", + "10": "+50% 生命值,50 法术强度,50% 攻击力,尽情绘画!" + }, + "TFTID": "10154", + "characterid": "TFT14_StreetDemon", + "id": "2728", + "imagePath": "https://game.gtimg.cn/images/lol/act/img/tft/origins/10154.png", + "race_color_list": "3:1,5:2,7:3,10:4" + }, +``` + + +chess: + +```json +{ + "version": "15.7", + "season": "2025.S14", + "modeId": "1", + "time": "2025-04-01 14:31:08", + "data": [ + { + "chessId": "10274", + "title": "", + "name": "10274.png", + "displayName": "魔像", + "raceIds": "", + "jobIds": "10178", + "price": "0", + "skillName": "魔像重击", + "skillType": "主动", + "skillImage": "https://game.gtimg.cn/images/lol/act/img/tft/champions/tft_bluegolem_spell.png", + "skillIntroduce": "猛击当前目标,造成300/480/750 (AP)魔法伤害。", + "skillDetail": "猛击当前目标,造成300/480/750 (AP)魔法伤害。", + "life": "600", + "magic": "100", + "startMagic": "30", + "armor": "40", + "spellBlock": "40", + "attackMag": "1.5", + "attack": "55", + "attackSpeed": "0.55", + "attackRange": "1", + "crit": "25", + "originalImage": "https://game.gtimg.cn/images/lol/act/img/tft/original-image/tft_bluegolem_spell.png", + "lifeMag": "1.8", + "TFTID": "10274", + "synergies": "", + "illustrate": "", + "recEquip": "", + "proStatus": "", + "hero_EN_name": "TFT_BlueGolem", + "id": "11710", + "races": "", + "jobs": "召唤物", + "attackData": "55/83/124", + "lifeData": "600/1080/1944" + }, + { + "chessId": "10275", + "title": "", + "name": "10275.png", + "displayName": "布兰德", + "raceIds": "10154", + "jobIds": "10172", + "price": "4", + "skillName": "颜料炸弹", + "skillType": "主动", + "skillImage": "https://game.gtimg.cn/images/lol/act/img/tft/champions/tft14_brandpyroclasm.tft_set14.png", + "skillIntroduce": "向5格射程范围内敌人最密集的位置投掷一颗颜料炸弹,对1格内的敌人们造成260/390/1500 (AP)魔法伤害,并对相距最近的4名敌人造成100/150/600 (AP)魔法伤害。", + "skillDetail": "向5格射程范围内敌人最密集的位置投掷一颗颜料炸弹,对1格内的敌人们造成260/390/1500 (AP)魔法伤害,并对相距最近的4名敌人造成100/150/600 (AP)魔法伤害。", + "life": "800", + "magic": "75", + "startMagic": "25", + "armor": "30", + "spellBlock": "30", + "attackMag": "1.5", + "attack": "35", + "attackSpeed": "0.75", + "attackRange": "4", + "crit": "25", + "originalImage": "https://game.gtimg.cn/images/lol/act/img/tft/original-image/tft14_brandpyroclasm.tft_set14.png", + "lifeMag": "1.8", + "TFTID": "10275", + "synergies": "", + "illustrate": "", + "recEquip": "", + "proStatus": "", + "hero_EN_name": "TFT14_Brand", + "id": "11711", + "races": "街头恶魔", + "jobs": "高级工程师", + "attackData": "35/53/79", + "lifeData": "800/1440/2592" + }, +``` + + + +我需要基于这三个数据进行分析,并根据限定好的羁绊(职业和特质的统称)和棋子生成合理的阵容,并尽可能推荐评分较高的阵容,因此项目需要设计以下模块: + +* 数据提供模块:从本地或在线接口获取羁绊和棋子数据,并提供数据查询api,通过api可以获取指定羁绊下的所有棋子、获取棋子的所有羁绊、获取所有羁绊列表、获取某个棋子的详细信息、获取某个羁绊的详细信息等可能会用到的数据查询相关接口。 +* 阵容推荐模块:根据指定的阵容人数、羁绊、棋子搭配阵容,并使用评分系统计算阵容评分,找出评分最高的一组阵容后将阵容结果返回或输出 +* 阵容评分模块:根据阵容中的羁绊和棋子的数据,综合计算阵容的评价得分,计算标准需要深度思考,对于羁绊和棋子的评分优先级,可以添加一个默认的权重,并根据配置文件中指定的权重对默认值进行覆盖,使用覆盖后的值进行强度计算,如果不指定,则使用默认值进行强度计算,阵容强度计算需要考虑多种因素,例如羁绊数量、羁绊总人数、棋子的费用、棋子的属性数据等 +* 接口模块:可以接收外部传入的阵容推荐条件,例如指定人口、指定羁绊(一个或多个)、指定棋子(一个或多个),并调用其他模块进行阵容计算,最终返回给调用者 + + + +请根据以上需求,帮我编写一份README.md文档,整个项目使用python语言开发,要求在需求基础上加入自己的深入思考,并对细节或不合理的点进行调整和完善,我后续将使用README.md文档指导整个项目的开发,因此,需要尽可能详细设计 \ No newline at end of file