Commit Graph
114 Commits
Author SHA1 Message Date
TermiNexus 87539a9645 feat(session): 生成下行动作映射表并接入会话路由 2026-10-24 22:58:04 +08:00
TermiNexus 780373180d feat(session): S3 连接层起步,上行编码 golden + 会话解码自检 2026-10-24 22:43:35 +08:00
TermiNexus b04f0f390d feat(state): 迁移 battleCreateState,状态层 89/89 全部完成 2026-10-24 22:24:08 +08:00
TermiNexus 8b124388ec feat(state): 迁移 matchmakingGroup 2026-10-24 22:18:57 +08:00
TermiNexus 6f68afa678 feat(state): 迁移 itemNotifications(复用 ItemNotificationData) 2026-10-24 22:14:50 +08:00
TermiNexus bb544643b5 feat(state): 迁移 chatState(复用 ChatMessage 模型) 2026-10-24 22:09:49 +08:00
TermiNexus 2f38609a98 feat(state): 迁移 clan(36 字段 / 43 动作) 2026-10-24 22:05:19 +08:00
TermiNexus ad5686241d feat(state): 迁移 clansStorage(复用 ClanInfo 模型) 2026-10-24 21:58:43 +08:00
TermiNexus 25f8cd431e feat(state): 迁移 challenges(复用 Challenge 模型) 2026-10-24 21:26:43 +08:00
TermiNexus 7d1c808af9 feat(state): 迁移 battleUsers(复用 RemoteUserData/UserStat/TankInfoCC) 2026-10-24 21:21:36 +08:00
TermiNexus cd597b4693 feat(state): 迁移 battlesSelect(复用 BattleParams/BattleInfoUser) 2026-10-24 21:03:47 +08:00
TermiNexus 71aa9a5256 feat(state): 迁移 matchmaking 2026-10-24 20:42:01 +08:00
TermiNexus 9e51b695aa feat(state): 迁移 remoteUserDataStorage(复用 RemoteUserData 协议模型) 2026-10-24 20:23:50 +08:00
TermiNexus 5327312b13 feat(state): 迁移 battleChat(复用 ChatMessage 协议模型) 2026-10-24 20:08:24 +08:00
TermiNexus 8dac8d96e8 feat(state): 迁移 maps 并补地图描述协议模型 2026-10-24 19:56:41 +08:00
TermiNexus 9cf760b354 feat(state): 迁移 battleMessage 并补战斗消息协议模型 2026-10-24 19:46:20 +08:00
TermiNexus 0cd2a23c9e feat(state): 迁移 tankBuilderState 2026-10-24 17:42:50 +08:00
TermiNexus 6a1c8b4306 feat(state): 迁移 contractState 2026-10-24 17:30:56 +08:00
TermiNexus 0d1e2d00c5 feat(state): 迁移 graphicsSettings/controlSettings/battleSettings 2026-10-24 17:24:01 +08:00
TermiNexus cade4020a5 feat(state): 迁移 soundSettings/gameSettings/keyboardSettings/touchscreenHudSettings 2026-10-24 17:13:24 +08:00
TermiNexus 86979eb168 feat(state): 迁移 battleStatistics 2026-10-24 16:55:21 +08:00
TermiNexus 4aec83f684 feat(state): 迁移 clanChatState/battleSearchState 2026-10-24 16:45:20 +08:00
TermiNexus 38ec7fa28e feat(state): 迁移 battlePauseState/battleViewState/tankActionsLogState/suppliesTutorial 2026-10-24 16:33:38 +08:00
TermiNexus 0183f191d3 feat(state): 迁移 friends/suppliesState/clanUserInfo/battleInviteState/partner/userRenameState 2026-10-24 16:00:39 +08:00
TermiNexus af005ab019 feat(state): 迁移 system/contextTutorial/battleTutorial/spectator/twoStepVerificationState/antiAddiction/moderation/migrationState/register/userReportsState 2026-10-24 15:32:47 +08:00
TermiNexus 8633fc91c1 feat(state): 迁移 tipsState/rankUpDialogState/battleResult/captchaState/modalScreen/droppableGold/eventGoods/creatorTagState/rewardedVideosState/passwordChangeState 2026-10-24 14:43:51 +08:00
TermiNexus 6d2487d9ea feat(state): 迁移 icons/questCategories/mainQuest/securitySettings/referralEvent 2026-10-24 14:12:19 +08:00
TermiNexus 49e8c1efc4 feat(state): 迁移 lobbyLoader/purchaseDialogState/promoCode/supportUrl/rulesUpdated/notificationByCountry/availabilityByRank 2026-10-24 13:29:41 +08:00
TermiNexus df179dea51 fix(state): quests 的 SetNotCompletedQuests 实际是 no-op(动作字段与 cd 同为 undefined) 2026-10-24 13:14:28 +08:00
TermiNexus 81668b0a2e feat(state): 迁移 news/notifications/quests 切片 2026-10-24 13:05:13 +08:00
TermiNexus 006e6a7ebd feat(state): 批量迁移 accountSettings/proBattle/language/announcement 切片 2026-10-24 12:19:13 +08:00
TermiNexus 6947fcb567 feat(state): 迁移 settings 切片(2 字段 / 2 臂) 2026-10-23 17:20:56 +08:00
TermiNexus 9b3e76d42d feat(state): 迁移 user 切片(32 字段 / 28 臂) 2026-10-23 16:36:23 +08:00
TermiNexus 77a90fdfff feat(state): 迁移 entrance 切片(8 字段 / 7 臂) 2026-10-23 15:47:18 +08:00
TermiNexus 435cd3191e feat(state): 收口 launchParams 切片为强类型透传(11/89) 2026-10-23 15:29:05 +08:00
TermiNexus 1194c395b4 feat(state): 迁移 garagePreview 切片(22 字段 / 25 分支) 2026-10-23 15:12:10 +08:00
TermiNexus 3c0ed0a998 feat(state): 迁移 garage 切片(31 字段 / 60 分支) 2026-10-23 13:58:47 +08:00
TermiNexus f66f431670 feat(state): 迁移补给箱切片(18 个动作 + ContainerType) 2026-10-23 12:25:43 +08:00
TermiNexus 974a9f49ad feat(state): 迁移屏幕导航切片(13 个动作 + ScreenId) 2026-10-23 03:28:57 +08:00
TermiNexus b7afe07894 test(state): 用真实派发样例回放商店切片 2026-10-23 02:38:36 +08:00
TermiNexus 94374d2f36 feat(state): 全量迁移商店切片(69 个动作 + U7/w3 子状态) 2026-10-23 02:13:31 +08:00
TermiNexus 86d79eddad feat(state): 迁移 home 与 localBattleUserState 两个内联切片 2026-10-23 01:24:21 +08:00
TermiNexus f373c2053e feat(state): 按效果为无 toString 的 o1 定名 ShowShopDiscountNotification 2026-10-23 01:19:35 +08:00
TermiNexus d5098cc782 feat(state): 4 个内联 IIFE 切片按字段具名并补动作名 2026-10-23 00:56:50 +08:00
TermiNexus fdc516b7f3 feat(state): 迁密码登录与 Twitch 切片,拼出 89 槽位根 reducer 2026-10-23 00:38:10 +08:00
TermiNexus b7dea52f03 feat(state): 用 138 条真实 dispatch 样例回放校验动作目录
1) analyze_action_trace 保留每个动作的第一行原始 toString(Samples),并新增两条类型规则:见过 [object Object] 记为 Opaque(运行时说不出类型,但不能再让调用点猜);字段只要出现过 null 就补可空后缀(Long?/List<String>?)。

