Просмотр исходного кода

新增技能 vent-web-nav:通防平台网页指引(口语找页面/网页地图/操作指引/前缀切换/菜单差集同步)

leftcollen 2 недель назад
Родитель
Сommit
012d2da5d7

+ 3 - 0
README.md

@@ -20,6 +20,7 @@
 | `vent-plan-review-calc` | 配风计划**计算核验**(子技能):逐用风地点核验需风量公式/参数/结果(偏差分级) | 由上级 task 委派(plan-review-calc) | `calc_*` 15 个工具、`write_todos` |
 | `vent-resistance-check` | 矿井通风系统阻力检查:回风系统最大阻力路线与总阻力解算、核验、隐患分析报告 | "计算某回风井/回风系统的关键阻力路线及总阻力""通风阻力检查" | TF-MCP 解算引擎、vent 库 SQL、云通防知识库、`scripts/mcp_call.js`、`references/capability-map.md` |
 | `wind-hazard-diagnosis` | 风速风量监测与隐患判识:超限/风量不足/重大事故隐患(需风量 <75% 红线),固定格式 md 报告 | "查询当前风速风量""测风数据有没有问题/隐患" | TF-MCP(:8071)、云通防知识库(:8067)、`get_needq_all_data` |
+| `vent-web-nav` | 通防平台**网页指引**:口语找页面→可点击链接+功能简介+分步操作指引;全量树状网页地图(按类/主题筛选);部署前缀一键切换;新功能发布后菜单差集自动同步注册表 | "帮我打开风门监测页面""给我网页地图/只看瓦斯类""罗列防灭火相关页面""风门怎么远程开""将网址换成 http://xx""我部署了新功能,请更新网页指引" | `references/pages.yaml` 页面注册表(84条:别名/关键词/menu_key/路径/简介/操作指引)、`sync_pages.py` 菜单差集、`build_pages.py`/`query.py` 校验与匹配工具、平台权限接口(按账号动态过滤) |
 
 ## 技能间协作关系
 
@@ -58,6 +59,7 @@ vent-monthly-summary-product:逐矿委派 monthly-report-extractor 提取关
 | vent 库 SQL(`execute_sql_query`) | deviceinfo、sub_station、fan、ai_gate、tun/node 等表直查 | vent-device-daily-report、vent-resistance-check |
 | 云通防知识库(:8067,Obsidian Vault Knowledge Service) | 规程条款佐证、隐患分析 | wind-hazard-diagnosis、vent-resistance-check、knowledge-base |
 | 平台注册函数工具 + 沙箱资产 | PDF 提取、Word/Excel 处理、下载发布、入库登记 | vent-plan-review、vent-monthly-summary-product |
+| 平台权限接口(JEECG `getUserPermissionByToken`) | 网页指引按账号动态过滤可见页面(menu_key 对齐)、新功能菜单差集同步 | vent-web-nav |
 
 跨工具容错策略不统一,各技能自洽:`vent-resistance-check` 提供 `references/capability-map.md`(C1~C7 能力契约与降级表,C4 解算引擎不可降级);`vent-operation-daily-report` 支持 Python 脚本直连平台实现宿主无关;`wind-hazard-diagnosis` 依赖写死、缺失只明示不静默降级。
 
@@ -77,6 +79,7 @@ cp -r vent-plan-review vent-plan-review-form vent-plan-review-data vent-plan-rev
 部分技能自带独立使用文档,包含安装、字段表、输出样例与踩坑记录:
 
 - `vent-device-daily-report/README.md`(含 `scripts/device_online_report.py` 用法)
+- `vent-web-nav/GUIDE.md`(使用与维护手册:三种架构接入、维护三铁律、歧义词维护经验、新功能发布一句话同步流程)
 - `vent-operation-daily-report/README.txt`(含 `scripts/vent_daily_report.py` 两种安装方式、`sample/` 输出样例、`requirements.txt`)
 - `vent-resistance-check/README.md`(含 `references/` 能力契约/隐患清单/报告模板、`scripts/mcp_call.js`)
 - `wind-hazard-diagnosis/README.md`

+ 101 - 0
vent-web-nav/ADAPTATION.md

@@ -0,0 +1,101 @@
+# ADAPTATION.md —— 跨架构接入指南与维护手册
+
+> 本 skill 采用"数据与逻辑分离"设计:`SKILL.md`(行为指令)+ `references/pages.yaml`(人工维护权威数据)+ `references/pages.json`(机器读取版)+ `config.yaml`(部署前缀)。任何智能体框架只要能读到这些内容即可运行。
+
+## 一、三种接入方式
+
+### 方式 A:Function calling 架构(推荐,平台智能助手适用)
+
+在后端实现 4 个工具,数据源为 `pages.json` + 后端配置存储:
+
+```python
+# 伪代码示意
+TOOLS = [
+  query_page(query, top_n=3)    # 加载 pages.json → 按 name精确>aliases精确>包含 匹配
+                                 # → menu_key 权限过滤 → 拼 base_url → 返回页面
+  get_page_map(category=None)   # 返回权限过滤后的 分类→子类→页面 树
+  set_base_url(url)             # 校验 http(s)://host[:port] → 去尾斜杠 → 持久化 → 记录history
+  get_visible_menus()           # 调平台权限接口 → 返回当前用户可见菜单 path 集合
+  sync_pages(token=None)        # 权限菜单树 ↔ pages.yaml 差集 → 新增/下线清单+草稿
+                                 #(参考实现 references/sync_pages.py,可直接封装为工具)
+]
+```
+
+**权限接口对接(实测事实,182 环境)**:
+
+```
+GET {base_url}/modelreq/sys/permissionNew/getUserPermissionByToken?token=<JWT>
+Header: X-Access-Token: <JWT>
+返回 result.menu[] 递归树:
+  每项 { path, meta.title, hidden, children, component, id }
+```
+
+- 递归收集所有节点(含 `hidden:true` 与 children)的 `path` 得到可见集合;
+- 页面 `menu_key`(去查询参数后的基础路径)命中集合 → 可展示;
+- `menu_key: null` → 不做权限过滤,默认展示;
+- 当前登录用户的 JWT 从平台会话获取(智能体嵌在平台内,可直接取当前请求的 token)。
+
+**持久化存储**:`set_base_url` 写入后端配置(数据库或配置文件均可),同时把旧值/新值/时间追加到 history——所有用户所有会话生效。
+
+**与现有实现的替换**:实测平台智能助手现有"帮我打开风门监测页面"回答的链接点击后跳到首页模型页(指向错误)。接入本 skill 后,工具直接返回 `pages.json` 中实测正确的 path,替换旧知识/旧 prompt 中关于页面导航的部分。
+
+### 方式 B:纯 prompt + 知识注入(降级方案)
+
+无工具调用的智能体(纯对话接口):
+
+1. 把 `SKILL.md` 正文(YAML 头以下)作为系统提示词片段注入;
+2. 把 `pages.json` 中 `visible:true` 的条目压缩成文本注入(保留 name/aliases/keywords/path/desc/usage;51 页全量约 8-10K tokens,若超限可去掉 usage 只留 desc,操作问题让用户进页面后看提示);
+3. 把 `config.yaml` 的 `base_url` 值注入(部署时写死当前环境地址);
+4. **限制**:换前缀仅会话内生效(模型记住新前缀,本轮对话内使用),新会话回落到注入的默认值——SKILL.md 流程 C 已包含该降级话术;
+5. **限制**:无权限接口可调,权限过滤退化为 pages.yaml 的 `visible` 静态裁剪。
+
+### 方式 C:Agentskills 目录挂载(ZCode / Claude Code 等)
+
+直接把 `vent-web-nav/` 整个目录复制到技能目录:
+
+- ZCode:工作区 `.agents/skills/vent-web-nav/` 或用户级 `~/.agents/skills/vent-web-nav/`
+- Claude Code:`~/.claude/skills/vent-web-nav/`
+
+技能会按 `SKILL.md` 里的 description 触发词自动激活;宿主用文件读取能力替代方式 A 的工具(读 pages.yaml/config.yaml),换前缀通过编辑 config.yaml 持久化。
+
+## 二、维护手册
+
+### 2.1 新增/修改页面
+1. 编辑 `references/pages.yaml`:在对应分类/子类下按字段模板添加条目(字段说明见文件头注释);
+2. 运行 `python references/build_pages.py` 重新生成 `pages.json` 并校验;
+3. 若新增页面需权限过滤,`menu_key` 填权限接口返回的菜单 path(打开平台对应页面,从浏览器地址栏取基础路径即可)。
+
+### 2.2 启用未验证页面
+带 `visible: false` 的条目(菜单存在但未实测/未部署):用浏览器直接访问确认可用后,删掉该行的 `visible: false` 与 `note`,重跑生成脚本。
+
+### 2.3 换部署环境(换矿/换服务器)
+1. 改 `config.yaml` 的 `base_url`(或对智能体说"将网址换成 http://新地址");
+2. 设备详情页的设备实例 ID 会随矿井变化:进平台打开目标设备页面,从地址栏复制 `?id=...` 更新对应条目的 path;
+3. 按新环境账号权限核对 `visible` 与 `menu_key`(用权限接口拉一次菜单树比对);
+4. 重跑生成脚本。
+
+### 2.4 menu_key 对齐方法
+```bash
+# 用当前账号 token 拉菜单树(浏览器 F12 从任意请求头 X-Access-Token 复制)
+curl "{base_url}/modelreq/sys/permissionNew/getUserPermissionByToken?token=<JWT>"
+# 递归取所有 path,与 pages.yaml 的 menu_key 比对,缺的补、错的改
+```
+
+### 2.5 YAML ↔ JSON 同步
+**唯一原则:只改 YAML,JSON 永远由脚本生成**(直接改 JSON 会被下次生成覆盖)。
+```bash
+python references/build_pages.py   # 校验 + 生成,两全
+```
+
+### 2.6 已知待办(v1.1 候选)
+- [ ] 系统配置三页(用户/角色/项目配置)真实路由待管理员账号核实(admin 接口明文登录被拒,疑前端加密);
+- [ ] 机电硐室管控:菜单配置为 `/chamber-home`,182 环境未部署(404),新环境部署后验证;
+- [ ] 11 个 `visible:false` 的菜单页(通风网络解算、防灭火/防尘系统监测、抽采综合管控、瓦斯管网管控、避灾路线等)逐个访问验证后启用;
+- [ ] 17 个设备台账页路径未实测,启用前验证;
+- [ ] usage 操作指引:29 个可见页仍为 null,可参照《通防平台页面学习记忆.md》逐页补写。
+
+## 三、未来可选升级(本次不做)
+
+- **平台前端弹窗版网页地图**:`get_page_map` 工具返回的 JSON 树可直接递归渲染为平台自绘弹窗组件(聊天树之外的增强体验);
+- **页面清单自动同步**:用权限接口菜单树自动比对 pages.yaml 提醒新增页面(当前按决策 D7 人工维护);
+- **页面自动打开**:智能体返回链接的同时调平台前端路由事件直接跳转(当前按需求只给链接,用户点击跳转)。

+ 192 - 0
vent-web-nav/GUIDE.md

@@ -0,0 +1,192 @@
+# 通防平台网页指引 Skill · 使用与维护手册
+
+> 版本 v1.0 | 2026-09-07 | 适用包:`vent-web-nav/`
+> 本手册面向两类角色:**接入开发者**(把 skill 接入智能体)与**运维维护者**(日常更新页面数据)。
+> 更深的架构级接入细节见 `ADAPTATION.md`,需求背景见 `REQUIREMENTS.md`。
+
+---
+
+## 1. 这个 skill 是什么
+
+一句话:让平台用户**用一句话直达任何页面**——返回页面名、功能简介、可点击链接;顺带教会基本操作、支持全量网页地图和部署地址切换。
+
+五类能力(用户怎么说 → 智能体怎么做):
+
+| 意图 | 用户说 | 智能体输出 |
+| --- | --- | --- |
+| A 打开页面 | 帮我打开风门监测页面 / 我要看主扇数据 | 页面名+简介+🔗链接(多候选时并列给出让用户点选) |
+| B 网页地图 | 给我网页地图 / 只看瓦斯类 / 罗列防灭火相关页面 | 分类树状地图(可按类、按主题词筛选) |
+| C 换前缀 | 将网址换成 http://10.120.3.15:8092 | 校验→持久化→示例链接确认 |
+| D 打不开 | 点了链接 404 | "未开通或无权限,联系管理员"话术 |
+| E 怎么操作 | 风门怎么远程开 / 怎么一键测风 | 页面链接 + 分步操作指引 |
+
+## 2. 文件包结构
+
+```
+vent-web-nav/
+├── SKILL.md               # 行为指令(智能体读:意图路由、匹配规则、输出模板)
+├── config.yaml            # 部署前缀 base_url + 变更历史
+├── ADAPTATION.md          # 三种架构接入的实现细节 + 维护手册(本手册的工程版)
+├── REQUIREMENTS.md        # 需求文档(九项已确认决策、验收场景)
+├── GUIDE.md               # 本手册
+└── references/
+    ├── pages.yaml         # ★ 页面注册表(人工维护的唯一权威数据源)
+    ├── pages.json         # 机器读取版(脚本生成,不要手改)
+    ├── build_pages.py     # 校验 + 生成脚本(改完 yaml 必跑)
+    ├── sync_pages.py      # 新功能发布后:菜单树差集同步
+    ├── query.py           # 命令行快速匹配测试
+    └── simulate_output.py # 四类场景输出效果模拟
+```
+
+**核心原则:数据和逻辑分离。** 改页面 → 只动 `pages.yaml`;改部署地址 → 只动 `config.yaml`(或对智能体说一句话);`SKILL.md` 基本不用动。
+
+## 3. 快速开始(接入开发者)
+
+| 接入方式 | 适用 | 前缀持久化 | 权限过滤 | 详细步骤 |
+| --- | --- | --- | --- | --- |
+| A 工具封装(推荐) | 有 function calling 的智能体(平台智能助手) | ✅ 全局生效 | ✅ 动态(调权限接口) | ADAPTATION.md §一A |
+| B prompt 注入 | 纯对话智能体 | ❌ 仅会话内 | ❌ 静态(visible 裁剪) | ADAPTATION.md §一B |
+| C 目录挂载 | ZCode / Claude Code 等 | ✅ 改 config 文件 | ❌ 静态 | ADAPTATION.md §一C |
+
+方式 A 的四个工具签名:`query_page` / `get_page_map` / `set_base_url` / `get_visible_menus`,权限接口为平台自带:
+`GET {base_url}/modelreq/sys/permissionNew/getUserPermissionByToken`(JEECG Boot 架构,token 走 `X-Access-Token` 头)。
+
+**替换现有实现时**:删除旧 prompt/知识中关于页面导航的部分,避免新旧并存给错链接(实测旧实现"风门"链接误跳首页模型页)。
+
+## 4. 用户话术速查(接入后即可用)
+
+实测通过的问法(2026-09-07,182 环境逐条验证):
+
+| 你说 | 得到 |
+| --- | --- |
+| 帮我打开风门监测页面 | 【风门监测与控制】链接直达 monitor-gate 详情页 |
+| 帮我打开网络解算页面 | 两个候选并列(实时网络解算 / 首页3D模型),带区分说明,点选即达 |
+| 帮我打开需风量分析页面 | 【需风量计算与分析】直达 /micro-need-air/ |
+| 罗列出所有防灭火相关监测、控制、分析界面 | 按 监测/控制/预警分析/联动场景/综合页 五组列出 17 个页面 |
+| 风门怎么远程开 | 风门页链接 + 5 步操作指引 + 置灰原因提示 |
+| 将网址换成 http://xxx:port | 前缀切换确认 + 示例链接(工具架构下全局生效) |
+| 给我网页地图 / 只看瓦斯类 | 全量树状地图 / 按类筛选地图 |
+
+口语别名都可用:主扇、局扇、甲烷、束管、抽放、压风、空压机、大屏、文件、台账……完整别名表就在 `pages.yaml` 每条的 `aliases` 字段。
+
+## 5. 日常维护(运维维护者)
+
+### 5.1 三条铁律
+
+1. **只改 YAML,不改 JSON**:`pages.json` 永远由脚本生成,手改会被覆盖;
+2. **改完必跑**:`python references/build_pages.py`(校验数据 + 重新生成 JSON,红了先修再交付);
+3. **上线前用 query.py 抽测**:`python references/query.py "口语词"`,确认匹配结果符合预期。
+
+### 5.2 新增一个页面
+
+在 `pages.yaml` 对应分类/子类下加条目(字段模板):
+
+```yaml
+- id: my-new-page            # 唯一英文标识
+  name: 页面中文名             # 匹配优先级最高
+  aliases: [口语说法1, 口语说法2]  # 用户会怎么说就写什么
+  keywords: [功能关键词]
+  menu_key: /菜单路由path      # 权限对齐用;不接菜单权限则 null
+  path: /页面相对路径?参数      # 打开平台该页,从浏览器地址栏复制 base_url 之后的部分
+  desc: 一句话功能简介(≤60字)
+  usage:                     # 操作指引(步骤逐条;没实测就写 null,不要编造)
+    - 第一步…
+    - 第二步…
+  # visible: false           # 未开通/未验证时加此行隐藏
+  # note: 维护备注
+```
+
+加完跑 `build_pages.py`,再用 `query.py` 验证新别名能命中。
+
+### 5.3 启用 / 停用页面
+
+- **启用未验证页**(注册表里 11 个 `visible: false` 的菜单页):浏览器直接访问确认能打开 → 删掉该条目的 `visible: false` 行和 note → 重跑脚本;
+- **停用页面**(该环境未部署/下线):加一行 `visible: false` → 重跑脚本;
+- **彻底删除**:整个条目删掉 → 重跑脚本(docx 覆盖性校验会提示少了哪页,确认是有意删除即可忽略)。
+
+### 5.4 换部署环境(换矿 / 换服务器)
+
+1. 改 `config.yaml` 的 `base_url`(或接入后直接对智能体说"将网址换成 xxx");
+2. **换设备实例 ID**:设备详情页的 `?id=长数字` 与矿井绑定——进新环境平台打开目标设备页,从地址栏复制更新到对应条目的 `path`;
+3. **权限核对**:用管理员账号 token 调权限接口拉菜单树(curl 命令见 ADAPTATION.md §2.4),与 `menu_key` 比对,缺的补、错的改;
+4. 按 5.1 重跑脚本 + 抽测。
+
+### 5.5 歧义词维护经验(实测踩坑)
+
+用户口语与页面名经常错位。遇到"匹配错了/匹配不到"时:
+
+| 症状 | 修法 |
+| --- | --- |
+| 匹配到了,但用户说"不是这个页" | 该词是**歧义词**:把它同时加到两个页面的 `aliases`(同层并列命中会自动触发双候选呈现),如"网络解算"案例 |
+| 匹配不到 | 把用户的说法加进目标页 `aliases` |
+| 想固定某个候选排第一 | 调整 pages.yaml 中条目顺序(并列呈现按注册表顺序输出) |
+
+### 5.6 新功能发布后:一句话更新指引(Intent F)
+
+对智能体说"**我部署了新功能,请帮我更新网页指引**"即可,两种情况:
+
+**① 你能提供新页面网址(最好)**:把网址给智能体,它直接打开页面阅读内容、拟写简介与操作指引、生成条目草稿,你确认后写入 pages.yaml。
+
+**② 提供不了网址(自动同步)**:智能体运行 `sync_pages.py` 做菜单差集——**不是爬页面**,而是调平台权限接口一次拉取全量菜单树(权威路由清单),与 pages.yaml 比对:
+
+```bash
+# token 获取:登录平台 → F12 → 任意请求的请求头 X-Access-Token 复制
+python references/sync_pages.py <JWT_TOKEN>
+```
+
+输出三样东西:
+1. **菜单新增清单**(菜单有、注册表无的页面,含可见/隐藏标记与所属分组);
+2. **疑似下线清单**(注册表可见但菜单已无,提示权限/部署变化);
+3. **`sync_draft.yaml` 草稿**(每个新页面的条目骨架,desc/usage 标 TODO)。
+
+之后的固定动作:智能体或你逐个浏览器打开新页面(HTTP 状态码识别不了 SPA 的 404,必须看渲染结果)→ 补写 desc/usage/别名 → 合并进 pages.yaml(新页面先 `visible: false`,验证后启用)→ 删草稿文件 → 跑 `build_pages.py` → `query.py` 抽测。
+
+**实测效果**(2026-09-07,182 环境):一次同步即发现 31 个注册表未收录页面(各矿首页主题、外链系统、隐藏详情页、需风量子页等),疑似下线 0 误报。外链 outlink 类与测试菜单类建议保持不启用。
+
+## 6. 测试工具箱
+
+| 工具 | 命令 | 用途 |
+| --- | --- | --- |
+| 校验+生成 | `python references/build_pages.py` | YAML 合法性、条目完整性、docx 覆盖比对、URL 拼接,并生成 pages.json |
+| 匹配测试 | `python references/query.py "网络解算"` | 走与 SKILL.md 一致的层级匹配,看命中哪些页 |
+| 输出预览 | `python references/simulate_output.py` | 渲染四类场景 + 歧义场景的完整回答效果 |
+
+(需要 Python 3.8+ 与 PyYAML:`pip install pyyaml`)
+
+## 7. 常见问题 FAQ
+
+**Q1:用户点链接 404?**
+按流程 D 话术回复(未开通或无权限)。若多个用户反馈同一页面 404:核对该环境是否部署了该模块 → 未部署则 `visible: false` 下线该条目。
+
+**Q2:换了前缀但新会话还是旧地址?**
+方式 B(纯 prompt)下前缀只在本会话生效,这是架构限制;需要全局生效请用方式 A(工具写后端配置)或人工改 `config.yaml` 后重新注入。
+
+**Q3:不同账号看到的页面应该不一样?**
+方式 A 按 `menu_key` 动态过滤(调权限接口);方式 B/C 只能静态裁剪——把该部署未开通的页面设 `visible: false`。
+
+**Q4:智能体回答里链接格式乱/不可点?**
+确认宿主聊天面板支持 Markdown 链接(平台智能助手实测支持,蓝色可点击);输出必须是 `[名称](完整URL)` 格式。
+
+**Q5:怎么知道哪些页面还没操作指引?**
+`pages.json` 顶部 stats 里有 `with_usage` 计数;逐条看 `usage: null` 的就是待补页(素材参考《通防平台页面学习记忆.md》)。
+
+## 8. 当前状态与待办
+
+数据基线(2026-09-07,182 演示环境,lizuo 账号实测):
+
+- **84 条**页面条目:51 可见(26 逐页实机详测 + 22 路由模式验证 + 3 实测补充)、25 条含操作指引、4 大分类;
+- **禁用待验证 33 条**:11 个菜单页未逐页实测、17 个设备台账页路径未实测、3 个系统配置页 404、机电硐室管控 182 未部署、2 个隐藏菜单页(火灾模拟/避灾路线)。
+
+v1.1 待办(按优先级):
+
+1. [ ] 用管理员账号核实系统配置三页真实路由(admin 接口明文登录被拒,疑前端加密;可改用浏览器登录后从地址栏复制);
+2. [ ] 逐个验证 11 个 `visible:false` 菜单页并启用(一条命令流程见 §5.3);
+3. [ ] 补写剩余 26 个可见页的 `usage` 操作指引;
+4. [ ] 设备台账 17 页验证启用;
+5. [ ] 新环境部署时按 §5.4 换前缀 + 换设备 ID + 权限对齐。
+
+## 9. 版本记录
+
+| 日期 | 版本 | 变更 |
+| --- | --- | --- |
+| 2026-09-07 | v1.0 | 初版交付;同日测试期迭代:网络解算歧义词双候选机制、主题词跨类检索规则(防灭火罗列场景)、实时网络解算 usage 实测回填 |

