#
zhou zhou
2 天以前 0ecf5dfdb183b15b67958d020666a7cf30d057bd
#
3个文件已添加
1061 ■■■■■ 已修改文件
.agents/skills/consult-rsf-admin/SKILL.md 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.agents/skills/consult-rsf-admin/agents/openai.yaml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
menu.json 927 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.agents/skills/consult-rsf-admin/SKILL.md
New file
@@ -0,0 +1,127 @@
---
name: consult-rsf-admin
description: Use when modifying or creating pages, buttons, forms, tables, or interaction behavior in `rsf-design` during the `wms-master` frontend migration period. Before implementing in the new frontend, inspect the corresponding legacy implementation in `rsf-admin` to confirm page flow, button behavior, field semantics, permissions, and API usage instead of guessing.
---
# Consult RSF Admin First
在 `wms-master` 的新旧前端过渡期,`rsf-design` 是当前新前端,`rsf-admin` 是旧前端行为基线。
核心要求:
- 修改 `rsf-design` 时,先查 `rsf-admin` 对应页面或按钮行为,再编码。
- 不要凭命名、UI 习惯或通用后台模板经验去猜旧行为。
- 如果新前端要故意偏离旧前端行为,先在回复里明确指出差异和理由。
## 项目事实
- 新前端目录:`rsf-design`
- 旧前端目录:`rsf-admin`
- 新前端页面主目录:`rsf-design/src/views`
- 新前端接口目录:`rsf-design/src/api`
- 新前端路由目录:`rsf-design/src/router`
- 旧前端页面主目录:`rsf-admin/src/page`
- 旧前端共享页面组件目录:`rsf-admin/src/page/components`
- 旧前端接口目录:`rsf-admin/src/api`
## 工作流程
### 1. 先定位新前端目标
先确认当前改动落在:
- 哪个 `rsf-design/src/views/**` 页面
- 哪个 `rsf-design/src/api/**` 接口文件
- 哪个按钮、表单项、表格列、弹窗或页面入口
### 2. 再定位旧前端对应实现
优先按以下位置查找:
- `rsf-admin/src/page/**`
- `rsf-admin/src/page/components/**`
- `rsf-admin/src/api/**`
- 必要时补查 `rsf-admin/src/layout/**`、`rsf-admin/src/config/**`
按钮或批量操作优先额外检查这些旧共享组件,很多行为封装在这里而不在页面文件里:
- `ConfirmButton`
- `BulkUpdateButton`
- `ImportButton`
- `ListExportPrintButton`
- `BatchButton`
- `BatchModal`
优先匹配这些信息:
- 资源名
- 页面标题
- 按钮文案
- API 名称或 URL 片段
- 字段名
- 菜单名
### 3. 优先使用命名映射思路,不要只搜一个名字
新旧前端同一业务常常只是命名风格不同:
- 新前端常见 `kebab-case`:`wait-pakin`、`task-path-template-node`
- 旧前端常见 `camelCase`:`waitPakin`、`taskPathTemplateNode`
搜索对应页面时,至少同时考虑:
- `kebab-case`
- `camelCase`
- 去掉分组目录后的资源名
- 中文按钮文案或页面标题
- API 文件名
常见路径映射规律:
- `rsf-design/src/views/basic-info/<kebab-name>` 对应 `rsf-admin/src/page/basicInfo/<camelName>` 或单独资源目录
- `rsf-design/src/views/orders/<kebab-name>` 对应 `rsf-admin/src/page/orders/<camelName>`
- `rsf-design/src/views/system/<kebab-name>` 对应 `rsf-admin/src/page/system/<camelName>`
- `rsf-design/src/views/work/<kebab-name>` 对应 `rsf-admin/src/page/work/<camelName>`
- `rsf-design/src/views/statistics/<kebab-name>` 对应 `rsf-admin/src/page/statistics/<camelName>`
## 核对清单
实现前至少核对下面这些点,不要只看页面长得像不像:
- 页面入口和跳转链路
- 查询区字段、默认值、重置逻辑
- 表格列顺序、显示文案、格式化规则
- 按钮是否显示
- 按钮何时禁用、何时可点
- 点击后的动作是弹窗、抽屉、跳页还是二次确认
- 批量操作、导入、导出、打印、复制等附加动作
- 状态流转相关按钮的前置条件
- 权限、角色、租户或仓库维度限制
- API 参数名、空值处理、列表刷新时机
- 成功/失败提示文案和交互反馈
## 不明确时的处理
如果没能直接找到旧实现,不要硬做结论。按这个顺序继续查:
1. 在 `rsf-admin/src/page/**` 里搜资源名的 `camelCase` 和中文名称
2. 在 `rsf-admin/src/page/components/**` 里搜按钮文案或通用操作组件
3. 在 `rsf-admin/src/api/**` 里搜接口名、URL 片段、字段名
4. 对照 `rsf-design/src/api/**` 和 `rsf-admin/src/api/**` 的接口命名判断资源归属
如果仍然无法确认:
- 在回复里明确说明“旧前端未找到足够证据”
- 列出已检查的位置
- 只实现已确认的部分,或者先向用户确认差异
## 输出要求
当你基于旧前端完成 `rsf-design` 改动时,在说明里简要交代:
- 对照了哪些旧前端文件
- 本次保留了哪些旧行为
- 哪些地方是有意与旧前端不同
## 推荐检索方式
优先使用快速文本检索工具;如果环境里 `rg` 不可用,就用 PowerShell 检索。
示例思路:
```powershell
Get-ChildItem 'rsf-admin/src/page' -Recurse -File |
  Select-String -Pattern 'waitPakin|待配|出库|调拨'
```
```powershell
Get-ChildItem 'rsf-admin/src/page/components' -Recurse -File |
  Select-String -Pattern '导出|打印|确认|Batch|Export'
```
.agents/skills/consult-rsf-admin/agents/openai.yaml
New file
@@ -0,0 +1,7 @@
interface:
  display_name: "Consult RSF Admin"
  short_description: "迁移期先对照旧前端,再改 rsf-design"
  default_prompt: "Use $consult-rsf-admin to inspect the matching legacy behavior in rsf-admin before changing rsf-design."