2) gen_action_kt 产出 ActionSamples.kt;可选类的判定改用「样例那一行的字段集」,修掉 Configure 选错行(1 字段的 config 版 vs 12 字段的真实版)。

3) 自检加两组:回放对照(138 个动作 × 真实字段值,缺类/缺字段/类型不符三项必须为 0)+ 全目录 817 个动作类注册并验证只路由命中项。

结果:19 项全通过;缺类 0 / 缺字段 0 / 类型不符 0。过程中修出 8 处错型:6 个 Opaque 字段曾被误判成 Long,4 个字段缺少可空性。
2026-10-22 14:36:33 +08:00
TermiNexus 74bf01c0f8 feat(state): 生成动作目录 ActionCatalog,把 817 个类与实际 dispatch 名对上
1) gen_action_kt 现在额外产出 App/State/ActionCatalog.kt:817 条(816 个 module_10032 数据类 + module_10849 的 InitState),每条带类引用与字段类型。

2) State 模块补 InitState(type, action):原 module_10849 的 ct,toString 证据为 InitState(type=…, action=…)。

3) 自检从 10 项扩到 15 项:目录非空、名字唯一、每个条目能拿到 KClass、运行时打点过的 135 个动作名 0 缺口、ByName 与 All 对齐。

结果:TANKIOFFLINE_STATE_TEST=1 全通过(目录 817 条;打点动作名 135 个;缺口 0)。
2026-10-22 12:52:18 +08:00
TermiNexus 7d8ceedee2 fix(state): 布尔判定只在顶层生效,清掉 223 个假 Boolean
1) 旧规则只要表达式里出现 ===/>= 之类就判 Boolean,导致 (i = i === cd ? null : i) 这类『赋值+三元』被当成布尔,realName/battleId/mapName 都被误判成 Boolean。新增 Booleanish:去外层括号、剥离顶层赋值取右值、遇三元直接放弃、只认顶层比较/取反/equals。

