{
  "version": "2026-02-13",
  "description": "三套系统角色、用户与菜单权限隔离策略（按路由 permissionId 配置）",
  "systems": {
    "ecommerce": {
      "name": "电商系统",
      "permissionPrefixes": [
        "/client",
        "/setting",
        "/store",
        "/page",
        "/goods",
        "/order",
        "/user",
        "/content",
        "/market",
        "/statistics",
        "/feedback"
      ],
      "permissionIncludes": [],
      "permissionExcludes": [
        "/order/regular",
        "/order/offline",
        "/market/coupon/market-activity/index",
        "/market/coupon/market-activity-stats/index"
      ],
      "roles": [
        {
          "roleCode": "ECOM_ADMIN",
          "roleName": "电商系统管理员",
          "permissionPrefixes": [
            "/client",
            "/setting",
            "/store",
            "/page",
            "/goods",
            "/order",
            "/user",
            "/content",
            "/market",
            "/statistics",
            "/feedback"
          ],
          "permissionIncludes": [],
          "permissionExcludes": [
            "/order/regular",
            "/order/offline",
            "/market/coupon/market-activity/index",
            "/market/coupon/market-activity-stats/index"
          ]
        },
        {
          "roleCode": "ECOM_GOODS_MANAGER",
          "roleName": "电商商品运营",
          "permissionPrefixes": [
            "/goods",
            "/store",
            "/page",
            "/content"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "ECOM_ORDER_MANAGER",
          "roleName": "电商订单运营",
          "permissionPrefixes": [
            "/order",
            "/user"
          ],
          "permissionIncludes": [
            "/statistics"
          ],
          "permissionExcludes": [
            "/order/regular",
            "/order/offline"
          ]
        },
        {
          "roleCode": "ECOM_MARKETING_MANAGER",
          "roleName": "电商营销运营",
          "permissionPrefixes": [
            "/market",
            "/user"
          ],
          "permissionIncludes": [
            "/statistics",
            "/feedback"
          ],
          "permissionExcludes": [
            "/market/coupon/market-activity/index",
            "/market/coupon/market-activity-stats/index"
          ]
        },
        {
          "roleCode": "ECOM_AUDITOR",
          "roleName": "电商审计只读",
          "permissionPrefixes": [],
          "permissionIncludes": [
            "/statistics",
            "/feedback",
            "/order/list/all",
            "/order/refund/index",
            "/user/index"
          ],
          "permissionExcludes": []
        }
      ],
      "users": [
        {
          "username": "ecom_admin",
          "displayName": "电商系统管理员",
          "roleCodes": [
            "ECOM_ADMIN"
          ]
        },
        {
          "username": "ecom_goods_ops",
          "displayName": "电商商品运营",
          "roleCodes": [
            "ECOM_GOODS_MANAGER"
          ]
        },
        {
          "username": "ecom_order_ops",
          "displayName": "电商订单运营",
          "roleCodes": [
            "ECOM_ORDER_MANAGER"
          ]
        },
        {
          "username": "ecom_marketing_ops",
          "displayName": "电商营销运营",
          "roleCodes": [
            "ECOM_MARKETING_MANAGER"
          ]
        },
        {
          "username": "ecom_auditor",
          "displayName": "电商审计只读",
          "roleCodes": [
            "ECOM_AUDITOR"
          ]
        }
      ]
    },
    "nutrition": {
      "name": "运动营养咨询与指导系统",
      "permissionPrefixes": [
        "/index",
        "/health",
        "/survey",
        "/dietary",
        "/sport",
        "/manage"
      ],
      "permissionIncludes": [],
      "permissionExcludes": [],
      "roles": [
        {
          "roleCode": "NUTR_ADMIN",
          "roleName": "运动营养系统管理员",
          "permissionPrefixes": [
            "/index",
            "/health",
            "/survey",
            "/dietary",
            "/sport",
            "/manage"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "NUTRITIONIST",
          "roleName": "营养师",
          "permissionPrefixes": [
            "/index",
            "/health",
            "/survey",
            "/dietary",
            "/sport"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "SPORT_COACH",
          "roleName": "运动教练",
          "permissionPrefixes": [
            "/index",
            "/health",
            "/sport"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "NUTR_DATA_CLERK",
          "roleName": "营养数据专员",
          "permissionPrefixes": [
            "/index",
            "/survey",
            "/dietary"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "NUTR_VIEWER",
          "roleName": "营养只读访客",
          "permissionPrefixes": [],
          "permissionIncludes": [
            "/index",
            "/health/info",
            "/survey/intake",
            "/dietary"
          ],
          "permissionExcludes": []
        }
      ],
      "users": [
        {
          "username": "nutr_admin",
          "displayName": "运动营养系统管理员",
          "roleCodes": [
            "NUTR_ADMIN"
          ]
        },
        {
          "username": "nutritionist_a",
          "displayName": "营养师A",
          "roleCodes": [
            "NUTRITIONIST"
          ]
        },
        {
          "username": "coach_a",
          "displayName": "教练A",
          "roleCodes": [
            "SPORT_COACH"
          ]
        },
        {
          "username": "nutr_data_clerk",
          "displayName": "营养数据专员",
          "roleCodes": [
            "NUTR_DATA_CLERK"
          ]
        },
        {
          "username": "nutr_viewer",
          "displayName": "营养只读访客",
          "roleCodes": [
            "NUTR_VIEWER"
          ]
        }
      ]
    },
    "canteen": {
      "name": "智慧食堂系统",
      "permissionPrefixes": [
        "/menu",
        "/device",
        "/campus",
        "/restaurant",
        "/enterprise",
        "/mapping",
        "/unified",
        "/report"
      ],
      "permissionIncludes": [
        "/order/regular",
        "/order/offline",
        "/market/coupon/market-activity/index",
        "/market/coupon/market-activity-stats/index"
      ],
      "permissionExcludes": [],
      "roles": [
        {
          "roleCode": "CANTEEN_ADMIN",
          "roleName": "智慧食堂系统管理员",
          "permissionPrefixes": [
            "/menu",
            "/device",
            "/campus",
            "/restaurant",
            "/enterprise",
            "/mapping",
            "/unified",
            "/report"
          ],
          "permissionIncludes": [
            "/order/regular",
            "/order/offline",
            "/market/coupon/market-activity/index",
            "/market/coupon/market-activity-stats/index"
          ],
          "permissionExcludes": []
        },
        {
          "roleCode": "CANTEEN_BASEDATA_MANAGER",
          "roleName": "食堂基础数据运营",
          "permissionPrefixes": [
            "/menu",
            "/device",
            "/campus",
            "/restaurant",
            "/enterprise"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "CANTEEN_MAPPING_SETTING_MANAGER",
          "roleName": "食堂映射与设置运营",
          "permissionPrefixes": [
            "/mapping",
            "/unified"
          ],
          "permissionIncludes": [],
          "permissionExcludes": []
        },
        {
          "roleCode": "CANTEEN_TRANSACTION_MANAGER",
          "roleName": "食堂交易运营",
          "permissionPrefixes": [
            "/report"
          ],
          "permissionIncludes": [
            "/report/transaction"
          ],
          "permissionExcludes": []
        },
        {
          "roleCode": "CANTEEN_AUDITOR",
          "roleName": "食堂审计只读",
          "permissionPrefixes": [],
          "permissionIncludes": [
            "/report",
            "/report/transaction",
            "/device/equipment",
            "/restaurant/manage",
            "/enterprise/org"
          ],
          "permissionExcludes": []
        }
      ],
      "users": [
        {
          "username": "canteen_admin",
          "displayName": "智慧食堂系统管理员",
          "roleCodes": [
            "CANTEEN_ADMIN"
          ]
        },
        {
          "username": "canteen_basedata_ops",
          "displayName": "食堂基础数据运营",
          "roleCodes": [
            "CANTEEN_BASEDATA_MANAGER"
          ]
        },
        {
          "username": "canteen_mapping_ops",
          "displayName": "食堂映射与设置运营",
          "roleCodes": [
            "CANTEEN_MAPPING_SETTING_MANAGER"
          ]
        },
        {
          "username": "canteen_transaction_ops",
          "displayName": "食堂交易运营",
          "roleCodes": [
            "CANTEEN_TRANSACTION_MANAGER"
          ]
        },
        {
          "username": "canteen_auditor",
          "displayName": "食堂审计只读",
          "roleCodes": [
            "CANTEEN_AUDITOR"
          ]
        }
      ]
    }
  }
}
