docs(任务规划): 菜单树叶数实测复核 42/33/28/5 全部成立,只补判定方法与「当时」口径
按 ui_menu_tree.txt 文件头规则实测(缩进即层级、每级 2 空格、# 开头为 注释、空行忽略):节点行 42 = 9 个菜单节点 + 33 叶;叶行行尾带 #page= 的已绑 28、未绑 5(遥信类型 / 遥信防抖 / 双点遥信 / 手动录波 / SNTP设置)。 双源互证:tools/menu_gen/gen_menu.py 的 parse_tree 重跑得 nodes=42 leaves=33 bound=28 unbound=5;生成物 ui_menu_tab.h 的 UI_MENU_TAB_COUNT=42 与 ui_page_registry.h 的 UI_PAGE_MAP_COUNT=28 ——两源逐项一致。剔伪命中:grep -c #page= 得 29,多的 1 是文件头第 5 行 注释里的示例行,不算节点行,故真值取 28 而不是 29。 结论:两份规划文档的当前态叶数本来就对,本笔不改任何数字,只补口径与方法: - UI补齐.md §1 判定新增第 4、5 条:未绑 = 待做 + 不做(0 + 5 = 5)闭合式; 并写明按文本计数会把头部注释示例行算进来(29 = 28 + 1),真值以生成物为准。 - UI补齐.md §1 三个错算法:21 / 23 两个错数分属 2026-10-27「已绑 21 叶」 与「已绑 22 叶」两个时点,加「当时」锁口径,并补同一错法今天的重跑值 (未绑 14、grep 29、去重 29),注明两个 29 只是撞号、都与真值 28 无关。 - README.md §1:同步闭合式 +「42 是节点行数、不是叶数」+ 伪命中提示。 两份文档都没有变更记录表(UI补齐.md §2 明示不留完成史)→ 无历史行可追加。 未动:docs/UI设计/页面补齐规划.md 的「27 空叶子 / 6 叶落地」与 docs/UI设计/页面扩充详细方案.md §1.1 的「已绑 6 叶」都是立项快照, 文内已有 2026-10-28 复核对齐行;id_aliases.json 的「UI 剩余 21 叶」是 退役别名留档;「最坏路径 < 40KB」一类绘制缓冲红线与叶数同数不同义。 并发提示:仓库另有在飞批次(黄金参考张/页口径,含本文件 60 页→60 张一行), 本笔只含叶数相关三处改动,未带走他人内容与他人暂存的文件。 门禁:check_doc_links.py --all --sections-strict 打印「文档路径检查通过 (195 个文档)」;check_ids_new.py 查暂存区 [OK] 新增行无未登记编号。
This commit is contained in:
@@ -36,6 +36,8 @@
|
||||
菜单树共 33 叶(节点行合计 42):按行内 #page= 实测**已绑 28 叶、未绑 5 叶**(2026-10-28 复核,
|
||||
判定规则与重跑命令见 docs/任务规划/UI补齐.md §1「叶数判定与复核」)。未绑的 5 叶因缺少开入硬件、
|
||||
录波模块或 SNTP 产品定义而不做(原因与重开条件见 docs/任务规划/UI补齐.md §5)。
|
||||
**口径闭合**:未绑 5 = 待做 0(§1 清单已清空)+ 不做 5(遥信 3 / 手动录波 1 / SNTP 1);**42 是节点行数、不是叶数**(= 9 个菜单节点 + 33 叶)。
|
||||
已绑叶数以生成物 UI_PAGE_MAP_COUNT 为准:不剔 ui_menu_tree.txt 文件头的注释示例行时,按 #page= 文本计数会得 29(= 28 + 1 行示例)。
|
||||
|
||||
**UI 补齐执行清单已于 2026-10-28 清空**:记录 5 页(事故 / 操作 / 保护告警 / 保护启动 / 遥控)与
|
||||
运行报告页同日落地并绑页,内容页黄金参考 53 → 60 页(runreport 分 2 页,第 2 页单独一张)。
|
||||
|
||||
+11
-2
@@ -29,6 +29,10 @@
|
||||
2. **缩进即层级**(每级 2 空格;Tab 会被 `gen_menu.py` 直接拒绝):某节点行之后再没有更深缩进的行 = **叶**
|
||||
(当前 **33** 叶);有更深缩进后继者 = 菜单节点(当前 **9** 个)。等价于生成物口径 `ui_menu_tab_has_children(node) == false`。
|
||||
3. **绑定**:叶行行尾带 ` #page=` = 已绑(当前 **28** 叶);不带的 = 未绑(当前 **5** 叶)。
|
||||
4. **闭合**:`未绑 = 待做 + 不做` —— 当前 待做 **0**(§2 清单已清空)+ 不做 **5**(遥信 3 / 手动录波 1 / SNTP 1)= **5**,
|
||||
与上面的分类表、§5「当前不做」表逐项对得上。
|
||||
5. **别拿 `grep -c '#page='` 当已绑叶数**:2026-10-28 实测它得 **29**,比真值多 1 —— 文件头第 5 行是规则说明里的
|
||||
` #page=<模块名>` 示例行(不是节点行),必须先剔注释/示例行;剔完的 28 才等于生成物 `UI_PAGE_MAP_COUNT`。
|
||||
|
||||
复核命令(复用生成器自己的解析器 `tools/menu_gen/gen_menu.py` 的 `parse_tree`,不另写一套计数逻辑,免得与生成物脱钩):
|
||||
|
||||
@@ -39,8 +43,13 @@
|
||||
输出 `nodes=42 leaves=33 bound=28 unbound=5`;交叉核对生成物:`ui_menu_tab.h` 的 `UI_MENU_TAB_COUNT` = 42(节点行数)、
|
||||
`ui_page_registry.h` 的 `UI_PAGE_MAP_COUNT` = 28(已绑叶数)——一对 42、一对 28,与上面逐项对得上。
|
||||
|
||||
三个已踩过的错算法:**把 42 个节点行当叶子**(多算 9 个菜单节点,得出「未绑 21」);**`grep -c '#page='` 得 23**(比已绑多 1:文件头注释第 5 行有 `#page=<模块名>` 示例字样,必须先剔注释行);**按叶子名去重得 29**(`参数`/`定值`/
|
||||
`控制字`/`软压板` 在「整定」「查看」下各一份,4 对同名不能合并)。(21 / 23 / 29 三个错数是 2026-10-27 当时的实测产物,只用来说明错法,不代表现值。)
|
||||
三个已踩过的错算法(每种都同时给**当时**与**2026-10-28 重跑**的产物——错法不会自己失效,只是错数跟着已绑叶数一起漂):
|
||||
**把 42 个节点行当叶子**(多算 9 个菜单节点:当时已绑 21 叶 → 得「未绑 21」,2026-10-28 同一错法得「未绑 14」= 42 − 28);
|
||||
**`grep -c '#page='` 当时得 23**(当时已绑 22 叶,多的那 1 正是文件头注释第 5 行的 `#page=<模块名>` 示例字样,必须先剔注释行;
|
||||
2026-10-28 同一命令得 29 = 已绑 28 + 该示例行 1);**按叶子名去重得 29**(`参数`/`定值`/`控制字`/`软压板` 在「整定」「查看」下各一份,
|
||||
4 对同名不能合并;2026-10-28 重跑仍是 29 = 33 叶 − 4 对同名)。
|
||||
(21 / 23 两个错数分属 2026-10-27「已绑 21 叶」与「已绑 22 叶」两个时点的实测,只用来说明错法,不代表现值;
|
||||
去重 29 与上面 grep 现值 29 **只是撞号**:一个是「合并同名叶」、一个是「不剔注释行」,都与真值 28 无关。)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user