2) 运行时类型若为 Any?/List<Any?>/Map<String, Any?>(本身没信息,例如值全是空列表),不再挡住调用点推断。

3) analyze_action_trace 支持 Kotlin 默认 toString 形态 Name [a = 1 b = X],从抽样里多解析出 40 个模型类(TankResistance/Range/TemporaryItemCC/UserPropertiesCC…),并让空容器的『元素未知』不参与冲突判定(List<Any?> + List<Long> → List<Long>)。

4) 新增 --why <类.字段> 排查错型:打印每个调用点的实参与推断结果。

结果:已定类型 707 → 493(真实原因是那 223 个是错型);嵌套对象类 3 → 43(235 个字段已定类型);与运行时真值冲突 6 → 2。
2026-10-21 22:10:09 +08:00
TermiNexus c957f742b1 feat(state): 按运行时 toString 样例生成嵌套对象类
1) analyze_action_trace 现在会递归解析动作 toString 里的对象值(Name(a=1, b=Xxx(...))),输出 Models 表:12 个对象类、92 个字段,字段名与类型都来自真实 dispatch 样例。

2) gen_action_kt 据此处理三类情况:①已有同名数据类且字段覆盖运行时字段 → 直接复用(并把它选为该名字的代表行,修复 Challenge 误选 1 字段版的问题);②同名但字段对不上 → 放弃;③无同名类 → 现生成 data class(Coloring / EmissionColors / TextureFrameAnimation)。

3) 动作字段遇到已确认的对象类时按类名定型,不再退化成 Any?;Kotlin 关键字做属性名时加反引号。
2026-10-21 22:05:51 +08:00
TermiNexus 5e93ba6f47 feat(state): 数据流覆盖匿名函数/IIFE/原型方法,剔除 copy 转发噪声
1) 作用域索引从「具名 function」扩到三类:具名函数、赋值到原型的方法(ld(Cls).m = function)、IIFE((function(t){...})(a,b));形参解析按由内向外逐层尝试。

2) 关键修正:Kotlin 给 data class 生成的 copy/with(原型方法里 return new Cls(同名形参…))是循环证据,不能当类型依据。剔除后覆盖率从虚高的 1185(55.7%) 回落到 689(32.4%),被剔除的 497 个字段标注为「仅 copy 转发(无类型信息)」。

3) 新增 --stats:输出仍认不出的实参形态分布,便于决定下一条规则。

4) 与 158 个运行时真值对比仍无新增冲突(保持 3 处真实分歧:AddBattle.suspicionLevel / UpdateEventPass.eventPassEndTime / SetDrone.resource)。
2026-10-21 21:42:17 +08:00