用途:为 Infrahub Web UI 创建自定义导航菜单。菜单控制界面左侧导航,将 schema 节点类型组织成自定义层级,并可设置图标、标签、分组标题以及让 schema 节点改用自定义菜单。触发场景包括:设计导航菜单、按逻辑分组节点类型、添加图标和标签、设置不可点击的分组标题并嵌套子项、重排序或重命名现有菜单、排查菜单项不显示或归组错误。
主要能力与规则:按优先级分为格式(format-,涉及 apiVersion、kind、spec)、属性(item-,涉及 name、namespace、label、kind)、层级(hierarchy-,涉及嵌套、分组标题、data)、图标(icons-,MDI 图标引用与选择)、schema(schema-,涉及 include_in_menu、kind 链接)、模式(patterns-,涉及扁平菜单、注释、链接)。菜单文件基础结构要求 apiVersion: infrahub.app/v1、kind: Menu、spec.data 固定存在,每个菜单项需 name 和 namespace,可用 icon(如 mdi:server)和 kind 链接到 schema 节点列表视图。
使用方式:先收集需求(现有 schema 节点、分组方式、扁平或层级导航),再读取相关规则文件(format-structure.md、item-properties.md、icons-reference.md、hierarchy-nesting.md),然后生成菜单 YAML(以 $schema 注释开头)。每个输出需在文件顶部、--- 分隔符之前加入注释块,说明如何在 .infrahub.yml 的 menus: 键下注册文件,并建议对出现在自定义菜单中的每个 schema 节点设置 include_in_menu: false,以防侧边栏重复条目。
适用场景与限制:自定义菜单是增量增强而非替换自动菜单。重复项来自两处:schema 侧用 include_in_menu: false 处理;Infrahub 自带区块用菜单文件中的 parent: 处理。若菜单项通过 kind 链接节点列表视图,需定义该节点并抑制自动条目;显示某 generic 下所有子类型需该 generic 已定义且节点 inherit_from 它;位置控制需在 schema 节点上设置 order_weight,子类型分组需设置 menu_placement。需要审计菜单引用的每个节点的 include_in_menu。支持参考包括 examples.md、infrahub-yml-reference.md、common/rules/ 及 managing-schemas。官方未提供的具体收费、平台限制等信息暂未提供。