+ 123 - 0
vent-web-nav/REQUIREMENTS.md

@@ -0,0 +1,123 @@
+# 网页指引 Skill 需求梳理文档
+
+> 版本:v2.0(经 brainstorming/grilling 拷问后修订)| 日期:2026-09-07 | 状态:七项决策已与用户逐条确认
+
+## 1. 背景与目标
+
+矿井一通三防智能管控平台(通防管控平台)内嵌了智能助手(顶栏机器人图标,聊天面板形态)。平台页面多、层级深,用户记不住入口。需要一个"**网页指引**"skill,让用户用自然语言即可:
+
+1. **快速直达**:说"帮我打开风门监测页面"→ 返回该页可点击链接 + 功能简介;
+2. **全局地图**:说"给我网页地图"→ 聊天内输出全部页面树状地图,按需访问;
+3. **换环境不换脑子**:部署地址变化时说"将网址换成 XXX"→ 所有链接前缀随之更换;
+4. **会用页面**:说"风门怎么远程开"→ 给出页面内分步操作指引。
+
+**总目标:把"找页面"从 3-5 次点击/检索降为 1 句话,把"学页面"从摸索降为一问。**
+
+## 2. 实机验证事实(2026-09-07,182 演示环境,lizuo 测试账号)
+
+| 事实 | 影响 |
+| --- | --- |
+| 智能助手面板支持 Markdown 蓝色可点击链接 | 链接直达方案可行 ✅ |
+| 点链接后:AI 面板自动关闭 + 当前窗口路由跳转 | 链接即跳转,无需额外交互 ✅ |
+| **现有实现给出的"风门监测与控制"链接点击后跳到了首页模型页而非风门页** | 现有实现链接指向有误 → 本 skill 替换它 |
+| 现有回答格式已是"【页面名】+功能简介+🔗立即打开",且快捷 chips 预置了"帮我打开风门监测页面" | 导航是智能助手预设场景,本次是固化+补全+纠错 |
+| 智能助手每日配额 10 次 | 页面地图等一次回答要尽量全量,避免多次追问 |
+| 权限外路由统一 404,无法区分"不存在/无权限" | 权限需前置过滤(动态感知) |
+| 21 页详测 + 26 页路由模式验证 + 4 页 404 | 数据来源可靠,详见《通防平台页面学习记忆.md》 |
+
+## 3. 已确认决策(与用户逐条对齐,共九项)
+
+| # | 决策点 | 结论 |
+| --- | --- | --- |
+| D1 | 与平台现有实现关系 | **替换**:本 skill 成为智能助手网页指引能力的唯一权威源 |
+| D2 | 智能体架构 | **有工具调用(function calling)**:skill 主形态为"数据文件+工具封装",prompt 注入为降级方案 |
+| D3 | 换前缀作用域 | **全局持久化**:工具写后端配置,所有用户所有会话生效,带变更历史 |
+| D4 | 权限感知 | **按账号动态感知**:运行时调平台菜单/权限接口,按当前用户过滤页面 |
+| D5 | 网页地图形态 | **聊天内树状图**(通用性优先,不做平台弹窗) |
+| D6 | 能力边界 | **指路 + 操作指引**("怎么操作"给页面内步骤;21 个实测页有素材) |
+| D7 | 清单维护 | **人工维护 pages.yaml** + 运行时动态权限过滤(不做自动同步脚本) |
+| D8 | 交付位置 | 仅工作区 `D:\ZCodeWorkspaces\web-nav-guide\`,不装用户级目录 |
+| D9 | 数据格式 | **YAML(人工维护)+ JSON(机器读取)双份**,维护时改 YAML 后重新生成 JSON |
+
+## 4. 功能需求
+
+### F1 模糊页面导航(单页直达)【核心】
+- **触发**:"打开/进入/跳转/带我去/看一下 + 页面/系统/页面名",如"帮我打开风门监测页面""打开风门操控""我要看主扇数据"。
+- **匹配策略**(优先级):① `name` 精确 → ② `aliases` 精确(主扇/局扇/甲烷等口语词)→ ③ name/aliases/keywords 包含匹配 → ④ 分类名命中(转 F2 按类输出)。
+- **权限前置**:匹配结果先按当前用户可见菜单(D4)过滤;不可见=未找到。
+- **输出**:页面名 + 一句话简介 + 完整可点击链接。
+- **歧义**:多候选并列时列前 3(简介+链接)供选择,不猜。
+- **未找到**:"未找到此页面" + 最相近 3 个候选(权限过滤后)。
+- **设备类页面**:path 已内置默认设备实例 ID,只说设备类型即可直达。
+
+### F2 网页地图(树状全量导航)【核心】
+- **触发**:"网页地图/页面地图/都有哪些页面/平台功能一览/只看XX类页面"。
+- **输出**:分类→子类→页面三级树,每页一句话简介+链接;标注当前部署地址;支持按大类筛选。
+- **全量输出**(权限过滤后的全量),不省略条目——每日配额有限,一次给全。
+
+### F3 部署前缀切换【核心】
+- **触发**:"将网址换成 XXX / 把前缀改为 XXX / 切换部署地址"。
+- **校验**:`http(s)://host[:port]`;只有 `host:port` 时自动补 `http://` 并告知;去尾斜杠;非法格式向用户确认。
+- **持久化(D3)**:调 `set_base_url` 工具写后端配置 + 追加 history;确认后用示例链接验证展示。
+- **降级**:无工具环境仅会话内生效,明确告知"仅本会话有效"。
+
+### F4 权限与不可见页面(D4 动态感知)
+- 页面注册表每页带 `menu_key`,与平台菜单/权限接口返回对齐;
+- 所有输出(F1/F2/F6)先按当前用户可见 menu_key 集合过滤;
+- 用户执意要未开通页面 → "该页面您当前无权访问或未开通,请联系管理员"。
+
+### F5 通用性(跨智能体架构,D2/D9)
+- 主形态:数据文件(pages.yaml/pages.json + config)+ 4 个工具封装(query_page / get_page_map / set_base_url / get_visible_menus);
+- 降级形态:SKILL.md 指令 + 数据可直接注入系统提示词;
+- 兼容 Agentskills 目录规范(ZCode/Claude Code 直接挂载);
+- 数据与逻辑分离,维护只动 YAML。
+
+### F6 页面操作指引【新增,D6】
+- **触发**:"XX怎么操作/怎么远程开风门/怎么一键测风/XX页面怎么用"。
+- **输出**:页面链接 + 分步操作步骤(来自注册表 `usage` 字段)。
+- **素材边界**:21 个实测页有完整步骤;未实测页 usage 标"待补充",回答时如实说明并给链接。
+
+## 5. 非功能需求
+
+| 编号 | 要求 |
+| --- | --- |
+| N1 | 页面数据集中在 pages.yaml,运维人员无需懂代码即可增删改 |
+| N2 | 所有输出链接完整可点击(base_url+path 拼接,无双斜杠) |
+| N3 | 全中文;简介每页 ≤60 字;操作指引分步、每步一句 |
+| N4 | 换矿部署:改 base_url + 换设备实例 ID + 对齐 menu_key 即可 |
+| N5 | 不采集不上传用户数据;skill 只读平台路由知识 |
+
+## 6. 交付物清单
+
+```
+vent-web-nav/
+├── SKILL.md              # 技能定义:工具调用主路径 + prompt注入降级 + 意图A-F
+├── config.yaml           # 部署前缀(base_url + 变更历史;工具或人工写入)
+├── references/
+│   ├── pages.yaml        # 页面注册表(84页:别名/关键词/menu_key/路径/简介/操作指引)
+│   ├── pages.json        # 由 pages.yaml 生成,机器读取
+│   ├── build_pages.py    # 校验+生成脚本
+│   ├── sync_pages.py     # 新功能发布后菜单差集同步
+│   ├── query.py          # 命令行匹配测试
+│   └── simulate_output.py # 输出效果模拟
+├── ADAPTATION.md         # 三种架构接入指南 + 维护手册
+├── GUIDE.md              # 使用与维护手册
+└── REQUIREMENTS.md       # 本文档
+```
+
+## 7. 边界与开放问题
+
+1. 角色管理与用户管理在 docx 中共用同一 URL,暂按同址录入并注明,待管理员账号核实;
+2. 设备实例 ID 与矿井/模型绑定,换矿需重新录入(维护流程见 ADAPTATION.md);
+3. menu_key 命名约定是本 skill 假设,接入时需与平台菜单接口实际返回对齐(对齐方法见 ADAPTATION.md);
+4. 404 无法区分"不存在/无权限",统一按"未找到或无权限"话术;动态权限过滤上线后该场景大幅减少;
+5. 平台智能助手每日 10 次配额属于平台侧配置,与本 skill 无关。
+
+## 8. 验收场景(交付时逐项演示)
+
+| # | 输入 | 期望输出 |
+| --- | --- | --- |
+| A1 | 帮我打开风门监测页面 | 【风门监测与控制】+简介+正确链接(指向 monitor-gate 而非首页) |
+| A2 | 给我网页地图(瓦斯类) | 瓦斯类 5 页树状图+链接 |
+| A3 | 将网址换成 http://10.120.3.15:8092 | 校验+持久化+示例链接确认 |
+| A4 | 风门怎么远程开 | 风门页链接+分步操作(远程模式→开门按钮→操作历史) |

+ 163 - 0
vent-web-nav/SKILL.md

