joywayer
dfbc26a024
Phase 1.11:VersionResolver chulishengji 双子树合并算法
实现 msext NewRootVC.m:1372-1538 的 chulishengji 双子树合并算法的纯
函数 Swift 版本,把远端 RemoteConfig 化简为 5 个目标字段决策结果
(appVersion / appDownload / gameVersion / gameZip / showmessage)。
- 新增 ylgamehall/Source/Network/VersionResolver.swift
- public enum VersionResolver + 纯函数 static func resolve
- public struct ResolvedVersion: Sendable 含 5 字段
- 内部 SubtreeExtract 中转 4 字段累加结果(每层非空才覆盖)
- extractAgentSubtree 4 层(agent → channel → market → game 嵌
market 命中后)按 NewRootVC.m:885-1013 复刻
- extractGameSubtree 4 层(game → game-self → channel → market)
按 NewRootVC.m:1015-1180 复刻
- mergeIPA 默认 agent 赢;game.appVersion > agent.appVersion 时
game 赢(NewRootVC.m:1416)
- mergeZip 默认 game 赢;agent.gameVersion > game.gameVersion 时
agent 赢(NewRootVC.m:1456)
- showmessage 任意子树非空就用,最后写赢;回退到 config.showmessage
- 字段名 game_download vs game_zip 由 SubtreeExtract.gameZip 统一吸收,
Codable 模型已用 gameZip 命名,故无需重复查两个 key
- RootViewController 烟雾测试串接 RemoteConfigClient + VersionResolver,
打印 chulishengji 合并后的 5 字段
- 真机实测(现网 .txt JSON):
- appVersion = 43 → 等于本地 BundleConfig.appVersion,不触发 IPA 升级
- gameVersion = 261 → 远端最新版(本地 version.xml 待 Phase 1.12 读取
后对比;首装后 version.xml 实测 261 等于本地)
- gameZip = http://tsgames.daoqi88.cn/zip2/gamehall.zip
(HTTP,Phase 1.13 下载需 ATS NSExceptionDomains daoqi88.cn)
- appDownload = itms-services://... 企业签 manifest URL
- showmessage = ""(无运营公告)
- 单测目前未写(等 Phase 0.2 单测 target 建立后补齐),但生产数据
已验证算法正确
2026-06-22 02:18:27 +08:00
..
2026-06-22 02:14:57 +08:00
2026-06-22 02:18:27 +08:00