Code Review · develop-fullview

develop 昨日审查
2026-08-07

32 个 commit (12 个 merge 不计), 3 位含问题提交人, 3 个问题 P0×0 P1×0 P2×3

Commits32
Authors3
Issues3
CriticalP0×0

审查概览

0P0 阻断级问题
0P1 高优问题
3P2 质量问题
主要风险:dylan 的 Buff 暂停计时器重构触及生命周期不变量 (setBuffTimerActive/getBuffTakeEffectDuration/_startBuffTimer 三处契约联动), 需回归 0 秒持续 buff 跨暂停-恢复场景; bree 一日内大幅回退黑市刷新优化后改为 updateDailyGoods 前置调用, 并同步移除 FuncConditionWatcher 中 FEAT_UNLOCK 映射, 需关注并发请求与 UI 一致性.

跨 commit 关联

bree 在 64655a42497 (14:14) 给 BlackMarket

bree 在 64655a42497 (14:14) 给 BlackMarketModule 加了懒加载缓存 + 条件监听 + FuncConditionWatcher 中 [FEATURE_UNLOCK_EVENT, [FEAT_UNLOCK]] 映射, 一个小时后 5ddab09ff5d (15:16) 几乎全量回退, 改为在 getDailyGoods 入口前置调用 updateDailyGoods 并移除 FuncConditionWatcher 映射; 已 grep 全仓库 FUNCTION_CONDITION_TYPE_FEAT_UNLOCK, 仅 proto 定义与 enum 引用, 无 TS 消费者, 移除安全. jinko 的 4ffd550946e (14:55) 与 291998f15a1 (15:47) 是同一段构建脚本的两步精修, 先把 native-target 守卫加到 cache 行, 再上移到外层 if, 终态一致. Joseph 的 7c0ca68905b (python 工具把 duration 改为 frame_count 解决单帧 anim 不显示) → 94b8a7001b4 / b9af3a81be6 (补打帝释天/小厨娘 Die_01 与斯卡蒂 AdditionEffect 的 AnimRecordConst 数据) 构成"工具修正+存量数据补丁"链路.

优先处理清单

  • 👤 RainN:P2-1
  • 👤 p_zhengtao:P2-2
  • 👤 tangzhipeng:P2-3
当前提交人没有上报问题。
P2-1

UnionAuctionItemDetailView$$.ts:89 (onPriceEditEnd$$)

👤 RainN · 065204f7
现象
i18n key union_autcion_input_true_price_tip 拼写错误 (autcion 应为 auction), 后续若有人按正确拼写新增 key, 会出现同一文案双份配置且难清理.
根因
手写 i18n key 时把 auction 打成 autcion, zh_cn$$.json 与 generated zh_cn$$.ts 中 key 一致, 功能能跑通, typo 永久留在 localization 文件里.
修复建议
union_autcion_input_true_price_tip 改为 union_auction_input_true_price_tip, 同步更新 zh_cn$$.json 与 zh_cn$$.ts.
GameViewCtrl$$.Instance$$.showToast$$(languages$$.union_auction_input_true_price_tip);
P2-2

main.ts:557 (onAssetChange$$)

👤 p_zhengtao · cfe40c17
现象
anim 文件含多个 $$ 回调时, 工具每次只删第一个, 后续需多次触发 onAssetChange 才能清完; console.error 输出的 funcName 是整段 "func": "xxx$$" 而非裸方法名, 排障信息冗余.
根因
String.replace("$$", "") 字符串形式只替换首个匹配; data.match(/.../)?.[0] 取的是整匹配而非捕获组 [1].
修复建议
改用 /\$\$/g 全量替换, match[1] 拿裸方法名.
const funcName = data.match(/"func": "(\w+)\$\$"/)?.[1] || "";
fs.writeFile(assetPath, data.replace(/\$\$/g, ""), 'utf8', ...);
P2-3

ActivityWorldBossData$$.ts:239 (initData$$)

👤 tangzhipeng · b76fde13
现象
服务器返回 rsp.WorldBossInfo 为 null 时, 旧 _totalDamage$$/_rank$$/_freeTimes$$ 等字段保留上次值, 玩家可能看到过期排名与剩余次数.
根因
null check 只跳过赋值, 没把字段重置为默认值, "无世界BOSS数据" 与 "维持上次数据" 在 UI 上无差别.
修复建议
null 分支显式重置关键字段为 0/默认, 或统一调一个 _resetBossFields$$().
if(worldBossInfo) {
    // ... 现有赋值
} else {
    this._totalDamage$$ = 0;
    this._rank$$ = 0;
    this._freeTimes$$ = 0;
}