@@ -0,0 +1,163 @@
+---
+name: vent-web-nav
+description: 通防平台网页指引。当用户要求打开/跳转/进入平台某个页面(如"帮我打开风门监测页面")、询问平台有哪些页面、索要网页地图/页面地图、询问某页面怎么操作(如"风门怎么远程开"),或要求更换网址前缀/部署地址(如"将网址换成 http://xxx")、宣布部署新功能要求更新指引时使用。基于页面注册表返回可点击链接、功能简介与操作指引,支持按账号权限动态过滤与部署前缀切换。
+---
+
+# 通防平台网页指引(Web Navigation Guide)
+
+你是矿井一通三防智能管控平台的内嵌导航助手。平台页面多、层级深,你的职责是**用一句话把用户送到正确的页面,并教会他基本操作**——返回页面名称、一句话功能简介、可点击的完整网址;被问到操作方法时给分步指引。
+
+本技能两种运行模式,按宿主智能体能力自动选择:
+- **模式一(推荐):工具调用**——宿主提供 4 个工具(见下),页面数据与权限由工具动态提供,前缀切换全局持久化;
+- **模式二(降级):知识注入**——无工具环境,本文件指令与 `references/pages.yaml`、`config.yaml` 内容直接注入系统提示词,前缀切换仅会话内生效。
+
+## 资源文件
+
+| 文件 | 作用 |
+| --- | --- |
+| `config.yaml` | 部署前缀 `base_url` 及变更历史 |
+| `references/pages.yaml` | 页面注册表(人工维护的权威数据源):分类 → 子类 → 页面 |
+| `references/pages.json` | 由 pages.yaml 生成的机器读取版 |
+
+## 链接构造规则(必须遵守)
+
+```
+完整地址 = base_url(去掉末尾 /) + path(注册表相对路径,以 / 开头)
+```
+
+- 拼接后不得出现 `//`;path 的查询参数(`?id=...&deviceType=...`)保持原样——设备实例 ID 是平台默认设备,不得删改;
+- 输出必须给完整可点击的 Markdown 链接,不要只给相对路径。
+
+## 工具定义(模式一)
+
+宿主智能体应实现以下 4 个工具(实现指引见 `ADAPTATION.md`):
+
+| 工具 | 签名 | 行为 |
+| --- | --- | --- |
+| 查询页面 | `query_page(query: string, top_n?: int) -> Page[]` | 按 name 精确 → aliases 精确 → name/aliases/keywords 包含的优先级匹配,返回含完整链接、简介、操作指引的页面列表(已按当前用户权限过滤) |
+| 页面地图 | `get_page_map(category?: string) -> CategoryTree` | 返回(权限过滤后的)分类树;category 可选,用于按类筛选 |
+| 换前缀 | `set_base_url(url: string) -> {ok, old, new, sample}` | 校验 `http(s)://host[:port]`(缺协议默认补 `http://` 并告知)、去尾斜杠、持久化写入并记录 history,返回一条示例链接供确认 |
+| 可见菜单 | `get_visible_menus() -> string[]` | 调平台权限接口,返回当前用户可见的菜单 path 集合(含 hidden 条目与子菜单),用于权限过滤 |
+| 同步指引 | `sync_pages(token?: string) -> DiffReport` | 调权限接口拉全量菜单树,与 pages.yaml 比对,返回新增页面/疑似下线清单及草稿(参考实现 `references/sync_pages.py`) |
+
+**权限过滤规则(关键)**:页面注册表中每页有 `menu_key`。`menu_key` 非空的页面,仅当 `menu_key`(或其去参数基础路径)出现在 `get_visible_menus()` 结果中才可展示;`menu_key: null` 表示该页面不接入菜单权限体系,默认展示。被过滤≠不存在——用户执意要访问时回复"该页面您当前无权访问或未开通,请联系管理员",不要泄露隐藏页面的存在。
+
+**权限接口事实依据**(平台为 JEECG Boot 架构):
+```
+GET {base_url}/modelreq/sys/permissionNew/getUserPermissionByToken?token=<JWT>
+请求头:X-Access-Token: <JWT>
+返回:result.menu[] 递归树,每项含 path(真实路由)、meta.title(中文名)、hidden、children
+```
+
+## 意图路由
+
+| 意图 | 典型说法 | 处理 |
+| --- | --- | --- |
+| A 打开页面 | 帮我打开风门监测页面 / 打开风门操控 / 带我去需风量分析 / 我要看主扇数据 | 见流程 A |
+| B 网页地图 | 给出我网页地图 / 页面地图 / 都有哪些页面 / 只看瓦斯类页面 | 见流程 B |
+| C 换前缀 | 将网址换成 http://10.120.3.15:8092 / 把前缀改为 xxx / 切换部署地址 | 见流程 C |
+| D 打不开 | 点了链接 404 / 页面不存在 | 见流程 D |
+| E 怎么操作 | 风门怎么远程开 / 怎么一键测风 / XX页面怎么用 | 见流程 E |
+| F 更新指引 | 我部署了新功能,请帮我更新网页指引 / 同步页面清单 / 指引更新了没 | 见流程 F |
+
+意图不明时先澄清,不要猜。
+
+---
+
+## 流程 A:打开某个页面
+
+1. **匹配**(在注册表内按层级):① `name` 精确相等 → ② `aliases` 精确相等(主扇、局扇、甲烷等口语词)→ ③ name/aliases/keywords 包含匹配 → ④ 命中分类名(如"瓦斯类")转流程 B 按类输出。**每一层内收集全部命中**:同层仅一个命中才直答;同层多个命中(如"网络解算"同时精确命中【首页3D】与【实时网络解算】的别名)进入歧义呈现(见第 4 步);高层有命中时低层不再参与。
+2. **权限过滤**:模式一按 menu_key 过滤;模式二跳过。
+3. **输出**(唯一高置信匹配):
+
+```
+已为您找到【{页面名}】页面({分类}·{子类}):
+📖 功能:{desc}
+🔗 立即打开:[{页面名}]({完整地址})
+```
+
+4. **歧义呈现(默认)**:多候选得分接近时(如"网络解算"同时命中【首页3D(三维模型)】与【实时网络解算】),**并列输出 2-3 个候选,每个候选带一句区分说明 + 链接**,用户直接点选,不擅自替用户选择、也不强制追问:
+
+```
+「{用户话语}」匹配到 {N} 个页面,请按需点选:
+1. [{页面名}]({完整地址}) —— {一句话区分说明(如何与其他候选不同)}
+2. [{页面名}]({完整地址}) —— {区分说明}
+```
+
+   区分说明应点出关键差异维度(是否带三维模型、仪表盘式/大屏式、监测/控制/分析等),可从 desc 与 note 提炼。
+   **仅当候选无法用一句话有效区分、或用户话语完全无指向时才追问澄清**——智能助手每日配额有限,宁可一次给全,不消耗用户追问轮次。
+5. **未找到**:回复"未找到与「{原话}」匹配的页面"+ 最相近 3 个候选(权限过滤后)。用户描述功能而非页面名(如"我要测个风")时按功能关键词推荐。
+6. **设备类页面**:path 已内置默认设备实例 ID,直达即可;用户要换设备实例时提示"进入页面后在页内下拉切换"。
+
+## 流程 B:输出网页地图
+
+1. 权限过滤后按注册表 `categories → groups → pages` 三级渲染:
+
+```
+# 🗺️ 通防平台网页地图
+当前部署地址:{base_url}(说"将网址换成 xxx"可切换)
+
+## 一、通防监控(共N页)
+### 智能通风
+- [{页面名}]({完整地址}) —— {desc}
+...
+```
+
+2. 全量输出,不省略条目(智能助手每日配额有限,一次给全);无 groups 的分类直接列页面;
+3. 按大类筛选时("只看瓦斯类")仅输出对应分类,分类名支持别名(瓦斯→瓦斯监控);
+4. **主题词跨类检索**(如"防灭火""瓦斯防治"相关页面):以命中的分类/子类为主体,并补充其他分类中该主题相关的页面(如防灭火主题还需纳入关键场景组的防火门智能管控、皮带三级灭火等),合并后**按功能类型分组**呈现(监测类 / 控制类 / 预警与分析类 / 联动场景类),并在末尾注明含该主题分区的综合页(如采煤/掘进工作面综合管控含防灭火监测与管控分区)。
+
+## 流程 C:更换网址前缀
+
+1. **解析**:从话语提取地址,如 `http://10.120.3.15:8092`。
+2. **校验**:必须 `http(s)://host[:port]`;只有 `host:port` 时自动补 `http://` 并告知;去尾斜杠;格式可疑(无主机名/含空格)先确认再改。
+3. **生效**:
+   - 模式一:调 `set_base_url` 持久化(全局生效,含变更历史);
+   - 模式二:本会话内记住,明确告知"仅当前会话有效,重开对话需再说一次"。
+4. **确认**:
+
+```
+✅ 网址前缀已更换:{旧} → {新}
+示例(平台首页3D):[{完整示例地址}]({完整示例地址})
+之后所有页面链接均使用新前缀。
+```
+
+## 流程 D:页面打不开(404)
+
+回复:该页面在当前部署环境未开通,或您的账号没有访问权限。请联系平台管理员确认:①该功能模块是否已部署;②您的角色是否勾选了该菜单权限。
+不要自行尝试其他 URL 变体。
+
+## 流程 E:页面操作指引
+
+1. 先按流程 A 定位页面(操作问题里通常含页面线索,如"风门怎么开"→风门监测与控制)。
+2. 页面 `usage` 非空时分步输出:
+
+```
+【{页面名}】操作指引:
+🔗 页面:[{页面名}]({完整地址})
+1. {步骤1}
+2. {步骤2}
+...
+💡 提示:{usage_tip,如有}
+```
+
+3. `usage` 为空(未实测页)时如实说明:"该页面的详细操作指引正在补充中",给链接 + desc 概述,不编造步骤。
+
+## 流程 F:更新网页指引(新功能发布后)
+
+触发:"我部署了新功能,请帮我更新网页指引 / 同步页面清单"。
+
+1. **用户给了新页面网址** → 直接跳到第 3 步按该网址处理;
+2. **未给网址** → 做菜单差集,**不要逐个爬取页面路由**:
+   - 模式一:调 `sync_pages` 工具;
+   - 模式二/C:运行 `python references/sync_pages.py <JWT>`(token 从浏览器 F12 任意请求头 `X-Access-Token` 复制);
+   - 原理:平台权限接口 `getUserPermissionByToken` 一次返回全量菜单树(117 个叶子页),与 pages.yaml 的 path/menu_key 比对即得差集,输出"菜单新增 / 疑似下线"清单与 `sync_draft.yaml` 草稿;
+3. **阅读新页面内容**:逐个浏览器打开新增页面(注意:HTTP 状态码无法识别 SPA 的客户端 404,必须看渲染结果),提取标题、功能分区、按钮、表格字段,拟写 `desc`(≤60字)与 `usage`(能确认的才写,不能确认保持 null);
+4. **呈报变更清单**给用户确认:新增哪些页面、归属哪个分类、别名建议、是否启用(外链 outlink 类、测试菜单类建议不启用);
+5. **确认后落盘**:把草稿合并进 pages.yaml 对应分类(新页面一律先 `visible: false`,浏览器验证可访问后再启用)→ 删除 sync_draft.yaml → 运行 `build_pages.py` 校验 → `query.py` 抽测新别名。
+
+## 维护约定
+
+- 增删页面、换矿换设备 ID、menu_key 对齐、YAML→JSON 同步等操作见 `ADAPTATION.md`;
+- 注册表 `visible: false` 的条目(如设备台账管理未验证页)在所有流程中跳过;
+- 平台新增页面时只需改 `references/pages.yaml`,本文件无需变动。

+ 23 - 0
vent-web-nav/config.yaml

@@ -0,0 +1,23 @@
+# ============================================================
+# 通防平台网页指引 - 部署前缀配置
+# 完整页面地址 = base_url + references/pages.yaml 中的相对路径
+#
+# 修改方式(三选一):
+#   1. 对智能体说:"将网址换成 http://<新主机>:<端口>"
+#      → function calling 架构下由 set_base_url 工具持久化写入本文件
+#        (或后端配置存储),全局生效并自动记录 history;
+#      → 纯 prompt 架构下仅当前会话生效;
+#   2. 人工直接编辑本文件的 base_url;
+#   3. 部署流水线注入。
+#
+# 校验规则:必须为 http(s)://host[:port] 格式,末尾不要带 /
+# ============================================================
+
+base_url: http://182.92.126.35:8092
+
+# ---- 前缀变更历史(工具或人工追加,便于追溯) ----
+history:
+  - time: "2026-09-07"
+    from: ""
+    to: "http://182.92.126.35:8092"
+    note: "初始配置(182 演示环境,lizuo 账号实测验证)"

+ 157 - 0
vent-web-nav/references/build_pages.py

@@ -0,0 +1,157 @@
+# -*- coding: utf-8 -*-
+"""pages.yaml 校验 + pages.json 生成脚本
+用法: python build_pages.py  (在本目录 references/ 下运行或任意目录均可)
+"""
+import json
+import re
+import sys
+from pathlib import Path
+
+try:
+    import yaml
+except ImportError:
+    print("ERROR: 需要 PyYAML(pip install pyyaml)")
+    sys.exit(1)
+
+HERE = Path(__file__).parent
+YAML_PATH = HERE / "pages.yaml"
+JSON_PATH = HERE / "pages.json"
+CONFIG_PATH = HERE.parent / "config.yaml"
+
+errors, warns = [], []
+
+# ---------- 读取 ----------
+data = yaml.safe_load(YAML_PATH.read_text(encoding="utf-8"))
+cfg = yaml.safe_load(CONFIG_PATH.read_text(encoding="utf-8"))
+base_url = (cfg.get("base_url") or "").rstrip("/")
+
+if not re.match(r"^https?://[^/\s]+(:\d+)?$", base_url):
+    errors.append(f"config.yaml base_url 非法: {base_url}")
+
+# ---------- 遍历校验 ----------
+pages, all_ids, menu_keys = [], [], []
+
+def check_page(p, cat, group):
+    pid = p.get("id")
+    if not pid:
+        errors.append(f"缺少 id: {p.get('name')}")
+        return
+    if pid in all_ids:
+        errors.append(f"id 重复: {pid}")
+    all_ids.append(pid)
+    path = p.get("path", "")
+    if not path.startswith("/"):
+        errors.append(f"[{pid}] path 不以 / 开头: {path}")
+    url = base_url + path
+    if "//" in url.replace("://", ""):
+        errors.append(f"[{pid}] URL 拼接出现双斜杠: {url}")
+    if not p.get("name"):
+        errors.append(f"[{pid}] 缺少 name")
+    if not p.get("desc"):
+        errors.append(f"[{pid}] 缺少 desc")
+    mk = p.get("menu_key", "")
+    if mk:
+        if mk in menu_keys:
+            warns.append(f"menu_key 重复: {mk} ({pid})")
+        menu_keys.append(mk)
+    pages.append({
+        "id": pid, "name": p["name"], "aliases": p.get("aliases") or [],
+        "keywords": p.get("keywords") or [], "menu_key": mk or None,
+        "path": path, "desc": p.get("desc", ""),
+        "usage": p.get("usage"), "usage_tip": p.get("usage_tip"),
+        "visible": p.get("visible", True), "note": p.get("note"),
+        "category": cat["name"], "group": group,
+    })
+
+for cat in data.get("categories", []):
+    if cat.get("pages"):
+        for p in cat["pages"]:
+            check_page(p, cat, None)
+    for g in cat.get("groups") or []:
+        for p in g.get("pages") or []:
+            check_page(p, cat, g["name"])
+
+# ---------- docx 原 URL 覆盖性比对 ----------
+docx_paths = [
+    "/monitorChannel/monitor-windrect?id=1931597465741889538&deviceType=windrect",
+    "/monitorChannel/monitor-sensorMonitor",
+    "/monitorChannel/monitor-fanmain?id=2087348159538384898&deviceType=fanmain",
+    "/monitorChannel/monitor-fanlocal?id=1712030595700707330&deviceType=fanlocal",
+    "/monitorChannel/monitor-gate?id=1796536612492324866&deviceType=gate",
+    "/monitorChannel/monitor-window?id=1427837547259232258&deviceType=window",
+    "/micro-vent-3dModal/configurable/default/ventS/home?type=model3D&deviceType=model3D&isNoReverse=1",
+    "/micro-vent-2dModal/configurable/default/ventS/home?type=model3D&deviceType=model3D&isNoReverse=1",
+    "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=timenetcal",
+    "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=pathDecison",
+    "/micro-need-air/",
+    "/micro-need-air/workAccount/",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fiber&tabtype=monitor",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=bundletube",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_temperature&deviceid=",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_smoke&deviceid=",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_co&deviceid=",
+    "/nitrogen-home", "/grout-home",
+    "/monitorChannel/monitor-firedoor?id=2019226919389147138&deviceType=door",
+    "/micro-vent-3dModal/configurable/belt/fireS/home",
+    "/configurable/default/fireDoorMonitor/home",
+    "/monitorChannel/balancePress-home", "/fire/warn/home?p=0",
+    "/bundle/bundleTable", "/bundleSpy/bundleSpyTable",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gaspatrol",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_gas&deviceid=",
+    "/gas/gas-pump-monitor/home", "/gas/warn/home?p=0", "/gas/gas-report-inspect",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=dusting&tabtype=monitor",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=atomizing",
+    "/dust/dedustefan/home", "/dust/warn/home", "/dust/dustMonitorTable",
+    "/monitorChannel/monitor-alarm-home", "/monitorChannel/wokerFace-home",
+    "/monitorChannel/tunFace-home",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=location&tabtype=monitor",
+    "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=vehicle",
+    "/monitorChannel/device-monitor/safetymonitor", "/camera", "/forcFan/home",
+    "/fileManager/fileDetail/home", "/monitorChannel/system/user",
+    "/monitorChannel/system/project-setting",
+]
+# 温度/烟雾/CO/瓦斯传感器 docx 旧地址在注册表中有意替换为菜单地址,单独登记
+replaced_intentionally = {
+    "modelsensor_temperature", "modelsensor_smoke", "modelsensor_co", "modelsensor_gas",
+}
+reg_paths = {p["path"] for p in pages}
+for dp in docx_paths:
+    if dp in reg_paths:
+        continue
+    if any(k in dp for k in replaced_intentionally):
+        warns.append(f"docx地址已按菜单有意替换: {dp}")
+        continue
+    if "sysfiretest" in dp:
+        warns.append(f"docx地址已更新参数(菜单最新值): {dp}")
+        continue
+    if "electro-chamber" in dp:
+        warns.append(f"docx错误地址已弃用(electro-chamber): {dp}")
+        continue
+    errors.append(f"docx 页面缺失: {dp}")
+
+# ---------- 统计与输出 ----------
+visible_pages = [p for p in pages if p["visible"]]
+with_usage = [p for p in pages if p.get("usage")]
+
+out = {
+    "version": data.get("version"), "updated": data.get("updated"),
+    "base_url": base_url,
+    "stats": {
+        "total": len(pages), "visible": len(visible_pages),
+        "with_usage": len(with_usage),
+        "categories": len(data.get("categories", [])),
+    },
+    "pages": pages,
+}
+JSON_PATH.write_text(json.dumps(out, ensure_ascii=False, indent=2), encoding="utf-8")
+
+print(f"总条目: {len(pages)} | 可见: {len(visible_pages)} | 含操作指引: {len(with_usage)} | 分类: {len(data.get('categories', []))}")
+print(f"pages.json 已生成: {JSON_PATH}")
+for w in warns:
+    print("WARN:", w)
+if errors:
+    print("\n== 校验失败 ==")
+    for e in errors:
+        print("ERROR:", e)
+    sys.exit(1)
+print("校验全部通过 ✔")

+ 1977 - 0
vent-web-nav/references/pages.json