policy:
  allow_implicit_invocation: true
menu.json
New file
@@ -0,0 +1,927 @@
[
  {
    "id": 5318,
    "name": "menu.aiManagementCenter",
    "parentId": 0,
    "path": "",
    "route": "/AI",
    "component": null,
    "type": 0,
    "icon": "ri:command-fill",
    "sort": 0,
    "children": [
      {
        "id": 422,
        "name": "menu.aiParam",
        "parentId": 5318,
        "path": "5318",
        "route": "/system/aiParam",
        "component": "aiParam",
        "type": 0,
        "icon": "ri:command-fill",
        "sort": 9,
        "children": null
      },
      {
        "id": 428,
        "name": "menu.aiPrompt",
        "parentId": 5318,
        "path": "5318",
        "route": "/system/aiPrompt",
        "component": "aiPrompt",
        "type": 0,
        "icon": "ri:function-line",
        "sort": 10,
        "children": null
      },
      {
        "id": 430,
        "name": "menu.aiCallLog",
        "parentId": 5318,
        "path": "5318",
        "route": "/system/aiCallLog",
        "component": "aiCallLog",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 12,
        "children": null
      },
      {
        "id": 5311,
        "name": "menu.aiMcpMount",
        "parentId": 5318,
        "path": "5318",
        "route": "/system/aiMcpMount",
        "component": "aiMcpMount",
        "type": 0,
        "icon": "ri:command-fill",
        "sort": 13,
        "children": null
      }
    ]
  },
  {
    "id": 67,
    "name": "menu.basicInfo",
    "parentId": 0,
    "path": "",
    "route": "/basic",
    "component": null,
    "type": 0,
    "icon": "ri:home-smile-2-line",
    "sort": 1,
    "children": [
      {
        "id": 417,
        "name": "menu.basStationArea",
        "parentId": 67,
        "path": "67",
        "route": "/manager/basStationArea",
        "component": "basStationArea",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 0,
        "children": null
      },
      {
        "id": 68,
        "name": "menu.warehouse",
        "parentId": 67,
        "path": "67",
        "route": "/manager/warehouse",
        "component": "warehouse",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 1,
        "children": null
      },
      {
        "id": 73,
        "name": "menu.warehouseAreas",
        "parentId": 67,
        "path": "67",
        "route": "/manager/warehouseAreas",
        "component": "warehouseAreas",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 2,
        "children": null
      },
      {
        "id": 78,
        "name": "menu.loc",
        "parentId": 67,
        "path": "67",
        "route": "/manager/loc",
        "component": "loc",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 3,
        "children": null
      },
      {
        "id": 62,
        "name": "menu.matnrGroup",
        "parentId": 67,
        "path": "67",
        "route": "/manager/matnrGroup",
        "component": "matnrGroup",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 4,
        "children": null
      },
      {
        "id": 57,
        "name": "menu.matnr",
        "parentId": 67,
        "path": "67",
        "route": "/manager/matnr",
        "component": "matnr",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 5,
        "children": null
      },
      {
        "id": 331,
        "name": "menu.basContainer",
        "parentId": 67,
        "path": "67",
        "route": "/manager/basContainer",
        "component": "basContainer",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 6,
        "children": null
      },
      {
        "id": 325,
        "name": "menu.basStation",
        "parentId": 67,
        "path": "67",
        "route": "/manager/basStation",
        "component": "basStation",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 7,
        "children": null
      },
      {
        "id": 302,
        "name": "menu.deviceBind",
        "parentId": 67,
        "path": "67",
        "route": "/manager/deviceBind",
        "component": "deviceBind",
        "type": 0,
        "icon": "ri:command-fill",
        "sort": 8,
        "children": null
      },
      {
        "id": 200,
        "name": "menu.deviceSite",
        "parentId": 67,
        "path": "67",
        "route": "/manager/deviceSite",
        "component": "deviceSite",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 9,
        "children": null
      },
      {
        "id": 118,
        "name": "menu.companys",
        "parentId": 67,
        "path": "67",
        "route": "/manager/companys",
        "component": "companys",
        "type": 0,
        "icon": "ri:group-line",
        "sort": 10,
        "children": null
      },
      {
        "id": 405,
        "name": "menu.taskPathTemplate",
        "parentId": 67,
        "path": "67",
        "route": "/taskPathTemplate",
        "component": "taskPathTemplate",
        "type": 0,
        "icon": "ri:book-2-line",
        "sort": 11,
        "children": null
      },
      {
        "id": 410,
        "name": "menu.taskPathTemplateMerge",
        "parentId": 67,
        "path": "67",
        "route": "/taskPathTemplateMerge",
        "component": "taskPathTemplateMerge",
        "type": 0,
        "icon": "ri:book-2-line",
        "sort": 12,
        "children": null
      }
    ]
  },
  {
    "id": 300,
    "name": "menu.inStockPoces",
    "parentId": 0,
    "path": "",
    "route": "/stock/in",
    "component": null,
    "type": 0,
    "icon": "ri:bill-line",
    "sort": 2,
    "children": [
      {
        "id": 134,
        "name": "menu.asnOrder",
        "parentId": 300,
        "path": "300",
        "route": "/manager/asnOrder",
        "component": "asnOrder",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 2,
        "children": null
      },
      {
        "id": 400,
        "name": "入库通知单明细",
        "parentId": 300,
        "path": "300",
        "route": "/manager/asnOrderItem",
        "component": "asnOrderItem",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 3,
        "children": null
      },
      {
        "id": 216,
        "name": "menu.asnOrderLog",
        "parentId": 300,
        "path": "300",
        "route": "/manager/asnOrderLog",
        "component": "asnOrderLog",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 4,
        "children": null
      },
      {
        "id": 205,
        "name": "menu.waitPakin",
        "parentId": 300,
        "path": "300",
        "route": "/manager/waitPakin",
        "component": "waitPakin",
        "type": 0,
        "icon": "ri:function-line",
        "sort": 5,
        "children": null
      },
      {
        "id": 246,
        "name": "menu.waitPakinLog",
        "parentId": 300,
        "path": "300",
        "route": "/manager/waitPakinLog",
        "component": "waitPakinLog",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 6,
        "children": null
      }
    ]
  },
  {
    "id": 301,
    "name": "menu.outStockPoces",
    "parentId": 0,
    "path": "",
    "route": "/stock/out",
    "component": null,
    "type": 0,
    "icon": "ri:bill-line",
    "sort": 3,
    "children": [
      {
        "id": 290,
        "name": "menu.outStock",
        "parentId": 301,
        "path": "301",
        "route": "manager/outStock",
        "component": "outStock",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 2,
        "children": null
      },
      {
        "id": 402,
        "name": "出库订单明细",
        "parentId": 301,
        "path": "301",
        "route": "/manager/outStockItem",
        "component": "outStockItem",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 3,
        "children": null
      },
      {
        "id": 387,
        "name": "menu.preparation",
        "parentId": 301,
        "path": "301",
        "route": "/manager/matPreparation",
        "component": "preparation",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 4,
        "children": null
      },
      {
        "id": 307,
        "name": "menu.wave",
        "parentId": 301,
        "path": "301",
        "route": "/manager/wave",
        "component": "wave",
        "type": 0,
        "icon": "ri:progress-2-line",
        "sort": 6,
        "children": null
      }
    ]
  },
  {
    "id": 389,
    "name": "menu.transferPoces",
    "parentId": 0,
    "path": "",
    "route": "/transfer",
    "component": "",
    "type": 0,
    "icon": "ri:bill-line",
    "sort": 4,
    "children": [
      {
        "id": 356,
        "name": "menu.transfer",
        "parentId": 389,
        "path": "389",
        "route": "/manager/transfer",
        "component": "transfer",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 0,
        "children": null
      }
    ]
  },
  {
    "id": 322,
    "name": "menu.tasks",
    "parentId": 0,
    "path": "",
    "route": "/tasks",
    "component": null,
    "type": 0,
    "icon": "ri:progress-2-line",
    "sort": 5,
    "children": [
      {
        "id": 336,
        "name": "menu.outBound",
        "parentId": 322,
        "path": "322",
        "route": "/manager/outBound",
        "component": "outBound",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 1,
        "children": null
      },
      {
        "id": 338,
        "name": "menu.stockTransfer",
        "parentId": 322,
        "path": "322",
        "route": "/manager/stockTransfer",
        "component": "stockTransfer",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 3,
        "children": null
      },
      {
        "id": 226,
        "name": "menu.task",
        "parentId": 322,
        "path": "322",
        "route": "/manager/task",
        "component": "task",
        "type": 0,
        "icon": "ri:progress-2-line",
        "sort": 5,
        "children": null
      },
      {
        "id": 236,
        "name": "menu.taskLog",
        "parentId": 322,
        "path": "322",
        "route": "/manager/taskLog",
        "component": "taskLog",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 7,
        "children": null
      }
    ]
  },
  {
    "id": 323,
    "name": "menu.stockManage",
    "parentId": 0,
    "path": "",
    "route": "/stock/manage",
    "component": "manage",
    "type": 0,
    "icon": "ri:function-line",
    "sort": 6,
    "children": [
      {
        "id": 330,
        "name": "menu.warehouseStock",
        "parentId": 323,
        "path": "323",
        "route": "/warehouse/stock",
        "component": "warehouseStock",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 1,
        "children": null
      },
      {
        "id": 361,
        "name": "menu.locPreview",
        "parentId": 323,
        "path": "323",
        "route": "/manager/locPreview",
        "component": "locPreview",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 2,
        "children": null
      },
      {
        "id": 172,
        "name": "menu.warehouseAreasItem",
        "parentId": 323,
        "path": "323",
        "route": "/manager/warehouseAreasItem",
        "component": "warehouseAreasItem",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 3,
        "children": null
      },
      {
        "id": 103,
        "name": "menu.qlyInspect",
        "parentId": 323,
        "path": "323",
        "route": "/manager/qlyInspect",
        "component": "qlyInspect",
        "type": 0,
        "icon": "ri:function-line",
        "sort": 4,
        "children": null
      },
      {
        "id": 366,
        "name": "menu.locRevise",
        "parentId": 323,
        "path": "323",
        "route": "/manager/locRevise",
        "component": "locRevise",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 10,
        "children": null
      },
      {
        "id": 394,
        "name": "menu.freeze",
        "parentId": 323,
        "path": "323",
        "route": "/manager/freeze",
        "component": "freeze",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 11,
        "children": null
      },
      {
        "id": 265,
        "name": "menu.stock",
        "parentId": 323,
        "path": "323",
        "route": "/manager/stock",
        "component": "stock",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 12,
        "children": null
      }
    ]
  },
  {
    "id": 391,
    "name": "menu.check",
    "parentId": 0,
    "path": "",
    "route": "/check",
    "component": "check",
    "type": 0,
    "icon": "ri:pie-chart-line",
    "sort": 7,
    "children": [
      {
        "id": 345,
        "name": "menu.checkOrder",
        "parentId": 391,
        "path": "391",
        "route": "/orders/check",
        "component": "check",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 1,
        "children": null
      },
      {
        "id": 351,
        "name": "menu.checkDiff",
        "parentId": 391,
        "path": "391",
        "route": "/manager/checkDiff",
        "component": "checkDiff",
        "type": 0,
        "icon": "ri:error-warning-line",
        "sort": 2,
        "children": null
      },
      {
        "id": 337,
        "name": "menu.checkOutBound",
        "parentId": 391,
        "path": "391",
        "route": "/manager/checkOutBound",
        "component": "checkOutBound",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 3,
        "children": null
      }
    ]
  },
  {
    "id": 392,
    "name": "menu.abnormal",
    "parentId": 0,
    "path": "",
    "route": "/abnormal",
    "component": "abnormal",
    "type": 0,
    "icon": "ri:error-warning-line",
    "sort": 8,
    "children": null
  },
  {
    "id": 371,
    "name": "menu.statisticReport",
    "parentId": 0,
    "path": "",
    "route": "/manager/statisticReport",
    "component": "",
    "type": 0,
    "icon": "ri:pie-chart-line",
    "sort": 9,
    "children": [
      {
        "id": 385,
        "name": "menu.outStatisticItem",
        "parentId": 371,
        "path": "371",
        "route": "/manager/outStatisticItem",
        "component": "outStatisticItem",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 0,
        "children": null
      },
      {
        "id": 386,
        "name": "menu.statisticCount",
        "parentId": 371,
        "path": "371",
        "route": "/manager/statisticCount",
        "component": "statisticCount",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 0,
        "children": null
      },
      {
        "id": 382,
        "name": "menu.outStatistic",
        "parentId": 371,
        "path": "371",
        "route": "/manager/outStatistic",
        "component": "outStatistic",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 0,
        "children": null
      },
      {
        "id": 384,
        "name": "menu.inStatisticItem",
        "parentId": 371,
        "path": "371",
        "route": "/manager/inStatisticItem",
        "component": "inStatisticItem",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 0,
        "children": null
      },
      {
        "id": 383,
        "name": "menu.inStatistic",
        "parentId": 371,
        "path": "371",
        "route": "/manager/inStatistic",
        "component": "inStatistic",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 0,
        "children": null
      },
      {
        "id": 376,
        "name": "menu.locDeadReport",
        "parentId": 371,
        "path": "371",
        "route": "/manager/locDeadReport",
        "component": "locDeadReport",
        "type": 0,
        "icon": "ri:pie-chart-line",
        "sort": 1,
        "children": null
      }
    ]
  },
  {
    "id": 160,
    "name": "menu.logs",
    "parentId": 0,
    "path": "",
    "route": "/logs",
    "component": null,
    "type": 0,
    "icon": "ri:bill-line",
    "sort": 10,
    "children": [
      {
        "id": 32,
        "name": "menu.operation",
        "parentId": 160,
        "path": "160",
        "route": "/system/operationRecord",
        "component": "operationRecord",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 5,
        "children": null
      },
      {
        "id": 27,
        "name": "menu.token",
        "parentId": 160,
        "path": "160",
        "route": "/system/userLogin",
        "component": "userLogin",
        "type": 0,
        "icon": "ri:bill-line",
        "sort": 6,
        "children": null
      }
    ]
  },
  {
    "id": 179,
    "name": "menu.permissions",
    "parentId": 0,
    "path": "",
    "route": "/permissions",
    "component": null,
    "type": 0,
    "icon": "ri:user-settings-line",
    "sort": 11,
    "children": [
      {
        "id": 2,
        "name": "menu.user",
        "parentId": 179,
        "path": "179",
        "route": "/system/user",
        "component": "user",
        "type": 0,
        "icon": "ri:user-3-line",
        "sort": 1,
        "children": null
      },
      {
        "id": 7,
        "name": "menu.role",
        "parentId": 179,
        "path": "179",
        "route": "/system/role",
        "component": "role",
        "type": 0,
        "icon": "ri:palette-line",
        "sort": 2,
        "children": null
      },
      {
        "id": 22,
        "name": "menu.department",
        "parentId": 179,
        "path": "179",
        "route": "/system/dept",
        "component": "dept",
        "type": 0,
        "icon": "ri:group-line",
        "sort": 4,
        "children": null
      }
    ]
  },
  {
    "id": 1,
    "name": "menu.system",
    "parentId": 0,
    "path": "",
    "route": "/system",
    "component": null,
    "type": 0,
    "icon": "ri:settings-line",
    "sort": 12,
    "children": [
      {
        "id": 12,
        "name": "menu.menu",
        "parentId": 1,
        "path": "1",
        "route": "/system/menu",
        "component": "menu",
        "type": 0,
        "icon": "ri:menu-2-fill",
        "sort": 1,
        "children": null
      },
      {
        "id": 395,
        "name": "menu.menuPda",
        "parentId": 1,
        "path": "1",
        "route": "/manager/menuPda",
        "component": "menuPda",
        "type": 0,
        "icon": "ri:menu-2-fill",
        "sort": 2,
        "children": null
      },
      {
        "id": 123,
        "name": "menu.serialRule",
        "parentId": 1,
        "path": "1",
        "route": "/system/serialRule",
        "component": "serialRule",
        "type": 0,
        "icon": "ri:function-line",
        "sort": 3,
        "children": null
      },
      {
        "id": 340,
        "name": "menu.waveRule",
        "parentId": 1,
        "path": "1",
        "route": "/manager/waveRule",
        "component": "waveRule",
        "type": 0,
        "icon": "ri:progress-2-line",
        "sort": 4,
        "children": null
      },
      {
        "id": 108,
        "name": "menu.dictType",
        "parentId": 1,
        "path": "1",
        "route": "/system/dictType",
        "component": "dictType",
        "type": 0,
        "icon": "ri:book-2-line",
        "sort": 5,
        "children": null
      },
      {
        "id": 37,
        "name": "menu.config",
        "parentId": 1,
        "path": "1",
        "route": "/system/config",
        "component": "config",
        "type": 0,
        "icon": "ri:book-2-line",
        "sort": 7,
        "children": null
      },
      {
        "id": 162,
        "name": "menu.fields",
        "parentId": 1,
        "path": "1",
        "route": "/system/fields",
        "component": "fields",
        "type": 0,
        "icon": "ri:book-2-line",
        "sort": 10,
        "children": null
      },
      {
        "id": 167,
        "name": "menu.fieldsItem",
        "parentId": 1,
        "path": "1",
        "route": "/system/fieldsItem",
        "component": "fieldsItem",
        "type": 0,
        "icon": "ri:book-2-line",
        "sort": 11,
        "children": null
      }
    ]
  },
  {
    "id": 390,
    "name": "menu.platform",
    "parentId": 0,
    "path": "",
    "route": "/platform",
    "component": "platform",
    "type": 0,
    "icon": "ri:command-fill",
    "sort": 13,
    "children": [
      {
        "id": 42,
        "name": "menu.tenant",
        "parentId": 390,
        "path": "390",
        "route": "/system/tenant",
        "component": "tenant",
        "type": 0,
        "icon": "ri:command-fill",
        "sort": 8,
        "children": null
      },
      {
        "id": 17,
        "name": "menu.host",
        "parentId": 390,
        "path": "390",
        "route": "/system/host",
        "component": "host",
        "type": 0,
        "icon": "ri:map-pin-line",
        "sort": 9,
        "children": null
      }
    ]
  }
]