{
  "result": {
    "stats": {
      "steps": {
        "total": 2,
        "passed": 2,
        "failed": 0
      },
      "iterations": {
        "total": 1,
        "pending": 0,
        "failed": 0
      },
      "items": {},
      "scripts": {
        "total": 5,
        "pending": 0,
        "failed": 0
      },
      "prerequests": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "requests": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "socketRequests": {
        "total": 0,
        "pending": 0,
        "failed": 0
      },
      "tests": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "assertions": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "testScripts": {
        "total": 3,
        "pending": 0,
        "failed": 0
      },
      "prerequestScripts": {
        "total": 2,
        "pending": 0,
        "failed": 0
      }
    },
    "timings": {
      "responseTime": 353,
      "responseAverage": 124.5,
      "responseMin": 145,
      "responseMax": 208,
      "responseSd": 76.34297610127601,
      "dnsAverage": 0,
      "dnsMin": 0,
      "dnsMax": 0,
      "dnsSd": 0,
      "firstByteAverage": 0,
      "firstByteMin": 0,
      "firstByteMax": 0,
      "firstByteSd": 0,
      "started": 1783576770590,
      "completed": 1783576771084
    },
    "transfers": {
      "responseTotal": 144
    },
    "failures": [],
    "stepTree": [
      {
        "ref": "1c43e079-89ca-44c8-a461-c48f83b12fde",
        "type": "http"
      },
      {
        "ref": "dbd2c746-6ef5-462f-842b-f45de71b0af1",
        "type": "http"
      }
    ],
    "error": null
  },
  "isTestFlowControl": false,
  "run": {
    "stats": {
      "steps": {
        "total": 2,
        "passed": 2,
        "failed": 0
      },
      "iterations": {
        "total": 1,
        "pending": 0,
        "failed": 0
      },
      "items": {},
      "scripts": {
        "total": 5,
        "pending": 0,
        "failed": 0
      },
      "prerequests": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "requests": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "socketRequests": {
        "total": 0,
        "pending": 0,
        "failed": 0
      },
      "tests": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "assertions": {
        "total": 2,
        "pending": 0,
        "failed": 0
      },
      "testScripts": {
        "total": 3,
        "pending": 0,
        "failed": 0
      },
      "prerequestScripts": {
        "total": 2,
        "pending": 0,
        "failed": 0
      }
    },
    "timings": {
      "responseTime": 353,
      "responseAverage": 124.5,
      "responseMin": 145,
      "responseMax": 208,
      "responseSd": 76.34297610127601,
      "dnsAverage": 0,
      "dnsMin": 0,
      "dnsMax": 0,
      "dnsSd": 0,
      "firstByteAverage": 0,
      "firstByteMin": 0,
      "firstByteMax": 0,
      "firstByteSd": 0,
      "started": 1783576770590,
      "completed": 1783576771084
    },
    "transfers": {
      "responseTotal": 144
    },
    "failures": [],
    "stepTree": [
      {
        "ref": "1c43e079-89ca-44c8-a461-c48f83b12fde",
        "type": "http"
      },
      {
        "ref": "dbd2c746-6ef5-462f-842b-f45de71b0af1",
        "type": "http"
      }
    ],
    "error": null
  },
  "options": {
    "accessToken": "afxp_b1d5f2P6pF4rgO0gfdfOM5ACs4HJwauEi57o",
    "apiBaseUrl": "https://api.apifox.com",
    "testSuite": [
      2107
    ],
    "environment": 45671644,
    "reporters": [
      "cli",
      "json",
      "junit",
      "html"
    ],
    "outDir": "work_store/apifox/2026-07-09-full-automation-run/reports/suite-2107",
    "outFile": "suite-2107",
    "originalOutFile": "suite-2107",
    "onError": "continue",
    "envVar": [],
    "globalVar": [],
    "color": "off",
    "delayRequest": 0,
    "timeoutRequest": 30000,
    "timeoutScript": 30000,
    "enableBigInt": false,
    "disableRejectUnauthorized": false,
    "maxRetries": 3,
    "allowSecuritySensitiveActions": true,
    "reporterOptions": {
      "name": "智慧营养健康餐厅自动化：规则设置",
      "runnerId": "70357cfa-6626-4256-85a1-bcc7e4343197",
      "testSuiteId": 2107,
      "executionCount": 1
    },
    "isUploadReportSummary": false,
    "apifoxVersion": "2.2.6",
    "globals": {},
    "teamGlobals": {}
  },
  "collection": {
    "apifoxCli": "1.1.0",
    "item": [
      {
        "item": [
          {
            "id": "7aa7371a-daac-4e68-8223-be256179b4ee",
            "name": "规则添加接口",
            "request": {
              "url": {
                "protocol": "https",
                "path": [
                  "store",
                  "dishes.pushRule",
                  "add"
                ],
                "host": [
                  "zhct",
                  "yyangpt",
                  "cn"
                ],
                "query": [],
                "variable": []
              },
              "header": [
                {
                  "key": "Cookie",
                  "value": "_token=ABtQ0NxLpaiFEQB1Sdh0tAyGn2CikVRK%2FQAw82o2Xz2u%2BcoYilioPapdb7NVWwhMX%2FRdjxU3kyegPFu%2FPEswgQ%3D%3D"
                },
                {
                  "key": "Access-Token",
                  "value": "{{terminal_token}}"
                },
                {
                  "key": "User-Agent",
                  "value": "app/1.0.0"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "method": "POST",
              "baseUrl": "https://zhct.yyangpt.cn",
              "body": {
                "mode": "raw",
                "raw": "{\n  \"form\": {\n    \"name\": \"夏季午餐\",\n    \"source\": 1,\n    \"rate\": 1,\n    \"sales\": 1,\n    \"benchmark\": 0,\n    \"price\": \"\",\n    \"number\": 10\n  },\n  \"dishesCategories\": [\n    {\n      \"label\": \"主食\",\n      \"value\": 2,\n      \"number\": 1,\n      \"rate\": 0.14\n    },\n    {\n      \"label\": \"素菜\",\n      \"value\": 2,\n      \"number\": 2,\n      \"rate\": 0.28\n    },\n    {\n      \"label\": \"荤菜\",\n      \"value\": 3,\n      \"number\": 2,\n      \"rate\": 0.17\n    },\n    {\n      \"label\": \"蛋奶坚果\",\n      \"value\": 4,\n      \"number\": 1,\n      \"rate\": 0.17\n    },\n    {\n      \"label\": \"水果\",\n      \"value\": 5,\n      \"number\": 1,\n      \"rate\": 0.1\n    },\n    {\n      \"label\": \"汤饮\",\n      \"value\": 6,\n      \"number\": 2,\n      \"rate\": 0.14\n    }\n  ],\n  \"foodComposition\": [\n    {\n      \"label\": \"黑米\",\n      \"value\": 850,\n      \"option\": 1\n    },\n    {\n      \"label\": \"小米\",\n      \"value\": 920,\n      \"option\": 2\n    },\n    {\n      \"label\": \"糙米\",\n      \"value\": 1604,\n      \"option\": \"\"\n    }\n  ],\n  \"healthTags\": [\n    {\n      \"label\": \"高血压友好 (低钠)\",\n      \"value\": 1,\n      \"checked\": true\n    },\n    {\n      \"label\": \"高血脂友好 (低饱和脂肪酸)\",\n      \"value\": 2,\n      \"checked\": true\n    },\n    {\n      \"label\": \"高血糖友好 (低GL)\",\n      \"value\": 3,\n      \"checked\": true\n    },\n    {\n      \"label\": \"高尿酸友好 (低嘌呤)\",\n      \"value\": 4,\n      \"checked\": true\n    },\n    {\n      \"label\": \"增肌 (高蛋白)\",\n      \"value\": 5,\n      \"checked\": false\n    },\n    {\n      \"label\": \"减重 (低能量)\",\n      \"value\": 6,\n      \"checked\": false\n    },\n    {\n      \"label\": \"贫血 (富含铁)\",\n      \"value\": 7,\n      \"checked\": false\n    }\n  ],\n  \"nutritionTags\": [\n    {\n      \"label\": \"高膳食纤维\",\n      \"value\": 1,\n      \"checked\": true\n    },\n    {\n      \"label\": \"富含钙\",\n      \"value\": 2,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含锌\",\n      \"value\": 3,\n      \"checked\": true\n    },\n    {\n      \"label\": \"富含镁\",\n      \"value\": 4,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含维生素A\",\n      \"value\": 5,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含维生素B族（B1/B2）\",\n      \"value\": 6,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含维生素C\",\n      \"value\": 7,\n      \"checked\": false\n    }\n  ],\n  \"recommend\": [\n    {\n      \"label\": \"煮\",\n      \"value\": 1,\n      \"option\": 1\n    },\n    {\n      \"label\": \"蒸\",\n      \"value\": 2,\n      \"option\": 2\n    },\n    {\n      \"label\": \"炒\",\n      \"value\": 3,\n      \"option\": null\n    },\n    {\n      \"label\": \"卤\",\n      \"value\": 4,\n      \"option\": null\n    },\n    {\n      \"label\": \"汆\",\n      \"value\": 5,\n      \"option\": null\n    },\n    {\n      \"label\": \"炖\",\n      \"value\": 6,\n      \"option\": null\n    },\n    {\n      \"label\": \"焖\",\n      \"value\": 7,\n      \"option\": null\n    },\n    {\n      \"label\": \"煨\",\n      \"value\": 8,\n      \"option\": null\n    },\n    {\n      \"label\": \"烧\",\n      \"value\": 9,\n      \"option\": null\n    },\n    {\n      \"label\": \"涮\",\n      \"value\": 10,\n      \"option\": null\n    },\n    {\n      \"label\": \"拌\",\n      \"value\": 11,\n      \"option\": null\n    },\n    {\n      \"label\": \"暗炉烤\",\n      \"value\": 12,\n      \"option\": null\n    },\n    {\n      \"label\": \"生\",\n      \"value\": 20,\n      \"option\": null\n    },\n    {\n      \"label\": \"其他\",\n      \"value\": 13,\n      \"option\": null\n    }\n  ],\n  \"noRecommend\": [\n    {\n      \"label\": \"炸\",\n      \"value\": 14,\n      \"option\": 2\n    },\n    {\n      \"label\": \"煎\",\n      \"value\": 15,\n      \"option\": 2\n    },\n    {\n      \"label\": \"腌\",\n      \"value\": 16,\n      \"option\": 0\n    },\n    {\n      \"label\": \"熏\",\n      \"value\": 17,\n      \"option\": null\n    },\n    {\n      \"label\": \"明炉烤\",\n      \"value\": 18,\n      \"option\": null\n    },\n    {\n      \"label\": \"其他\",\n      \"value\": 19,\n      \"option\": null\n    }\n  ],\n  \"ruleOrder\": [\n    {\n      \"label\": \"菜品重复性（根据所选日期，按照重复率的要求生成菜谱）\",\n      \"value\": 2,\n      \"order\": 1\n    },\n    {\n      \"label\": \"食物成分（参考食物成分的参与度，“包含与不包含”，生成菜谱）\",\n      \"value\": 1,\n      \"order\": 2\n    },\n    {\n      \"label\": \"菜品价格（菜品价格决定菜谱档次，根据餐标形成符合用户的菜谱）\",\n      \"value\": 3,\n      \"order\": 3\n    },\n    {\n      \"label\": \"销量优先（参考近一个月内按各分类下，消耗重量从高到低排序，生成菜谱）\",\n      \"value\": 4,\n      \"order\": 4\n    },\n    {\n      \"label\": \"健康标签（参考慢病等健康标签，生成相关需求的菜谱）\",\n      \"value\": 5,\n      \"order\": 5\n    },\n    {\n      \"label\": \"营养标签（参考其他营养素标签，生成相关需求的菜谱）\",\n      \"value\": 6,\n      \"order\": 6\n    },\n    {\n      \"label\": \"烹调方式（参考烹调方式的类别，生成菜谱）\",\n      \"value\": 7,\n      \"order\": 7\n    }\n  ]\n}",
                "generateMode": "normal",
                "type": "application/json"
              },
              "type": "http"
            },
            "response": [],
            "event": [
              {
                "listen": "prerequest",
                "script": {
                  "id": "commonScript.assertion",
                  "type": "text/javascript",
                  "exec": [
                    "",
                    "  ____string2Array = function(value) {",
                    "    if(typeof value === 'object'){",
                    "      return value;",
                    "    }",
                    "    try {",
                    "      return JSON.parse(value);",
                    "    } catch (e) {",
                    "      return value;",
                    "    }",
                    "  }",
                    "  ____string2Number = function(value, errorMsg) {",
                    "   if(typeof value !== 'string'){",
                    "     return value;",
                    "   }",
                    "   if (/^\\-?\\d+$/.test(value)) {",
                    "       return parseInt(value);",
                    "   } else if (/^\\-?\\d+\\.\\d+$/.test(value)) {",
                    "       return parseFloat(value);",
                    "   } else {",
                    "       throw new Error(errorMsg || 'Data type mismatch')",
                    "   }",
                    " }",
                    "",
                    "  ____formatValues = function(value, stringCompareValue, comparison) {",
                    "   try{",
                    "     const isNumberComparisons = ['isBelow', 'isAtMost', 'isAbove', 'isAtLeast'].includes(comparison);",
                    "     const isCollectionComparisons = ['isOneOf', 'notOneOf'].includes(comparison);",
                    "     let compareValue;",
                    "     switch (typeof value) {",
                    "         case 'string':",
                    "             if (isNumberComparisons) {",
                    "                value = ____string2Number(value);",
                    "                compareValue = ____string2Number(stringCompareValue);",
                    "             } else if (isCollectionComparisons) {",
                    "                compareValue = ____string2Array(stringCompareValue);",
                    "             } else if (comparison === 'exists' || comparison === 'notExist') {",
                    "                value = /^({%.*%})|({{.*}})$/.test(value) ? undefined : value;",
                    "             } else {",
                    "                compareValue = stringCompareValue;",
                    "             }",
                    "             break;",
                    "         case 'object':",
                    "             const isArray = value instanceof Array;",
                    "             if (isNumberComparisons) {",
                    "                 throw new Error('Values of type object cannot be compared using the ' + comparison + ' method')",
                    "             } else if (isCollectionComparisons && isArray) {",
                    "              throw new Error('Values of type array cannot be compared using the ' + comparison + ' method')",
                    "            } else if (",
                    "              isArray &&",
                    "              comparison === 'include' &&",
                    "              value.includes(stringCompareValue)",
                    "            ) {",
                    "              compareValue = stringCompareValue;",
                    "            } else {",
                    "              try {",
                    "                  compareValue = JSON.parse(stringCompareValue);",
                    "              } catch (e) {",
                    "                  compareValue = stringCompareValue;",
                    "              }",
                    "            }",
                    "             break;",
                    "         case 'boolean':",
                    "             if (isNumberComparisons || isCollectionComparisons) {",
                    "                 throw new Error('Values of type boolean cannot be compared using the ' + comparison + ' method')",
                    "             }",
                    "             compareValue = stringCompareValue === 'true' ? true : (stringCompareValue === 'false' ? false : stringCompareValue);",
                    "             break;",
                    "           case 'bigint':",
                    "           case 'number':",
                    "             if (isNumberComparisons) {",
                    "               compareValue = ____string2Number(stringCompareValue);",
                    "             } else if (isCollectionComparisons) {",
                    "              compareValue = ____string2Array(stringCompareValue);",
                    "              value = '' + value;",
                    "            } else {",
                    "               compareValue = stringCompareValue;",
                    "               value = '' + value;",
                    "             }",
                    "             break;",
                    "         case 'null':",
                    "             if (isNumberComparisons) {",
                    "                 throw new Error('Values of type null cannot be compared using the ' + comparison + ' method')",
                    "             }",
                    "             compareValue = stringCompareValue === 'null' ? null : stringCompareValue;",
                    "             break;",
                    "         default:",
                    "            if (isCollectionComparisons) {",
                    "              compareValue = ____string2Array(stringCompareValue);",
                    "            } else {",
                    "              compareValue = stringCompareValue;",
                    "            }",
                    "            break;",
                    "     }",
                    "     return { compareValue, value };",
                    "   } catch(e) {",
                    "     console.log(e);",
                    "     throw e;",
                    "   }",
                    " }",
                    " "
                  ]
                }
              },
              {
                "listen": "test",
                "script": {
                  "id": "postProcessors.0.extractor",
                  "type": "text/javascript",
                  "exec": [
                    "",
                    "        if (JSON.setEnableBigInt) {",
                    "          JSON.setEnableBigInt(undefined);",
                    "        }",
                    "        ",
                    "      async function ____replaceIn(value) {",
                    "        if (typeof pm.variables.replaceInAsync === 'function') {",
                    "          return await pm.variables.replaceInAsync(value);",
                    "        }",
                    "        return pm.variables.replaceIn(value);",
                    "      };",
                    "      ;(async () => {",
                    "        try{",
                    "          ",
                    "          const expression = await ____replaceIn(`$.data.id`);",
                    "          const JSONPath = require('jsonpath-plus').JSONPath;",
                    "          const jsonData = pm.response.json();",
                    "          let value = JSONPath({",
                    "            json: jsonData,",
                    "            path: expression,",
                    "            wrap: false",
                    "          });",
                    "",
                    "",
                    "          if (false && undefined !== undefined) {",
                    "            if (Array.isArray(value)) {",
                    "              value = Number(undefined) >= 0 ? value[undefined] : value[value.length + Number(undefined)];",
                    "            } else {",
                    "              value = undefined;",
                    "            }",
                    "          }",
                    "          ",
                    "          ",
                    "        switch (typeof value) {",
                    "          case 'object':",
                    "            value = JSON.stringify(value);",
                    "            break;",
                    "          default:",
                    "            value = String(value);",
                    "            break;",
                    "        }",
                    "      ",
                    "          const formattedName = await ____replaceIn(`规则id`);pm.variables.set(formattedName, value);console.log('___label_placeholder__processor___', 'The value of the Local variable ' + formattedName + ' has been set to' + ' ' + '' + value + '')",
                    "        } catch(e) {",
                    "          e.message = `error occurred in extracting variable 规则id, error message: ` + e.message;",
                    "          setImmediate(() => { throw e });",
                    "        }",
                    "      })();",
                    "      "
                  ]
                }
              },
              {
                "listen": "test",
                "script": {
                  "id": "postProcessors.1.assertion",
                  "type": "text/javascript",
                  "exec": [
                    "",
                    "        if (JSON.setEnableBigInt) {",
                    "          JSON.setEnableBigInt(undefined);",
                    "        }",
                    "        ",
                    "  async function ____replaceIn(value) {",
                    "    if (typeof pm.variables.replaceInAsync === 'function') {",
                    "      return await pm.variables.replaceInAsync(value);",
                    "    }",
                    "    return pm.variables.replaceIn(value);",
                    "  };",
                    "",
                    "  ;(async () => {",
                    "    try {",
                    "      const formattedName = await ____replaceIn(`$.message Equals 添加成功`);",
                    "      pm.test(formattedName, async function(done) {",
                    "        try {",
                    "          ",
                    "          const expression = await ____replaceIn(`$.message`);",
                    "          const JSONPath = require('jsonpath-plus').JSONPath;",
                    "          let jsonData;",
                    "          try {",
                    "            jsonData = pm.response.json();",
                    "          } catch(e) {",
                    "            let text = pm.response.text();",
                    "            const xml2js = require('xml2js');",
                    "            function removeXmlUselessPrefixAndSuffix(text) {",
                    "              const start = text.indexOf('<');",
                    "              const end = text.lastIndexOf('>');",
                    "              if (start === -1 || end === -1) {",
                    "                return text;",
                    "              }",
                    "              return text.substring(start, end + 1);",
                    "            }",
                    "            text = removeXmlUselessPrefixAndSuffix(text);",
                    "            let json;",
                    "            let xmlParseOptions = {",
                    "                explicitArray: false,",
                    "                trim: true,",
                    "                ignoreAttrs: true,",
                    "            };",
                    "            xml2js.parseString(text, xmlParseOptions, function (_, result) {",
                    "                jsonData = result;",
                    "            });",
                    "          }",
                    "          let value = JSONPath({",
                    "            json: jsonData,",
                    "            path: expression,",
                    "            wrap: false",
                    "          });",
                    "",
                    "          if (false && undefined !== undefined) {",
                    "            if (Array.isArray(value)) {",
                    "              value = Number(undefined) >= 0 ? value[undefined] : value[value.length + Number(undefined)];",
                    "            } else {",
                    "              value = undefined;",
                    "            }",
                    "          }",
                    "",
                    "          ",
                    "          ",
                    "    const compareValue = await ____replaceIn(`添加成功`);",
                    "    const formattedValues = ____formatValues(value, compareValue, 'equal');",
                    "  ",
                    "          pm.expect(formattedValues.value).to.eql(formattedValues.compareValue);",
                    "          done();",
                    "        } catch (err) {",
                    "          done(err);",
                    "        }",
                    "      });",
                    "    } catch(e) {",
                    "      setImmediate(() => { throw e });",
                    "    }",
                    "  })();",
                    "      "
                  ]
                }
              }
            ],
            "type": "http",
            "metaInfo": {
              "blockId": "c19ebd9b-2ece-4d93-8252-25d2e337d283",
              "id": "c19ebd9b-2ece-4d93-8252-25d2e337d283",
              "type": "http",
              "name": "规则添加接口",
              "projectId": 5737553,
              "relatedId": 6946149,
              "environmentId": 28851641,
              "blockNumber": 1,
              "tags": [],
              "httpApiId": 311127056,
              "httpApiCaseId": 283093161,
              "httpApiName": "规则添加接口",
              "httpApiPath": "/store/dishes.pushRule/add",
              "httpApiMethod": "post",
              "httpApiCaseName": "规则添加接口",
              "moduleId": 4788005,
              "serverId": "default"
            },
            "protocolProfileBehavior": {
              "useWhatWGUrlParser": false,
              "disableUrlEncoding": false,
              "disabledSystemHeaders": {},
              "disableCookies": false
            },
            "responseDefinition": {
              "validateDeletedResponse": false
            },
            "requestDefinition": {
              "jsonSchema": {
                "type": "object",
                "properties": {}
              },
              "examples": [
                {
                  "value": "{\n    \"form\": {\n        \"name\": \"夏季午餐12\",\n        \"source\": 1,\n        \"rate\": 1,\n        \"sales\": 1,\n        \"benchmark\": 0,\n        \"price\": \"\",\n        \"number\": 10\n    },\n    \"dishesCategories\": [\n        {\n            \"label\": \"主食\",\n            \"value\": 2,\n            \"number\": 1,\n            \"rate\": 0.14\n        },\n        {\n            \"label\": \"素菜\",\n            \"value\": 2,\n            \"number\": 2,\n            \"rate\": 0.28\n        },\n        {\n            \"label\": \"荤菜\",\n            \"value\": 3,\n            \"number\": 2,\n            \"rate\": 0.17\n        },\n        {\n            \"label\": \"蛋奶坚果\",\n            \"value\": 4,\n            \"number\": 1,\n            \"rate\": 0.17\n        },\n        {\n            \"label\": \"水果\",\n            \"value\": 5,\n            \"number\": 1,\n            \"rate\": 0.1\n        },\n        {\n            \"label\": \"汤饮\",\n            \"value\": 6,\n            \"number\": 2,\n            \"rate\": 0.14\n        }\n    ],\n    \"foodComposition\": [ //食物成分 默认=[]\n        {\n            \"label\": \"黑米\", //食物成分名称\n            \"value\": 850, //食物成分id\n            \"option\": 1 //null=无选择1=不包含2=包含\n        },\n        {\n            \"label\": \"小米\",\n            \"value\": 920,\n            \"option\": 2\n        },\n        {\n            \"label\": \"糙米\",\n            \"value\": 1604,\n            \"option\": \"\"\n        }\n    ],\n    \"healthTags\": [\n        {\n            \"label\": \"高血压友好 (低钠)\",\n            \"value\": 1,\n            \"checked\": true //是否选中\n        },\n        {\n            \"label\": \"高血脂友好 (低饱和脂肪酸)\",\n            \"value\": 2,\n            \"checked\": true\n        },\n        {\n            \"label\": \"高血糖友好 (低GL)\",\n            \"value\": 3,\n            \"checked\": true\n        },\n        {\n            \"label\": \"高尿酸友好 (低嘌呤)\",\n            \"value\": 4,\n            \"checked\": true\n        },\n        {\n            \"label\": \"增肌 (高蛋白)\",\n            \"value\": 5,\n            \"checked\": false\n        },\n        {\n            \"label\": \"减重 (低能量)\",\n            \"value\": 6,\n            \"checked\": false\n        },\n        {\n            \"label\": \"贫血 (富含铁)\",\n            \"value\": 7,\n            \"checked\": false\n        }\n    ],\n    \"nutritionTags\": [\n        {\n            \"label\": \"高膳食纤维\",\n            \"value\": 1,\n            \"checked\": true\n        },\n        {\n            \"label\": \"富含钙\",\n            \"value\": 2,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含锌\",\n            \"value\": 3,\n            \"checked\": true\n        },\n        {\n            \"label\": \"富含镁\",\n            \"value\": 4,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含维生素A\",\n            \"value\": 5,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含维生素B族（B1/B2）\",\n            \"value\": 6,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含维生素C\",\n            \"value\": 7,\n            \"checked\": false\n        }\n    ],\n    \"recommend\": [\n        {\n            \"label\": \"煮\",\n            \"value\": 1,\n            \"option\": 1//null=无选择1=不包含2=必须包含，默认=null\n        },\n        {\n            \"label\": \"蒸\",\n            \"value\": 2,\n            \"option\": 2\n        },\n        {\n            \"label\": \"炒\",\n            \"value\": 3,\n            \"option\": null\n        },\n        {\n            \"label\": \"卤\",\n            \"value\": 4,\n            \"option\": null\n        },\n        {\n            \"label\": \"汆\",\n            \"value\": 5,\n            \"option\": null\n        },\n        {\n            \"label\": \"炖\",\n            \"value\": 6,\n            \"option\": null\n        },\n        {\n            \"label\": \"焖\",\n            \"value\": 7,\n            \"option\": null\n        },\n        {\n            \"label\": \"煨\",\n            \"value\": 8,\n            \"option\": null\n        },\n        {\n            \"label\": \"烧\",\n            \"value\": 9,\n            \"option\": null\n        },\n        {\n            \"label\": \"涮\",\n            \"value\": 10,\n            \"option\": null\n        },\n        {\n            \"label\": \"拌\",\n            \"value\": 11,\n            \"option\": null\n        },\n        {\n            \"label\": \"暗炉烤\",\n            \"value\": 12,\n            \"option\": null\n        },\n        {\n            \"label\": \"生\",\n            \"value\": 20,\n            \"option\": null\n        },\n        {\n            \"label\": \"其他\",\n            \"value\": 13,\n            \"option\": null\n        }\n    ],\n    \"noRecommend\": [\n        {\n            \"label\": \"炸\",\n            \"value\": 14,\n            \"option\": 2\n        },\n        {\n            \"label\": \"煎\",\n            \"value\": 15,\n            \"option\": 2\n        },\n        {\n            \"label\": \"腌\",\n            \"value\": 16,\n            \"option\": 0\n        },\n        {\n            \"label\": \"熏\",\n            \"value\": 17,\n            \"option\": null\n        },\n        {\n            \"label\": \"明炉烤\",\n            \"value\": 18,\n            \"option\": null\n        },\n        {\n            \"label\": \"其他\",\n            \"value\": 19,\n            \"option\": null\n        }\n    ],\n    \"ruleOrder\": [\n        {\n            \"label\": \"菜品重复性（根据所选日期，按照重复率的要求生成菜谱）\",\n            \"value\": 2,\n            \"order\": 1\n        },\n        {\n            \"label\": \"食物成分（参考食物成分的参与度，“包含与不包含”，生成菜谱）\",\n            \"value\": 1,\n            \"order\": 2\n        },\n        {\n            \"label\": \"菜品价格（菜品价格决定菜谱档次，根据餐标形成符合用户的菜谱）\",\n            \"value\": 3,\n            \"order\": 3\n        },\n        {\n            \"label\": \"销量优先（参考近一个月内按各分类下，消耗重量从高到低排序，生成菜谱）\",\n            \"value\": 4,\n            \"order\": 4\n        },\n        {\n            \"label\": \"健康标签（参考慢病等健康标签，生成相关需求的菜谱）\",\n            \"value\": 5,\n            \"order\": 5\n        },\n        {\n            \"label\": \"营养标签（参考其他营养素标签，生成相关需求的菜谱）\",\n            \"value\": 6,\n            \"order\": 6\n        },\n        {\n            \"label\": \"烹调方式（参考烹调方式的类别，生成菜谱）\",\n            \"value\": 7,\n            \"order\": 7\n        }\n    ]\n}",
                  "mediaType": "application/json",
                  "description": ""
                }
              ]
            },
            "overrideRequesterOptions": {
              "strictSSL": false
            }
          },
          {
            "id": "4d5f95a4-6bed-4600-b72b-30e17d62d739",
            "name": "规则删除接口",
            "request": {
              "url": {
                "protocol": "https",
                "path": [
                  "store",
                  "dishes.pushRule",
                  "delete"
                ],
                "host": [
                  "zhct",
                  "yyangpt",
                  "cn"
                ],
                "query": [],
                "variable": []
              },
              "header": [
                {
                  "key": "Cookie",
                  "value": "_token=ABtQ0NxLpaiFEQB1Sdh0tAyGn2CikVRK%2FQAw82o2Xz2u%2BcoYilioPapdb7NVWwhMX%2FRdjxU3kyegPFu%2FPEswgQ%3D%3D"
                },
                {
                  "key": "Access-Token",
                  "value": "{{terminal_token}}"
                },
                {
                  "key": "User-Agent",
                  "value": "app/1.0.0"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "method": "POST",
              "baseUrl": "https://zhct.yyangpt.cn",
              "body": {
                "mode": "raw",
                "raw": "{\n  \"id\": {{规则id}}\n}",
                "generateMode": "normal",
                "type": "application/json"
              },
              "type": "http"
            },
            "response": [],
            "event": [
              {
                "listen": "prerequest",
                "script": {
                  "id": "commonScript.assertion",
                  "type": "text/javascript",
                  "exec": [
                    "",
                    "  ____string2Array = function(value) {",
                    "    if(typeof value === 'object'){",
                    "      return value;",
                    "    }",
                    "    try {",
                    "      return JSON.parse(value);",
                    "    } catch (e) {",
                    "      return value;",
                    "    }",
                    "  }",
                    "  ____string2Number = function(value, errorMsg) {",
                    "   if(typeof value !== 'string'){",
                    "     return value;",
                    "   }",
                    "   if (/^\\-?\\d+$/.test(value)) {",
                    "       return parseInt(value);",
                    "   } else if (/^\\-?\\d+\\.\\d+$/.test(value)) {",
                    "       return parseFloat(value);",
                    "   } else {",
                    "       throw new Error(errorMsg || 'Data type mismatch')",
                    "   }",
                    " }",
                    "",
                    "  ____formatValues = function(value, stringCompareValue, comparison) {",
                    "   try{",
                    "     const isNumberComparisons = ['isBelow', 'isAtMost', 'isAbove', 'isAtLeast'].includes(comparison);",
                    "     const isCollectionComparisons = ['isOneOf', 'notOneOf'].includes(comparison);",
                    "     let compareValue;",
                    "     switch (typeof value) {",
                    "         case 'string':",
                    "             if (isNumberComparisons) {",
                    "                value = ____string2Number(value);",
                    "                compareValue = ____string2Number(stringCompareValue);",
                    "             } else if (isCollectionComparisons) {",
                    "                compareValue = ____string2Array(stringCompareValue);",
                    "             } else if (comparison === 'exists' || comparison === 'notExist') {",
                    "                value = /^({%.*%})|({{.*}})$/.test(value) ? undefined : value;",
                    "             } else {",
                    "                compareValue = stringCompareValue;",
                    "             }",
                    "             break;",
                    "         case 'object':",
                    "             const isArray = value instanceof Array;",
                    "             if (isNumberComparisons) {",
                    "                 throw new Error('Values of type object cannot be compared using the ' + comparison + ' method')",
                    "             } else if (isCollectionComparisons && isArray) {",
                    "              throw new Error('Values of type array cannot be compared using the ' + comparison + ' method')",
                    "            } else if (",
                    "              isArray &&",
                    "              comparison === 'include' &&",
                    "              value.includes(stringCompareValue)",
                    "            ) {",
                    "              compareValue = stringCompareValue;",
                    "            } else {",
                    "              try {",
                    "                  compareValue = JSON.parse(stringCompareValue);",
                    "              } catch (e) {",
                    "                  compareValue = stringCompareValue;",
                    "              }",
                    "            }",
                    "             break;",
                    "         case 'boolean':",
                    "             if (isNumberComparisons || isCollectionComparisons) {",
                    "                 throw new Error('Values of type boolean cannot be compared using the ' + comparison + ' method')",
                    "             }",
                    "             compareValue = stringCompareValue === 'true' ? true : (stringCompareValue === 'false' ? false : stringCompareValue);",
                    "             break;",
                    "           case 'bigint':",
                    "           case 'number':",
                    "             if (isNumberComparisons) {",
                    "               compareValue = ____string2Number(stringCompareValue);",
                    "             } else if (isCollectionComparisons) {",
                    "              compareValue = ____string2Array(stringCompareValue);",
                    "              value = '' + value;",
                    "            } else {",
                    "               compareValue = stringCompareValue;",
                    "               value = '' + value;",
                    "             }",
                    "             break;",
                    "         case 'null':",
                    "             if (isNumberComparisons) {",
                    "                 throw new Error('Values of type null cannot be compared using the ' + comparison + ' method')",
                    "             }",
                    "             compareValue = stringCompareValue === 'null' ? null : stringCompareValue;",
                    "             break;",
                    "         default:",
                    "            if (isCollectionComparisons) {",
                    "              compareValue = ____string2Array(stringCompareValue);",
                    "            } else {",
                    "              compareValue = stringCompareValue;",
                    "            }",
                    "            break;",
                    "     }",
                    "     return { compareValue, value };",
                    "   } catch(e) {",
                    "     console.log(e);",
                    "     throw e;",
                    "   }",
                    " }",
                    " "
                  ]
                }
              },
              {
                "listen": "test",
                "script": {
                  "id": "postProcessors.0.assertion",
                  "type": "text/javascript",
                  "exec": [
                    "",
                    "        if (JSON.setEnableBigInt) {",
                    "          JSON.setEnableBigInt(undefined);",
                    "        }",
                    "        ",
                    "  async function ____replaceIn(value) {",
                    "    if (typeof pm.variables.replaceInAsync === 'function') {",
                    "      return await pm.variables.replaceInAsync(value);",
                    "    }",
                    "    return pm.variables.replaceIn(value);",
                    "  };",
                    "",
                    "  ;(async () => {",
                    "    try {",
                    "      const formattedName = await ____replaceIn(`$.message Equals 删除成功`);",
                    "      pm.test(formattedName, async function(done) {",
                    "        try {",
                    "          ",
                    "          const expression = await ____replaceIn(`$.message`);",
                    "          const JSONPath = require('jsonpath-plus').JSONPath;",
                    "          let jsonData;",
                    "          try {",
                    "            jsonData = pm.response.json();",
                    "          } catch(e) {",
                    "            let text = pm.response.text();",
                    "            const xml2js = require('xml2js');",
                    "            function removeXmlUselessPrefixAndSuffix(text) {",
                    "              const start = text.indexOf('<');",
                    "              const end = text.lastIndexOf('>');",
                    "              if (start === -1 || end === -1) {",
                    "                return text;",
                    "              }",
                    "              return text.substring(start, end + 1);",
                    "            }",
                    "            text = removeXmlUselessPrefixAndSuffix(text);",
                    "            let json;",
                    "            let xmlParseOptions = {",
                    "                explicitArray: false,",
                    "                trim: true,",
                    "                ignoreAttrs: true,",
                    "            };",
                    "            xml2js.parseString(text, xmlParseOptions, function (_, result) {",
                    "                jsonData = result;",
                    "            });",
                    "          }",
                    "          let value = JSONPath({",
                    "            json: jsonData,",
                    "            path: expression,",
                    "            wrap: false",
                    "          });",
                    "",
                    "          if (false && undefined !== undefined) {",
                    "            if (Array.isArray(value)) {",
                    "              value = Number(undefined) >= 0 ? value[undefined] : value[value.length + Number(undefined)];",
                    "            } else {",
                    "              value = undefined;",
                    "            }",
                    "          }",
                    "",
                    "          ",
                    "          ",
                    "    const compareValue = await ____replaceIn(`删除成功`);",
                    "    const formattedValues = ____formatValues(value, compareValue, 'equal');",
                    "  ",
                    "          pm.expect(formattedValues.value).to.eql(formattedValues.compareValue);",
                    "          done();",
                    "        } catch (err) {",
                    "          done(err);",
                    "        }",
                    "      });",
                    "    } catch(e) {",
                    "      setImmediate(() => { throw e });",
                    "    }",
                    "  })();",
                    "      "
                  ]
                }
              }
            ],
            "type": "http",
            "metaInfo": {
              "blockId": "e28c0ad1-0e90-4bbe-9e74-d7686d84c3f1",
              "id": "e28c0ad1-0e90-4bbe-9e74-d7686d84c3f1",
              "type": "http",
              "name": "规则删除接口",
              "projectId": 5737553,
              "relatedId": 6946149,
              "environmentId": 28851641,
              "blockNumber": 2,
              "tags": [],
              "httpApiId": 311167220,
              "httpApiCaseId": 283093204,
              "httpApiName": "规则删除接口",
              "httpApiPath": "/store/dishes.pushRule/delete",
              "httpApiMethod": "post",
              "httpApiCaseName": "规则删除接口",
              "moduleId": 4788005,
              "serverId": "default"
            },
            "protocolProfileBehavior": {
              "useWhatWGUrlParser": false,
              "disableUrlEncoding": false,
              "disabledSystemHeaders": {},
              "disableCookies": false
            },
            "responseDefinition": {
              "validateDeletedResponse": false
            },
            "requestDefinition": {
              "jsonSchema": {
                "type": "object",
                "properties": {}
              },
              "examples": [
                {
                  "value": "{\n    \"id\": 1,//删除的规则id\n}",
                  "mediaType": "application/json",
                  "description": ""
                }
              ]
            },
            "overrideRequesterOptions": {
              "strictSSL": false
            }
          }
        ],
        "name": "智能排菜规则设置"
      }
    ],
    "info": {
      "name": "智能排菜规则设置",
      "folderName": "智能排菜"
    },
    "dataSchemas": {},
    "mockRules": {
      "rules": [],
      "enableSystemRule": true
    },
    "environment": {
      "id": 28851641,
      "name": "商户端产业园演示环境",
      "type": "normal",
      "baseUrls": {
        "default": "https://zhct.yyangpt.cn"
      },
      "websocketBaseUrls": {},
      "socketioBaseUrls": {},
      "baseUrl": "https://zhct.yyangpt.cn",
      "variable": {
        "id": "168c28fb-83e1-461d-a5f2-57d03ed3c5d5",
        "name": "商户端产业园演示环境",
        "baseUrl": "https://zhct.yyangpt.cn",
        "baseUrls": {
          "default": "https://zhct.yyangpt.cn"
        },
        "values": [
          {
            "type": "any",
            "value": "",
            "key": "dateFromTempVariable",
            "isBindInitial": false,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "bindTime",
            "isBindInitial": false,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "delayedBindTime",
            "isBindInitial": false,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "formattedDelayedTime",
            "isBindInitial": false,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "zqa",
            "isBindInitial": false,
            "initialValue": ""
          }
        ]
      },
      "parameter": {
        "header": [],
        "query": [],
        "body": [],
        "cookie": []
      },
      "advancedSettings": {
        "default": {
          "requestProxySetting": {
            "type": "default",
            "agentId": 2
          }
        }
      }
    },
    "globals": {
      "baseUrls": {},
      "websocketBaseUrls": {},
      "socketioBaseUrls": {},
      "baseUrl": "",
      "variable": {
        "id": "c2b9d31a-d331-4fa9-aa69-fbcce7d70c39",
        "baseUrl": "",
        "baseUrls": {},
        "values": [
          {
            "type": "any",
            "value": "",
            "key": "uuid",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "提取菜品uuid",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "提取菜品名称",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "to",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "shijian",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "dateFromTempVariable",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "cee",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "",
            "key": "sh",
            "isBindInitial": true,
            "initialValue": ""
          },
          {
            "type": "any",
            "value": "onlineshopmall",
            "key": "account-dev",
            "isBindInitial": true,
            "initialValue": "onlineshopmall"
          },
          {
            "type": "any",
            "value": "Shop@2025#Mall&88",
            "key": "pwd-dev",
            "isBindInitial": true,
            "initialValue": "Shop@2025#Mall&88"
          },
          {
            "type": "any",
            "value": "7E3A9D2C5F8B1E4G6H0J2K9L4M1N3P5Q",
            "key": "key-dev",
            "isBindInitial": true,
            "initialValue": "7E3A9D2C5F8B1E4G6H0J2K9L4M1N3P5Q"
          }
        ]
      },
      "parameter": {
        "header": [],
        "query": [],
        "body": [],
        "cookie": []
      }
    },
    "teamGlobals": {
      "baseUrls": {},
      "websocketBaseUrls": {},
      "socketioBaseUrls": {},
      "baseUrl": "",
      "variable": {
        "id": "2d64ad73-4cef-476c-abb1-c1fc3cf1c08b",
        "baseUrl": "",
        "baseUrls": {},
        "values": []
      },
      "parameter": {
        "header": [],
        "query": [],
        "body": [],
        "cookie": []
      }
    },
    "moduleVariablesMap": {
      "4788005": []
    },
    "isServerBuild": true,
    "isTestFlowControl": false,
    "collectionDefinition": {
      "apifoxCli": "1.1.0",
      "item": [
        {
          "item": [
            {
              "id": "7aa7371a-daac-4e68-8223-be256179b4ee",
              "name": "规则添加接口",
              "request": {
                "url": {
                  "protocol": "https",
                  "path": [
                    "store",
                    "dishes.pushRule",
                    "add"
                  ],
                  "host": [
                    "zhct",
                    "yyangpt",
                    "cn"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Cookie",
                    "value": "_token=ABtQ0NxLpaiFEQB1Sdh0tAyGn2CikVRK%2FQAw82o2Xz2u%2BcoYilioPapdb7NVWwhMX%2FRdjxU3kyegPFu%2FPEswgQ%3D%3D"
                  },
                  {
                    "key": "Access-Token",
                    "value": "{{terminal_token}}"
                  },
                  {
                    "key": "User-Agent",
                    "value": "app/1.0.0"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "baseUrl": "https://zhct.yyangpt.cn",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"form\": {\n    \"name\": \"夏季午餐\",\n    \"source\": 1,\n    \"rate\": 1,\n    \"sales\": 1,\n    \"benchmark\": 0,\n    \"price\": \"\",\n    \"number\": 10\n  },\n  \"dishesCategories\": [\n    {\n      \"label\": \"主食\",\n      \"value\": 2,\n      \"number\": 1,\n      \"rate\": 0.14\n    },\n    {\n      \"label\": \"素菜\",\n      \"value\": 2,\n      \"number\": 2,\n      \"rate\": 0.28\n    },\n    {\n      \"label\": \"荤菜\",\n      \"value\": 3,\n      \"number\": 2,\n      \"rate\": 0.17\n    },\n    {\n      \"label\": \"蛋奶坚果\",\n      \"value\": 4,\n      \"number\": 1,\n      \"rate\": 0.17\n    },\n    {\n      \"label\": \"水果\",\n      \"value\": 5,\n      \"number\": 1,\n      \"rate\": 0.1\n    },\n    {\n      \"label\": \"汤饮\",\n      \"value\": 6,\n      \"number\": 2,\n      \"rate\": 0.14\n    }\n  ],\n  \"foodComposition\": [\n    {\n      \"label\": \"黑米\",\n      \"value\": 850,\n      \"option\": 1\n    },\n    {\n      \"label\": \"小米\",\n      \"value\": 920,\n      \"option\": 2\n    },\n    {\n      \"label\": \"糙米\",\n      \"value\": 1604,\n      \"option\": \"\"\n    }\n  ],\n  \"healthTags\": [\n    {\n      \"label\": \"高血压友好 (低钠)\",\n      \"value\": 1,\n      \"checked\": true\n    },\n    {\n      \"label\": \"高血脂友好 (低饱和脂肪酸)\",\n      \"value\": 2,\n      \"checked\": true\n    },\n    {\n      \"label\": \"高血糖友好 (低GL)\",\n      \"value\": 3,\n      \"checked\": true\n    },\n    {\n      \"label\": \"高尿酸友好 (低嘌呤)\",\n      \"value\": 4,\n      \"checked\": true\n    },\n    {\n      \"label\": \"增肌 (高蛋白)\",\n      \"value\": 5,\n      \"checked\": false\n    },\n    {\n      \"label\": \"减重 (低能量)\",\n      \"value\": 6,\n      \"checked\": false\n    },\n    {\n      \"label\": \"贫血 (富含铁)\",\n      \"value\": 7,\n      \"checked\": false\n    }\n  ],\n  \"nutritionTags\": [\n    {\n      \"label\": \"高膳食纤维\",\n      \"value\": 1,\n      \"checked\": true\n    },\n    {\n      \"label\": \"富含钙\",\n      \"value\": 2,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含锌\",\n      \"value\": 3,\n      \"checked\": true\n    },\n    {\n      \"label\": \"富含镁\",\n      \"value\": 4,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含维生素A\",\n      \"value\": 5,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含维生素B族（B1/B2）\",\n      \"value\": 6,\n      \"checked\": false\n    },\n    {\n      \"label\": \"富含维生素C\",\n      \"value\": 7,\n      \"checked\": false\n    }\n  ],\n  \"recommend\": [\n    {\n      \"label\": \"煮\",\n      \"value\": 1,\n      \"option\": 1\n    },\n    {\n      \"label\": \"蒸\",\n      \"value\": 2,\n      \"option\": 2\n    },\n    {\n      \"label\": \"炒\",\n      \"value\": 3,\n      \"option\": null\n    },\n    {\n      \"label\": \"卤\",\n      \"value\": 4,\n      \"option\": null\n    },\n    {\n      \"label\": \"汆\",\n      \"value\": 5,\n      \"option\": null\n    },\n    {\n      \"label\": \"炖\",\n      \"value\": 6,\n      \"option\": null\n    },\n    {\n      \"label\": \"焖\",\n      \"value\": 7,\n      \"option\": null\n    },\n    {\n      \"label\": \"煨\",\n      \"value\": 8,\n      \"option\": null\n    },\n    {\n      \"label\": \"烧\",\n      \"value\": 9,\n      \"option\": null\n    },\n    {\n      \"label\": \"涮\",\n      \"value\": 10,\n      \"option\": null\n    },\n    {\n      \"label\": \"拌\",\n      \"value\": 11,\n      \"option\": null\n    },\n    {\n      \"label\": \"暗炉烤\",\n      \"value\": 12,\n      \"option\": null\n    },\n    {\n      \"label\": \"生\",\n      \"value\": 20,\n      \"option\": null\n    },\n    {\n      \"label\": \"其他\",\n      \"value\": 13,\n      \"option\": null\n    }\n  ],\n  \"noRecommend\": [\n    {\n      \"label\": \"炸\",\n      \"value\": 14,\n      \"option\": 2\n    },\n    {\n      \"label\": \"煎\",\n      \"value\": 15,\n      \"option\": 2\n    },\n    {\n      \"label\": \"腌\",\n      \"value\": 16,\n      \"option\": 0\n    },\n    {\n      \"label\": \"熏\",\n      \"value\": 17,\n      \"option\": null\n    },\n    {\n      \"label\": \"明炉烤\",\n      \"value\": 18,\n      \"option\": null\n    },\n    {\n      \"label\": \"其他\",\n      \"value\": 19,\n      \"option\": null\n    }\n  ],\n  \"ruleOrder\": [\n    {\n      \"label\": \"菜品重复性（根据所选日期，按照重复率的要求生成菜谱）\",\n      \"value\": 2,\n      \"order\": 1\n    },\n    {\n      \"label\": \"食物成分（参考食物成分的参与度，“包含与不包含”，生成菜谱）\",\n      \"value\": 1,\n      \"order\": 2\n    },\n    {\n      \"label\": \"菜品价格（菜品价格决定菜谱档次，根据餐标形成符合用户的菜谱）\",\n      \"value\": 3,\n      \"order\": 3\n    },\n    {\n      \"label\": \"销量优先（参考近一个月内按各分类下，消耗重量从高到低排序，生成菜谱）\",\n      \"value\": 4,\n      \"order\": 4\n    },\n    {\n      \"label\": \"健康标签（参考慢病等健康标签，生成相关需求的菜谱）\",\n      \"value\": 5,\n      \"order\": 5\n    },\n    {\n      \"label\": \"营养标签（参考其他营养素标签，生成相关需求的菜谱）\",\n      \"value\": 6,\n      \"order\": 6\n    },\n    {\n      \"label\": \"烹调方式（参考烹调方式的类别，生成菜谱）\",\n      \"value\": 7,\n      \"order\": 7\n    }\n  ]\n}",
                  "generateMode": "normal",
                  "type": "application/json"
                },
                "type": "http"
              },
              "response": [],
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "id": "commonScript.assertion",
                    "type": "text/javascript",
                    "exec": [
                      "",
                      "  ____string2Array = function(value) {",
                      "    if(typeof value === 'object'){",
                      "      return value;",
                      "    }",
                      "    try {",
                      "      return JSON.parse(value);",
                      "    } catch (e) {",
                      "      return value;",
                      "    }",
                      "  }",
                      "  ____string2Number = function(value, errorMsg) {",
                      "   if(typeof value !== 'string'){",
                      "     return value;",
                      "   }",
                      "   if (/^\\-?\\d+$/.test(value)) {",
                      "       return parseInt(value);",
                      "   } else if (/^\\-?\\d+\\.\\d+$/.test(value)) {",
                      "       return parseFloat(value);",
                      "   } else {",
                      "       throw new Error(errorMsg || 'Data type mismatch')",
                      "   }",
                      " }",
                      "",
                      "  ____formatValues = function(value, stringCompareValue, comparison) {",
                      "   try{",
                      "     const isNumberComparisons = ['isBelow', 'isAtMost', 'isAbove', 'isAtLeast'].includes(comparison);",
                      "     const isCollectionComparisons = ['isOneOf', 'notOneOf'].includes(comparison);",
                      "     let compareValue;",
                      "     switch (typeof value) {",
                      "         case 'string':",
                      "             if (isNumberComparisons) {",
                      "                value = ____string2Number(value);",
                      "                compareValue = ____string2Number(stringCompareValue);",
                      "             } else if (isCollectionComparisons) {",
                      "                compareValue = ____string2Array(stringCompareValue);",
                      "             } else if (comparison === 'exists' || comparison === 'notExist') {",
                      "                value = /^({%.*%})|({{.*}})$/.test(value) ? undefined : value;",
                      "             } else {",
                      "                compareValue = stringCompareValue;",
                      "             }",
                      "             break;",
                      "         case 'object':",
                      "             const isArray = value instanceof Array;",
                      "             if (isNumberComparisons) {",
                      "                 throw new Error('Values of type object cannot be compared using the ' + comparison + ' method')",
                      "             } else if (isCollectionComparisons && isArray) {",
                      "              throw new Error('Values of type array cannot be compared using the ' + comparison + ' method')",
                      "            } else if (",
                      "              isArray &&",
                      "              comparison === 'include' &&",
                      "              value.includes(stringCompareValue)",
                      "            ) {",
                      "              compareValue = stringCompareValue;",
                      "            } else {",
                      "              try {",
                      "                  compareValue = JSON.parse(stringCompareValue);",
                      "              } catch (e) {",
                      "                  compareValue = stringCompareValue;",
                      "              }",
                      "            }",
                      "             break;",
                      "         case 'boolean':",
                      "             if (isNumberComparisons || isCollectionComparisons) {",
                      "                 throw new Error('Values of type boolean cannot be compared using the ' + comparison + ' method')",
                      "             }",
                      "             compareValue = stringCompareValue === 'true' ? true : (stringCompareValue === 'false' ? false : stringCompareValue);",
                      "             break;",
                      "           case 'bigint':",
                      "           case 'number':",
                      "             if (isNumberComparisons) {",
                      "               compareValue = ____string2Number(stringCompareValue);",
                      "             } else if (isCollectionComparisons) {",
                      "              compareValue = ____string2Array(stringCompareValue);",
                      "              value = '' + value;",
                      "            } else {",
                      "               compareValue = stringCompareValue;",
                      "               value = '' + value;",
                      "             }",
                      "             break;",
                      "         case 'null':",
                      "             if (isNumberComparisons) {",
                      "                 throw new Error('Values of type null cannot be compared using the ' + comparison + ' method')",
                      "             }",
                      "             compareValue = stringCompareValue === 'null' ? null : stringCompareValue;",
                      "             break;",
                      "         default:",
                      "            if (isCollectionComparisons) {",
                      "              compareValue = ____string2Array(stringCompareValue);",
                      "            } else {",
                      "              compareValue = stringCompareValue;",
                      "            }",
                      "            break;",
                      "     }",
                      "     return { compareValue, value };",
                      "   } catch(e) {",
                      "     console.log(e);",
                      "     throw e;",
                      "   }",
                      " }",
                      " "
                    ]
                  }
                },
                {
                  "listen": "test",
                  "script": {
                    "id": "postProcessors.0.extractor",
                    "type": "text/javascript",
                    "exec": [
                      "",
                      "        if (JSON.setEnableBigInt) {",
                      "          JSON.setEnableBigInt(undefined);",
                      "        }",
                      "        ",
                      "      async function ____replaceIn(value) {",
                      "        if (typeof pm.variables.replaceInAsync === 'function') {",
                      "          return await pm.variables.replaceInAsync(value);",
                      "        }",
                      "        return pm.variables.replaceIn(value);",
                      "      };",
                      "      ;(async () => {",
                      "        try{",
                      "          ",
                      "          const expression = await ____replaceIn(`$.data.id`);",
                      "          const JSONPath = require('jsonpath-plus').JSONPath;",
                      "          const jsonData = pm.response.json();",
                      "          let value = JSONPath({",
                      "            json: jsonData,",
                      "            path: expression,",
                      "            wrap: false",
                      "          });",
                      "",
                      "",
                      "          if (false && undefined !== undefined) {",
                      "            if (Array.isArray(value)) {",
                      "              value = Number(undefined) >= 0 ? value[undefined] : value[value.length + Number(undefined)];",
                      "            } else {",
                      "              value = undefined;",
                      "            }",
                      "          }",
                      "          ",
                      "          ",
                      "        switch (typeof value) {",
                      "          case 'object':",
                      "            value = JSON.stringify(value);",
                      "            break;",
                      "          default:",
                      "            value = String(value);",
                      "            break;",
                      "        }",
                      "      ",
                      "          const formattedName = await ____replaceIn(`规则id`);pm.variables.set(formattedName, value);console.log('___label_placeholder__processor___', 'The value of the Local variable ' + formattedName + ' has been set to' + ' ' + '' + value + '')",
                      "        } catch(e) {",
                      "          e.message = `error occurred in extracting variable 规则id, error message: ` + e.message;",
                      "          setImmediate(() => { throw e });",
                      "        }",
                      "      })();",
                      "      "
                    ]
                  }
                },
                {
                  "listen": "test",
                  "script": {
                    "id": "postProcessors.1.assertion",
                    "type": "text/javascript",
                    "exec": [
                      "",
                      "        if (JSON.setEnableBigInt) {",
                      "          JSON.setEnableBigInt(undefined);",
                      "        }",
                      "        ",
                      "  async function ____replaceIn(value) {",
                      "    if (typeof pm.variables.replaceInAsync === 'function') {",
                      "      return await pm.variables.replaceInAsync(value);",
                      "    }",
                      "    return pm.variables.replaceIn(value);",
                      "  };",
                      "",
                      "  ;(async () => {",
                      "    try {",
                      "      const formattedName = await ____replaceIn(`$.message Equals 添加成功`);",
                      "      pm.test(formattedName, async function(done) {",
                      "        try {",
                      "          ",
                      "          const expression = await ____replaceIn(`$.message`);",
                      "          const JSONPath = require('jsonpath-plus').JSONPath;",
                      "          let jsonData;",
                      "          try {",
                      "            jsonData = pm.response.json();",
                      "          } catch(e) {",
                      "            let text = pm.response.text();",
                      "            const xml2js = require('xml2js');",
                      "            function removeXmlUselessPrefixAndSuffix(text) {",
                      "              const start = text.indexOf('<');",
                      "              const end = text.lastIndexOf('>');",
                      "              if (start === -1 || end === -1) {",
                      "                return text;",
                      "              }",
                      "              return text.substring(start, end + 1);",
                      "            }",
                      "            text = removeXmlUselessPrefixAndSuffix(text);",
                      "            let json;",
                      "            let xmlParseOptions = {",
                      "                explicitArray: false,",
                      "                trim: true,",
                      "                ignoreAttrs: true,",
                      "            };",
                      "            xml2js.parseString(text, xmlParseOptions, function (_, result) {",
                      "                jsonData = result;",
                      "            });",
                      "          }",
                      "          let value = JSONPath({",
                      "            json: jsonData,",
                      "            path: expression,",
                      "            wrap: false",
                      "          });",
                      "",
                      "          if (false && undefined !== undefined) {",
                      "            if (Array.isArray(value)) {",
                      "              value = Number(undefined) >= 0 ? value[undefined] : value[value.length + Number(undefined)];",
                      "            } else {",
                      "              value = undefined;",
                      "            }",
                      "          }",
                      "",
                      "          ",
                      "          ",
                      "    const compareValue = await ____replaceIn(`添加成功`);",
                      "    const formattedValues = ____formatValues(value, compareValue, 'equal');",
                      "  ",
                      "          pm.expect(formattedValues.value).to.eql(formattedValues.compareValue);",
                      "          done();",
                      "        } catch (err) {",
                      "          done(err);",
                      "        }",
                      "      });",
                      "    } catch(e) {",
                      "      setImmediate(() => { throw e });",
                      "    }",
                      "  })();",
                      "      "
                    ]
                  }
                }
              ],
              "type": "http",
              "metaInfo": {
                "blockId": "c19ebd9b-2ece-4d93-8252-25d2e337d283",
                "id": "c19ebd9b-2ece-4d93-8252-25d2e337d283",
                "type": "http",
                "name": "规则添加接口",
                "projectId": 5737553,
                "relatedId": 6946149,
                "environmentId": 28851641,
                "blockNumber": 1,
                "tags": [],
                "httpApiId": 311127056,
                "httpApiCaseId": 283093161,
                "httpApiName": "规则添加接口",
                "httpApiPath": "/store/dishes.pushRule/add",
                "httpApiMethod": "post",
                "httpApiCaseName": "规则添加接口",
                "moduleId": 4788005,
                "serverId": "default"
              },
              "protocolProfileBehavior": {
                "useWhatWGUrlParser": false,
                "disableUrlEncoding": false,
                "disabledSystemHeaders": {},
                "disableCookies": false
              },
              "responseDefinition": {
                "validateDeletedResponse": false
              },
              "requestDefinition": {
                "jsonSchema": {
                  "type": "object",
                  "properties": {}
                },
                "examples": [
                  {
                    "value": "{\n    \"form\": {\n        \"name\": \"夏季午餐12\",\n        \"source\": 1,\n        \"rate\": 1,\n        \"sales\": 1,\n        \"benchmark\": 0,\n        \"price\": \"\",\n        \"number\": 10\n    },\n    \"dishesCategories\": [\n        {\n            \"label\": \"主食\",\n            \"value\": 2,\n            \"number\": 1,\n            \"rate\": 0.14\n        },\n        {\n            \"label\": \"素菜\",\n            \"value\": 2,\n            \"number\": 2,\n            \"rate\": 0.28\n        },\n        {\n            \"label\": \"荤菜\",\n            \"value\": 3,\n            \"number\": 2,\n            \"rate\": 0.17\n        },\n        {\n            \"label\": \"蛋奶坚果\",\n            \"value\": 4,\n            \"number\": 1,\n            \"rate\": 0.17\n        },\n        {\n            \"label\": \"水果\",\n            \"value\": 5,\n            \"number\": 1,\n            \"rate\": 0.1\n        },\n        {\n            \"label\": \"汤饮\",\n            \"value\": 6,\n            \"number\": 2,\n            \"rate\": 0.14\n        }\n    ],\n    \"foodComposition\": [ //食物成分 默认=[]\n        {\n            \"label\": \"黑米\", //食物成分名称\n            \"value\": 850, //食物成分id\n            \"option\": 1 //null=无选择1=不包含2=包含\n        },\n        {\n            \"label\": \"小米\",\n            \"value\": 920,\n            \"option\": 2\n        },\n        {\n            \"label\": \"糙米\",\n            \"value\": 1604,\n            \"option\": \"\"\n        }\n    ],\n    \"healthTags\": [\n        {\n            \"label\": \"高血压友好 (低钠)\",\n            \"value\": 1,\n            \"checked\": true //是否选中\n        },\n        {\n            \"label\": \"高血脂友好 (低饱和脂肪酸)\",\n            \"value\": 2,\n            \"checked\": true\n        },\n        {\n            \"label\": \"高血糖友好 (低GL)\",\n            \"value\": 3,\n            \"checked\": true\n        },\n        {\n            \"label\": \"高尿酸友好 (低嘌呤)\",\n            \"value\": 4,\n            \"checked\": true\n        },\n        {\n            \"label\": \"增肌 (高蛋白)\",\n            \"value\": 5,\n            \"checked\": false\n        },\n        {\n            \"label\": \"减重 (低能量)\",\n            \"value\": 6,\n            \"checked\": false\n        },\n        {\n            \"label\": \"贫血 (富含铁)\",\n            \"value\": 7,\n            \"checked\": false\n        }\n    ],\n    \"nutritionTags\": [\n        {\n            \"label\": \"高膳食纤维\",\n            \"value\": 1,\n            \"checked\": true\n        },\n        {\n            \"label\": \"富含钙\",\n            \"value\": 2,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含锌\",\n            \"value\": 3,\n            \"checked\": true\n        },\n        {\n            \"label\": \"富含镁\",\n            \"value\": 4,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含维生素A\",\n            \"value\": 5,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含维生素B族（B1/B2）\",\n            \"value\": 6,\n            \"checked\": false\n        },\n        {\n            \"label\": \"富含维生素C\",\n            \"value\": 7,\n            \"checked\": false\n        }\n    ],\n    \"recommend\": [\n        {\n            \"label\": \"煮\",\n            \"value\": 1,\n            \"option\": 1//null=无选择1=不包含2=必须包含，默认=null\n        },\n        {\n            \"label\": \"蒸\",\n            \"value\": 2,\n            \"option\": 2\n        },\n        {\n            \"label\": \"炒\",\n            \"value\": 3,\n            \"option\": null\n        },\n        {\n            \"label\": \"卤\",\n            \"value\": 4,\n            \"option\": null\n        },\n        {\n            \"label\": \"汆\",\n            \"value\": 5,\n            \"option\": null\n        },\n        {\n            \"label\": \"炖\",\n            \"value\": 6,\n            \"option\": null\n        },\n        {\n            \"label\": \"焖\",\n            \"value\": 7,\n            \"option\": null\n        },\n        {\n            \"label\": \"煨\",\n            \"value\": 8,\n            \"option\": null\n        },\n        {\n            \"label\": \"烧\",\n            \"value\": 9,\n            \"option\": null\n        },\n        {\n            \"label\": \"涮\",\n            \"value\": 10,\n            \"option\": null\n        },\n        {\n            \"label\": \"拌\",\n            \"value\": 11,\n            \"option\": null\n        },\n        {\n            \"label\": \"暗炉烤\",\n            \"value\": 12,\n            \"option\": null\n        },\n        {\n            \"label\": \"生\",\n            \"value\": 20,\n            \"option\": null\n        },\n        {\n            \"label\": \"其他\",\n            \"value\": 13,\n            \"option\": null\n        }\n    ],\n    \"noRecommend\": [\n        {\n            \"label\": \"炸\",\n            \"value\": 14,\n            \"option\": 2\n        },\n        {\n            \"label\": \"煎\",\n            \"value\": 15,\n            \"option\": 2\n        },\n        {\n            \"label\": \"腌\",\n            \"value\": 16,\n            \"option\": 0\n        },\n        {\n            \"label\": \"熏\",\n            \"value\": 17,\n            \"option\": null\n        },\n        {\n            \"label\": \"明炉烤\",\n            \"value\": 18,\n            \"option\": null\n        },\n        {\n            \"label\": \"其他\",\n            \"value\": 19,\n            \"option\": null\n        }\n    ],\n    \"ruleOrder\": [\n        {\n            \"label\": \"菜品重复性（根据所选日期，按照重复率的要求生成菜谱）\",\n            \"value\": 2,\n            \"order\": 1\n        },\n        {\n            \"label\": \"食物成分（参考食物成分的参与度，“包含与不包含”，生成菜谱）\",\n            \"value\": 1,\n            \"order\": 2\n        },\n        {\n            \"label\": \"菜品价格（菜品价格决定菜谱档次，根据餐标形成符合用户的菜谱）\",\n            \"value\": 3,\n            \"order\": 3\n        },\n        {\n            \"label\": \"销量优先（参考近一个月内按各分类下，消耗重量从高到低排序，生成菜谱）\",\n            \"value\": 4,\n            \"order\": 4\n        },\n        {\n            \"label\": \"健康标签（参考慢病等健康标签，生成相关需求的菜谱）\",\n            \"value\": 5,\n            \"order\": 5\n        },\n        {\n            \"label\": \"营养标签（参考其他营养素标签，生成相关需求的菜谱）\",\n            \"value\": 6,\n            \"order\": 6\n        },\n        {\n            \"label\": \"烹调方式（参考烹调方式的类别，生成菜谱）\",\n            \"value\": 7,\n            \"order\": 7\n        }\n    ]\n}",
                    "mediaType": "application/json",
                    "description": ""
                  }
                ]
              },
              "overrideRequesterOptions": {
                "strictSSL": false
              }
            },
            {
              "id": "4d5f95a4-6bed-4600-b72b-30e17d62d739",
              "name": "规则删除接口",
              "request": {
                "url": {
                  "protocol": "https",
                  "path": [
                    "store",
                    "dishes.pushRule",
                    "delete"
                  ],
                  "host": [
                    "zhct",
                    "yyangpt",
                    "cn"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Cookie",
                    "value": "_token=ABtQ0NxLpaiFEQB1Sdh0tAyGn2CikVRK%2FQAw82o2Xz2u%2BcoYilioPapdb7NVWwhMX%2FRdjxU3kyegPFu%2FPEswgQ%3D%3D"
                  },
                  {
                    "key": "Access-Token",
                    "value": "{{terminal_token}}"
                  },
                  {
                    "key": "User-Agent",
                    "value": "app/1.0.0"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "baseUrl": "https://zhct.yyangpt.cn",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"id\": {{规则id}}\n}",
                  "generateMode": "normal",
                  "type": "application/json"
                },
                "type": "http"
              },
              "response": [],
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "id": "commonScript.assertion",
                    "type": "text/javascript",
                    "exec": [
                      "",
                      "  ____string2Array = function(value) {",
                      "    if(typeof value === 'object'){",
                      "      return value;",
                      "    }",
                      "    try {",
                      "      return JSON.parse(value);",
                      "    } catch (e) {",
                      "      return value;",
                      "    }",
                      "  }",
                      "  ____string2Number = function(value, errorMsg) {",
                      "   if(typeof value !== 'string'){",
                      "     return value;",
                      "   }",
                      "   if (/^\\-?\\d+$/.test(value)) {",
                      "       return parseInt(value);",
                      "   } else if (/^\\-?\\d+\\.\\d+$/.test(value)) {",
                      "       return parseFloat(value);",
                      "   } else {",
                      "       throw new Error(errorMsg || 'Data type mismatch')",
                      "   }",
                      " }",
                      "",
                      "  ____formatValues = function(value, stringCompareValue, comparison) {",
                      "   try{",
                      "     const isNumberComparisons = ['isBelow', 'isAtMost', 'isAbove', 'isAtLeast'].includes(comparison);",
                      "     const isCollectionComparisons = ['isOneOf', 'notOneOf'].includes(comparison);",
                      "     let compareValue;",
                      "     switch (typeof value) {",
                      "         case 'string':",
                      "             if (isNumberComparisons) {",
                      "                value = ____string2Number(value);",
                      "                compareValue = ____string2Number(stringCompareValue);",
                      "             } else if (isCollectionComparisons) {",
                      "                compareValue = ____string2Array(stringCompareValue);",
                      "             } else if (comparison === 'exists' || comparison === 'notExist') {",
                      "                value = /^({%.*%})|({{.*}})$/.test(value) ? undefined : value;",
                      "             } else {",
                      "                compareValue = stringCompareValue;",
                      "             }",
                      "             break;",
                      "         case 'object':",
                      "             const isArray = value instanceof Array;",
                      "             if (isNumberComparisons) {",
                      "                 throw new Error('Values of type object cannot be compared using the ' + comparison + ' method')",
                      "             } else if (isCollectionComparisons && isArray) {",
                      "              throw new Error('Values of type array cannot be compared using the ' + comparison + ' method')",
                      "            } else if (",
                      "              isArray &&",
                      "              comparison === 'include' &&",
                      "              value.includes(stringCompareValue)",
                      "            ) {",
                      "              compareValue = stringCompareValue;",
                      "            } else {",
                      "              try {",
                      "                  compareValue = JSON.parse(stringCompareValue);",
                      "              } catch (e) {",
                      "                  compareValue = stringCompareValue;",
                      "              }",
                      "            }",
                      "             break;",
                      "         case 'boolean':",
                      "             if (isNumberComparisons || isCollectionComparisons) {",
                      "                 throw new Error('Values of type boolean cannot be compared using the ' + comparison + ' method')",
                      "             }",
                      "             compareValue = stringCompareValue === 'true' ? true : (stringCompareValue === 'false' ? false : stringCompareValue);",
                      "             break;",
                      "           case 'bigint':",
                      "           case 'number':",
                      "             if (isNumberComparisons) {",
                      "               compareValue = ____string2Number(stringCompareValue);",
                      "             } else if (isCollectionComparisons) {",
                      "              compareValue = ____string2Array(stringCompareValue);",
                      "              value = '' + value;",
                      "            } else {",
                      "               compareValue = stringCompareValue;",
                      "               value = '' + value;",
                      "             }",
                      "             break;",
                      "         case 'null':",
                      "             if (isNumberComparisons) {",
                      "                 throw new Error('Values of type null cannot be compared using the ' + comparison + ' method')",
                      "             }",
                      "             compareValue = stringCompareValue === 'null' ? null : stringCompareValue;",
                      "             break;",
                      "         default:",
                      "            if (isCollectionComparisons) {",
                      "              compareValue = ____string2Array(stringCompareValue);",
                      "            } else {",
                      "              compareValue = stringCompareValue;",
                      "            }",
                      "            break;",
                      "     }",
                      "     return { compareValue, value };",
                      "   } catch(e) {",
                      "     console.log(e);",
                      "     throw e;",
                      "   }",
                      " }",
                      " "
                    ]
                  }
                },
                {
                  "listen": "test",
                  "script": {
                    "id": "postProcessors.0.assertion",
                    "type": "text/javascript",
                    "exec": [
                      "",
                      "        if (JSON.setEnableBigInt) {",
                      "          JSON.setEnableBigInt(undefined);",
                      "        }",
                      "        ",
                      "  async function ____replaceIn(value) {",
                      "    if (typeof pm.variables.replaceInAsync === 'function') {",
                      "      return await pm.variables.replaceInAsync(value);",
                      "    }",
                      "    return pm.variables.replaceIn(value);",
                      "  };",
                      "",
                      "  ;(async () => {",
                      "    try {",
                      "      const formattedName = await ____replaceIn(`$.message Equals 删除成功`);",
                      "      pm.test(formattedName, async function(done) {",
                      "        try {",
                      "          ",
                      "          const expression = await ____replaceIn(`$.message`);",
                      "          const JSONPath = require('jsonpath-plus').JSONPath;",
                      "          let jsonData;",
                      "          try {",
                      "            jsonData = pm.response.json();",
                      "          } catch(e) {",
                      "            let text = pm.response.text();",
                      "            const xml2js = require('xml2js');",
                      "            function removeXmlUselessPrefixAndSuffix(text) {",
                      "              const start = text.indexOf('<');",
                      "              const end = text.lastIndexOf('>');",
                      "              if (start === -1 || end === -1) {",
                      "                return text;",
                      "              }",
                      "              return text.substring(start, end + 1);",
                      "            }",
                      "            text = removeXmlUselessPrefixAndSuffix(text);",
                      "            let json;",
                      "            let xmlParseOptions = {",
                      "                explicitArray: false,",
                      "                trim: true,",
                      "                ignoreAttrs: true,",
                      "            };",
                      "            xml2js.parseString(text, xmlParseOptions, function (_, result) {",
                      "                jsonData = result;",
                      "            });",
                      "          }",
                      "          let value = JSONPath({",
                      "            json: jsonData,",
                      "            path: expression,",
                      "            wrap: false",
                      "          });",
                      "",
                      "          if (false && undefined !== undefined) {",
                      "            if (Array.isArray(value)) {",
                      "              value = Number(undefined) >= 0 ? value[undefined] : value[value.length + Number(undefined)];",
                      "            } else {",
                      "              value = undefined;",
                      "            }",
                      "          }",
                      "",
                      "          ",
                      "          ",
                      "    const compareValue = await ____replaceIn(`删除成功`);",
                      "    const formattedValues = ____formatValues(value, compareValue, 'equal');",
                      "  ",
                      "          pm.expect(formattedValues.value).to.eql(formattedValues.compareValue);",
                      "          done();",
                      "        } catch (err) {",
                      "          done(err);",
                      "        }",
                      "      });",
                      "    } catch(e) {",
                      "      setImmediate(() => { throw e });",
                      "    }",
                      "  })();",
                      "      "
                    ]
                  }
                }
              ],
              "type": "http",
              "metaInfo": {
                "blockId": "e28c0ad1-0e90-4bbe-9e74-d7686d84c3f1",
                "id": "e28c0ad1-0e90-4bbe-9e74-d7686d84c3f1",
                "type": "http",
                "name": "规则删除接口",
                "projectId": 5737553,
                "relatedId": 6946149,
                "environmentId": 28851641,
                "blockNumber": 2,
                "tags": [],
                "httpApiId": 311167220,
                "httpApiCaseId": 283093204,
                "httpApiName": "规则删除接口",
                "httpApiPath": "/store/dishes.pushRule/delete",
                "httpApiMethod": "post",
                "httpApiCaseName": "规则删除接口",
                "moduleId": 4788005,
                "serverId": "default"
              },
              "protocolProfileBehavior": {
                "useWhatWGUrlParser": false,
                "disableUrlEncoding": false,
                "disabledSystemHeaders": {},
                "disableCookies": false
              },
              "responseDefinition": {
                "validateDeletedResponse": false
              },
              "requestDefinition": {
                "jsonSchema": {
                  "type": "object",
                  "properties": {}
                },
                "examples": [
                  {
                    "value": "{\n    \"id\": 1,//删除的规则id\n}",
                    "mediaType": "application/json",
                    "description": ""
                  }
                ]
              },
              "overrideRequesterOptions": {
                "strictSSL": false
              }
            }
          ],
          "name": "智能排菜规则设置"
        }
      ],
      "info": {
        "name": "智能排菜规则设置",
        "folderName": "智能排菜"
      },
      "dataSchemas": {},
      "mockRules": {
        "rules": [],
        "enableSystemRule": true
      },
      "environment": {
        "id": 28851641,
        "name": "商户端产业园演示环境",
        "type": "normal",
        "baseUrls": {
          "default": "https://zhct.yyangpt.cn"
        },
        "websocketBaseUrls": {},
        "socketioBaseUrls": {},
        "baseUrl": "https://zhct.yyangpt.cn",
        "variable": {
          "id": "168c28fb-83e1-461d-a5f2-57d03ed3c5d5",
          "name": "商户端产业园演示环境",
          "baseUrl": "https://zhct.yyangpt.cn",
          "baseUrls": {
            "default": "https://zhct.yyangpt.cn"
          },
          "values": [
            {
              "type": "any",
              "value": "",
              "key": "dateFromTempVariable",
              "isBindInitial": false,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "bindTime",
              "isBindInitial": false,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "delayedBindTime",
              "isBindInitial": false,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "formattedDelayedTime",
              "isBindInitial": false,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "zqa",
              "isBindInitial": false,
              "initialValue": ""
            }
          ]
        },
        "parameter": {
          "header": [],
          "query": [],
          "body": [],
          "cookie": []
        },
        "advancedSettings": {
          "default": {
            "requestProxySetting": {
              "type": "default",
              "agentId": 2
            }
          }
        }
      },
      "globals": {
        "baseUrls": {},
        "websocketBaseUrls": {},
        "socketioBaseUrls": {},
        "baseUrl": "",
        "variable": {
          "id": "c2b9d31a-d331-4fa9-aa69-fbcce7d70c39",
          "baseUrl": "",
          "baseUrls": {},
          "values": [
            {
              "type": "any",
              "value": "",
              "key": "uuid",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "提取菜品uuid",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "提取菜品名称",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "to",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "shijian",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "dateFromTempVariable",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "cee",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "",
              "key": "sh",
              "isBindInitial": true,
              "initialValue": ""
            },
            {
              "type": "any",
              "value": "onlineshopmall",
              "key": "account-dev",
              "isBindInitial": true,
              "initialValue": "onlineshopmall"
            },
            {
              "type": "any",
              "value": "Shop@2025#Mall&88",
              "key": "pwd-dev",
              "isBindInitial": true,
              "initialValue": "Shop@2025#Mall&88"
            },
            {
              "type": "any",
              "value": "7E3A9D2C5F8B1E4G6H0J2K9L4M1N3P5Q",
              "key": "key-dev",
              "isBindInitial": true,
              "initialValue": "7E3A9D2C5F8B1E4G6H0J2K9L4M1N3P5Q"
            }
          ]
        },
        "parameter": {
          "header": [],
          "query": [],
          "body": [],
          "cookie": []
        }
      },
      "teamGlobals": {
        "baseUrls": {},
        "websocketBaseUrls": {},
        "socketioBaseUrls": {},
        "baseUrl": "",
        "variable": {
          "id": "2d64ad73-4cef-476c-abb1-c1fc3cf1c08b",
          "baseUrl": "",
          "baseUrls": {},
          "values": []
        },
        "parameter": {
          "header": [],
          "query": [],
          "body": [],
          "cookie": []
        }
      },
      "moduleVariablesMap": {
        "4788005": []
      },
      "defaultModuleId": 4788005,
      "isServerBuild": true,
      "isTestFlowControl": false,
      "databaseConnectionMap": {
        "124921": {
          "id": 124921,
          "createdAt": "2025-11-18T01:30:01.000Z",
          "updatedAt": "2025-11-18T01:30:01.000Z",
          "deletedAt": null,
          "name": "麒麟系统瀚高数据库",
          "type": "postgresql",
          "projectId": 5737553,
          "description": "麒麟系统瀚高数据库",
          "configs": {
            "default": {
              "port": "5866"
            }
          }
        }
      }
    },
    "runOptions": {
      "environmentId": 28851641,
      "useDataSetId": -1,
      "iterationCount": 1,
      "threadCount": 1,
      "onError": "ignore",
      "delayItem": 0,
      "saveReportDetail": "all",
      "saveVariables": true,
      "readGlobalCookie": false,
      "saveGlobalCookie": false,
      "runnerId": 0,
      "variableValue": "INITIAL_VALUE",
      "name": "智能排菜规则设置"
    },
    "projectOptions": {
      "enableJsonc": true,
      "enableBigint": false,
      "responseValidate": true,
      "isDefaultUrlEncoding": 2,
      "enableTestScenarioSetting": false,
      "enableYAPICompatScript": false,
      "publishedDocUrlRules": {
        "defaultRule": "RESOURCE_KEY_ONLY",
        "resourceKeyStandard": "LEGACY"
      },
      "folderShareExpandModeSettings": {
        "expandId": [],
        "mode": "AUTO"
      },
      "mockSettings": {},
      "language": "zh-CN"
    },
    "ciRunningOptions": {
      "environmentId": 28851641,
      "useDataSetId": -1,
      "iterationCount": 1,
      "threadCount": 1,
      "onError": "ignore",
      "delayItem": 0,
      "saveReportDetail": "all",
      "saveVariables": true,
      "readGlobalCookie": false,
      "saveGlobalCookie": false,
      "runnerId": 0,
      "variableValue": "INITIAL_VALUE",
      "name": "智能排菜规则设置"
    },
    "projectId": 5737553,
    "databaseConnectionMap": {
      "124921": {
        "id": 124921,
        "createdAt": "2025-11-18T01:30:01.000Z",
        "updatedAt": "2025-11-18T01:30:01.000Z",
        "deletedAt": null,
        "name": "麒麟系统瀚高数据库",
        "type": "postgresql",
        "projectId": 5737553,
        "description": "麒麟系统瀚高数据库",
        "configs": {
          "default": {
            "port": "5866"
          }
        }
      }
    },
    "reportUrlTemplate": "https://app.apifox.com/link/project/{{projectId}}/api-test/test-report/{{id}}",
    "reportExtra": {
      "runOptions": {
        "environmentId": 28851641,
        "useDataSetId": -1,
        "iterationCount": 1,
        "threadCount": 1,
        "onError": "ignore",
        "delayItem": 0,
        "saveReportDetail": "all",
        "saveVariables": true,
        "readGlobalCookie": false,
        "saveGlobalCookie": false,
        "runnerId": 0,
        "variableValue": "INITIAL_VALUE",
        "name": "智能排菜规则设置"
      },
      "testScenario": {
        "id": 6946149,
        "name": "智能排菜规则设置"
      },
      "branch": {
        "id": 5420249,
        "name": "main"
      }
    },
    "runnerId": "03c0c172-848c-4a9a-8d53-40b0420b00c3",
    "name": "智能排菜规则设置"
  }
}