@@ -0,0 +1,1977 @@
+{
+  "version": "1.0",
+  "updated": "2026-09-07",
+  "base_url": "http://182.92.126.35:8092",
+  "stats": {
+    "total": 84,
+    "visible": 51,
+    "with_usage": 25,
+    "categories": 4
+  },
+  "pages": [
+    {
+      "id": "fanmain",
+      "name": "主通风机监测与控制",
+      "aliases": [
+        "主通风机",
+        "主扇",
+        "主要通风机",
+        "主风机",
+        "风机",
+        "主通风机监测",
+        "主通风机控制",
+        "主通风机管控"
+      ],
+      "keywords": [
+        "启停",
+        "变频",
+        "负压",
+        "漏风率",
+        "fanmain"
+      ],
+      "menu_key": "/monitorChannel/monitor-fanmain",
+      "path": "/monitorChannel/monitor-fanmain?id=2087348159538384898&deviceType=fanmain",
+      "desc": "主通风机管控详情:运行状态监测与远程启停/调节,查看风量、负压、漏风率及历史曲线。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "默认设备为松定霍洛一号风机,进页后可切换",
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "fanlocal",
+      "name": "局部通风机监测与控制",
+      "aliases": [
+        "局部通风机",
+        "局扇",
+        "局部风机",
+        "局部通风",
+        "局扇控制",
+        "局部风机管控"
+      ],
+      "keywords": [
+        "启停风机",
+        "调频",
+        "瓦斯闭锁",
+        "fanlocal"
+      ],
+      "menu_key": "/monitorChannel/monitor-fanlocal",
+      "path": "/monitorChannel/monitor-fanlocal?id=1712030595700707330&deviceType=fanlocal",
+      "desc": "局部风机管控详情:启停风机、主/备机调频、需风量与瓦斯限值设定、工况辅助决策。",
+      "usage": [
+        "在「风机类型」下拉选择目标局扇(如变频局部风机)",
+        "「启停风机」执行远程启停",
+        "「主机调频 / 备机调频」调节运行频率",
+        "「需风量」「瓦斯限值设定」配置风电闭锁与瓦斯闭锁阈值",
+        "「工况辅助决策」查看运行建议;操作记录见「操作历史」tab"
+      ],
+      "usage_tip": "按钮置灰通常为通信中断或就地模式(现场旋钮未切远程)",
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "windrect",
+      "name": "测风装置",
+      "aliases": [
+        "测风",
+        "风速监测",
+        "测风设备",
+        "风量监测装置",
+        "测风装置管控"
+      ],
+      "keywords": [
+        "风速",
+        "风量",
+        "一键测风",
+        "windrect"
+      ],
+      "menu_key": "/monitorChannel/monitor-windrect",
+      "path": "/monitorChannel/monitor-windrect?id=1931597465741889538&deviceType=windrect",
+      "desc": "测风设备管控详情:一键测风/复位,各测点风速、风量、风向实时监测与测风结果查询。",
+      "usage": [
+        "点击「一键测风」发起远程测风,等待完成",
+        "「实时监测」tab查看各测点风速/风量/风向/断面积",
+        "「测风结果」tab查看测风报告",
+        "装置异常时点击「一键复位」"
+      ],
+      "usage_tip": "历史数据/报警历史在页签切换查看",
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "gate",
+      "name": "风门监测与控制",
+      "aliases": [
+        "风门",
+        "风门监测",
+        "风门控制",
+        "风门操控",
+        "风门管控",
+        "风门页面"
+      ],
+      "keywords": [
+        "开门",
+        "关门",
+        "前门",
+        "后门",
+        "压差",
+        "gate"
+      ],
+      "menu_key": "/monitorChannel/monitor-gate",
+      "path": "/monitorChannel/monitor-gate?id=1796536612492324866&deviceType=gate",
+      "desc": "风门管控详情:远程开闭前后门或同时开关,远程/就地/自动模式切换,状态与压差监测。",
+      "usage": [
+        "打开页面确认顶部分站型号(如 KJ-980-F 矿用本安型监控分站)",
+        "控制模式选择「远程」(就地/自动由现场设定,远程才能手机/网页操作)",
+        "按需点击「打开前门 / 关闭前门 / 同时打开 / 同时关闭」",
+        "「实时监测」tab查看前/后门状态、压差、气源压力、报警等级",
+        "操作记录在「操作历史」tab追溯"
+      ],
+      "usage_tip": "控制按钮置灰多为通信中断、气源压力不足或未切远程模式",
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "window",
+      "name": "风窗监测与控制",
+      "aliases": [
+        "风窗",
+        "调节风窗",
+        "风窗控制",
+        "风窗管控"
+      ],
+      "keywords": [
+        "开度",
+        "调节",
+        "window"
+      ],
+      "menu_key": "/monitorChannel/monitor-window",
+      "path": "/monitorChannel/monitor-window?id=1427837547259232258&deviceType=window",
+      "desc": "风窗管控详情:风窗开度远程调节与状态监测,查看通过风量与压差。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "sensor-monitor",
+      "name": "气压温湿度监测",
+      "aliases": [
+        "温湿度",
+        "大气压",
+        "气象监测",
+        "环境参数监测"
+      ],
+      "keywords": [
+        "温度",
+        "湿度",
+        "气压"
+      ],
+      "menu_key": "/monitorChannel/monitor-sensorMonitor",
+      "path": "/monitorChannel/monitor-sensorMonitor",
+      "desc": "井下大气压、温度、湿度等环境参数实时监测与历史查询。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "need-air",
+      "name": "需风量计算与分析",
+      "aliases": [
+        "需风量",
+        "需风量计算",
+        "需风量分析",
+        "按需分风",
+        "按需分风网络解算",
+        "需风量分析系统"
+      ],
+      "keywords": [
+        "计划风量",
+        "回风井",
+        "用风地点"
+      ],
+      "menu_key": "/micro-need-air/",
+      "path": "/micro-need-air/",
+      "desc": "矿井需风量分析:按采煤/掘进/备用工作面、防爆胶轮车、硐室等用风地点多方法计算需风量。",
+      "usage": [
+        "顶部页签切换通风系统(全部/松定/明安木)或进入「回风井管理」",
+        "按用风地点页签(采煤/掘进/备用工作面、防爆胶轮车、硐室、其他用风点)维护条目",
+        "每条自动按气象条件/瓦斯涌出/CO₂涌出/按人员四种方法计算并取需风量",
+        "「导出计划风量表」导出成果"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "work-account",
+      "name": "通风能力核定",
+      "aliases": [
+        "能力核定",
+        "通风能力",
+        "核定"
+      ],
+      "keywords": [
+        "万t/a",
+        "产量"
+      ],
+      "menu_key": "/micro-need-air/workAccount/",
+      "path": "/micro-need-air/workAccount/",
+      "desc": "矿井通风能力核定:维护用风地点与工作面产量信息,核定矿井通风能力(万t/a)。",
+      "usage": [
+        "「矿井用风地点」维护用风点清单",
+        "「采煤工作面产量信息」录入面长/采高/日推进度/回采率等",
+        "系统自动核定矿井通风能力,在「通风能力核定」页签确认核定值"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "vents-monitor",
+      "name": "通风系统监测",
+      "aliases": [
+        "通风系统总览"
+      ],
+      "keywords": [
+        "系统监测",
+        "ventS"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=ventS",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=ventS",
+      "desc": "在三维模型上总览通风系统运行状态(菜单新增页,182环境实测可打开)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "netcal",
+      "name": "通风网络解算",
+      "aliases": [
+        "网络解算",
+        "解算分析",
+        "风网解算"
+      ],
+      "keywords": [
+        "解算",
+        "netcal"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=netcal",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=netcal",
+      "desc": "通风网络解算分析(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "timenetcal",
+      "name": "实时网络解算",
+      "aliases": [
+        "实时解算",
+        "网络解算"
+      ],
+      "keywords": [
+        "实时",
+        "解算",
+        "timenetcal",
+        "仪表盘解算"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=timenetcal",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=timenetcal",
+      "desc": "基于实时监测数据的通风网络解算:展示本次解算时间、解算总进风量等结果,支持网络分析。",
+      "usage": [
+        "工具栏点「实时解算」发起基于实时监测数据的网络解算",
+        "查看本次解算时间、解算总进风量(m³/min)等解算结果",
+        "需要更多分析时切换工具:通风网络解算 / 控风方案决策 / 通风系统评价 / 火灾模拟 / 通风网络分析"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "path-decison",
+      "name": "控风方案辅助决策",
+      "aliases": [
+        "控风方案",
+        "控风决策",
+        "辅助决策",
+        "通风系统辅助调整"
+      ],
+      "keywords": [
+        "方案",
+        "决策",
+        "pathDecison",
+        "网络解算"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=pathDecison",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=pathDecison",
+      "desc": "在通风网络图上辅助决策:网络解算、实时解算、控风方案对比、通风系统评价、火灾模拟。",
+      "usage": [
+        "在模型图上点选巷道/设施查看属性",
+        "工具栏选「通风网络解算 / 实时解算」发起解算",
+        "「控风方案决策」生成并对比多套调控方案",
+        "「通风系统评价」查看系统评价结果"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "智能通风"
+    },
+    {
+      "id": "alarm-home",
+      "name": "多灾融合预警",
+      "aliases": [
+        "多灾",
+        "融合预警",
+        "综合预警",
+        "预警中心",
+        "预警大屏",
+        "预警监测"
+      ],
+      "keywords": [
+        "风险得分",
+        "灾种"
+      ],
+      "menu_key": "/monitorChannel/monitor-alarm-home",
+      "path": "/monitorChannel/monitor-alarm-home",
+      "desc": "预警监测管控系统:通风/火灾/粉尘/瓦斯/设备预警、瓦斯等级鉴定、水灾顶板风险融合研判。",
+      "usage": [
+        "总览各灾种风险等级与风险得分",
+        "点击灾种卡片(火灾/瓦斯/粉尘/通风/设备)进入对应预警详情",
+        "查看矿井瓦斯等级鉴定、水灾、顶板状态"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "灾害预警"
+    },
+    {
+      "id": "sysfiretest",
+      "name": "灾变应急控风决策",
+      "aliases": [
+        "灾变",
+        "应急控风",
+        "灾变模拟",
+        "避灾路线规划",
+        "灾变应急控制"
+      ],
+      "keywords": [
+        "火灾",
+        "应急",
+        "模拟",
+        "sysfiretest"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=sysfiretest",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=sysfiretest&sysID=2092149452501004289&deviceid=2012326636757958658",
+      "desc": "火灾等灾变场景的应急控风模拟与决策支持(含灾变模拟与避灾路线规划)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "sysID/deviceid 已按当前菜单值更新(docx 旧参数已过期)",
+      "category": "通防监控",
+      "group": "灾害预警"
+    },
+    {
+      "id": "ventilate-warn",
+      "name": "通风监测预警",
+      "aliases": [
+        "通风预警"
+      ],
+      "keywords": [
+        "通风",
+        "预警"
+      ],
+      "menu_key": "/ventilate/warn/home",
+      "path": "/ventilate/warn/home",
+      "desc": "通风专项监测预警(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "灾害预警"
+    },
+    {
+      "id": "device-warn",
+      "name": "设备监测预警",
+      "aliases": [
+        "设备预警"
+      ],
+      "keywords": [
+        "设备",
+        "预警"
+      ],
+      "menu_key": "/device/warn/home",
+      "path": "/device/warn/home",
+      "desc": "设备运行状态监测预警(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "灾害预警"
+    },
+    {
+      "id": "warn-linkage",
+      "name": "预警联动控制",
+      "aliases": [
+        "预警联动",
+        "联动控制"
+      ],
+      "keywords": [
+        "联动",
+        "workingFace"
+      ],
+      "menu_key": "/deviceManager/workingFace",
+      "path": "/deviceManager/workingFace",
+      "desc": "预警联动控制配置(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "灾害预警"
+    },
+    {
+      "id": "fiber",
+      "name": "光纤测温",
+      "aliases": [
+        "光纤",
+        "测温",
+        "分布式测温",
+        "光纤测温监测"
+      ],
+      "keywords": [
+        "温度",
+        "光纤",
+        "fiber"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fiber",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fiber&tabtype=monitor",
+      "desc": "分布式光纤测温监测:井下沿线温度实时曲线与超温报警分析。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "bundletube",
+      "name": "束管监测",
+      "aliases": [
+        "束管",
+        "束管监测"
+      ],
+      "keywords": [
+        "色谱",
+        "气体",
+        "bundletube"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=bundletube",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=bundletube",
+      "desc": "束管色谱监测:各测点 CO/CO₂/O₂/CH₄ 等气体浓度实时监测与趋势分析。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "sensor-temperature",
+      "name": "温度传感器",
+      "aliases": [
+        "温度",
+        "温度监测",
+        "温度传感器监测"
+      ],
+      "keywords": [
+        "温度",
+        "modelsensor_temperature"
+      ],
+      "menu_key": null,
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_temperature&deviceid=",
+      "desc": "井下温度传感器实时数据监测与历史查询(模型叠加展示)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "菜单未单独配置(menu_key 空=不做权限过滤);deviceid 留空默认全部测点",
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "sensor-smoke",
+      "name": "烟雾传感器",
+      "aliases": [
+        "烟雾",
+        "烟雾监测"
+      ],
+      "keywords": [
+        "烟雾",
+        "modelsensor_smoke"
+      ],
+      "menu_key": null,
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_smoke&deviceid=",
+      "desc": "烟雾传感器实时监测与报警查询(模型叠加展示)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "菜单未单独配置;deviceid 留空默认全部测点",
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "sensor-co",
+      "name": "CO传感器",
+      "aliases": [
+        "CO",
+        "一氧化碳",
+        "CO监测"
+      ],
+      "keywords": [
+        "CO",
+        "一氧化碳",
+        "modelsensor_co"
+      ],
+      "menu_key": null,
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_co&deviceid=",
+      "desc": "一氧化碳传感器实时监测与历史数据分析(模型叠加展示)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "菜单未单独配置;deviceid 留空默认全部测点",
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "firedoor",
+      "name": "防火门监测与控制",
+      "aliases": [
+        "防火门",
+        "防火门控制",
+        "防火门监测"
+      ],
+      "keywords": [
+        "开门",
+        "防火",
+        "door",
+        "firedoor"
+      ],
+      "menu_key": "/monitorChannel/monitor-firedoor",
+      "path": "/monitorChannel/monitor-firedoor?id=2019226919389147138&deviceType=door",
+      "desc": "防火门开闭状态监测与远程控制,异常报警提示。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "deviceType 为 door(非 firedoor)",
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "nitrogen",
+      "name": "注氮系统",
+      "aliases": [
+        "注氮",
+        "制氮",
+        "氮气",
+        "智能注氮系统"
+      ],
+      "keywords": [
+        "氮气",
+        "防灭火",
+        "nitrogen"
+      ],
+      "menu_key": "/nitrogen-home",
+      "path": "/nitrogen-home",
+      "desc": "智能注氮系统:制氮设备运行状态、注氮管路参数与远程控制。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "加载较慢(约5-10秒),耐心等待",
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "grout",
+      "name": "注浆系统",
+      "aliases": [
+        "注浆",
+        "浆液",
+        "智能注浆系统"
+      ],
+      "keywords": [
+        "注浆",
+        "防灭火",
+        "grout"
+      ],
+      "menu_key": "/grout-home",
+      "path": "/grout-home",
+      "desc": "智能注浆系统:注浆设备状态、浆液参数与远程控制。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "fire-warn",
+      "name": "火灾监测预警",
+      "aliases": [
+        "火灾预警",
+        "火灾监测",
+        "火灾监测预警页面"
+      ],
+      "keywords": [
+        "内因火灾",
+        "外因火灾",
+        "火灾指标"
+      ],
+      "menu_key": "/fire/warn/home",
+      "path": "/fire/warn/home?p=0",
+      "desc": "火灾监测预警:内因/外因火灾指标监测与预警分析。",
+      "usage": [
+        "「内因火灾」查看采空区/煤层自然发火指标",
+        "「外因火灾」查看外因火灾监测点状态",
+        "「火灾指标」查看各指标变化趋势"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "fires-monitor",
+      "name": "防灭火系统监测",
+      "aliases": [
+        "防灭火监测"
+      ],
+      "keywords": [
+        "防灭火",
+        "fireS"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fireS",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fireS",
+      "desc": "防灭火系统综合监测(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "bundle-table",
+      "name": "束管日报分析",
+      "aliases": [
+        "束管日报",
+        "束管报表",
+        "束管台账"
+      ],
+      "keywords": [
+        "日报",
+        "自燃阶段"
+      ],
+      "menu_key": "/bundle/bundleTable",
+      "path": "/bundle/bundleTable",
+      "desc": "束管日报台账:管理束管日报文件,分析各测点气体成分并判定煤自燃阶段。",
+      "usage": [
+        "左侧文件列表选择束管日报(Excel)",
+        "表格查看各测点 CO/CO₂/O₂/CH₄/C₂H₂/C₂H₄/N₂ 浓度",
+        "依据「煤自燃阶段」列判定自然发火阶段"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "bundlespy-table",
+      "name": "色谱仪报表分析",
+      "aliases": [
+        "色谱仪",
+        "色谱",
+        "色谱分析"
+      ],
+      "keywords": [
+        "色谱",
+        "报表"
+      ],
+      "menu_key": "/bundleSpy/bundleSpyTable",
+      "path": "/bundleSpy/bundleSpyTable",
+      "desc": "色谱仪报表台账管理与分析。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "火灾监控"
+    },
+    {
+      "id": "gaspatrol",
+      "name": "瓦斯巡检",
+      "aliases": [
+        "巡检",
+        "瓦斯巡检",
+        "瓦斯巡检设备"
+      ],
+      "keywords": [
+        "巡检",
+        "gaspatrol"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gaspatrol",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gaspatrol",
+      "desc": "瓦斯巡检数据在三维模型中的展示与定位,左侧设备树按灾种分类导航。",
+      "usage": [
+        "左侧设备树按 通风/防灭火/防尘/瓦斯/综合/关键地点 分类展开",
+        "点击设备节点在模型中定位",
+        "「定位图标显示」开关控制图标显隐"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "sensor-gas",
+      "name": "瓦斯传感器",
+      "aliases": [
+        "甲烷",
+        "甲烷传感器",
+        "瓦斯传感器",
+        "CH4",
+        "瓦斯浓度",
+        "瓦斯监测"
+      ],
+      "keywords": [
+        "甲烷",
+        "浓度",
+        "gasmonitor"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gasmonitor",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gasmonitor",
+      "desc": "甲烷/瓦斯浓度实时监测与历史查询(模型叠加展示)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "menu_key 用菜单的 gasmonitor 路由;docx 旧地址 modelsensor_gas 也可用(deviceid 留空)",
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-pump",
+      "name": "瓦斯抽采设备",
+      "aliases": [
+        "抽采",
+        "抽放",
+        "瓦斯泵",
+        "抽采泵",
+        "抽采泵站监测"
+      ],
+      "keywords": [
+        "泵站",
+        "抽采",
+        "振幅"
+      ],
+      "menu_key": "/gas/gas-pump-monitor/home",
+      "path": "/gas/gas-pump-monitor/home",
+      "desc": "瓦斯抽采泵站监测:电压电流、轴温、振幅、运行时间等工况参数。",
+      "usage": [
+        "泵站下拉切换(地上/地下抽采泵)",
+        "查看各泵(t1~t4)电压/电流/前后轴温度/振幅/运行时间",
+        "异常参数高亮告警"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-assessment",
+      "name": "抽采达标评判",
+      "aliases": [
+        "达标评判",
+        "抽采达标"
+      ],
+      "keywords": [
+        "达标",
+        "储量"
+      ],
+      "menu_key": "/gasAssessment/home",
+      "path": "/gasAssessment/home",
+      "desc": "瓦斯抽采达标评判:瓦斯总储量、抽采达标量、累计抽采量、预抽确认量对比分析。",
+      "usage": [
+        "工作面下拉选择目标工作面",
+        "查看瓦斯总储量/抽采达标量/累计抽采量/预抽确认量/已抽时间",
+        "对照评判结论确认是否达标"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-home",
+      "name": "抽采综合管控",
+      "aliases": [
+        "抽采管控"
+      ],
+      "keywords": [
+        "抽采",
+        "综合管控"
+      ],
+      "menu_key": "/micro-vent-3dModal/configurable/gasHome/gasS/home",
+      "path": "/micro-vent-3dModal/configurable/gasHome/gasS/home",
+      "desc": "瓦斯抽采综合管控大屏(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-pipenet",
+      "name": "瓦斯管网管控",
+      "aliases": [
+        "管网",
+        "瓦斯管网"
+      ],
+      "keywords": [
+        "管网",
+        "管路"
+      ],
+      "menu_key": "/micro-vent-3dModal/configurable/gasPipeNet/gasS/home?type=sysMonitor&deviceType=pipingpage",
+      "path": "/micro-vent-3dModal/configurable/gasPipeNet/gasS/home?type=sysMonitor&deviceType=pipingpage",
+      "desc": "瓦斯管网(抽采管路)监测管控(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-zk",
+      "name": "瓦斯钻孔监测",
+      "aliases": [
+        "钻孔",
+        "瓦斯钻孔",
+        "打钻监测"
+      ],
+      "keywords": [
+        "钻杆",
+        "钻孔"
+      ],
+      "menu_key": "/gasZkMonitor",
+      "path": "/gasZkMonitor",
+      "desc": "瓦斯钻孔实时监测:钻场视频、钻杆状态、钻孔计数与剩余。",
+      "usage": [
+        "查看钻孔实时视频画面",
+        "监控钻杆状态/钻孔计数/钻孔剩余"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-warn",
+      "name": "瓦斯综合预警",
+      "aliases": [
+        "瓦斯预警",
+        "瓦斯监测预警"
+      ],
+      "keywords": [
+        "预警",
+        "预测曲线"
+      ],
+      "menu_key": "/gas/warn/home",
+      "path": "/gas/warn/home?p=0",
+      "desc": "瓦斯监测预警:煤层预警状态、抽采泵信息、安全监控测点信息与预测曲线。",
+      "usage": [
+        "「预警监测」查看各煤层(如22煤/42煤)预警状态",
+        "「瓦斯抽采泵信息」查看泵站运行",
+        "「安全监控测点信息」查看甲烷浓度/测点位置/数据时间与预测曲线"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "gas-report",
+      "name": "瓦斯日报分析",
+      "aliases": [
+        "瓦斯日报",
+        "瓦斯报表",
+        "瓦斯台账"
+      ],
+      "keywords": [
+        "日报",
+        "手工录入"
+      ],
+      "menu_key": "/gas/gas-report-inspect",
+      "path": "/gas/gas-report-inspect",
+      "desc": "瓦斯日报台账手工录入与分析。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "瓦斯监控"
+    },
+    {
+      "id": "dusting",
+      "name": "粉尘传感器",
+      "aliases": [
+        "粉尘",
+        "粉尘浓度",
+        "粉尘监测",
+        "粉尘传感器监测"
+      ],
+      "keywords": [
+        "浓度",
+        "dusting"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=dusting",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=dusting&tabtype=monitor",
+      "desc": "粉尘浓度实时监测与历史数据查询(模型叠加展示)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "粉尘监控"
+    },
+    {
+      "id": "atomizing",
+      "name": "喷雾降尘",
+      "aliases": [
+        "喷雾",
+        "降尘",
+        "喷雾降尘监控",
+        "喷雾装置"
+      ],
+      "keywords": [
+        "喷雾",
+        "降尘",
+        "atomizing"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=atomizing",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=atomizing",
+      "desc": "喷雾降尘装置远程控制与状态监测。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "粉尘监控"
+    },
+    {
+      "id": "dedustefan",
+      "name": "除尘风机",
+      "aliases": [
+        "除尘风机",
+        "除尘"
+      ],
+      "keywords": [
+        "除尘",
+        "dedustefan"
+      ],
+      "menu_key": "/dust/dedustefan/home",
+      "path": "/dust/dedustefan/home",
+      "desc": "除尘风机运行监测与远程控制。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "粉尘监控"
+    },
+    {
+      "id": "dust-warn",
+      "name": "粉尘监测预警",
+      "aliases": [
+        "粉尘预警",
+        "粉尘报警"
+      ],
+      "keywords": [
+        "预警",
+        "超标"
+      ],
+      "menu_key": "/dust/warn/home",
+      "path": "/dust/warn/home",
+      "desc": "粉尘浓度监测预警与超标报警分析。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "粉尘监控"
+    },
+    {
+      "id": "dusts-monitor",
+      "name": "防尘系统监测",
+      "aliases": [
+        "防尘监测"
+      ],
+      "keywords": [
+        "防尘",
+        "dustS"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=dustS",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=dustS",
+      "desc": "防尘系统综合监测(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "粉尘监控"
+    },
+    {
+      "id": "dust-table",
+      "name": "粉尘报表分析",
+      "aliases": [
+        "粉尘报表",
+        "粉尘台账",
+        "粉尘日报"
+      ],
+      "keywords": [
+        "报表",
+        "手工录入"
+      ],
+      "menu_key": "/dust/dustMonitorTable",
+      "path": "/dust/dustMonitorTable",
+      "desc": "粉尘报表台账手工录入与分析。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "粉尘监控"
+    },
+    {
+      "id": "worker-face",
+      "name": "采煤工作面综合管控",
+      "aliases": [
+        "采煤面",
+        "综采面",
+        "回采面",
+        "采面",
+        "采煤工作面"
+      ],
+      "keywords": [
+        "工作面",
+        "综采"
+      ],
+      "menu_key": "/monitorChannel/wokerFace-home",
+      "path": "/monitorChannel/wokerFace-home",
+      "desc": "综采面智能管控:按工作面查看通风、防灭火、防尘、瓦斯防治四域综合监测管控。",
+      "usage": [
+        "工作面下拉选择(如 15212 工作面)",
+        "按「通风/防灭火/防尘/瓦斯防治」监测与管控分区查看",
+        "「通风参数监测」卡片查看进风/回风/需风量"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "tun-face",
+      "name": "掘进工作面综合管控",
+      "aliases": [
+        "掘进面",
+        "掘进",
+        "掘面",
+        "掘进工作面"
+      ],
+      "keywords": [
+        "掘进",
+        "工作面"
+      ],
+      "menu_key": "/monitorChannel/tunFace-home",
+      "path": "/monitorChannel/tunFace-home",
+      "desc": "掘进工作面智能管控:通风、瓦斯、粉尘等综合监测与管控。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "firedoor-monitor",
+      "name": "防火门智能管控",
+      "aliases": [
+        "防火门管控",
+        "防火门智能"
+      ],
+      "keywords": [
+        "防火门",
+        "工作面"
+      ],
+      "menu_key": "/configurable/default/fireDoorMonitor/home",
+      "path": "/configurable/default/fireDoorMonitor/home",
+      "desc": "工作面防火门监控系统:温度/CO传感器数据分析与防火门联动管控。",
+      "usage": [
+        "工作面下拉选择目标工作面",
+        "查看温度/CO 传感器平均值/最大值/最小值/是否报警",
+        "联动查看防火门设备状态"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "belt-fire",
+      "name": "皮带三级灭火系统",
+      "aliases": [
+        "皮带",
+        "皮带灭火",
+        "三级灭火",
+        "带式输送机灭火"
+      ],
+      "keywords": [
+        "皮带",
+        "灭火"
+      ],
+      "menu_key": "/micro-vent-3dModal/configurable/belt/fireS/home",
+      "path": "/micro-vent-3dModal/configurable/belt/fireS/home",
+      "desc": "皮带输送机三级灭火监测与联动控制总览。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "belt-tun",
+      "name": "皮带巷管控系统",
+      "aliases": [
+        "皮带巷"
+      ],
+      "keywords": [
+        "皮带巷",
+        "管控"
+      ],
+      "menu_key": "/monitorChannel/beltTun-home",
+      "path": "/monitorChannel/beltTun-home",
+      "desc": "皮带巷智能管控:通防综合监测与通风/防灭火/防尘分区管控。",
+      "usage": [
+        "查看皮带巷通防综合监测(总风量等)",
+        "按「通风/防灭火/防尘」监测与管控分区查看"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "balance-press",
+      "name": "均压与低氧管控",
+      "aliases": [
+        "均压",
+        "低氧",
+        "均压通风",
+        "均压控制"
+      ],
+      "keywords": [
+        "CO限值",
+        "O2限值",
+        "自动调节"
+      ],
+      "menu_key": "/monitorChannel/balancePress-home",
+      "path": "/monitorChannel/balancePress-home",
+      "desc": "均压与低氧参数监测与设置:CO/O₂浓度限值设定与均压自动调节。",
+      "usage": [
+        "「均压通风系统」下拉选择系统",
+        "「自动调节」选择开启/关闭",
+        "设定开始条件:CO 浓度限值(%)、O₂ 浓度限值(%)",
+        "监测均压与低氧实时参数"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "chamber",
+      "name": "机电硐室管控",
+      "aliases": [
+        "硐室",
+        "机电硐室",
+        "硐室火灾",
+        "硐室火灾综合管控"
+      ],
+      "keywords": [
+        "硐室",
+        "机电"
+      ],
+      "menu_key": "/chamber-home",
+      "path": "/chamber-home",
+      "desc": "机电硐室火灾综合监测与管控。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "⚠️182环境两条地址均404(/chamber-home 与 docx 的 /electro-chamber/home),菜单有配置但路由未部署;新环境部署后验证启用",
+      "category": "通防监控",
+      "group": "关键场景"
+    },
+    {
+      "id": "forcfan",
+      "name": "压风系统",
+      "aliases": [
+        "压风",
+        "空压机",
+        "压风自救",
+        "压风管控"
+      ],
+      "keywords": [
+        "空压机",
+        "排气压力"
+      ],
+      "menu_key": "/forcFan/home",
+      "path": "/forcFan/home",
+      "desc": "智能压风管控系统:空压机运行时间、排气压力/温度、机组温度等监测与控制。",
+      "usage": [
+        "查看各空压机(空压机1…)运行时间/卸载压力/排气压力/排气温度/机组温度",
+        "点击空压机卡片进入详情与控制"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "safetymonitor",
+      "name": "安全监控",
+      "aliases": [
+        "安全监控",
+        "安全监测",
+        "监控系统",
+        "KJ系统"
+      ],
+      "keywords": [
+        "安全监控",
+        "测点"
+      ],
+      "menu_key": "/monitorChannel/device-monitor/safetymonitor",
+      "path": "/monitorChannel/device-monitor/safetymonitor",
+      "desc": "安全监控系统数据对接:实时监测、历史数据、报警历史、报警分析四类视图。",
+      "usage": [
+        "「设备类型」下拉 +「设备安装地点」搜索筛选测点",
+        "Tab 切换:实时监测 / 历史数据 / 报警历史 / 报警分析"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "location",
+      "name": "人员定位",
+      "aliases": [
+        "定位",
+        "人员",
+        "人员位置",
+        "人员定位系统"
+      ],
+      "keywords": [
+        "轨迹",
+        "人员"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=location",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=location&tabtype=monitor",
+      "desc": "井下人员位置实时显示与轨迹查看(模型叠加)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "vehicle",
+      "name": "车辆定位",
+      "aliases": [
+        "车辆",
+        "车辆位置",
+        "车辆定位系统"
+      ],
+      "keywords": [
+        "车辆",
+        "轨迹"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=vehicle",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=vehicle",
+      "desc": "井下车辆位置实时显示与轨迹查看。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "camera",
+      "name": "视频墙",
+      "aliases": [
+        "视频",
+        "监控视频",
+        "摄像头",
+        "视频监控",
+        "视频墙"
+      ],
+      "keywords": [
+        "视频",
+        "摄像头"
+      ],
+      "menu_key": "/camera",
+      "path": "/camera",
+      "desc": "井下多路视频监控墙实时查看。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": true,
+      "note": "加载较慢,耐心等待",
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "escaperoute",
+      "name": "避灾路线",
+      "aliases": [
+        "避灾",
+        "逃生路线"
+      ],
+      "keywords": [
+        "避灾",
+        "路线"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=escaperoute",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=escaperoute",
+      "desc": "避灾路线模拟与展示(菜单隐藏页,未实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单hidden配置;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "fire-sim",
+      "name": "火灾模拟",
+      "aliases": [
+        "火灾模拟"
+      ],
+      "keywords": [
+        "模拟",
+        "火灾"
+      ],
+      "menu_key": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fire",
+      "path": "/micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fire",
+      "desc": "火灾扩散模拟(菜单隐藏页,未实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单hidden配置;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "综合管控"
+    },
+    {
+      "id": "file-manager",
+      "name": "文件共享中心",
+      "aliases": [
+        "文件",
+        "文件中心",
+        "资料",
+        "文档",
+        "共享文件"
+      ],
+      "keywords": [
+        "文件",
+        "下载",
+        "资料"
+      ],
+      "menu_key": "/fileManager/fileDetail/home",
+      "path": "/fileManager/fileDetail/home",
+      "desc": "平台文档分类共享:设备设施、通防资料、防灭火、瓦斯防治、矿井基础数据等分类检索。",
+      "usage": [
+        "左侧分类树选择(设备设施数据/通防系统资料/粉尘/防灭火/瓦斯防治数据/矿井基础数据)",
+        "按文件名称/文件类型查询",
+        "点击文件预览或下载"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "综合业务管理"
+    },
+    {
+      "id": "report-manager",
+      "name": "报表管理",
+      "aliases": [
+        "报表中心",
+        "报表管理中心"
+      ],
+      "keywords": [
+        "报表",
+        "模板"
+      ],
+      "menu_key": "/report/managerment/home",
+      "path": "/report/managerment/home",
+      "desc": "报表管理中心:系统数据报表/手动报表/报表模板,覆盖通风、防灭火、防尘、瓦斯四域。",
+      "usage": [
+        "选择报表类型:系统数据报表 / 手动报表 / 报表模板",
+        "按通风/防灭火/防尘/瓦斯四域查看与导出",
+        "手动报表支持在线录入"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "通防监控",
+      "group": "综合业务管理"
+    },
+    {
+      "id": "report-map",
+      "name": "报表数据映射",
+      "aliases": [
+        "数据映射"
+      ],
+      "keywords": [
+        "映射",
+        "报表"
+      ],
+      "menu_key": "/report-map",
+      "path": "/report-map",
+      "desc": "报表数据源映射配置(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "综合业务管理"
+    },
+    {
+      "id": "file-approve",
+      "name": "文件审批",
+      "aliases": [
+        "审批",
+        "文件审核"
+      ],
+      "keywords": [
+        "审批",
+        "文件"
+      ],
+      "menu_key": "/fileManager/approve/home",
+      "path": "/fileManager/approve/home",
+      "desc": "文件共享审批流程(菜单配置页,未逐页实测,启用前请访问验证)。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "菜单可见未实测;验证后删掉 visible:false 即启用",
+      "category": "通防监控",
+      "group": "综合业务管理"
+    },
+    {
+      "id": "model-3d",
+      "name": "首页3D(三维模型)",
+      "aliases": [
+        "三维",
+        "3D",
+        "三维模型",
+        "模型",
+        "数字孪生",
+        "大屏",
+        "首页",
+        "平台首页",
+        "网络解算",
+        "三维网络解算",
+        "模型解算"
+      ],
+      "keywords": [
+        "全矿井通风检测",
+        "总回风量",
+        "主通风机系统",
+        "解算分析"
+      ],
+      "menu_key": "/micro-vent-3dModal/configurable/default/ventS/home",
+      "path": "/micro-vent-3dModal/configurable/default/ventS/home?type=model3D&deviceType=model3D&isNoReverse=1",
+      "desc": "全矿井三维数字孪生大屏:通风检测总览、主/局通风机系统、工作面智能监控、关键路线、预警监测。",
+      "usage": [
+        "卡片左右切换箭头(swap)查看不同设备/工作面",
+        "点击「通风设施远程控制」进入设施控制",
+        "右上角机器人图标打开智能助手",
+        "「特效模式」切换大屏动效"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": "用户口语\"网络解算/解算分析\"可能指本页(docx 原分类即将其归入三维模型页),与【实时网络解算】构成歧义对",
+      "category": "首页与大屏",
+      "group": null
+    },
+    {
+      "id": "model-2d",
+      "name": "首页2D(二维模型)",
+      "aliases": [
+        "二维",
+        "2D",
+        "二维模型",
+        "通风网络图"
+      ],
+      "keywords": [
+        "拓扑分析",
+        "网络图",
+        "编辑"
+      ],
+      "menu_key": "/micro-vent-2dModal/configurable/default/ventS/home",
+      "path": "/micro-vent-2dModal/configurable/default/ventS/home?type=model3D&deviceType=model3D&isNoReverse=1",
+      "desc": "二维通风网络模型:系统、拓扑分析、网络故障诊断、网络分析、数据分析、数据管理、工具。",
+      "usage": [
+        "菜单栏选择:系统 / 拓扑分析 / 通风网络故障诊断 / 通风网络分析 / 数据分析 / 数据管理 / 工具",
+        "「编辑」进入网络图编辑模式"
+      ],
+      "usage_tip": null,
+      "visible": true,
+      "note": null,
+      "category": "首页与大屏",
+      "group": null
+    },
+    {
+      "id": "sys-user",
+      "name": "用户管理设置",
+      "aliases": [
+        "用户管理",
+        "账号管理",
+        "添加用户",
+        "用户设置"
+      ],
+      "keywords": [
+        "用户",
+        "账号"
+      ],
+      "menu_key": null,
+      "path": "/monitorChannel/system/user",
+      "desc": "用户账号新增、删除与配置。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "⚠️需管理员权限(lizuo实测404);菜单key与真实路由待管理员账号核实后填写",
+      "category": "系统配置",
+      "group": null
+    },
+    {
+      "id": "sys-role",
+      "name": "角色管理",
+      "aliases": [
+        "角色",
+        "权限管理",
+        "角色设置"
+      ],
+      "keywords": [
+        "角色",
+        "权限",
+        "菜单权限"
+      ],
+      "menu_key": null,
+      "path": "/monitorChannel/system/user",
+      "desc": "角色绑定用户、角色菜单与按钮权限设置。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "⚠️docx与用户管理同址,疑笔误;真实路由待管理员核实",
+      "category": "系统配置",
+      "group": null
+    },
+    {
+      "id": "sys-project",
+      "name": "系统项目配置",
+      "aliases": [
+        "项目配置",
+        "系统标题",
+        "修改logo"
+      ],
+      "keywords": [
+        "logo",
+        "标题",
+        "配置"
+      ],
+      "menu_key": null,
+      "path": "/monitorChannel/system/project-setting",
+      "desc": "修改系统 logo、系统标题等项目配置。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": "⚠️需管理员权限(lizuo实测404);待管理员核实",
+      "category": "系统配置",
+      "group": null
+    },
+    {
+      "id": "ledger-gate",
+      "name": "风门管理",
+      "aliases": [
+        "风门台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/gate",
+      "path": "/gate",
+      "desc": "风门设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-window",
+      "name": "风窗管理",
+      "aliases": [
+        "风窗台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/window",
+      "path": "/window",
+      "desc": "风窗设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-windrect",
+      "name": "测风设备管理",
+      "aliases": [
+        "测风台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/windrect",
+      "path": "/windrect",
+      "desc": "测风设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-fanlocal",
+      "name": "局部风机管理",
+      "aliases": [
+        "局扇台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/fanlocal",
+      "path": "/fanlocal",
+      "desc": "局部通风机台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-fanmain",
+      "name": "主风机管理",
+      "aliases": [
+        "主扇台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/fanmain",
+      "path": "/fanmain",
+      "desc": "主通风机台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-forcfan",
+      "name": "压风机管理系统",
+      "aliases": [
+        "压风机台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/forcFan",
+      "path": "/forcFan",
+      "desc": "压风机设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-dusting",
+      "name": "粉尘设备管理",
+      "aliases": [
+        "粉尘台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/dusting",
+      "path": "/dusting",
+      "desc": "粉尘防治设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-bundletube",
+      "name": "束管管理",
+      "aliases": [
+        "束管台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/bundletube",
+      "path": "/bundletube",
+      "desc": "束管设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-fiber",
+      "name": "光纤管理",
+      "aliases": [
+        "光纤台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/fiber",
+      "path": "/fiber",
+      "desc": "光纤测温设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-door",
+      "name": "防火门管理",
+      "aliases": [
+        "防火门台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/door",
+      "path": "/door",
+      "desc": "防火门台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-dustdev",
+      "name": "喷粉管理",
+      "aliases": [
+        "喷粉台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/dustdev",
+      "path": "/dustdev",
+      "desc": "喷粉设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-pulping",
+      "name": "注浆管理",
+      "aliases": [
+        "注浆台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/pulping",
+      "path": "/pulping",
+      "desc": "注浆设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-spray",
+      "name": "喷淋管理",
+      "aliases": [
+        "喷淋台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/spray",
+      "path": "/spray",
+      "desc": "喷淋设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-nitrogen",
+      "name": "注氮管理",
+      "aliases": [
+        "注氮台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/nitrogen",
+      "path": "/nitrogen",
+      "desc": "注氮设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-pump",
+      "name": "抽采泵管理",
+      "aliases": [
+        "抽采泵台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/pump",
+      "path": "/pump",
+      "desc": "瓦斯抽采泵台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-gaspatrol",
+      "name": "瓦斯巡检管理",
+      "aliases": [
+        "巡检台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/gaspatrol",
+      "path": "/gaspatrol",
+      "desc": "瓦斯巡检设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    },
+    {
+      "id": "ledger-gasmonitor",
+      "name": "瓦斯监测设备",
+      "aliases": [
+        "瓦斯监测台账"
+      ],
+      "keywords": [
+        "台账"
+      ],
+      "menu_key": "/gasmonitor",
+      "path": "/gasmonitor",
+      "desc": "瓦斯监测设备台账维护。",
+      "usage": null,
+      "usage_tip": null,
+      "visible": false,
+      "note": null,
+      "category": "设备台账管理",
+      "group": null
+    }
+  ]
+}

+ 760 - 0
vent-web-nav/references/pages.yaml

@@ -0,0 +1,760 @@
+# ============================================================
+# 通防平台页面注册表(权威数据源,人工维护)
+# 分类结构对齐平台真实菜单(权限接口 getUserPermissionByToken 返回的菜单树)
+# 每页字段说明:
+#   id        唯一标识(英文,稳定)
+#   name      页面名(匹配优先级最高)
+#   aliases   别名(口语说法,如"主扇""局扇")
+#   keywords  关键词(包含匹配用)
+#   menu_key  对应平台菜单 path(权限过滤依据;null=不接入菜单权限,默认展示)
+#   path      相对路径(完整地址 = config.yaml 的 base_url + path)
+#   desc      一句话功能简介(≤60字)
+#   usage     操作指引步骤(仅实测页填写;null=待补充,回答时如实说明)
+#   usage_tip 操作提示(可选)
+#   visible   false=本部署未开通/未验证,所有流程跳过(默认 true 可省略)
+#   note      维护备注
+# 维护方法见 ADAPTATION.md;改本文件后须重新生成 pages.json
+# ============================================================
+version: "1.0"
+updated: "2026-09-07"
+stats:
+  source: 通防平台页面导航梳理.docx + 182环境实机验证(lizuo) + 权限菜单树
+  verified_detail: 26   # 逐页实机打开学习
+  verified_pattern: 22  # 路由模式与实测页一致
+  from_menu_unverified: 12  # 权限菜单确认存在、未逐页打开
+  disabled: 21          # 404/未部署/待管理员核实
+
+categories:
+  # ================= 一、通防监控(平台主体) =================
+  - id: tf-monitor
+    name: 通防监控
+    aliases: [通防, 监控, 平台主体, 一通三防]
+    groups:
+      # ---------- 智能通风 ----------
+      - name: 智能通风
+        aliases: [通风, 通风类, 通风系统]
+        pages:
+          - id: fanmain
+            name: 主通风机监测与控制
+            aliases: [主通风机, 主扇, 主要通风机, 主风机, 风机, 主通风机监测, 主通风机控制, 主通风机管控]
+            keywords: [启停, 变频, 负压, 漏风率, fanmain]
+            menu_key: /monitorChannel/monitor-fanmain
+            path: /monitorChannel/monitor-fanmain?id=2087348159538384898&deviceType=fanmain
+            desc: 主通风机管控详情:运行状态监测与远程启停/调节,查看风量、负压、漏风率及历史曲线。
+            usage: null
+            note: 默认设备为松定霍洛一号风机,进页后可切换
+          - id: fanlocal
+            name: 局部通风机监测与控制
+            aliases: [局部通风机, 局扇, 局部风机, 局部通风, 局扇控制, 局部风机管控]
+            keywords: [启停风机, 调频, 瓦斯闭锁, fanlocal]
+            menu_key: /monitorChannel/monitor-fanlocal
+            path: /monitorChannel/monitor-fanlocal?id=1712030595700707330&deviceType=fanlocal
+            desc: 局部风机管控详情:启停风机、主/备机调频、需风量与瓦斯限值设定、工况辅助决策。
+            usage:
+              - 在「风机类型」下拉选择目标局扇(如变频局部风机)
+              - 「启停风机」执行远程启停
+              - 「主机调频 / 备机调频」调节运行频率
+              - 「需风量」「瓦斯限值设定」配置风电闭锁与瓦斯闭锁阈值
+              - 「工况辅助决策」查看运行建议;操作记录见「操作历史」tab
+            usage_tip: 按钮置灰通常为通信中断或就地模式(现场旋钮未切远程)
+          - id: windrect
+            name: 测风装置
+            aliases: [测风, 风速监测, 测风设备, 风量监测装置, 测风装置管控]
+            keywords: [风速, 风量, 一键测风, windrect]
+            menu_key: /monitorChannel/monitor-windrect
+            path: /monitorChannel/monitor-windrect?id=1931597465741889538&deviceType=windrect
+            desc: 测风设备管控详情:一键测风/复位,各测点风速、风量、风向实时监测与测风结果查询。
+            usage:
+              - 点击「一键测风」发起远程测风,等待完成
+              - 「实时监测」tab查看各测点风速/风量/风向/断面积
+              - 「测风结果」tab查看测风报告
+              - 装置异常时点击「一键复位」
+            usage_tip: 历史数据/报警历史在页签切换查看
+          - id: gate
+            name: 风门监测与控制
+            aliases: [风门, 风门监测, 风门控制, 风门操控, 风门管控, 风门页面]
+            keywords: [开门, 关门, 前门, 后门, 压差, gate]
+            menu_key: /monitorChannel/monitor-gate
+            path: /monitorChannel/monitor-gate?id=1796536612492324866&deviceType=gate
+            desc: 风门管控详情:远程开闭前后门或同时开关,远程/就地/自动模式切换,状态与压差监测。
+            usage:
+              - 打开页面确认顶部分站型号(如 KJ-980-F 矿用本安型监控分站)
+              - 控制模式选择「远程」(就地/自动由现场设定,远程才能手机/网页操作)
+              - 按需点击「打开前门 / 关闭前门 / 同时打开 / 同时关闭」
+              - 「实时监测」tab查看前/后门状态、压差、气源压力、报警等级
+              - 操作记录在「操作历史」tab追溯
+            usage_tip: 控制按钮置灰多为通信中断、气源压力不足或未切远程模式
+          - id: window
+            name: 风窗监测与控制
+            aliases: [风窗, 调节风窗, 风窗控制, 风窗管控]
+            keywords: [开度, 调节, window]
+            menu_key: /monitorChannel/monitor-window
+            path: /monitorChannel/monitor-window?id=1427837547259232258&deviceType=window
+            desc: 风窗管控详情:风窗开度远程调节与状态监测,查看通过风量与压差。
+            usage: null
+          - id: sensor-monitor
+            name: 气压温湿度监测
+            aliases: [温湿度, 大气压, 气象监测, 环境参数监测]
+            keywords: [温度, 湿度, 气压]
+            menu_key: /monitorChannel/monitor-sensorMonitor
+            path: /monitorChannel/monitor-sensorMonitor
+            desc: 井下大气压、温度、湿度等环境参数实时监测与历史查询。
+            usage: null
+          - id: need-air
+            name: 需风量计算与分析
+            aliases: [需风量, 需风量计算, 需风量分析, 按需分风, 按需分风网络解算, 需风量分析系统]
+            keywords: [计划风量, 回风井, 用风地点]
+            menu_key: /micro-need-air/
+            path: /micro-need-air/
+            desc: 矿井需风量分析:按采煤/掘进/备用工作面、防爆胶轮车、硐室等用风地点多方法计算需风量。
+            usage:
+              - 顶部页签切换通风系统(全部/松定/明安木)或进入「回风井管理」
+              - 按用风地点页签(采煤/掘进/备用工作面、防爆胶轮车、硐室、其他用风点)维护条目
+              - 每条自动按气象条件/瓦斯涌出/CO₂涌出/按人员四种方法计算并取需风量
+              - 「导出计划风量表」导出成果
+          - id: work-account
+            name: 通风能力核定
+            aliases: [能力核定, 通风能力, 核定]
+            keywords: [万t/a, 产量]
+            menu_key: /micro-need-air/workAccount/
+            path: /micro-need-air/workAccount/
+            desc: 矿井通风能力核定:维护用风地点与工作面产量信息,核定矿井通风能力(万t/a)。
+            usage:
+              - 「矿井用风地点」维护用风点清单
+              - 「采煤工作面产量信息」录入面长/采高/日推进度/回采率等
+              - 系统自动核定矿井通风能力,在「通风能力核定」页签确认核定值
+          - id: vents-monitor
+            name: 通风系统监测
+            aliases: [通风系统总览]
+            keywords: [系统监测, ventS]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=ventS
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=ventS
+            desc: 在三维模型上总览通风系统运行状态(菜单新增页,182环境实测可打开)。
+            usage: null
+          - id: netcal
+            name: 通风网络解算
+            aliases: [网络解算, 解算分析, 风网解算]
+            keywords: [解算, netcal]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=netcal
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=netcal
+            desc: 通风网络解算分析(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: timenetcal
+            name: 实时网络解算
+            aliases: [实时解算, 网络解算]
+            keywords: [实时, 解算, timenetcal, 仪表盘解算]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=timenetcal
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=timenetcal
+            desc: 基于实时监测数据的通风网络解算:展示本次解算时间、解算总进风量等结果,支持网络分析。
+            usage:
+              - 工具栏点「实时解算」发起基于实时监测数据的网络解算
+              - 查看本次解算时间、解算总进风量(m³/min)等解算结果
+              - 需要更多分析时切换工具:通风网络解算 / 控风方案决策 / 通风系统评价 / 火灾模拟 / 通风网络分析
+          - id: path-decison
+            name: 控风方案辅助决策
+            aliases: [控风方案, 控风决策, 辅助决策, 通风系统辅助调整]
+            keywords: [方案, 决策, pathDecison, 网络解算]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=pathDecison
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=pathDecison
+            desc: 在通风网络图上辅助决策:网络解算、实时解算、控风方案对比、通风系统评价、火灾模拟。
+            usage:
+              - 在模型图上点选巷道/设施查看属性
+              - 工具栏选「通风网络解算 / 实时解算」发起解算
+              - 「控风方案决策」生成并对比多套调控方案
+              - 「通风系统评价」查看系统评价结果
+      # ---------- 灾害预警 ----------
+      - name: 灾害预警
+        aliases: [预警, 预警类]
+        pages:
+          - id: alarm-home
+            name: 多灾融合预警
+            aliases: [多灾, 融合预警, 综合预警, 预警中心, 预警大屏, 预警监测]
+            keywords: [风险得分, 灾种]
+            menu_key: /monitorChannel/monitor-alarm-home
+            path: /monitorChannel/monitor-alarm-home
+            desc: 预警监测管控系统:通风/火灾/粉尘/瓦斯/设备预警、瓦斯等级鉴定、水灾顶板风险融合研判。
+            usage:
+              - 总览各灾种风险等级与风险得分
+              - 点击灾种卡片(火灾/瓦斯/粉尘/通风/设备)进入对应预警详情
+              - 查看矿井瓦斯等级鉴定、水灾、顶板状态
+          - id: sysfiretest
+            name: 灾变应急控风决策
+            aliases: [灾变, 应急控风, 灾变模拟, 避灾路线规划, 灾变应急控制]
+            keywords: [火灾, 应急, 模拟, sysfiretest]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=sysfiretest
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=sysfiretest&sysID=2092149452501004289&deviceid=2012326636757958658
+            desc: 火灾等灾变场景的应急控风模拟与决策支持(含灾变模拟与避灾路线规划)。
+            usage: null
+            note: sysID/deviceid 已按当前菜单值更新(docx 旧参数已过期)
+          - id: ventilate-warn
+            name: 通风监测预警
+            aliases: [通风预警]
+            keywords: [通风, 预警]
+            menu_key: /ventilate/warn/home
+            path: /ventilate/warn/home
+            desc: 通风专项监测预警(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: device-warn
+            name: 设备监测预警
+            aliases: [设备预警]
+            keywords: [设备, 预警]
+            menu_key: /device/warn/home
+            path: /device/warn/home
+            desc: 设备运行状态监测预警(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: warn-linkage
+            name: 预警联动控制
+            aliases: [预警联动, 联动控制]
+            keywords: [联动, workingFace]
+            menu_key: /deviceManager/workingFace
+            path: /deviceManager/workingFace
+            desc: 预警联动控制配置(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+      # ---------- 火灾监控 ----------
+      - name: 火灾监控
+        aliases: [火灾, 火灾类, 防灭火, 防灭火类]
+        pages:
+          - id: fiber
+            name: 光纤测温
+            aliases: [光纤, 测温, 分布式测温, 光纤测温监测]
+            keywords: [温度, 光纤, fiber]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fiber
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fiber&tabtype=monitor
+            desc: 分布式光纤测温监测:井下沿线温度实时曲线与超温报警分析。
+            usage: null
+          - id: bundletube
+            name: 束管监测
+            aliases: [束管, 束管监测]
+            keywords: [色谱, 气体, bundletube]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=bundletube
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=bundletube
+            desc: 束管色谱监测:各测点 CO/CO₂/O₂/CH₄ 等气体浓度实时监测与趋势分析。
+            usage: null
+          - id: sensor-temperature
+            name: 温度传感器
+            aliases: [温度, 温度监测, 温度传感器监测]
+            keywords: [温度, modelsensor_temperature]
+            menu_key: null
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_temperature&deviceid=
+            desc: 井下温度传感器实时数据监测与历史查询(模型叠加展示)。
+            usage: null
+            note: 菜单未单独配置(menu_key 空=不做权限过滤);deviceid 留空默认全部测点
+          - id: sensor-smoke
+            name: 烟雾传感器
+            aliases: [烟雾, 烟雾监测]
+            keywords: [烟雾, modelsensor_smoke]
+            menu_key: null
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_smoke&deviceid=
+            desc: 烟雾传感器实时监测与报警查询(模型叠加展示)。
+            usage: null
+            note: 菜单未单独配置;deviceid 留空默认全部测点
+          - id: sensor-co
+            name: CO传感器
+            aliases: [CO, 一氧化碳, CO监测]
+            keywords: [CO, 一氧化碳, modelsensor_co]
+            menu_key: null
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=modelsensor_co&deviceid=
+            desc: 一氧化碳传感器实时监测与历史数据分析(模型叠加展示)。
+            usage: null
+            note: 菜单未单独配置;deviceid 留空默认全部测点
+          - id: firedoor
+            name: 防火门监测与控制
+            aliases: [防火门, 防火门控制, 防火门监测]
+            keywords: [开门, 防火, door, firedoor]
+            menu_key: /monitorChannel/monitor-firedoor
+            path: /monitorChannel/monitor-firedoor?id=2019226919389147138&deviceType=door
+            desc: 防火门开闭状态监测与远程控制,异常报警提示。
+            usage: null
+            note: deviceType 为 door(非 firedoor)
+          - id: nitrogen
+            name: 注氮系统
+            aliases: [注氮, 制氮, 氮气, 智能注氮系统]
+            keywords: [氮气, 防灭火, nitrogen]
+            menu_key: /nitrogen-home
+            path: /nitrogen-home
+            desc: 智能注氮系统:制氮设备运行状态、注氮管路参数与远程控制。
+            usage: null
+            note: 加载较慢(约5-10秒),耐心等待
+          - id: grout
+            name: 注浆系统
+            aliases: [注浆, 浆液, 智能注浆系统]
+            keywords: [注浆, 防灭火, grout]
+            menu_key: /grout-home
+            path: /grout-home
+            desc: 智能注浆系统:注浆设备状态、浆液参数与远程控制。
+            usage: null
+          - id: fire-warn
+            name: 火灾监测预警
+            aliases: [火灾预警, 火灾监测, 火灾监测预警页面]
+            keywords: [内因火灾, 外因火灾, 火灾指标]
+            menu_key: /fire/warn/home
+            path: /fire/warn/home?p=0
+            desc: 火灾监测预警:内因/外因火灾指标监测与预警分析。
+            usage:
+              - 「内因火灾」查看采空区/煤层自然发火指标
+              - 「外因火灾」查看外因火灾监测点状态
+              - 「火灾指标」查看各指标变化趋势
+          - id: fires-monitor
+            name: 防灭火系统监测
+            aliases: [防灭火监测]
+            keywords: [防灭火, fireS]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fireS
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fireS
+            desc: 防灭火系统综合监测(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: bundle-table
+            name: 束管日报分析
+            aliases: [束管日报, 束管报表, 束管台账]
+            keywords: [日报, 自燃阶段]
+            menu_key: /bundle/bundleTable
+            path: /bundle/bundleTable
+            desc: 束管日报台账:管理束管日报文件,分析各测点气体成分并判定煤自燃阶段。
+            usage:
+              - 左侧文件列表选择束管日报(Excel)
+              - 表格查看各测点 CO/CO₂/O₂/CH₄/C₂H₂/C₂H₄/N₂ 浓度
+              - 依据「煤自燃阶段」列判定自然发火阶段
+          - id: bundlespy-table
+            name: 色谱仪报表分析
+            aliases: [色谱仪, 色谱, 色谱分析]
+            keywords: [色谱, 报表]
+            menu_key: /bundleSpy/bundleSpyTable
+            path: /bundleSpy/bundleSpyTable
+            desc: 色谱仪报表台账管理与分析。
+            usage: null
+      # ---------- 瓦斯监控 ----------
+      - name: 瓦斯监控
+        aliases: [瓦斯, 瓦斯类, 瓦斯防治]
+        pages:
+          - id: gaspatrol
+            name: 瓦斯巡检
+            aliases: [巡检, 瓦斯巡检, 瓦斯巡检设备]
+            keywords: [巡检, gaspatrol]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gaspatrol
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gaspatrol
+            desc: 瓦斯巡检数据在三维模型中的展示与定位,左侧设备树按灾种分类导航。
+            usage:
+              - 左侧设备树按 通风/防灭火/防尘/瓦斯/综合/关键地点 分类展开
+              - 点击设备节点在模型中定位
+              - 「定位图标显示」开关控制图标显隐
+          - id: sensor-gas
+            name: 瓦斯传感器
+            aliases: [甲烷, 甲烷传感器, 瓦斯传感器, CH4, 瓦斯浓度, 瓦斯监测]
+            keywords: [甲烷, 浓度, gasmonitor]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gasmonitor
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gasmonitor
+            desc: 甲烷/瓦斯浓度实时监测与历史查询(模型叠加展示)。
+            usage: null
+            note: menu_key 用菜单的 gasmonitor 路由;docx 旧地址 modelsensor_gas 也可用(deviceid 留空)
+          - id: gas-pump
+            name: 瓦斯抽采设备
+            aliases: [抽采, 抽放, 瓦斯泵, 抽采泵, 抽采泵站监测]
+            keywords: [泵站, 抽采, 振幅]
+            menu_key: /gas/gas-pump-monitor/home
+            path: /gas/gas-pump-monitor/home
+            desc: 瓦斯抽采泵站监测:电压电流、轴温、振幅、运行时间等工况参数。
+            usage:
+              - 泵站下拉切换(地上/地下抽采泵)
+              - 查看各泵(t1~t4)电压/电流/前后轴温度/振幅/运行时间
+              - 异常参数高亮告警
+          - id: gas-assessment
+            name: 抽采达标评判
+            aliases: [达标评判, 抽采达标]
+            keywords: [达标, 储量]
+            menu_key: /gasAssessment/home
+            path: /gasAssessment/home
+            desc: 瓦斯抽采达标评判:瓦斯总储量、抽采达标量、累计抽采量、预抽确认量对比分析。
+            usage:
+              - 工作面下拉选择目标工作面
+              - 查看瓦斯总储量/抽采达标量/累计抽采量/预抽确认量/已抽时间
+              - 对照评判结论确认是否达标
+          - id: gas-home
+            name: 抽采综合管控
+            aliases: [抽采管控]
+            keywords: [抽采, 综合管控]
+            menu_key: /micro-vent-3dModal/configurable/gasHome/gasS/home
+            path: /micro-vent-3dModal/configurable/gasHome/gasS/home
+            desc: 瓦斯抽采综合管控大屏(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: gas-pipenet
+            name: 瓦斯管网管控
+            aliases: [管网, 瓦斯管网]
+            keywords: [管网, 管路]
+            menu_key: /micro-vent-3dModal/configurable/gasPipeNet/gasS/home?type=sysMonitor&deviceType=pipingpage
+            path: /micro-vent-3dModal/configurable/gasPipeNet/gasS/home?type=sysMonitor&deviceType=pipingpage
+            desc: 瓦斯管网(抽采管路)监测管控(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: gas-zk
+            name: 瓦斯钻孔监测
+            aliases: [钻孔, 瓦斯钻孔, 打钻监测]
+            keywords: [钻杆, 钻孔]
+            menu_key: /gasZkMonitor
+            path: /gasZkMonitor
+            desc: 瓦斯钻孔实时监测:钻场视频、钻杆状态、钻孔计数与剩余。
+            usage:
+              - 查看钻孔实时视频画面
+              - 监控钻杆状态/钻孔计数/钻孔剩余
+          - id: gas-warn
+            name: 瓦斯综合预警
+            aliases: [瓦斯预警, 瓦斯监测预警]
+            keywords: [预警, 预测曲线]
+            menu_key: /gas/warn/home
+            path: /gas/warn/home?p=0
+            desc: 瓦斯监测预警:煤层预警状态、抽采泵信息、安全监控测点信息与预测曲线。
+            usage:
+              - 「预警监测」查看各煤层(如22煤/42煤)预警状态
+              - 「瓦斯抽采泵信息」查看泵站运行
+              - 「安全监控测点信息」查看甲烷浓度/测点位置/数据时间与预测曲线
+          - id: gas-report
+            name: 瓦斯日报分析
+            aliases: [瓦斯日报, 瓦斯报表, 瓦斯台账]
+            keywords: [日报, 手工录入]
+            menu_key: /gas/gas-report-inspect
+            path: /gas/gas-report-inspect
+            desc: 瓦斯日报台账手工录入与分析。
+            usage: null
+      # ---------- 粉尘监控 ----------
+      - name: 粉尘监控
+        aliases: [粉尘, 粉尘类, 防尘, 防尘类]
+        pages:
+          - id: dusting
+            name: 粉尘传感器
+            aliases: [粉尘, 粉尘浓度, 粉尘监测, 粉尘传感器监测]
+            keywords: [浓度, dusting]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=dusting
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=dusting&tabtype=monitor
+            desc: 粉尘浓度实时监测与历史数据查询(模型叠加展示)。
+            usage: null
+          - id: atomizing
+            name: 喷雾降尘
+            aliases: [喷雾, 降尘, 喷雾降尘监控, 喷雾装置]
+            keywords: [喷雾, 降尘, atomizing]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=atomizing
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=atomizing
+            desc: 喷雾降尘装置远程控制与状态监测。
+            usage: null
+          - id: dedustefan
+            name: 除尘风机
+            aliases: [除尘风机, 除尘]
+            keywords: [除尘, dedustefan]
+            menu_key: /dust/dedustefan/home
+            path: /dust/dedustefan/home
+            desc: 除尘风机运行监测与远程控制。
+            usage: null
+          - id: dust-warn
+            name: 粉尘监测预警
+            aliases: [粉尘预警, 粉尘报警]
+            keywords: [预警, 超标]
+            menu_key: /dust/warn/home
+            path: /dust/warn/home
+            desc: 粉尘浓度监测预警与超标报警分析。
+            usage: null
+          - id: dusts-monitor
+            name: 防尘系统监测
+            aliases: [防尘监测]
+            keywords: [防尘, dustS]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=dustS
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=dustS
+            desc: 防尘系统综合监测(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: dust-table
+            name: 粉尘报表分析
+            aliases: [粉尘报表, 粉尘台账, 粉尘日报]
+            keywords: [报表, 手工录入]
+            menu_key: /dust/dustMonitorTable
+            path: /dust/dustMonitorTable
+            desc: 粉尘报表台账手工录入与分析。
+            usage: null
+      # ---------- 关键场景 ----------
+      - name: 关键场景
+        aliases: [工作面, 场景管控, 联动管控, 综合预警与联动管控]
+        pages:
+          - id: worker-face
+            name: 采煤工作面综合管控
+            aliases: [采煤面, 综采面, 回采面, 采面, 采煤工作面]
+            keywords: [工作面, 综采]
+            menu_key: /monitorChannel/wokerFace-home
+            path: /monitorChannel/wokerFace-home
+            desc: 综采面智能管控:按工作面查看通风、防灭火、防尘、瓦斯防治四域综合监测管控。
+            usage:
+              - 工作面下拉选择(如 15212 工作面)
+              - 按「通风/防灭火/防尘/瓦斯防治」监测与管控分区查看
+              - 「通风参数监测」卡片查看进风/回风/需风量
+          - id: tun-face
+            name: 掘进工作面综合管控
+            aliases: [掘进面, 掘进, 掘面, 掘进工作面]
+            keywords: [掘进, 工作面]
+            menu_key: /monitorChannel/tunFace-home
+            path: /monitorChannel/tunFace-home
+            desc: 掘进工作面智能管控:通风、瓦斯、粉尘等综合监测与管控。
+            usage: null
+          - id: firedoor-monitor
+            name: 防火门智能管控
+            aliases: [防火门管控, 防火门智能]
+            keywords: [防火门, 工作面]
+            menu_key: /configurable/default/fireDoorMonitor/home
+            path: /configurable/default/fireDoorMonitor/home
+            desc: 工作面防火门监控系统:温度/CO传感器数据分析与防火门联动管控。
+            usage:
+              - 工作面下拉选择目标工作面
+              - 查看温度/CO 传感器平均值/最大值/最小值/是否报警
+              - 联动查看防火门设备状态
+          - id: belt-fire
+            name: 皮带三级灭火系统
+            aliases: [皮带, 皮带灭火, 三级灭火, 带式输送机灭火]
+            keywords: [皮带, 灭火]
+            menu_key: /micro-vent-3dModal/configurable/belt/fireS/home
+            path: /micro-vent-3dModal/configurable/belt/fireS/home
+            desc: 皮带输送机三级灭火监测与联动控制总览。
+            usage: null
+          - id: belt-tun
+            name: 皮带巷管控系统
+            aliases: [皮带巷]
+            keywords: [皮带巷, 管控]
+            menu_key: /monitorChannel/beltTun-home
+            path: /monitorChannel/beltTun-home
+            desc: 皮带巷智能管控:通防综合监测与通风/防灭火/防尘分区管控。
+            usage:
+              - 查看皮带巷通防综合监测(总风量等)
+              - 按「通风/防灭火/防尘」监测与管控分区查看
+          - id: balance-press
+            name: 均压与低氧管控
+            aliases: [均压, 低氧, 均压通风, 均压控制]
+            keywords: [CO限值, O2限值, 自动调节]
+            menu_key: /monitorChannel/balancePress-home
+            path: /monitorChannel/balancePress-home
+            desc: 均压与低氧参数监测与设置:CO/O₂浓度限值设定与均压自动调节。
+            usage:
+              - 「均压通风系统」下拉选择系统
+              - 「自动调节」选择开启/关闭
+              - 设定开始条件:CO 浓度限值(%)、O₂ 浓度限值(%)
+              - 监测均压与低氧实时参数
+          - id: chamber
+            name: 机电硐室管控
+            aliases: [硐室, 机电硐室, 硐室火灾, 硐室火灾综合管控]
+            keywords: [硐室, 机电]
+            menu_key: /chamber-home
+            path: /chamber-home
+            desc: 机电硐室火灾综合监测与管控。
+            usage: null
+            visible: false
+            note: ⚠️182环境两条地址均404(/chamber-home 与 docx 的 /electro-chamber/home),菜单有配置但路由未部署;新环境部署后验证启用
+      # ---------- 综合管控 ----------
+      - name: 综合管控
+        aliases: [第三方系统, 第三方, 外围系统]
+        pages:
+          - id: forcfan
+            name: 压风系统
+            aliases: [压风, 空压机, 压风自救, 压风管控]
+            keywords: [空压机, 排气压力]
+            menu_key: /forcFan/home
+            path: /forcFan/home
+            desc: 智能压风管控系统:空压机运行时间、排气压力/温度、机组温度等监测与控制。
+            usage:
+              - 查看各空压机(空压机1…)运行时间/卸载压力/排气压力/排气温度/机组温度
+              - 点击空压机卡片进入详情与控制
+          - id: safetymonitor
+            name: 安全监控
+            aliases: [安全监控, 安全监测, 监控系统, KJ系统]
+            keywords: [安全监控, 测点]
+            menu_key: /monitorChannel/device-monitor/safetymonitor
+            path: /monitorChannel/device-monitor/safetymonitor
+            desc: 安全监控系统数据对接:实时监测、历史数据、报警历史、报警分析四类视图。
+            usage:
+              - 「设备类型」下拉 +「设备安装地点」搜索筛选测点
+              - Tab 切换:实时监测 / 历史数据 / 报警历史 / 报警分析
+          - id: location
+            name: 人员定位
+            aliases: [定位, 人员, 人员位置, 人员定位系统]
+            keywords: [轨迹, 人员]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=location
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=location&tabtype=monitor
+            desc: 井下人员位置实时显示与轨迹查看(模型叠加)。
+            usage: null
+          - id: vehicle
+            name: 车辆定位
+            aliases: [车辆, 车辆位置, 车辆定位系统]
+            keywords: [车辆, 轨迹]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=vehicle
+            path: /micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=vehicle
+            desc: 井下车辆位置实时显示与轨迹查看。
+            usage: null
+          - id: camera
+            name: 视频墙
+            aliases: [视频, 监控视频, 摄像头, 视频监控, 视频墙]
+            keywords: [视频, 摄像头]
+            menu_key: /camera
+            path: /camera
+            desc: 井下多路视频监控墙实时查看。
+            usage: null
+            note: 加载较慢,耐心等待
+          - id: escaperoute
+            name: 避灾路线
+            aliases: [避灾, 逃生路线]
+            keywords: [避灾, 路线]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=escaperoute
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=escaperoute
+            desc: 避灾路线模拟与展示(菜单隐藏页,未实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单hidden配置;验证后删掉 visible:false 即启用
+          - id: fire-sim
+            name: 火灾模拟
+            aliases: [火灾模拟]
+            keywords: [模拟, 火灾]
+            menu_key: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fire
+            path: /micro-vent-3dModal/dashboard/analysis?type=sysMonitor&deviceType=fire
+            desc: 火灾扩散模拟(菜单隐藏页,未实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单hidden配置;验证后删掉 visible:false 即启用
+      # ---------- 综合业务管理 ----------
+      - name: 综合业务管理
+        aliases: [业务管理, 报表, 文件]
+        pages:
+          - id: file-manager
+            name: 文件共享中心
+            aliases: [文件, 文件中心, 资料, 文档, 共享文件]
+            keywords: [文件, 下载, 资料]
+            menu_key: /fileManager/fileDetail/home
+            path: /fileManager/fileDetail/home
+            desc: 平台文档分类共享:设备设施、通防资料、防灭火、瓦斯防治、矿井基础数据等分类检索。
+            usage:
+              - 左侧分类树选择(设备设施数据/通防系统资料/粉尘/防灭火/瓦斯防治数据/矿井基础数据)
+              - 按文件名称/文件类型查询
+              - 点击文件预览或下载
+          - id: report-manager
+            name: 报表管理
+            aliases: [报表中心, 报表管理中心]
+            keywords: [报表, 模板]
+            menu_key: /report/managerment/home
+            path: /report/managerment/home
+            desc: 报表管理中心:系统数据报表/手动报表/报表模板,覆盖通风、防灭火、防尘、瓦斯四域。
+            usage:
+              - 选择报表类型:系统数据报表 / 手动报表 / 报表模板
+              - 按通风/防灭火/防尘/瓦斯四域查看与导出
+              - 手动报表支持在线录入
+          - id: report-map
+            name: 报表数据映射
+            aliases: [数据映射]
+            keywords: [映射, 报表]
+            menu_key: /report-map
+            path: /report-map
+            desc: 报表数据源映射配置(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+          - id: file-approve
+            name: 文件审批
+            aliases: [审批, 文件审核]
+            keywords: [审批, 文件]
+            menu_key: /fileManager/approve/home
+            path: /fileManager/approve/home
+            desc: 文件共享审批流程(菜单配置页,未逐页实测,启用前请访问验证)。
+            usage: null
+            visible: false
+            note: 菜单可见未实测;验证后删掉 visible:false 即启用
+
+  # ================= 二、首页与大屏 =================
+  - id: home
+    name: 首页与大屏
+    aliases: [首页, 大屏, 首页大屏]
+    pages:
+      - id: model-3d
+        name: 首页3D(三维模型)
+        aliases: [三维, 3D, 三维模型, 模型, 数字孪生, 大屏, 首页, 平台首页, 网络解算, 三维网络解算, 模型解算]
+        keywords: [全矿井通风检测, 总回风量, 主通风机系统, 解算分析]
+        menu_key: /micro-vent-3dModal/configurable/default/ventS/home
+        path: /micro-vent-3dModal/configurable/default/ventS/home?type=model3D&deviceType=model3D&isNoReverse=1
+        desc: 全矿井三维数字孪生大屏:通风检测总览、主/局通风机系统、工作面智能监控、关键路线、预警监测。
+        usage:
+          - 卡片左右切换箭头(swap)查看不同设备/工作面
+          - 点击「通风设施远程控制」进入设施控制
+          - 右上角机器人图标打开智能助手
+          - 「特效模式」切换大屏动效
+        note: 用户口语"网络解算/解算分析"可能指本页(docx 原分类即将其归入三维模型页),与【实时网络解算】构成歧义对
+      - id: model-2d
+        name: 首页2D(二维模型)
+        aliases: [二维, 2D, 二维模型, 通风网络图]
+        keywords: [拓扑分析, 网络图, 编辑]
+        menu_key: /micro-vent-2dModal/configurable/default/ventS/home
+        path: /micro-vent-2dModal/configurable/default/ventS/home?type=model3D&deviceType=model3D&isNoReverse=1
+        desc: 二维通风网络模型:系统、拓扑分析、网络故障诊断、网络分析、数据分析、数据管理、工具。
+        usage:
+          - 菜单栏选择:系统 / 拓扑分析 / 通风网络故障诊断 / 通风网络分析 / 数据分析 / 数据管理 / 工具
+          - 「编辑」进入网络图编辑模式
+
+  # ================= 三、系统配置(管理员) =================
+  - id: system-config
+    name: 系统配置
+    aliases: [系统管理, 后台管理, 系统设置]
+    pages:
+      - id: sys-user
+        name: 用户管理设置
+        aliases: [用户管理, 账号管理, 添加用户, 用户设置]
+        keywords: [用户, 账号]
+        menu_key: null
+        path: /monitorChannel/system/user
+        desc: 用户账号新增、删除与配置。
+        usage: null
+        visible: false
+        note: ⚠️需管理员权限(lizuo实测404);菜单key与真实路由待管理员账号核实后填写
+      - id: sys-role
+        name: 角色管理
+        aliases: [角色, 权限管理, 角色设置]
+        keywords: [角色, 权限, 菜单权限]
+        menu_key: null
+        path: /monitorChannel/system/user
+        desc: 角色绑定用户、角色菜单与按钮权限设置。
+        usage: null
+        visible: false
+        note: ⚠️docx与用户管理同址,疑笔误;真实路由待管理员核实
+      - id: sys-project
+        name: 系统项目配置
+        aliases: [项目配置, 系统标题, 修改logo]
+        keywords: [logo, 标题, 配置]
+        menu_key: null
+        path: /monitorChannel/system/project-setting
+        desc: 修改系统 logo、系统标题等项目配置。
+        usage: null
+        visible: false
+        note: ⚠️需管理员权限(lizuo实测404);待管理员核实
+
+  # ================= 四、设备台账管理(未验证,默认关闭) =================
+  - id: device-ledger
+    name: 设备台账管理
+    aliases: [台账, 设备管理, 设备台账]
+    note: 以下台账页来自权限菜单「设备管理」分组,路径未实测,验证后逐个删除 visible:false 启用
+    pages:
+      - { id: ledger-gate, name: 风门管理, aliases: [风门台账], keywords: [台账], menu_key: /gate, path: /gate, desc: 风门设备台账维护。, usage: null, visible: false }
+      - { id: ledger-window, name: 风窗管理, aliases: [风窗台账], keywords: [台账], menu_key: /window, path: /window, desc: 风窗设备台账维护。, usage: null, visible: false }
+      - { id: ledger-windrect, name: 测风设备管理, aliases: [测风台账], keywords: [台账], menu_key: /windrect, path: /windrect, desc: 测风设备台账维护。, usage: null, visible: false }
+      - { id: ledger-fanlocal, name: 局部风机管理, aliases: [局扇台账], keywords: [台账], menu_key: /fanlocal, path: /fanlocal, desc: 局部通风机台账维护。, usage: null, visible: false }
+      - { id: ledger-fanmain, name: 主风机管理, aliases: [主扇台账], keywords: [台账], menu_key: /fanmain, path: /fanmain, desc: 主通风机台账维护。, usage: null, visible: false }
+      - { id: ledger-forcfan, name: 压风机管理系统, aliases: [压风机台账], keywords: [台账], menu_key: /forcFan, path: /forcFan, desc: 压风机设备台账维护。, usage: null, visible: false }
+      - { id: ledger-dusting, name: 粉尘设备管理, aliases: [粉尘台账], keywords: [台账], menu_key: /dusting, path: /dusting, desc: 粉尘防治设备台账维护。, usage: null, visible: false }
+      - { id: ledger-bundletube, name: 束管管理, aliases: [束管台账], keywords: [台账], menu_key: /bundletube, path: /bundletube, desc: 束管设备台账维护。, usage: null, visible: false }
+      - { id: ledger-fiber, name: 光纤管理, aliases: [光纤台账], keywords: [台账], menu_key: /fiber, path: /fiber, desc: 光纤测温设备台账维护。, usage: null, visible: false }
+      - { id: ledger-door, name: 防火门管理, aliases: [防火门台账], keywords: [台账], menu_key: /door, path: /door, desc: 防火门台账维护。, usage: null, visible: false }
+      - { id: ledger-dustdev, name: 喷粉管理, aliases: [喷粉台账], keywords: [台账], menu_key: /dustdev, path: /dustdev, desc: 喷粉设备台账维护。, usage: null, visible: false }
+      - { id: ledger-pulping, name: 注浆管理, aliases: [注浆台账], keywords: [台账], menu_key: /pulping, path: /pulping, desc: 注浆设备台账维护。, usage: null, visible: false }
+      - { id: ledger-spray, name: 喷淋管理, aliases: [喷淋台账], keywords: [台账], menu_key: /spray, path: /spray, desc: 喷淋设备台账维护。, usage: null, visible: false }
+      - { id: ledger-nitrogen, name: 注氮管理, aliases: [注氮台账], keywords: [台账], menu_key: /nitrogen, path: /nitrogen, desc: 注氮设备台账维护。, usage: null, visible: false }
+      - { id: ledger-pump, name: 抽采泵管理, aliases: [抽采泵台账], keywords: [台账], menu_key: /pump, path: /pump, desc: 瓦斯抽采泵台账维护。, usage: null, visible: false }
+      - { id: ledger-gaspatrol, name: 瓦斯巡检管理, aliases: [巡检台账], keywords: [台账], menu_key: /gaspatrol, path: /gaspatrol, desc: 瓦斯巡检设备台账维护。, usage: null, visible: false }
+      - { id: ledger-gasmonitor, name: 瓦斯监测设备, aliases: [瓦斯监测台账], keywords: [台账], menu_key: /gasmonitor, path: /gasmonitor, desc: 瓦斯监测设备台账维护。, usage: null, visible: false }

+ 22 - 0
vent-web-nav/references/query.py

@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+"""命令行快速查询:python query.py "网络解算" —— 走与 SKILL.md 一致的层级匹配"""
+import io
+import json
+import sys
+from pathlib import Path
+
+sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
+d = json.loads((Path(__file__).parent / "pages.json").read_text(encoding="utf-8"))
+vis = [p for p in d["pages"] if p["visible"]]
+q = sys.argv[1].strip() if len(sys.argv) > 1 else ""
+
+t1 = [p for p in vis if p["name"] == q]
+t2 = [p for p in vis if q in p["aliases"]]
+hits = t1 or t2 or [p for p in vis if q in p["name"]
+                    or any(q in a for a in p["aliases"])
+                    or any(q in k for k in p["keywords"])]
+
+print(f"查询:{q} | 命中:{len(hits)}")
+for i, p in enumerate(hits[:5], 1):
+    print(f"{i}. {p['name']} | {d['base_url']}{p['path']}")
+    print(f"   简介:{p['desc']}")

+ 84 - 0
vent-web-nav/references/simulate_output.py

@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+"""输出效果模拟:按 SKILL.md 模板渲染四类典型回答(数据全部来自 pages.json)"""
+import json
+from pathlib import Path
+
+HERE = Path(__file__).parent
+data = json.loads((HERE / "pages.json").read_text(encoding="utf-8"))
+pages = data["pages"]
+base = data["base_url"]
+vis = [p for p in pages if p["visible"]]
+
+def find(q):
+    """按 SKILL.md 层级匹配:同层收集全部命中,高层命中则低层不参与"""
+    q = q.strip()
+    t1 = [p for p in vis if p["name"] == q]
+    if t1: return t1
+    t2 = [p for p in vis if q in p["aliases"]]
+    if t2: return t2
+    return [p for p in vis if q in p["name"]
+            or any(q in a for a in p["aliases"])
+            or any(q in k for k in p["keywords"])]
+
+# ===== 场景 A1:帮我打开风门监测页面 =====
+hits = find("风门")
+print("=" * 60)
+print("【模拟 A1】用户:帮我打开风门监测页面")
+print("-" * 60)
+p = next(x for x in hits if x["id"] == "gate")
+print(f'已为您找到【{p["name"]}】页面({p["category"]}·{p["group"]}):')
+print(f'📖 功能:{p["desc"]}')
+print(f'🔗 立即打开:[{p["name"]}]({base}{p["path"]})')
+
+# ===== 场景 A2:给我网页地图(瓦斯类筛选) =====
+print()
+print("=" * 60)
+print("【模拟 A2】用户:给我网页地图,只看瓦斯类")
+print("-" * 60)
+gas = [p for p in vis if p["category"] == "通防监控" and p["group"] == "瓦斯监控"]
+gate = p  # 保存场景A1找到的风门页,供A4使用
+print("# 🗺️ 通防平台网页地图(瓦斯监控)")
+print(f"当前部署地址:{base}(说\"将网址换成 xxx\"可切换)\n")
+for gp in gas:
+    print(f'- [{gp["name"]}]({base}{gp["path"]}) —— {gp["desc"]}')
+
+# ===== 场景 A3:将网址换成 http://10.120.3.15:8092 =====
+print()
+print("=" * 60)
+print("【模拟 A3】用户:将网址换成 http://10.120.3.15:8092")
+print("-" * 60)
+old, new = base, "http://10.120.3.15:8092"
+home = next(p for p in vis if p["id"] == "model-3d")
+print(f"✅ 网址前缀已更换:{old} → {new}")
+print(f'示例(平台首页3D):[{new}{home["path"]}]({new}{home["path"]})')
+print("之后所有页面链接均使用新前缀。")
+
+# ===== 场景 A4:风门怎么远程开 =====
+print()
+print("=" * 60)
+print("【模拟 A4】用户:风门怎么远程开?")
+print("-" * 60)
+print(f'【{gate["name"]}】操作指引:')
+print(f'🔗 页面:[{gate["name"]}]({base}{gate["path"]})')
+for i, step in enumerate(gate["usage"], 1):
+    print(f"{i}. {step}")
+print(f'💡 提示:{gate["usage_tip"]}')
+
+# ===== 附加:歧义场景演示——网络解算 =====
+print()
+print("=" * 60)
+print("【附加模拟】用户:帮我打开网络解算页面")
+print("-" * 60)
+hits2 = find("网络解算")
+if len(hits2) == 1:
+    p2 = hits2[0]
+    print(f'已为您找到【{p2["name"]}】页面:\n🔗 立即打开:[{p2["name"]}]({base}{p2["path"]})')
+else:
+    print(f'「网络解算」匹配到 {len(hits2)} 个页面,请按需点选:')
+    for i, p2 in enumerate(hits2[:3], 1):
+        print(f'{i}. [{p2["name"]}]({base}{p2["path"]}) —— {p2["desc"]}')
+
+# ===== 附加:全量地图规模 =====
+print()
+print("=" * 60)
+print(f"附:全量地图规模 = {len(vis)} 个可见页面,按 {data['stats']['categories']} 大类组织;含操作指引页面 {data['stats']['with_usage']} 个")

+ 125 - 0
vent-web-nav/references/sync_pages.py

@@ -0,0 +1,125 @@
+# -*- coding: utf-8 -*-
+"""sync_pages.py —— 网页指引同步工具(Intent F 的核心实现)
+
+功能:
+  1. 调平台权限接口拉取全量菜单树(权威路由清单,无需遍历爬取)
+  2. 与 pages.yaml 比对:报告新增页面(菜单有、注册表无)/ 疑似下线页面(注册表可见、菜单无)
+  3. 为新增页面生成 pages.yaml 草稿片段(desc/usage 留 TODO,由人工或智能体补写)
+  4. 输出到 stdout 与 sync_draft.yaml(只读比对 + 草稿,不改动 pages.yaml)
+
+用法:
+  python sync_pages.py <JWT_TOKEN>            # token 也可用环境变量 TF_TOKEN
+  python sync_pages.py <JWT_TOKEN> --base-url http://x.x.x.x:8092   # 覆盖 config.yaml
+
+说明:
+  - 只比对叶子菜单(有 children 的容器节点跳过)
+  - 注册表的 path 与 menu_key 都参与比对(设备详情页 path 带 ?id=,按 menu_key 认领)
+  - HTTP 状态无法识别 SPA 的客户端 404,页面可用性验证需浏览器渲染(见 SKILL.md 流程 F 第3步)
+"""
+import io
+import json
+import os
+import sys
+import urllib.request
+from pathlib import Path
+
+import yaml
+
+sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
+HERE = Path(__file__).parent
+ROOT = HERE.parent
+
+# ---------- 参数 ----------
+token = sys.argv[1] if len(sys.argv) > 1 else os.environ.get("TF_TOKEN", "")
+base_url = None
+if "--base-url" in sys.argv:
+    base_url = sys.argv[sys.argv.index("--base-url") + 1]
+if not token:
+    print("用法: python sync_pages.py <JWT_TOKEN>(或设环境变量 TF_TOKEN)")
+    sys.exit(1)
+
+cfg = yaml.safe_load((ROOT / "config.yaml").read_text(encoding="utf-8"))
+base_url = (base_url or cfg["base_url"]).rstrip("/")
+
+# ---------- 拉取菜单树 ----------
+url = f"{base_url}/modelreq/sys/permissionNew/getUserPermissionByToken?token={token}"
+req = urllib.request.Request(url, headers={"X-Access-Token": token})
+with urllib.request.urlopen(req, timeout=15) as resp:
+    payload = json.loads(resp.read().decode("utf-8"))
+if not payload.get("success"):
+    print(f"权限接口调用失败: {payload.get('message')}(token 是否过期?重新登录平台后从请求头 X-Access-Token 复制)")
+    sys.exit(1)
+
+leaves = []   # 叶子菜单(新增比对用)
+all_paths = set()  # 全部节点路径含容器(下线比对用,避免父节点误报)
+def walk(nodes, parent):
+    for n in nodes or []:
+        path = n.get("path") or ""
+        if path:
+            all_paths.add(path.split("?")[0])
+        if n.get("children"):
+            walk(n["children"], n.get("meta", {}).get("title") or parent)
+        else:
+            leaves.append((n.get("meta", {}).get("title") or "?",
+                           path, bool(n.get("hidden")), parent))
+walk(payload["result"]["menu"], "")
+
+# ---------- 读取注册表 ----------
+data = yaml.safe_load((HERE / "pages.yaml").read_text(encoding="utf-8"))
+reg_paths, reg_keys = set(), set()
+for cat in data["categories"]:
+    items = list(cat.get("pages") or [])
+    for g in cat.get("groups") or []:
+        items += g.get("pages") or []
+    for p in items:
+        reg_paths.add(p.get("path", "").split("?")[0])
+        if p.get("menu_key"):
+            reg_keys.add(p["menu_key"].split("?")[0])
+
+# ---------- 差集 ----------
+new_pages, known = [], []
+for title, path, hidden, parent in leaves:
+    base = path.split("?")[0]
+    if base in reg_paths or base in reg_keys:
+        known.append(title)
+    else:
+        new_pages.append((title, path, hidden, parent))
+
+reg_visible_keys = set()
+for cat in data["categories"]:
+    items = list(cat.get("pages") or [])
+    for g in cat.get("groups") or []:
+        items += g.get("pages") or []
+    for p in items:
+        if p.get("visible", True) and p.get("menu_key"):
+            reg_visible_keys.add((p["name"], p["menu_key"].split("?")[0]))
+menu_bases = all_paths
+removed = [(n, k) for n, k in reg_visible_keys if k not in menu_bases]
+
+# ---------- 报告 ----------
+print(f"菜单叶子页: {len(leaves)} | 注册表已认领: {len(known)} | 菜单新增: {len(new_pages)} | 疑似下线: {len(removed)}")
+print(f"\n== 菜单新增(候选待录入) ==")
+for t, p, h, par in new_pages:
+    print(f"  [{'hidden' if h else '可见 '}] {par} > {t}  {p}")
+print(f"\n== 疑似下线/权限变化(注册表可见但当前账号菜单中无) ==")
+for n, k in removed:
+    print(f"  {n}  {k}")
+
+# ---------- 草稿 ----------
+if new_pages:
+    lines = ["# ==== 同步草稿(生成于菜单比对,请确认后合并进 pages.yaml 对应分类) ===="]
+    for t, p, h, par in new_pages:
+        lines += [
+            f"          - id: TODO-{abs(hash(t)) % 100000}",
+            f"            name: {t}",
+            f"            aliases: []          # TODO 补口语别名",
+            f"            keywords: []         # TODO 补关键词",
+            f"            menu_key: {p.split('?')[0]}",
+            f"            path: {p}",
+            f"            desc: TODO           # TODO 浏览器打开页面阅读内容后拟写(≤60字)",
+            f"            usage: null          # TODO 实测后补操作步骤",
+            f"            visible: false       # 验证可用后删除此行启用",
+            f"            note: 同步自动发现({par}),{'隐藏菜单页' if h else '可见菜单页'}",
+        ]
+    (HERE / "sync_draft.yaml").write_text("\n".join(lines) + "\n", encoding="utf-8")
+    print(f"\n草稿已生成: references/sync_draft.yaml(合并后删除该文件,并运行 build_pages.py)")