合并(写卡修订批·编排预检P1处置): 两卡预检P1六条修订落卡——卡A 补删件断编译面两处+探针枚举+pacing_queue断言退役义务+扫尾; 卡B §2重写全量普查现状(presentation≈356/core≈138)+T3全量迁移重写+T0三步(普查底册/跨批核面/刷导入)+atr通道+六组断言改写义务+W6词法四词+key模板泛化+估时重算6.75-9.25(中值8.0); README:170 补用例名; 复核记录第3轮留痕。凭据: 流水线闸 PASS(32条目/58行/7链/9卡)、文档域闸【验收通过】。合回前置检查读数见 pre-merge 钩子; post-merge 钩子推送触发远端 CI
ci / gates (push) Successful in 41s
ci / gates (push) Successful in 41s
This commit is contained in:
commit
0f6869000a
3 files changed
+56
-32
No files matched your search
@@ -167,7 +167,7 @@ tests/
|
|||||||
| 试玩日志器 ap_per_round 必填注入守卫(未注入拒绝开会话) | 表现与支撑 | `PlaytestLogger.start_session()` | `playtest_logger_guard_test.gd:_smoke_required_injection` |
|
| 试玩日志器 ap_per_round 必填注入守卫(未注入拒绝开会话) | 表现与支撑 | `PlaytestLogger.start_session()` | `playtest_logger_guard_test.gd:_smoke_required_injection` |
|
||||||
| 终局判定文案与战末账行 | HUD框架 | `BattleEndOverlay.open_victory()`/`open_defeat()`(verdict_line 由组合根直拼传入) | `ui_click_probe.gd:_ready`(终局浮层段) |
|
| 终局判定文案与战末账行 | HUD框架 | `BattleEndOverlay.open_victory()`/`open_defeat()`(verdict_line 由组合根直拼传入) | `ui_click_probe.gd:_ready`(终局浮层段) |
|
||||||
| B 区零文字带 | HUD框架 | `Main._ready()`(组合根场景树装配)+节点推进/恢复/商店/终局真实流 | `log_band_retired_test.gd:_test_no_log_view_node`;`log_band_retired_test.gd:_test_b_zone_zero_text` |
|
| B 区零文字带 | HUD框架 | `Main._ready()`(组合根场景树装配)+节点推进/恢复/商店/终局真实流 | `log_band_retired_test.gd:_test_no_log_view_node`;`log_band_retired_test.gd:_test_b_zone_zero_text` |
|
||||||
| 清图兑付浮字 | HUD框架 | `BoardZoneView.spawn_clear_reward_text()`(round_end clear 分支装配) | `clear_reward_text_test.gd:_test_spawn_and_decay`;`clear_reward_text_test.gd:_test_no_overlap` |
|
| 清图兑付浮字 | HUD框架 | `BoardZoneView.spawn_clear_reward_text()`(round_end clear 分支装配) | `clear_reward_text_test.gd:_test_spawn_and_decay`;`clear_reward_text_test.gd:_test_no_overlap`;`clear_reward_text_test.gd:_test_decay_curves` |
|
||||||
| 解锁拍零新增呈现 | HUD框架 | `RowPacer.enqueue()`→`consume_now()`(skill_unlock 高光行消费流,快照取消费时刻) | `unlock_zero_ui_test.gd:_test_zero_delta` |
|
| 解锁拍零新增呈现 | HUD框架 | `RowPacer.enqueue()`→`consume_now()`(skill_unlock 高光行消费流,快照取消费时刻) | `unlock_zero_ui_test.gd:_test_zero_delta` |
|
||||||
| 文案承载单点 | 数据配置与跨系统契约 | `TranslationServer.set_locale()` 后场景 `Label.tr()` 真实查表 | `player_copy_sweep_test.gd:_sweep_tr_roundtrip` |
|
| 文案承载单点 | 数据配置与跨系统契约 | `TranslationServer.set_locale()` 后场景 `Label.tr()` 真实查表 | `player_copy_sweep_test.gd:_sweep_tr_roundtrip` |
|
||||||
| 表行文案 key 化 | 数据配置与跨系统契约 | `ConfigDB._ready()`(autoload 加载真实表+schema 校验闸) | `config_table_key_test.gd:_test_display_key_format` |
|
| 表行文案 key 化 | 数据配置与跨系统契约 | `ConfigDB._ready()`(autoload 加载真实表+schema 校验闸) | `config_table_key_test.gd:_test_display_key_format` |
|
||||||
|
|||||||
@@ -10,18 +10,17 @@
|
|||||||
|
|
||||||
## 2. 现状事实(file:line 实查)
|
## 2. 现状事实(file:line 实查)
|
||||||
|
|
||||||
- 翻译管线现状=零:project.godot 无 internationalization 配置(grep 零命中;默认 locale=en——注册 zh_CN 翻译后须同批设 locale/fallback,否则 tr() 按 key 原样返回);`tr(`/`atr()` 在 game/presentation 与 game/core 零使用。
|
- 翻译管线现状=零:project.godot 无 internationalization 配置(grep 零命中;默认 locale=en——注册 zh_CN 翻译后须同批设 locale/fallback,否则 tr() 按 key 原样返回);`tr(`/`atr(` 在 game/presentation 与 game/core 零使用。
|
||||||
- 数据表文案值:game/data/tables/*.tres 含中文字段值约 220 个——display_name 162、desc 48、name_a/name_b 6、settlement.tres source_label_map 7 值(:9 起);另有 493 行中文为表内 `;` 注释(不迁)。
|
- **产品码全量字面量普查(2026-11-10 编排预检实核,非注释非诊断行)**:presentation ≈356 行、core ≈138 行——本卡迁移面=三目录全量(§2.5 红线全量口径,非窄清单)。presentation 整文件级清单(25+ 件):legend_overlay.gd:9-17(ENTRIES)、level_map_screen.gd:18-25、shop_overlay_view.gd(14)、career_overlay.gd(18,main_ui_build.gd:141 已接线)、settings_overlay.gd:49-91、save_select_overlay.gd(13)、status_panel.gd(13)、hero_info_panel_view.gd(13)、treasure_view.gd(16)、board_view.gd:9(u7 钉的 glyph「危」)、forge_view.gd(12)、curio_pick_overlay.gd:41/:48/:77/:81、tree_view.gd(8)、ap_bar_view.gd(9)、ui_kit.gd(4)、confirm_dialog.gd(4)、camp 系四件、ui_assembler.gd(8)、main_overlay_flow.gd(5)、debug_overlay.gd(24)等+既有零散清单(camp_shop_presenter 11/treasure_interact 5/curio_interact 6/main 16/main_adventure_flow 12/node_overlay 3/battle_end_overlay 2/status_slot_row 1/浮字装配 1)。core 件级:reward_grant.gd:100/:102(reason 中文值经 treasure_interact_controller.gd:103 toast 直达玩家)、effect_engine.gd(10)、battle_orchestrator.gd(8)、save_manager.gd(7)、treasure_items.gd(5)、combat_segment.gd(4)及结算四件 17 锚行(grant_segment:73/294/318/321/333/399/414/438/441、damage_controller:397/425/483/508/515/533、verdict_segment:38/42、round_cycle:109)。
|
||||||
- schema 键面:「display_name 空/为空」校验实查 13 处/11 件(feat:37、skill:67、status_effect:49、enemy:96、treasure_item:90、hero:23、meta_tree/level/reward/variation/shop 六件同类);键集同步面 4 处:feat_table.gd:16(ROW_KEYS)、meta_tree_table.gd:17(KEY_WHITELIST)、forge_table.gd:16(ROW_KEYS)、treasure_item_table.gd:50(KEY_WHITELIST),另 hero_table.gd:11 默认值——五处随键改名全数同步。
|
- 数据表文案值:tables/ 实存 21 张 .tres,含文案字段 13 张——display_name 163、desc 48、name_a/name_b 6、settlement.tres:9 source_label_map 7 值(总中文值行 229);另有 493 行中文为表内 `;` 注释(不迁)。
|
||||||
- core 结算行 display 拼装:core/settlement/grant_segment.gd:73/294(「专长·GP 入账 +%d」)/:318(「坑道小憩 未生效(满血)」)/:321/:333/:399/:414/:438/:441(「封印未中」)等约 15 处、core/damage_controller.gd:397/425(「+奥术%d(必中)」等)/483/508/515/533、core/settlement/verdict_segment.gd:38/42(「战斗失败/胜利」)、core/settlement/round_cycle.gd:109(「%s 解锁了 %s」)。
|
- schema 键面:「display_name 空/为空」校验 13 处/11 件(feat:36、skill:66、status_effect:48、enemy:95、treasure_item:89、hero:22、shop:51/:93/:119 及 meta_tree/level/reward/variation 五件);键集同步面五处:feat_table.gd:16(ROW_KEYS)、meta_tree_table.gd:17(KEY_WHITELIST)、forge_table.gd:16(ROW_KEYS)、treasure_item_table.gd:50(KEY_WHITELIST)、hero_table.gd:11(默认值「探险者」)。
|
||||||
- 呈现层残余文案(明细带退役批合入后,实测约 43 处级):camp_shop_presenter.gd show_toast 11 处、treasure_interact_controller.gd 5 处(:92/:110 读 rec.get("name"/"display_name"))、curio_interact_controller.gd 4 处+:79(「继续」)/:137(「专长获取…」)等、main.gd 9 处(:421 清图 toast 已由退役批改浮字装配)+:367(「第 %d 层通过!…」)/:374/:378/:381(终局按钮字串,退役批改写面)/:453/:497/:502、main_adventure_flow.gd 1 处+终局字串 4 处(:113「返回冒险」/:114「本局 GP 入账 · 合计 %d」/:181「战利品 GP +%d · 合计 %d」/:179「下一节点」)+:116/:231/:233/:241(「返回」「攻 +%d」「上限 +%d」「攻击 %s · 护甲 AC %s」)、views/node_overlay.gd 3 处(:20/:27/:29)、views/battle_end_overlay.gd:230/:231 固定名「战利品 GP」、main.gd:404 ks_summary「钥石 · 累计 %d」+HudPresenter.gp_summary_text/bonus_summary_text+hud_presenter.gd:344 phase_text 阶段指示文案组(退役批直连后落地所在)、views/status_slot_row.gd:40 SOURCE_NAMES、退役批新增的浮字装配字串 1 处。
|
- **既有断言钉值面(player_copy_sweep_test.gd 六组,迁移后须同步改写钉 key/译文)**:u1-u3(:50-66 hero 面板段头/兜底)、u4(:78-85 legend 钉值)、u5(:102-104 tooltip 来源注记)、u6(:105-106 source_label_map[mine_hit]==「危险格」)、u7(:153 glyph==「危」)、_sweep_refresh_toast_no_literals(:178-195——源锚=main.gd:721/:724 两 toast 中文字面量,「断言钉在场」与迁移清零对撞,改写义务本卡登记)。
|
||||||
- 场景静态文案:复核实证 game/ 全部 22 个 .tscn 中文字符=0(呈现层中文实际在 .gd 动态装配,归上方呈现层面)——无独立场景迁移面,W5 降为核验行。
|
- 行号基线声明:本节行号=卡A(明细带退役批)执行前实测;卡A 先行改动后行号漂移由 T0 核面步统一重算(§17③)。
|
||||||
- 退役批基线:views/board_zone_view.gd `spawn_clear_reward_text(text: String)` 在役(浮字文案由装配处传入)。
|
- 场景静态文案:复核实证 game/ 全部 22 个 .tscn 中文字符=0——无独立场景迁移面,W5 降为核验行。
|
||||||
|
|
||||||
## 3. 设计契约
|
## 3. 设计契约
|
||||||
|
|
||||||
- 🔴 文案值单点:玩家可见文案值只住 game/data/l10n/strings.csv(key 列+zh_CN 列);代码、数据表行、场景文件零文案字面量(code-conventions §2.5)。
|
- 🔴 文案值单点:玩家可见文案值只住 game/data/l10n/strings.csv(key 列+zh_CN 列);代码、数据表行、场景文件零文案字面量(code-conventions §2.5)。
|
||||||
- 🔴 key 模板:点分 `<表域>.<行id>.<name|desc>`(表行)/`<界面域>.<用途>`(界面文案);全库唯一,登记于 strings.csv;禁两处同名异值。
|
- 🔴 key 模板:点分 `<表域>.<行id或map键>.<字段>`(表行,覆盖 name/name_a/name_b/desc/source_label_map 子键)/`<界面域>.<用途>`(界面文案);全库唯一,登记于 strings.csv;禁两处同名异值。
|
||||||
- 🔴 core 层只发 key 不取文案:结算行 display 字段值改 display_key(行协议字段形态变更已由战斗结算 v2.1 覆盖);core 禁 import 翻译服务取中文。
|
- 🔴 core 层只发 key 不取文案:结算行 display 字段值改 display_key(行协议字段形态变更已由战斗结算 v2.1 覆盖);core 禁 import 翻译服务取中文。
|
||||||
- 🔴 schema 改名同步:display_key/desc_key 进各表 ROW_KEYS/KEY_WHITELIST,空校验改 key 格式校验(非空+点分),禁保留旧键双轨。
|
- 🔴 schema 改名同步:display_key/desc_key 进各表 ROW_KEYS/KEY_WHITELIST,空校验改 key 格式校验(非空+点分),禁保留旧键双轨。
|
||||||
- 🔴 日志落盘零文案不变:text/display 不落盘边界(战斗结算 v2.1)不因本卡改动。
|
- 🔴 日志落盘零文案不变:text/display 不落盘边界(战斗结算 v2.1)不因本卡改动。
|
||||||
@@ -29,8 +28,8 @@
|
|||||||
|
|
||||||
## 4. 范围边界
|
## 4. 范围边界
|
||||||
|
|
||||||
做:上列管线建立、三处迁移(表行/core 行/呈现层)、场景 key 化、漏网清零断言、能力表同批维护。
|
做:上列管线建立、三处迁移(表行 13 张/core 行全量/呈现层全量 ≈356 行)、漏网清零断言、能力表同批维护。
|
||||||
不做(去向):诊断文案(push_error/assert/日志)与 sim/probe/tests 文字(code-conventions §2.5 豁免面);493 行 .tres 注释;静态扫描闸新增 S 规则(tools/ 面=工程改动直改类,登记待办清单另行批);多语言(语言列扩展归设置与本地化后置);UI 呈现观感(零视觉变化,golden 基线不受影响——场景 text 值渲染结果逐像素不变)。
|
不做(去向):诊断文案(push_error/assert/errs.append/fatal_screen/_fatal/logger.log/日志)与 sim/probe/tests 文字(code-conventions §2.5 豁免面);493 行 .tres 注释;静态扫描闸新增 S 规则(tools/ 面=工程改动直改类,登记待办清单另行批);多语言(语言列扩展归设置与本地化后置);UI 呈现观感(零视觉变化,golden 基线不受影响——场景 text 值渲染结果逐像素不变)。
|
||||||
|
|
||||||
## 5. 关联文档同步面
|
## 5. 关联文档同步面
|
||||||
|
|
||||||
@@ -48,21 +47,24 @@
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| game/data/l10n/strings.csv | 新增:文案值唯一承载(key,zh_CN 两列+表头) | 是(W1) |
|
| game/data/l10n/strings.csv | 新增:文案值唯一承载(key,zh_CN 两列+表头) | 是(W1) |
|
||||||
| game/project.godot | 翻译资源注册(internationalization/translations) | 是(W1) |
|
| game/project.godot | 翻译资源注册(internationalization/translations) | 是(W1) |
|
||||||
| game/data/tables/*.tres(18 张) | display_name→display_key、desc→desc_key,值改 key | 是(W2) |
|
| game/data/tables/*.tres(含文案字段 13 张) | display_name→display_key、desc→desc_key,值改 key | 是(W2) |
|
||||||
| game/data/schemas/ 十一件 | 键改名+key 格式校验(13 处「display_name 空/为空」校验全集+键集同步面五处) | 是(W2) |
|
| game/data/schemas/ 十一件 | 键改名+key 格式校验(13 处「display_name 空/为空」校验全集+键集同步面五处) | 是(W2) |
|
||||||
| game/core/config_db.gd 及读取面 | display_name 读取改 display_key(透传 key,取文案归呈现) | 是(W2) |
|
| game/core/config_db.gd 及读取面 | display_name 读取改 display_key(透传 key,取文案归呈现) | 是(W2) |
|
||||||
| game/core/settlement/grant_segment.gd、damage_controller.gd、verdict_segment.gd、round_cycle.gd | display 拼装改 key 发射(插值数字留数值字段) | 是(W3) |
|
| game/core/settlement/grant_segment.gd、damage_controller.gd、verdict_segment.gd、round_cycle.gd | display 拼装改 key 发射(插值数字留数值字段) | 是(W3) |
|
||||||
| game/presentation/ 五控制器/Presenter+views(toast/账行/SOURCE_NAMES/浮字装配) | 字面量改 tr("KEY") | 是(W4) |
|
| game/presentation/ 五控制器/Presenter+views(toast/账行/SOURCE_NAMES/浮字装配) | 字面量改 tr("KEY") | 是(W4) |
|
||||||
| game/presentation/views/battle_end_overlay.gd | 固定名「战利品 GP」改 tr | 是(W4) |
|
| game/presentation/views/battle_end_overlay.gd | 固定名「战利品 GP」改 tr | 是(W4) |
|
||||||
| game/tests/unit/presentation/player_copy_sweep_test.gd | 扩展三函数(_sweep_tr_roundtrip/_sweep_no_literal_toast/_sweep_zero_product_literals——复用既有扫描件,见 §12) | 是(W1/W4/W6) |
|
| game/tests/unit/presentation/player_copy_sweep_test.gd | 扩展三函数+六组既有钉值断言同步改写(u1-u7/refresh_toast——见 §2 断言钉值面) | 是(W1/W4/W6) |
|
||||||
| game/tests/unit/core/config_table_key_test.gd | 新增:表行 key 格式断言(W2) | 是 |
|
| game/tests/unit/core/config_table_key_test.gd | 新增:表行 key 格式断言(W2) | 是 |
|
||||||
| game/tests/README.md | 能力行同批维护(写卡段执行,已入表) | 否 |
|
| game/tests/README.md | 能力行同批维护(写卡段执行,已入表) | 否 |
|
||||||
|
|
||||||
## 7. 任务卡
|
## 7. 任务卡
|
||||||
|
|
||||||
### T0 管线建立(0.5 日)
|
### T0 管线建立与核面(0.75 日)
|
||||||
- [ ] 新建 game/data/l10n/strings.csv:表头 `keys,zh_CN`+首批 3 个探路 key(含 1 个带 %d 占位)
|
- [ ] 新建 game/data/l10n/strings.csv:表头 `keys,zh_CN`+首批 3 个探路 key(含 1 个带 %d 占位)
|
||||||
- [ ] project.godot 注册翻译资源(设置键 `internationalization/locale/translations`)+**locale 设定**(`internationalization/locale/fallback` 或 test 默认 `TranslationServer.set_locale("zh_CN")`——缺此步 tr() 按 key 原样返回,W1 必红)
|
- [ ] project.godot 注册翻译资源(设置键 `internationalization/locale/translations`)+**locale 设定**(`internationalization/locale/fallback` 或 test 默认 `TranslationServer.set_locale("zh_CN")`——缺此步 tr() 按 key 原样返回,W1 必红)
|
||||||
|
- [ ] **跨批核面步**:卡A(明细带退役批)合入后按卡A 终态重算本卡 §2 行号(file:line 窄复核,漂移处就地更新清单)
|
||||||
|
- [ ] **全量普查脚本步**:跑字面量普查(python 读盘扫描三目录非注释非豁免行,豁免词法见 W6),逐行清单落 reports/iter<N>-实现报告附录——T3 迁移对账的唯一底册
|
||||||
|
- [ ] **刷导入步**:`--editor --quit` 触发 strings.csv→.translation 导入(全新 checkout 无导入则 W1 必红)
|
||||||
- [ ] 冒烟断言:一个探路 Label 经 tr() 取到中文(player_copy_sweep_test.gd:_sweep_tr_roundtrip 首个用例)
|
- [ ] 冒烟断言:一个探路 Label 经 tr() 取到中文(player_copy_sweep_test.gd:_sweep_tr_roundtrip 首个用例)
|
||||||
- [ ] 接口产出:strings.csv 路径常量 `STRINGS_CSV_PATH`(归 T4 闸用)
|
- [ ] 接口产出:strings.csv 路径常量 `STRINGS_CSV_PATH`(归 T4 闸用)
|
||||||
|
|
||||||
@@ -73,36 +75,39 @@
|
|||||||
- [ ] schema 校验闸+表驱动单元全绿
|
- [ ] schema 校验闸+表驱动单元全绿
|
||||||
- [ ] 接口产出:无新签名(键名替换);验证:单元全套件
|
- [ ] 接口产出:无新签名(键名替换);验证:单元全套件
|
||||||
|
|
||||||
### T2 core 行 key 化(0.5–1 日)
|
### T2 core 行 key 化(1–1.5 日)
|
||||||
- [ ] grant_segment/damage_controller/verdict_segment/round_cycle 的 display 拼装字串改 key 常量(`const DISPLAY_KEY_*`),插值数字留原数值字段
|
- [ ] grant_segment/damage_controller/verdict_segment/round_cycle 的 display 拼装字串改 key 常量(`const DISPLAY_KEY_*`),插值数字留原数值字段
|
||||||
|
- [ ] core 其余玩家可见面 key 化(按 T0 普查底册逐件):reward_grant.gd:100/:102 reason 中文值(经 treasure_interact_controller.gd:103 toast 直达玩家)改 reason key+呈现面 tr、effect_engine/battle_orchestrator/save_manager/treasure_items/combat_segment 逐件按消费面分类(玩家可见→key;纯诊断→§2.5 豁免登记)
|
||||||
- [ ] 单元断言:结算行 display 值全库无中文字符(新用例挂 battle_settlement 套件)
|
- [ ] 单元断言:结算行 display 值全库无中文字符(新用例挂 battle_settlement 套件)
|
||||||
- [ ] 接口取用:无;产出:DISPLAY_KEY_* 常量名清单(T3 无消费、登记待办供生涯批取用)
|
- [ ] 接口取用:无;产出:DISPLAY_KEY_* 常量名清单(T3 无消费、登记待办供生涯批取用)
|
||||||
|
|
||||||
### T3 呈现层迁移(1–1.75 日)
|
### T3 呈现层全量迁移(3.5–5.5 日)
|
||||||
- [ ] 残余玩家可见文案约 43 处级改 tr("KEY")——清单以 §2 现状事实为唯一依据(camp_shop 11/curio 4+2/treasure 5/main 9+6/adventure_flow 1+8/node_overlay 3/battle_end 2/ks 与 HudPresenter 3+phase_text 组/SOURCE_NAMES 1/浮字 1)
|
- [ ] 按 T0 普查底册逐件迁移 presentation ≈356 行(§2 整文件级清单 25+ 件+零散清单全量)改 tr("KEY")——每件迁完即跑该件对应测试(改完即测)
|
||||||
|
- [ ] **atr() 通道**:hud_presenter.gd 等 static 语境(非 Node 实例)用 `atr()`(Object 级翻译)——hud_presenter 十个 static 函数逐个过,禁为取文案把 static 改实例
|
||||||
- [ ] 带插值的字串:tr 取模板后 `%` 格式化(tr("camp.buy_denied") % 值形态)
|
- [ ] 带插值的字串:tr 取模板后 `%` 格式化(tr("camp.buy_denied") % 值形态)
|
||||||
|
- [ ] **player_copy_sweep_test 六组钉值断言同步改写**:u1-u7 改钉 key 或 tr 后译文、_sweep_refresh_toast_no_literals 改钉 tr 调用形态(main.gd:721/:724 两 toast 迁 tr 后源锚换 key)
|
||||||
- [ ] 接口取用:strings.csv(T0);验证:单元+冒烟
|
- [ ] 接口取用:strings.csv(T0);验证:单元+冒烟
|
||||||
|
|
||||||
### T4 漏网清零与收口(0.5 日)
|
### T4 漏网清零与收口(0.5 日)
|
||||||
- [ ] player_copy_sweep_test 扩展静态断言 _sweep_zero_product_literals:grep 产品码三目录(core/data/presentation)非豁免文件的玩家可见中文字面量=0(诊断文案按 §2.5 豁免词法:push_error/assert/push_warning/_diag 行白名单);.tscn 面纳入扫描词法(实证现值 0,防回归)
|
- [ ] player_copy_sweep_test 扩展静态断言 _sweep_zero_product_literals:grep 产品码三目录(core/data/presentation)非豁免文件的玩家可见中文字面量=0(诊断文案按 §2.5 豁免词法:push_error/assert/push_warning/_diag/errs.append/fatal_screen/_fatal/logger.log 行白名单);.tscn 面纳入扫描词法(实证现值 0,防回归)
|
||||||
- [ ] 编辑器生成 POT 核对漏网(手动步,读数进实现报告)
|
- [ ] 编辑器生成 POT 核对漏网(手动步,读数进实现报告)
|
||||||
- [ ] 产出物落位卡:reports/iter<N>-实现报告、反哺点清单(同步面 5 行)
|
- [ ] 产出物落位卡:reports/iter<N>-实现报告、反哺点清单(同步面 5 行)
|
||||||
|
|
||||||
估时合计:3.5–5.25 日(中值 4.375)。
|
估时合计:6.75–9.25 日(中值 8.0)。
|
||||||
|
|
||||||
## 8. 验证闸(改动—验收对照表)
|
## 8. 验证闸(改动—验收对照表)
|
||||||
|
|
||||||
| 需求点 | 改动(文件:行为) | 验收测试 | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
| 需求点 | 改动(文件:行为) | 验收测试 | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||||
|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|
|
||||||
| W1 管线端到端 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」文案值只住` | strings.csv+project.godot 翻译注册+locale 设定 | player_copy_sweep_test::_sweep_tr_roundtrip | 单元 | 场景 Label 实例化 | tr("探路key") 返回值=csv 中文列值 | 新增:文案承载单点 |
|
| W1 管线端到端 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」文案值只住` | strings.csv+project.godot 翻译注册+locale 设定 | player_copy_sweep_test::_sweep_tr_roundtrip | 单元 | 场景 Label 实例化 | tr("探路key") 返回值=csv 中文列值 | 新增:文案承载单点 |
|
||||||
| W2 表行 key 化 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」数据表文案字段更名` | 18 tres+十 schema | config_table_key_test::_test_display_key_format+schema 校验闸 | 单元 | ConfigDB 加载真实表 | 行键名=display_key/desc_key+值点分格式+旧键 grep=0(十件全集) | 新增:表行文案 key 化 |
|
| W2 表行 key 化 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」数据表文案字段更名` | 13 张 tres+十一 schema | config_table_key_test::_test_display_key_format+schema 校验闸 | 单元 | ConfigDB 加载真实表 | 行键名=display_key/desc_key+值点分格式+旧键 grep=0(十一件全集) | 新增:表行文案 key 化 |
|
||||||
| W3 core 行 key 化 `design/gdd/systems/战斗循环/战斗结算.md「明细流水」数据表行只登记文案 key` | 结算四件 display 发射 | battle_settlement 套件新用例 | 单元 | 真实结算流(round_end 驱动) | 发射行 display 值无中文字符 | 既有:表行文案 key 化 |
|
| W3 core 行 key 化 `design/gdd/systems/战斗循环/战斗结算.md「明细流水」数据表行只登记文案 key` | 结算四件 display 发射 | battle_settlement 套件新用例 | 单元 | 真实结算流(round_end 驱动) | 发射行 display 值无中文字符 | 既有:表行文案 key 化 |
|
||||||
| W4 呈现层迁移 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」取文案只经` | toast 33 处/账行/SOURCE_NAMES/浮字/node_overlay | player_copy_sweep_test::_sweep_no_literal_toast | 单元 | 真实 UI 交互流 | show_toast/tr 调用点字面量 grep=0 | 既有:玩家面文案与危险格格面字形 |
|
| W4 呈现层迁移 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」取文案只经` | toast 33 处/账行/SOURCE_NAMES/浮字/node_overlay | player_copy_sweep_test::_sweep_no_literal_toast | 单元 | 真实 UI 交互流 | show_toast/tr 调用点字面量 grep=0 | 既有:玩家面文案与危险格格面字形 |
|
||||||
| W5 场景文案核验 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」场景静态` | .tscn 静态中文核验(复核实证 game/ 22 个 .tscn 中文=0——动态装配中文已归 W4 面) | 渲染闸 golden 比对+_sweep_no_literal_toast 场景面 | 探针+单元 | 渲染闸跑批 | 逐像素不变;.tscn 中文字面量=0(断言纳入 W6 扫描词法) | 既有:文案漏网清零 |
|
| W5 场景文案核验 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」场景静态` | .tscn 静态中文核验(复核实证 game/ 22 个 .tscn 中文=0——动态装配中文已归 W4 面) | 渲染闸 golden 比对+_sweep_no_literal_toast 场景面 | 探针+单元 | 渲染闸跑批 | 逐像素不变;.tscn 中文字面量=0(断言纳入 W6 扫描词法) | 既有:文案漏网清零 |
|
||||||
| W6 漏网清零 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」禁在` | 静态断言 | player_copy_sweep_test::_sweep_zero_product_literals | 单元 | 闸跑批(读盘 grep) | 产品码三目录豁免词法外中文字面量=0 | 新增:文案漏网清零 |
|
| W6 漏网清零 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」禁在` | 静态断言 | player_copy_sweep_test::_sweep_zero_product_literals | 单元 | 闸跑批(读盘 grep) | 产品码三目录豁免词法外中文字面量=0 | 新增:文案漏网清零 |
|
||||||
|
|
||||||
测试方式两分法:W1–W4、W6 归调试接口验;场景文案渲染观感归用户目检(登记不阻塞)。
|
测试方式两分法:W1–W4、W6 归调试接口验;场景文案渲染观感归用户目检(登记不阻塞)。
|
||||||
测试削弱申报:无删旧断言;display_name 空串校验改 key 格式校验=判据收紧非放宽。
|
测试削弱申报:无删旧断言;player_copy_sweep_test 六组钉值断言改写=钉值对象从字面量换 key/译文,断言强度不减;display_name 空串校验改 key 格式校验=判据收紧非放宽。
|
||||||
独立验收审计:reports/iter<N>-验收审计-<日期>.md;高档全量审计。
|
独立验收审计:reports/iter<N>-验收审计-<日期>.md;高档全量审计。
|
||||||
|
|
||||||
## 9. 异常分级
|
## 9. 异常分级
|
||||||
@@ -160,6 +165,13 @@ key 命名的域段用词(模板内);strings.csv 行排序(按域分组
|
|||||||
| 2 | 同上 | N8 卡A §14「新增函数两处」实为一处 | 自判 | 改「一处」 |
|
| 2 | 同上 | N8 卡A §14「新增函数两处」实为一处 | 自判 | 改「一处」 |
|
||||||
| 2 | 同上 | N9 行号/编号 drift:battle.md:194→:195、main.gd:420→:421、ks :403→:404、卡B T0「T3 闸用」→T4 | 自判 | 逐处改正 |
|
| 2 | 同上 | N9 行号/编号 drift:battle.md:194→:195、main.gd:420→:421、ks :403→:404、卡B T0「T3 闸用」→T4 | 自判 | 逐处改正 |
|
||||||
|
|
||||||
|
| 3 | 编排预检只读子代理(Explore 分片,未参与撰写) | P1-1 呈现层迁移清单与 W4/W6 全量判据不闭合(实测 ≈356 行 vs 清单 ≈50 处,25+ 整文件漏项) | 补写 | §2 重写为全量普查现状(整文件级清单入卡);T3 重写全量迁移(3.5–5.5 日);T0 补普查脚本步(底册落实现报告)——W4/W6 判据不变,迁移面补齐闭合 |
|
||||||
|
| 3 | 同上 | P1-2 core 面漏项(reward_grant reason 经 toast 直达玩家等 ≈138 行) | 补写 | T2 扩面(结算四件+core 其余件按消费面分类迁移);§2 补件级清单 |
|
||||||
|
| 3 | 同上 | P1-3 player_copy_sweep 六组钉值断言与 W2/W4/W6 方向对撞未登记改写义务 | 补写 | §2 补断言钉值面;T3 补六组同步改写步;测试削弱申报补强度不减说明 |
|
||||||
|
| 3 | 同上 | P1-4 _sweep_refresh_toast_no_literals 源锚=main.gd:721/:724 中文字面量,迁移清零与断言钉在场对撞 | 补写 | 两行入迁移面(T3 全量覆盖);断言改写义务同上落卡 |
|
||||||
|
| 3 | 同上 | P2 W2 行「十 schema/十件」残留;「18 张 tres」失实(21/13);T0 缺核面步与刷导入步;hud_presenter static 无 atr 通道;W6 词法缺 errs.append/fatal_screen/_fatal/logger.log;§2 行号未按卡A 终态重算;main/treasure/adventure_flow 漏行 12 处 | 补写 | 逐条落卡(W2 十一件/T0 两步/T3 atr/W6 词法/基线声明+T0 核面步/§2 全量清单吸收) |
|
||||||
|
| 3 | 同上 | P3 key 模板不覆盖 name_a/b 与 source_label_map;schema 行锚 +1 漂移;「六件同类」列 5 计 6;T0 缺刷导入 | 自判 | 模板泛化「<表域>.<行id或map键>.<字段>」(§3 契约同步);行号按预检实测改正;T0 补刷导入步 |
|
||||||
|
|
||||||
引擎技术面三查(同轮):tr/TranslationServer 回退行为、Tween、Label 描边在 4.7 存在且行为如卡——B3/B8 已按引擎事实落卡,无未判发现。
|
引擎技术面三查(同轮):tr/TranslationServer 回退行为、Tween、Label 描边在 4.7 存在且行为如卡——B3/B8 已按引擎事实落卡,无未判发现。
|
||||||
|
|
||||||
## 17. 复核自审七查执行记录
|
## 17. 复核自审七查执行记录
|
||||||
|
|||||||
@@ -13,12 +13,13 @@ B 区明细带(battle_log_view)整条退役:组件、挂载、六类冒险
|
|||||||
- `game/presentation/views/battle_log_view.gd`(全件 70 行,实测):明细带壳——挖掘期摘要位(`_summary`,battle_log_view.gd:62 仅 clear、全库无写入点=恒空)+结算期叙述行 RichTextLabel(`_log.visible = settle`,battle_log_view.gd:69)+提示字「上轮摘要(回看归「生涯」)」(:56)。
|
- `game/presentation/views/battle_log_view.gd`(全件 70 行,实测):明细带壳——挖掘期摘要位(`_summary`,battle_log_view.gd:62 仅 clear、全库无写入点=恒空)+结算期叙述行 RichTextLabel(`_log.visible = settle`,battle_log_view.gd:69)+提示字「上轮摘要(回看归「生涯」)」(:56)。
|
||||||
- 引用面 10 文件:main_ui_build.gd:45(装配)、scenes/adventure_screen.gd:12-13(壳声明)、ui_battle.gd、ui_assembler.gd、battle_stage_view.gd、hud_presenter.gd、main.gd、main_adventure_flow.gd、main_debug_flow.gd、views/ui_kit.gd:484(注释)。
|
- 引用面 10 文件:main_ui_build.gd:45(装配)、scenes/adventure_screen.gd:12-13(壳声明)、ui_battle.gd、ui_assembler.gd、battle_stage_view.gd、hud_presenter.gd、main.gd、main_adventure_flow.gd、main_debug_flow.gd、views/ui_kit.gd:484(注释)。
|
||||||
- 叙述行写入点:main_adventure_flow.gd:36(关卡开场)/65(节点横幅)/70(奖励)/75(恢复)/88(商店)/170(岔路)、main_debug_flow.gd:90(调试开场)。Narrator 其余消费点(删件断编译面,全数登记):main_adventure_flow.gd:109(adventure_summary_text)/111(keystone_settle_text)/179(battle_end_text)喂 end_overlay、main.gd:373/377/380(battle_end_text 开浮层)、hud_presenter.gd:344(phase_text——阶段指示文案,随带退役改组合根直拼或删除)、curio_interact_controller.gd(10 处 `Narrator.` 调用)、curio_pick_overlay.gd(仅 :3/:90 注释引用,零代码消费——删注释即可)。
|
- 叙述行写入点:main_adventure_flow.gd:36(关卡开场)/65(节点横幅)/70(奖励)/75(恢复)/88(商店)/170(岔路)、main_debug_flow.gd:90(调试开场)。Narrator 其余消费点(删件断编译面,全数登记):main_adventure_flow.gd:109(adventure_summary_text)/111(keystone_settle_text)/179(battle_end_text)喂 end_overlay、main.gd:373/377/380(battle_end_text 开浮层)、hud_presenter.gd:344(phase_text——阶段指示文案,随带退役改组合根直拼或删除)、curio_interact_controller.gd(10 处 `Narrator.` 调用)、curio_pick_overlay.gd(仅 :3/:90 注释引用,零代码消费——删注释即可)。
|
||||||
- 删件测试断编译面(load/实例化 battle_narrator 与 battle_log_view 的测试件,等价改写义务全数登记):tests/unit/presentation/player_copy_sweep_test.gd:59(load battle_narrator)/:110-112(load battle_log_view 并走方法表)、stage_background_test.gd:194-201(实例化 log_view+log_band 几何断言)、theme_projection_test.gd:46/:385(_smoke_battle_log_view)/:473-480(Narrator.level_open_line 断言)、tests/unit/core/feat_vouchers_test.gd:294-296(load battle_log_view);core/battle_orchestrator.gd:19(注释提 battle_log_view._format_row——注释同步删)。
|
- 删件测试断编译面(load/实例化 battle_narrator 与 battle_log_view 的测试件,等价改写义务全数登记;第六处=adventure_feats_test):tests/unit/presentation/player_copy_sweep_test.gd:59(load battle_narrator)/:110-112(load battle_log_view 并走方法表)、stage_background_test.gd:194-201(实例化 log_view+log_band 几何断言)、theme_projection_test.gd:46/:385(_smoke_battle_log_view)/:473-480(Narrator.level_open_line 断言)、tests/unit/core/feat_vouchers_test.gd:294-296(load battle_log_view);tests/unit/core/adventure_feats_test.gd:780(load battle_narrator 直调 feat_card_text);core/battle_orchestrator.gd:19(注释提 battle_log_view._format_row——注释同步删)。
|
||||||
- 清图 toast:main.gd:420 `show_toast("清图奖励:%s"…)`;Boss 解锁技名 toast:row_pacer.gd:94 `show_toast(String(row.get("display_name","")))`。
|
- 清图 toast:main.gd:420 `show_toast("清图奖励:%s"…)`;Boss 解锁技名 toast:row_pacer.gd:94 `show_toast(String(row.get("display_name","")))`。
|
||||||
- 结算明细回看:views/settlement_review_overlay.gd 全件零调用(唯一引用=ui_kit.gd:484 注释)。
|
- 结算明细回看:views/settlement_review_overlay.gd 全件零调用(唯一引用=ui_kit.gd:484 注释)。
|
||||||
- 布局字段:battle_layout_table.gd:11-25(`log_band_h_dig`/`log_band_h_settle` 定义+域校验);游戏视图经 battle_log_view._init 读取(layout.log_band_h_dig,battle_log_view.gd:18)。
|
- 布局字段:battle_layout_table.gd:11-25(`log_band_h_dig`/`log_band_h_settle` 定义+域校验);游戏视图经 battle_log_view._init 读取(layout.log_band_h_dig,battle_log_view.gd:18)。
|
||||||
- parsed_text/叙述行消费:probe/ui_probe.gd:113(等「节点 1/」)、probe/ui_click_probe.gd:624/684/1119/1152/1569(等「· 种子」叙述行出现)、tests/unit/presentation/battle_log_zero_text_test.gd:80-90(B 区零新增行断言)。
|
- parsed_text/叙述行消费:probe/ui_probe.gd:113(等「节点 1/」)、probe/ui_click_probe.gd:624/684/1119/1152/1569(等「· 种子」叙述行出现)、tests/unit/presentation/battle_log_zero_text_test.gd:80-90(B 区零新增行断言)。
|
||||||
- 恢复点一手呈现:views/node_overlay.gd:26 `show_rest(healed, hp_after, max_hp)`(main_adventure_flow.gd:74 调用)——B 区 rest_line 纯重复。
|
- 恢复点一手呈现:views/node_overlay.gd:26 `show_rest(healed, hp_after, max_hp)`(main_adventure_flow.gd:74 调用)——B 区 rest_line 纯重复。
|
||||||
|
- 套件清单引用:tests/run_all.gd:195(battle_log_zero_text_test)、:261(battle_narrator_test)——删件后 spawn 缺脚本=闸红,清单两行随删。
|
||||||
- 渲染基线:game/tests/golden/battle_screen.png、board_L1_dungeon.png、board_L2_underdark.png、board_L3_deep_underdark.png(明细带在画者受影响)。
|
- 渲染基线:game/tests/golden/battle_screen.png、board_L1_dungeon.png、board_L2_underdark.png、board_L3_deep_underdark.png(明细带在画者受影响)。
|
||||||
|
|
||||||
## 3. 设计契约
|
## 3. 设计契约
|
||||||
@@ -63,6 +64,8 @@ B 区明细带(battle_log_view)整条退役:组件、挂载、六类冒险
|
|||||||
| game/tests/unit/presentation/clear_reward_text_test.gd、log_band_retired_test.gd、unlock_zero_ui_test.gd | 新增(V2/V3、V1/V5、V4) | 是 |
|
| game/tests/unit/presentation/clear_reward_text_test.gd、log_band_retired_test.gd、unlock_zero_ui_test.gd | 新增(V2/V3、V1/V5、V4) | 是 |
|
||||||
| game/probe/ui_probe.gd、ui_click_probe.gd | 等锚改写(叙述行锚→棋盘/意图锚) | 是(V7) |
|
| game/probe/ui_probe.gd、ui_click_probe.gd | 等锚改写(叙述行锚→棋盘/意图锚) | 是(V7) |
|
||||||
| game/tests/unit/presentation/battle_log_zero_text_test.gd | 删除(被测对象退役)+新增明细带退役断言归属测试 | 是(V1) |
|
| game/tests/unit/presentation/battle_log_zero_text_test.gd | 删除(被测对象退役)+新增明细带退役断言归属测试 | 是(V1) |
|
||||||
|
| game/tests/run_all.gd | 套件清单两行随删件同步(:195/:261) | 是(V1/V5) |
|
||||||
|
| game/tests/unit/core/adventure_feats_test.gd | :780 load battle_narrator 直调 feat_card_text——等价改写(feat 文案读数改直取或删该用例段) | 是(V5) |
|
||||||
| game/tests/README.md | 能力行同批维护(本卡写卡段执行,非实现批) | 否 |
|
| game/tests/README.md | 能力行同批维护(本卡写卡段执行,非实现批) | 否 |
|
||||||
| game/tests/golden/battle_screen.png、board_L3_deep_underdark.png | 基线换代(逐张呈用户审核) | 是(V6) |
|
| game/tests/golden/battle_screen.png、board_L3_deep_underdark.png | 基线换代(逐张呈用户审核) | 是(V6) |
|
||||||
|
|
||||||
@@ -76,26 +79,29 @@ B 区明细带(battle_log_view)整条退役:组件、挂载、六类冒险
|
|||||||
### T1 明细带与叙述行退役(1–1.5 日)
|
### T1 明细带与叙述行退役(1–1.5 日)
|
||||||
- [ ] 删 battle_log_view.gd、settlement_review_overlay.gd、battle_narrator.gd、battle_narrator_test.gd 四件(测试件随被测对象退役,语义由 log_band_retired_test 承接)
|
- [ ] 删 battle_log_view.gd、settlement_review_overlay.gd、battle_narrator.gd、battle_narrator_test.gd 四件(测试件随被测对象退役,语义由 log_band_retired_test 承接)
|
||||||
- [ ] 摘除 6.结构图所列壳与引用(adventure_screen 壳声明、ui_battle/ui_assembler 装配、hud_presenter phase_text 消费改组合根直拼或删除、curio_interact_controller 十处消费点改写、curio_pick_overlay 两处注释删净)+终局消费点改写:main_adventure_flow.gd:109/111/179 与 main.gd:373/377/380(battle_end_text 退役,verdict_line/摘要串由组合根按 battle_result 与 runner 读数直拼——能力锚=game/tests/README.md「终局判定文案与战末账行」行)
|
- [ ] 摘除 6.结构图所列壳与引用(adventure_screen 壳声明、ui_battle/ui_assembler 装配、hud_presenter phase_text 消费改组合根直拼或删除、curio_interact_controller 十处消费点改写、curio_pick_overlay 两处注释删净)+终局消费点改写:main_adventure_flow.gd:109/111/179 与 main.gd:373/377/380(battle_end_text 退役,verdict_line/摘要串由组合根按 battle_result 与 runner 读数直拼——能力锚=game/tests/README.md「终局判定文案与战末账行」行)
|
||||||
- [ ] 测试断编译面等价改写(§2 清单五处):player_copy_sweep_test/stage_background_test/theme_projection_test/feat_vouchers_test 的 load 与断言改写(log_band 几何断言退役);battle_orchestrator.gd:19 删注
|
- [ ] 测试断编译面等价改写(§2 清单六处):player_copy_sweep_test/stage_background_test/theme_projection_test/feat_vouchers_test/adventure_feats_test 的 load 与断言改写(log_band 几何断言退役);battle_orchestrator.gd:19 删注
|
||||||
|
- [ ] tests/run_all.gd 套件清单 :195/:261 两行随删件同步移除
|
||||||
|
- [ ] 注释扫尾:battle_layout_table.gd:2(消费面注释提 BattleLogView)、views/ui_kit.gd:207(语义档注释;HEX_LOG_* 死常量族随带退役一并清)
|
||||||
- [ ] main_adventure_flow.gd 删六处 append_bb;main_debug_flow.gd 删调试叙述行
|
- [ ] main_adventure_flow.gd 删六处 append_bb;main_debug_flow.gd 删调试叙述行
|
||||||
- [ ] row_pacer.gd 删解锁技名 toast(skill_unlock 行呈现侧不再消费 display_name)
|
- [ ] row_pacer.gd 删解锁技名 toast(skill_unlock 行呈现侧不再消费 display_name)
|
||||||
- [ ] 接口产出:无(纯删改);验证:单元+冒烟 exit 0
|
- [ ] 接口产出:无(纯删改);验证:单元+冒烟 exit 0
|
||||||
|
|
||||||
### T2 清图兑付浮字(0.5–1 日)
|
### T2 清图兑付浮字(0.5–1 日)
|
||||||
- [ ] board_zone_view.gd 新增 `func spawn_clear_reward_text(text: String) -> void`:单行 Label(字高 17px、暖白 #F5EAD0、2px 深墨描边、微金光晕),自棋盘中央上方起、2.5s 内**上浮约 40px**(位移量,非起始定位——battle.md:195)并渐隐(Tween,尊重减动效开关→直达终态)
|
- [ ] board_zone_view.gd 新增 `func spawn_clear_reward_text(text: String) -> void`:单行 Label(字高 17px、暖白 #F5EAD0、2px 深墨描边、微金光晕),自棋盘中央上方起、2.5s 内**上浮约 40px**(位移量,非起始定位——battle.md:195)并渐隐(Tween,尊重减动效开关→直达终态)
|
||||||
- [ ] main.gd 清图 handler(:421 show_toast):`show_toast("清图奖励:%s"…)` 替换为 `board_zone.spawn_clear_reward_text(兑付值)`——兑付值取现行 toast 同源(row.get("display") 清洗后内容),暂以呈现层字串承载(文案入表卡收编);**零兑付守卫保留**(:420 `type != "reward_ineffective"`——未生效行不弹浮字,安静留数据面,语义重述随明细带退役)
|
- [ ] main.gd 清图 handler(:420 show_toast):`show_toast("清图奖励:%s"…)` 替换为 `board_zone.spawn_clear_reward_text(兑付值)`——兑付值取现行 toast 同源(row.get("display") 清洗后内容),暂以呈现层字串承载(文案入表卡收编);**零兑付守卫保留**(:419 `type != "reward_ineffective"`——未生效行不弹浮字,安静留数据面,语义重述随明细带退役)
|
||||||
- [ ] 验收步骤:V2/V3 断言(见对照表)落 tests/unit/presentation/clear_reward_text_test.gd
|
- [ ] 验收步骤:V2/V3 断言(见对照表)落 tests/unit/presentation/clear_reward_text_test.gd
|
||||||
- [ ] 接口取用:无;产出:`spawn_clear_reward_text(text: String)`(T3 探针取用)
|
- [ ] 接口取用:无;产出:`spawn_clear_reward_text(text: String)`(T3 探针取用)
|
||||||
|
|
||||||
### T3 测试与探针锚改写(0.5–1 日)
|
### T3 测试与探针锚改写(0.5–1 日)
|
||||||
- [ ] 删 battle_log_zero_text_test.gd 与 battle_narrator_test.gd;新增 tests/unit/presentation/log_band_retired_test.gd:adventure_screen 实例树内无 log_view/settlement_review 节点(V1);B 区子树零 RichTextLabel 文字节点(V5)
|
- [ ] 删 battle_log_zero_text_test.gd 与 battle_narrator_test.gd;新增 tests/unit/presentation/log_band_retired_test.gd:adventure_screen 实例树内无 log_view/settlement_review 节点(V1);B 区子树零 RichTextLabel 文字节点(V5)
|
||||||
- [ ] 解锁零新增断言:tests/unit/presentation/unlock_zero_ui_test.gd——解锁触发前后 B 区子树逐元素快照比对,新增数=0(V4)
|
- [ ] 解锁零新增断言:tests/unit/presentation/unlock_zero_ui_test.gd——解锁触发前后 B 区子树逐元素快照比对,新增数=0(V4)
|
||||||
- [ ] ui_probe.gd:113、ui_click_probe.gd 五处等锚改写(替位锚按 T0 附录)
|
- [ ] ui_probe.gd:113/:134-135、ui_click_probe.gd:624/684/879/1119/1152/1569 等锚改写(替位锚按 T0 附录;:134-135 挖掘期 24px 几何断言与 :879 _summary 私有直读随带退役)
|
||||||
- [ ] 能力行落名:见对照表能力列
|
- [ ] 能力行落名:见对照表能力列
|
||||||
- [ ] 验证:单元全套件+两探针 exit 0
|
- [ ] 验证:单元全套件+两探针 exit 0
|
||||||
|
|
||||||
### T4 基线换代与收口(0.5 日)
|
### T4 基线换代与收口(0.5 日)
|
||||||
- [ ] 渲染闸重截受影响图(battle_screen、board_L3;board_L1/L2 若带在画一并),**逐张呈用户审核后才入库**(触发基线审核关卡)
|
- [ ] 渲染闸重截受影响图(battle_screen、board_L3;board_L1/L2 若带在画一并),**逐张呈用户审核后才入库**(触发基线审核关卡)
|
||||||
|
- [ ] tools/coverage_exemptions.js:49 settlement_review_overlay 豁免条目随件撤除
|
||||||
- [ ] 产出物落位卡:reports/iter<N>-实现报告(实机目检清单:浮字观感/解锁拍/挖掘结算两态布局)、reports/iter<N>-反哺点清单(同步面 4 行逐条给落点)
|
- [ ] 产出物落位卡:reports/iter<N>-实现报告(实机目检清单:浮字观感/解锁拍/挖掘结算两态布局)、reports/iter<N>-反哺点清单(同步面 4 行逐条给落点)
|
||||||
|
|
||||||
估时合计:2.75–4.5 日(中值 3.625)。
|
估时合计:2.75–4.5 日(中值 3.625)。
|
||||||
@@ -104,16 +110,16 @@ B 区明细带(battle_log_view)整条退役:组件、挂载、六类冒险
|
|||||||
|
|
||||||
| 需求点 | 改动(文件:行为) | 验收测试 | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
| 需求点 | 改动(文件:行为) | 验收测试 | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||||
|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|
|
||||||
| V1 明细带退役 `design/ux/battle.md「Component Inventory」明细带整条退役` | battle_log_view/settlement_review 删除+壳摘除 | log_band_retired_test::test_no_log_view_node | 单元 | adventure_screen 场景实例化 | 场景树节点名集合(无 log_view/settlement_review) | 新增:B 区零文字带 |
|
| V1 明细带退役 `design/ux/battle.md「Component Inventory」明细带整条退役` | battle_log_view/settlement_review 删除+壳摘除 | log_band_retired_test::_test_no_log_view_node | 单元 | adventure_screen 场景实例化 | 场景树节点名集合(无 log_view/settlement_review) | 新增:B 区零文字带 |
|
||||||
| V2 兑付浮字呈现 `design/ux/battle.md「即时反馈画面化预览」清图兑付浮字` | board_zone_view.spawn_clear_reward_text+main.gd 装配 | clear_reward_text_test::test_spawn_and_decay | 单元 | 清图完成信号(round_end clear 分支) | 浮字节点文本=兑付值+2.5s 后 freeing | 新增:清图兑付浮字 |
|
| V2 兑付浮字呈现 `design/ux/battle.md「即时反馈画面化预览」清图兑付浮字` | board_zone_view.spawn_clear_reward_text+main.gd 装配 | clear_reward_text_test::_test_spawn_and_decay | 单元 | 清图完成信号(round_end clear 分支) | 浮字节点文本=兑付值+2.5s 后 freeing | 新增:清图兑付浮字 |
|
||||||
| V3 浮字不遮棋盘 `design/ux/battle.md「即时反馈画面化预览」浮字全程不与棋盘格面重叠` | 同上 | clear_reward_text_test::test_no_overlap+test_decay_curves | 单元 | 同上 | 四判据全绑:rect 相交=空;底缘距棋盘上缘 ≥6px;渐隐 alpha 帧间步进 ≤0.1;兑付值可读时长 ≥60% 生命期 | 新增:清图兑付浮字 |
|
| V3 浮字不遮棋盘 `design/ux/battle.md「即时反馈画面化预览」浮字全程不与棋盘格面重叠` | 同上 | clear_reward_text_test::_test_no_overlap+_test_decay_curves | 单元 | 同上 | 四判据全绑:rect 相交=空;底缘距棋盘上缘 ≥6px;渐隐 alpha 帧间步进 ≤0.1;兑付值可读时长 ≥60% 生命期 | 新增:清图兑付浮字 |
|
||||||
| V4 解锁拍零新增 `design/gdd/systems/战斗循环/敌人系统.md「目标顺位与意图线索」解锁拍零新增呈现` | row_pacer.gd 删 toast | unlock_zero_ui_test::test_zero_delta | 单元 | skill_unlock 高光行经 row_pacer 的真实消费流(固定种子令 Boss 半血后摇中闩技;快照取在 row_pacer 消费时刻,非阈值事件发射位) | B 区子树逐元素快照差=0(绑消费点提交面,防发射位空转假绿) | 新增:解锁拍零新增呈现 |
|
| V4 解锁拍零新增 `design/gdd/systems/战斗循环/敌人系统.md「目标顺位与意图线索」解锁拍零新增呈现` | row_pacer.gd 删 toast | unlock_zero_ui_test::_test_zero_delta | 单元 | skill_unlock 高光行经 row_pacer 的真实消费流(固定种子令 Boss 半血后摇中闩技;快照取在 row_pacer 消费时刻,非阈值事件发射位) | B 区子树逐元素快照差=0(绑消费点提交面,防发射位空转假绿) | 新增:解锁拍零新增呈现 |
|
||||||
| V5 叙述行全砍 `design/ux/battle.md「Component Inventory」冒险叙述行六类随带全砍` | battle_narrator 删+消费点摘除(main_adventure_flow 六处+main_adventure_flow:109/111/179 终局三处+main.gd:373/377/380+curio 十处+debug_flow 一处) | log_band_retired_test::test_b_zone_zero_text | 单元 | 节点推进/恢复/商店/终局真实流 | B 区零文字节点+battle_narrator 符号 grep=0 | 新增:B 区零文字带 |
|
| V5 叙述行全砍 `design/ux/battle.md「Component Inventory」冒险叙述行六类随带全砍` | battle_narrator 删+消费点摘除(main_adventure_flow 六处+main_adventure_flow:109/111/179 终局三处+main.gd:373/377/380+curio 十处+debug_flow 一处) | log_band_retired_test::_test_b_zone_zero_text | 单元 | 节点推进/恢复/商店/终局真实流 | B 区零文字节点+battle_narrator 符号 grep=0 | 新增:B 区零文字带 |
|
||||||
| V6 基线换代 `design/ux/battle.md「即时反馈画面化预览」战斗屏纵向` | golden 受影响图重截 | 渲染闸 golden 比对 | 探针 | 渲染闸跑批 | 逐像素;**触发基线审核关卡**(T4 呈审) | 既有:战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) |
|
| V6 基线换代 `design/ux/battle.md「即时反馈画面化预览」战斗屏纵向` | golden 受影响图重截 | 渲染闸 golden 比对 | 探针 | 渲染闸跑批 | 逐像素;**触发基线审核关卡**(T4 呈审) | 既有:战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) |
|
||||||
| V7 探针锚等价 `design/ux/battle.md「Component Inventory」结算明细带(已退役)` | ui_probe/ui_click_probe 五处 | 两探针跑批 exit 0 | 探针 | 真实 UI 驱动流 | 锚语义等价(进战斗/换层——叙述行锚失据即换) | 既有:停点链与控件级真输入命中 |
|
| V7 探针锚等价 `design/ux/battle.md「Component Inventory」结算明细带(已退役)` | ui_probe/ui_click_probe 五处 | 两探针跑批 exit 0 | 探针 | 真实 UI 驱动流 | 锚语义等价(进战斗/换层——叙述行锚失据即换) | 既有:停点链与控件级真输入命中 |
|
||||||
|
|
||||||
测试方式两分法:V1–V5、V7 归调试接口验;浮字观感、解锁拍目感、两态布局归用户目检(登记不阻塞,写入实现报告实机目检清单)。
|
测试方式两分法:V1–V5、V7 归调试接口验;浮字观感、解锁拍目感、两态布局归用户目检(登记不阻塞,写入实现报告实机目检清单)。
|
||||||
测试削弱申报:battle_log_zero_text_test.gd 与 battle_narrator_test.gd 删除(被测对象退役,语义由 log_band_retired_test 承接;game/tests/README.md「战斗叙述与终局文案」能力行同批退役改写为「终局判定文案与战末账行」——已入表);无阈值放宽。
|
测试削弱申报:battle_log_zero_text_test.gd 与 battle_narrator_test.gd 删除(被测对象退役,语义由 log_band_retired_test 承接;game/tests/README.md「战斗叙述与终局文案」能力行同批退役改写为「终局判定文案与战末账行」——已入表);pacing_queue_test.gd:242-257「解锁技名 toast 计数与行分布」断言随 V4 退役(钉住被删 toast 面,语义由 unlock_zero_ui_test 零新增断言承接);无阈值放宽。
|
||||||
独立验收审计:reports/iter<N>-验收审计-<日期>.md,入口=本对照表全量;未过禁合并。
|
独立验收审计:reports/iter<N>-验收审计-<日期>.md,入口=本对照表全量;未过禁合并。
|
||||||
|
|
||||||
## 9. 异常分级
|
## 9. 异常分级
|
||||||
@@ -163,6 +169,12 @@ L1 自救:探针锚替位的一次重试、Tween 参数微调。L2 记录继
|
|||||||
| 1 | 同上 | A10 估时加总实为 2.75–4.5 | 自判 | 合计改 2.75–4.5 日(中值 3.625) |
|
| 1 | 同上 | A10 估时加总实为 2.75–4.5 | 自判 | 合计改 2.75–4.5 日(中值 3.625) |
|
||||||
| 1 | 同上 | A11 零兑付守卫(main.gd:418-420)去留未钉 | 补写 | T2 补守卫保留句(未生效行不弹浮字,语义重述随带退役) |
|
| 1 | 同上 | A11 零兑付守卫(main.gd:418-420)去留未钉 | 补写 | T2 补守卫保留句(未生效行不弹浮字,语义重述随带退役) |
|
||||||
|
|
||||||
|
| 3 | 编排预检只读子代理(Explore 分片,未参与撰写) | F1-P1 删件断编译面第六处漏登记:adventure_feats_test.gd:780 load battle_narrator 直调 feat_card_text | 补写 | §2/结构图/T1 三处补登记(等价改写义务) |
|
||||||
|
| 3 | 同上 | F2-P1 run_all.gd:195/:261 套件清单引用两待删测试件,删件后 spawn 缺脚本=闸红;run_all.gd 全卡未登记 | 补写 | §2/结构图/T1 补清单两行随删 |
|
||||||
|
| 3 | 同上 | F3-P2 探针删件直读面漏 3 行(ui_probe:134-135 几何断言、ui_click_probe:879 私有直读) | 补写 | T3 枚举补全 |
|
||||||
|
| 3 | 同上 | F4-P2 pacing_queue_test.gd:242-257 解锁 toast 计数断言钉住被删面,与 V4 冲突 | 补写 | 测试削弱申报补退役义务(语义由 unlock_zero_ui_test 承接) |
|
||||||
|
| 3 | 同上 | F5-P3 行号漂移(T2 :421→:420、守卫 :420→:419;battle_log_view :69/:56 漂移);F6-P3 注释残留面(battle_layout_table:2、ui_kit:207 HEX_LOG 死常量);F7-P3 coverage_exemptions.js:49 豁免条目随件报废;F8-P3 README:170 缺 _test_decay_curves 用例名;F9-P3 工作区 12 件未跟踪棋盘贴图 | 自判/补写 | 行号改正;注释扫尾入 T1;豁免撤条入 T4;README 用例名已补(写卡段);F9 留痕——开工前确认入库/忽略口径 |
|
||||||
|
|
||||||
引擎技术面三查(同轮):Tween/Label 描边/减动效直达在 4.7 存在且行为如卡;UI 移动走 Tween 合 NEVER-9;Gotcha-3(Tween 随节点消亡)由 board_zone_view 常驻宿主承载——无发现。
|
引擎技术面三查(同轮):Tween/Label 描边/减动效直达在 4.7 存在且行为如卡;UI 移动走 Tween 合 NEVER-9;Gotcha-3(Tween 随节点消亡)由 board_zone_view 常驻宿主承载——无发现。
|
||||||
|
|
||||||
## 17. 复核自审七查执行记录
|
## 17. 复核自审七查执行记录
|
||||||
|
|||||||
Reference in new issue
Block a user