diff --git a/reports/需求卡片-文案入表批-2026-11-10.md b/reports/需求卡片-文案入表批-2026-11-10.md index dd6f1855..7737073f 100644 --- a/reports/需求卡片-文案入表批-2026-11-10.md +++ b/reports/需求卡片-文案入表批-2026-11-10.md @@ -11,10 +11,10 @@ ## 2. 现状事实(file:line 实查) - 翻译管线现状=零:project.godot 无 internationalization 配置(grep 零命中;默认 locale=en——注册 zh_CN 翻译后须同批设 locale/fallback,否则 tr() 按 key 原样返回);`tr(`/`atr(` 在 game/presentation 与 game/core 零使用。 -- **产品码全量字面量普查(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)。 +- **产品码全量字面量普查(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:570/:587/:598(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)、standee_body.gd:83/:115/:269/:272(4)等+既有零散清单(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)。 - 数据表文案值:tables/ 实存 21 张 .tres,含文案字段 13 张——display_name 163、desc 48、name_a/name_b 6、settlement.tres:9 source_label_map 7 值(总中文值行 229);另有 493 行中文为表内 `;` 注释(不迁)。 - 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(默认值「探险者」)。 -- **既有断言钉值面(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 中文字面量,「断言钉在场」与迁移清零对撞,改写义务本卡登记)。 +- **既有断言钉值面(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 中文字面量,「断言钉在场」与迁移清零对撞,改写义务本卡登记);另迭代 58 刷新经济批新增断言 table_structure_guard_test V10「reserve_jar 投影仍为存量字面」与 meta_progression.gd:108-109 存量字面回退分支——treasure_items.tres 全量迁移后断言必红、回退分支成死代码,改写/退役义务本卡登记。 - 行号基线声明:本节行号=卡A(明细带退役批)执行前实测;卡A 先行改动后行号漂移由 T0 核面步统一重算(§17③)。 - 场景静态文案:复核实证 game/ 全部 22 个 .tscn 中文字符=0——无独立场景迁移面,W5 降为核验行。 ## 3. 设计契约 @@ -45,7 +45,7 @@ | 文件 | 职责 | 行为改动 | |---|---|---| -| game/data/l10n/strings.csv | 新增:文案值唯一承载(key,zh_CN 两列+表头) | 是(W1) | +| game/data/l10n/strings.csv | 扩展:文案值唯一承载(迭代 58 刷新经济批首建,本卡第二使用批) | 是(W1) | | game/project.godot | 翻译资源注册(internationalization/translations) | 是(W1) | | game/data/tables/*.tres(含文案字段 13 张) | display_name→display_key、desc→desc_key,值改 key | 是(W2) | | game/data/schemas/ 十一件 | 键改名+key 格式校验(13 处「display_name 空/为空」校验全集+键集同步面五处) | 是(W2) | @@ -60,9 +60,9 @@ ## 7. 任务卡 ### T0 管线建立与核面(0.75 日) -- [ ] 新建 game/data/l10n/strings.csv:表头 `keys,zh_CN`+首批 3 个探路 key(含 1 个带 %d 占位) +- [ ] 扩展既有 game/data/l10n/strings.csv(迭代 58 刷新经济改版批首建,表头 `key,zh_CN`——表头随实盘,本卡不再自定):追加本卡探路 key 与全部迁移 key(含 1 个带 %d 占位) - [ ] project.godot 注册翻译资源(设置键 `internationalization/locale/translations`)+**locale 设定**(`internationalization/locale/fallback` 或 test 默认 `TranslationServer.set_locale("zh_CN")`——缺此步 tr() 按 key 原样返回,W1 必红) -- [ ] **跨批核面步**:卡A(明细带退役批)合入后按卡A 终态重算本卡 §2 行号(file:line 窄复核,漂移处就地更新清单) +- [ ] **跨批核面步**:卡A(明细带退役批)与迭代 58 五卡(刷新经济改版/可推理率退役/跨表量级护栏/全局特殊间隔闸/意图徽标类型级收敛)合入后,按终态重算本卡 §2 行号(file:line 窄复核,漂移处就地更新清单;已知漂移源=main.gd 删 check_board_hints 致锚行上移、battle_orchestrator/grant_segment 增行、skill_table/hero_table 增行、迭代 57 棋盘瓦片批 board_view 一族重做);另核对 treasure_item_table.gd 校验中间态(迭代 58 改「display_name 与 display_key 至少一方非空」双轨)——本卡 T1 在该中间态之后收拢为 key 格式校验 - [ ] **全量普查脚本步**:跑字面量普查(python 读盘扫描三目录非注释非豁免行,豁免词法见 W6),逐行清单落 reports/iter-实现报告附录——T3 迁移对账的唯一底册 - [ ] **刷导入步**:`--editor --quit` 触发 strings.csv→.translation 导入(全新 checkout 无导入则 W1 必红) - [ ] 冒烟断言:一个探路 Label 经 tr() 取到中文(player_copy_sweep_test.gd:_sweep_tr_roundtrip 首个用例) @@ -72,6 +72,7 @@ - [ ] 18 张 tres:display_name/desc/name_a/name_b/source_label_map 值改 key(模板 `<表域>.<行id>.<字段>`),中文值迁 strings.csv - [ ] 十一 schema:键改名+「display_name 空/为空」13 处校验改 key 格式(非空+含 `.`);键集同步面五处(feat:16/meta_tree:17/forge:16/treasure_item:50/hero:11)全数改 - [ ] ConfigDB 与全部读取面改读 display_key;呈现消费点改 `tr(row.display_key)` +- [ ] meta_progression.gd:108-109 存量字面回退分支改写(回退读 display_key 经 tr 取文案)+table_structure_guard_test V10 断言改钉 key 形态(迭代 58 断言退役/改写登记) - [ ] schema 校验闸+表驱动单元全绿 - [ ] 接口产出:无新签名(键名替换);验证:单元全套件 @@ -93,7 +94,7 @@ - [ ] 编辑器生成 POT 核对漏网(手动步,读数进实现报告) - [ ] 产出物落位卡:reports/iter-实现报告、反哺点清单(同步面 5 行) -估时合计:6.75–9.25 日(中值 8.0)。 +估时合计:6.75–9.75 日(中值 8.25)。 ## 8. 验证闸(改动—验收对照表) @@ -107,7 +108,7 @@ | W6 漏网清零 `design/engineering/code-conventions.md「2.5 玩家可见文案承载」禁在` | 静态断言 | player_copy_sweep_test::_sweep_zero_product_literals | 单元 | 闸跑批(读盘 grep) | 产品码三目录豁免词法外中文字面量=0 | 新增:文案漏网清零 | 测试方式两分法:W1–W4、W6 归调试接口验;场景文案渲染观感归用户目检(登记不阻塞)。 -测试削弱申报:无删旧断言;player_copy_sweep_test 六组钉值断言改写=钉值对象从字面量换 key/译文,断言强度不减;display_name 空串校验改 key 格式校验=判据收紧非放宽。 +测试削弱申报:无删旧断言;player_copy_sweep_test 六组钉值断言与迭代 58 V10「reserve_jar 投影仍为存量字面」断言改写=钉值对象从字面量换 key/译文,断言强度不减;meta_progression.gd:108-109 存量字面回退分支随迁移退役(回退语义由 key 形态回退承载,改写落 T1);display_name 空串校验改 key 格式校验=判据收紧非放宽。 独立验收审计:reports/iter-验收审计-<日期>.md;高档全量审计。 ## 9. 异常分级 @@ -124,7 +125,7 @@ key 命名的域段用词(模板内);strings.csv 行排序(按域分组 ## 12. 落位与可复用性预检 -- strings.csv=新增:Godot 原生翻译承载,盘上无同件(grep l10n/translation 零命中);落点唯一 game/data/l10n/。 +- strings.csv=复用扩展:迭代 58 刷新经济改版批首建(表头 key,zh_CN),本卡为第二使用批——扩展不新建;落点唯一 game/data/l10n/ 不变。 - **测试件复用面**:字面量扫描与 tr 往返断言**扩展在册 `player_copy_sweep_test.gd`**(同职责承载——README「玩家面文案」/「刷新提示文案读表拼接」两行已用该件做源扫描),不新增 strings_single_source_test.gd;表行 key 格式断言新增 `config_table_key_test.gd`(数据面校验与呈现扫描职责不同,不可并入 player_copy_sweep——单一变化原因不同)。 - 翻译注册=引擎原生(Project Settings→`internationalization/locale/translations`),零自建加载代码;不复用/不自建 Dictionary 文案表(违反 §2.5 单点——用引擎原生 tr)。 - SOURCE_NAMES 常量改 tr 后删除原 Dictionary——无别名残留。 @@ -171,6 +172,7 @@ key 命名的域段用词(模板内);strings.csv 行排序(按域分组 | 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 补刷导入步 | +| 4 | 编排预检确认轮只读子代理(Explore,未参与撰写) | P1-① strings.csv 双首建与表头互斥(迭代 58 刷新经济批 key vs 本卡 keys);P1-② V10「reserve_jar 投影仍为存量字面」断言与全量迁移对撞未登记;P2 核面步只锚卡A/双轨中间态衔接/standee_body 漏列;P3 估时加总漂移与 board_view 错锚 | 补写/自判 | 六条全落卡:T0 改扩展既有+表头随实盘、§12 改复用扩展、§2 补 V10 断言与回退分支登记、测试削弱申报补、T1 补 meta_progression 改写步、T0 核面步扩面(迭代 58 五卡+迭代 57 棋盘瓦片批)、§2 补 standee_body、估时改 6.75–9.75(中值 8.25)、board_view 锚改 :570/:587/:598 | 引擎技术面三查(同轮):tr/TranslationServer 回退行为、Tween、Label 描边在 4.7 存在且行为如卡——B3/B8 已按引擎事实落卡,无未判发现。 diff --git a/roadmap.md b/roadmap.md index 7f9da883..b20ea4b3 100644 --- a/roadmap.md +++ b/roadmap.md @@ -92,6 +92,7 @@ | 迭代 56 | 已完成(2026-11-08) | 已退役(git 历史可考) | 2026-11-07 | ≈12.25 个工作日〔用户特批 2026-11-07 超 10 个工作日〕 | 已退役(git 历史可考) | | 迭代 57 | 待开工 | reports/需求卡片-营地场景重排接线-2026-11-07.md
reports/需求卡片-棋盘瓦片与立体表现重做批-2026-11-07.md | 2026-11-08 | ≈11.25 个工作日〔用户特批 2026-11-08 超 10 个工作日〕 | — | | 迭代 58 | 待开工 | reports/需求卡片-刷新经济改版批-2026-11-09.md
reports/需求卡片-可推理率退役批-2026-11-09.md
reports/需求卡片-跨表量级护栏批-2026-11-09.md
reports/需求卡片-全局特殊间隔闸批-2026-11-09.md
reports/需求卡片-意图徽标类型级收敛批-2026-11-09.md | 2026-11-10 | ≈7.5 个工作日 | — | +| 迭代 59 | 待开工 | reports/需求卡片-明细带退役呈现改版批-2026-11-10.md
reports/需求卡片-文案入表批-2026-11-10.md | 2026-11-10 | ≈11.875 个工作日〔用户特批 2026-11-10 超 10 个工作日〕 | — | - 历史行的「—」= 该列事实不可考:迭代 1~8 早于需求卡片制;编排时点与预计周期不再回溯,细节查 git 提交史。 - 「已退役(git 历史可考)」= 需求卡片或实现报告曾存在,已按「证据只留最新」退役;已完成迭代的实现报告列只填 reports/ 现存路径或本保留字,不填「—」。 diff --git a/待办清单.md b/待办清单.md index 89bf69f4..9e82c279 100644 --- a/待办清单.md +++ b/待办清单.md @@ -69,7 +69,7 @@ **实况**:玩家可见文案承载换代设计闭合——承载规则=code-conventions.md §2.5(文案 key 单点、文案值住 data/l10n/strings.csv);同步修订 design/gdd/systems/表现与支撑/设置与本地化.md v1.3、战斗循环/战斗结算.md v2.1(:87 条款)、战斗循环/增益状态.md v1.8、战斗循环/敌人系统.md v2.0、跨局循环/锻造工坊.md v0.14、跨局循环/秘宝.md v1.5、术语表.md v1.30(文案 key 词条);字段更名 display_key/desc_key。已写卡 reports/需求卡片-文案入表批-2026-11-10.md **改动面**:文档+游戏代码 -**状态**:文档设计已闭合+已写卡 +**状态**:文档设计已闭合+已写卡+已编迭代 59 #### UI 贴图重构批——元进度件仍是程序化占位(2026-10-13 登记,来源=审计发现) @@ -85,7 +85,7 @@ **实况**:设计闭合——[battle.md](design/ux/battle.md)(2026-11-10 版)「即时反馈画面化预览」节(明细带整条退役+清图兑付浮字+Boss 解锁拍零新增呈现,内嵌 SVG+像素判据,三屏预览 2026-11-10 用户人审通过);[敌人系统](design/gdd/systems/战斗循环/敌人系统.md) v2.2(解锁拍零新增呈现,一次性技能名 toast 退役);[HUD框架](design/gdd/systems/表现与支撑/HUD框架.md)(明细带提法清零,回看覆盖层同批报废)。叙述行六类随带全砍(分流裁决见 battle.md 组件表 B 区明细带行)。已写卡 reports/需求卡片-明细带退役呈现改版批-2026-11-10.md **改动面**:游戏代码 -**状态**:文档设计已闭合+已写卡 +**状态**:文档设计已闭合+已写卡+已编迭代 59 #### 扩展节点类型——危险/精英节点与特殊地形节点(2026-10-21 登记,来源=会话提及)