我准备编写一个云顶之弈阵容推荐器,所有推荐都基于官方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文档指导整个项目的开发,因此,需要尽可能详细设计