{
  "openapi": "3.0.1",
  "info": {
    "title": "默认模块",
    "description": "",
    "version": "1.0.0"
  },
  "tags": [
    {
      "name": "明厨亮灶"
    },
    {
      "name": "明厨亮灶/Bright Kitchen - Local"
    },
    {
      "name": "明厨亮灶/Bright Kitchen"
    },
    {
      "name": "学校端"
    },
    {
      "name": "学校端/Companion Meals"
    },
    {
      "name": "学校端/DeviceIotConfig"
    },
    {
      "name": "学校端/SchoolFoods"
    },
    {
      "name": "学校端/MealPlans"
    },
    {
      "name": "学校端/Morning Checks"
    },
    {
      "name": "学校端/SamplingOperators"
    },
    {
      "name": "学校端/Waste"
    },
    {
      "name": "学校端/AI"
    },
    {
      "name": "学校端/Analytics"
    },
    {
      "name": "学校端/Hygiene"
    },
    {
      "name": "学校端/Canteens"
    },
    {
      "name": "学校端/CaterProxy"
    },
    {
      "name": "学校端/Certificates"
    },
    {
      "name": "学校端/Credentials"
    },
    {
      "name": "学校端/Device Safety"
    },
    {
      "name": "学校端/Devices"
    },
    {
      "name": "学校端/Dine"
    },
    {
      "name": "学校端/DineApiAdapter"
    },
    {
      "name": "学校端/Disinfection"
    },
    {
      "name": "学校端/Emergency"
    },
    {
      "name": "学校端/School Home"
    },
    {
      "name": "学校端/Inventory"
    },
    {
      "name": "学校端/School Messages"
    },
    {
      "name": "学校端/MorningCheckApiAdapter"
    },
    {
      "name": "学校端/Personnel"
    },
    {
      "name": "学校端/Pesticide"
    },
    {
      "name": "学校端/Public Config"
    },
    {
      "name": "学校端/Public Feedback"
    },
    {
      "name": "学校端/Risk"
    },
    {
      "name": "学校端/Sampling"
    },
    {
      "name": "学校端/School System"
    },
    {
      "name": "公共与系统"
    },
    {
      "name": "公共与系统/Device"
    },
    {
      "name": "公共与系统/Integration"
    },
    {
      "name": "公共与系统/TrustIVS Playback"
    },
    {
      "name": "公共与系统/TrustIVS.Camera"
    },
    {
      "name": "公共与系统/TrustIVS Stream"
    },
    {
      "name": "公共与系统/Health"
    },
    {
      "name": "公共与系统/DB"
    },
    {
      "name": "公共与系统/Routes"
    },
    {
      "name": "公共与系统/Home"
    },
    {
      "name": "公共与系统/Dewo-Liuyangcheng"
    },
    {
      "name": "公共与系统/SchoolReports"
    },
    {
      "name": "公共与系统/SamplingOperators"
    },
    {
      "name": "公共与系统/System"
    },
    {
      "name": "公共与系统/TrustivsProxy"
    },
    {
      "name": "公共与系统/DeviceUpload"
    },
    {
      "name": "公共与系统/TrustIVS AI"
    },
    {
      "name": "公共与系统/TrustIVS List"
    },
    {
      "name": "公共与系统/Public Feedback"
    },
    {
      "name": "审计日志"
    },
    {
      "name": "审计日志/Audit"
    },
    {
      "name": "认证与账号"
    },
    {
      "name": "认证与账号/Auth"
    },
    {
      "name": "AI盒子与设备开放接口"
    },
    {
      "name": "AI盒子与设备开放接口/Dewo-Liuyangcheng"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxAet6Control"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxAnalysisType"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxVehicleInfo"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxVehicleLib"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxFaceInfo"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxFaceLib"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxSystem"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxVideo"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxPlateRecord"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxChannel"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxAuth"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxVideoSheet"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxPush"
    },
    {
      "name": "AI盒子与设备开放接口/CheckRecord"
    },
    {
      "name": "AI盒子与设备开放接口/AiboxInfo"
    },
    {
      "name": "AI盒子与设备开放接口/TrustIVS AI"
    },
    {
      "name": "文件服务"
    },
    {
      "name": "文件服务/Files"
    },
    {
      "name": "文件服务/Static"
    },
    {
      "name": "物联网设备"
    },
    {
      "name": "物联网设备/IoT"
    },
    {
      "name": "第三方设备数据接入"
    },
    {
      "name": "第三方设备数据接入/Sammei"
    },
    {
      "name": "第三方设备数据接入/PushWS"
    },
    {
      "name": "第三方设备数据接入/Sakura"
    },
    {
      "name": "第三方设备数据接入/Dewo-Liuyangcheng"
    },
    {
      "name": "第三方设备数据接入/WOS Integration"
    },
    {
      "name": "监管端"
    },
    {
      "name": "监管端/AI"
    },
    {
      "name": "监管端/Regulator Alerts"
    },
    {
      "name": "监管端/Regulator Credentials"
    },
    {
      "name": "监管端/FoodWaste"
    },
    {
      "name": "监管端/Regulator Inspections"
    },
    {
      "name": "监管端/RegLedgers"
    },
    {
      "name": "监管端/RegOverview"
    },
    {
      "name": "监管端/Reports"
    },
    {
      "name": "监管端/Regulator System"
    },
    {
      "name": "监管端/Regulator Settings"
    },
    {
      "name": "监管端/School Messages"
    },
    {
      "name": "大屏端"
    },
    {
      "name": "大屏端/Screen Analytics"
    },
    {
      "name": "公共与系统/Root"
    }
  ],
  "paths": {
    "/bright-local/aibox-boxes": {
      "delete": {
        "summary": "Delete AIBox box",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:461；BrightLocalController.deleteAiboxBox\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:368；aiboxBoxDelete(id: number | string)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_deleteAiboxBox",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 461,
            "controller": "BrightLocalController",
            "handler": "deleteAiboxBox"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 368,
            "function": "aiboxBoxDelete(id: number | string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815056-run"
      },
      "get": {
        "summary": "List AIBox boxes (id/name)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:326；BrightLocalController.listAiboxBoxes\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_listAiboxBoxes",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 326,
            "controller": "BrightLocalController",
            "handler": "listAiboxBoxes"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815057-run"
      },
      "patch": {
        "summary": "Update AIBox box",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:427；BrightLocalController.updateAiboxBox\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:366；aiboxBoxUpdate(id: number | string, body: { schoolId?: number | string; canteenId?: number | string | null; aiboxName?: string; aiboxBaseurl?: string; aiboxAccount?: string; aiboxPassword?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_updateAiboxBox",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      }
                    ]
                  },
                  "canteenId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "aiboxName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "aiboxBaseurl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "aiboxAccount": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "aiboxPassword": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "aiboxName",
                  "aiboxBaseurl",
                  "aiboxAccount",
                  "aiboxPassword"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "aiboxName": "APIFOX_{{testBatch}}_测试数据",
                "aiboxBaseurl": "https://example.test/apifox-autotest.jpg",
                "aiboxAccount": "APIFOX_{{testBatch}}",
                "aiboxPassword": "Test@123456"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 427,
            "controller": "BrightLocalController",
            "handler": "updateAiboxBox"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 366,
            "function": "aiboxBoxUpdate(id: number | string, body: { schoolId?: number | string; canteenId?: number | string | null; aiboxName?: string; aiboxBaseurl?: string; aiboxAccount?: string; aiboxPassword?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815058-run"
      },
      "post": {
        "summary": "Create AIBox box",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:403；BrightLocalController.createAiboxBox\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:364；aiboxBoxCreate(body: { schoolId: number | string; canteenId?: number | string | null; aiboxName: string; aiboxBaseurl: string; aiboxAccount: string; aiboxPassword: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_createAiboxBox",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      }
                    ]
                  },
                  "canteenId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "aiboxName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "aiboxBaseurl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "aiboxAccount": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "aiboxPassword": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "aiboxName",
                  "aiboxBaseurl",
                  "aiboxAccount",
                  "aiboxPassword"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "aiboxName": "APIFOX_{{testBatch}}_测试数据",
                "aiboxBaseurl": "https://example.test/apifox-autotest.jpg",
                "aiboxAccount": "APIFOX_{{testBatch}}",
                "aiboxPassword": "Test@123456"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 403,
            "controller": "BrightLocalController",
            "handler": "createAiboxBox"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 364,
            "function": "aiboxBoxCreate(body: { schoolId: number | string; canteenId?: number | string | null; aiboxName: string; aiboxBaseurl: string; aiboxAccount: string; aiboxPassword: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815059-run"
      }
    },
    "/bright-local/channels": {
      "delete": {
        "summary": "BrightLocalController.remove",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:305；BrightLocalController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:370；aiboxLocalChannelDelete(id: number | string)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_remove",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 305,
            "controller": "BrightLocalController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 370,
            "function": "aiboxLocalChannelDelete(id: number | string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815060-run"
      },
      "get": {
        "summary": "BrightLocalController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:203；BrightLocalController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:348；aiboxLocalChannels(params: { schoolId?: string | number; page?: number; pageSize?: number; channelId?: string; channelName?: string } | string | number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_list",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "channelId",
            "in": "query",
            "description": "来源：Query(channelId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "channelName",
            "in": "query",
            "description": "来源：Query(channelName)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_测试数据"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 203,
            "controller": "BrightLocalController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 348,
            "function": "aiboxLocalChannels(params: { schoolId?: string | number; page?: number; pageSize?: number; channelId?: string; channelName?: string } | string | number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815061-run"
      },
      "patch": {
        "summary": "BrightLocalController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:274；BrightLocalController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:360；aiboxLocalChannelUpdate(id: number | string, patchBody: { canteenId?: number | string | null; unitName?: string; aiboxId?: number | string | null; aiboxName?: string; channelId?: string; channelName?: string; faislenationCode?: string | null; flv?: string | null; hls?: string | null; rtmp?: string | null; rtsp?: string | null; webrtc?: string | null; wsFlv?: string | null; enabled?: boolean })；body=patchBody\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_update",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "canteenId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "unitName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "aiboxId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "aiboxName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "channelId": {
                    "type": "string",
                    "example": "1"
                  },
                  "channelName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "faislenationCode": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "flv": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "hls": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "rtmp": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "rtsp": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "webrtc": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "wsFlv": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "x-apifox-orders": [
                  "canteenId",
                  "unitName",
                  "aiboxId",
                  "aiboxName",
                  "channelId",
                  "channelName",
                  "faislenationCode",
                  "flv",
                  "hls",
                  "rtmp",
                  "rtsp",
                  "webrtc",
                  "wsFlv",
                  "enabled"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "canteenId": 1,
                "unitName": "APIFOX_{{testBatch}}_测试数据",
                "aiboxId": 1,
                "aiboxName": "APIFOX_{{testBatch}}_测试数据",
                "channelId": "1",
                "channelName": "APIFOX_{{testBatch}}_测试数据",
                "faislenationCode": "APIFOX_{{testBatch}}",
                "flv": "APIFOX_{{testBatch}}",
                "hls": "APIFOX_{{testBatch}}",
                "rtmp": "APIFOX_{{testBatch}}",
                "rtsp": "APIFOX_{{testBatch}}",
                "webrtc": "APIFOX_{{testBatch}}",
                "wsFlv": "APIFOX_{{testBatch}}",
                "enabled": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 274,
            "controller": "BrightLocalController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 360,
            "function": "aiboxLocalChannelUpdate(id: number | string, patchBody: { canteenId?: number | string | null; unitName?: string; aiboxId?: number | string | null; aiboxName?: string; channelId?: string; channelName?: string; faislenationCode?: string | null; flv?: string | null; hls?: string | null; rtmp?: string | null; rtsp?: string | null; webrtc?: string | null; wsFlv?: string | null; enabled?: boolean })",
            "bodyExpression": "patchBody"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815062-run"
      },
      "post": {
        "summary": "BrightLocalController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:244；BrightLocalController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:358；aiboxLocalChannelCreate(body: { schoolId: number | string; canteenId?: number | string | null; unitName: string; aiboxId?: number | string | null; aiboxName?: string; channelId: string; channelName?: string; faislenationCode?: string; flv?: string; hls?: string; rtmp?: string; rtsp?: string; webrtc?: string; wsFlv?: string; enabled?: boolean })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_create",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "canteenId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "unitName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "aiboxId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "aiboxName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "channelId": {
                    "type": "string",
                    "example": "1"
                  },
                  "channelName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "faislenationCode": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "flv": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "hls": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "rtmp": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "rtsp": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "webrtc": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "wsFlv": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "schoolId",
                  "unitName",
                  "channelId"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "unitName",
                  "aiboxId",
                  "aiboxName",
                  "channelId",
                  "channelName",
                  "faislenationCode",
                  "flv",
                  "hls",
                  "rtmp",
                  "rtsp",
                  "webrtc",
                  "wsFlv",
                  "enabled"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "unitName": "APIFOX_{{testBatch}}_测试数据",
                "aiboxId": 1,
                "aiboxName": "APIFOX_{{testBatch}}_测试数据",
                "channelId": "1",
                "channelName": "APIFOX_{{testBatch}}_测试数据",
                "faislenationCode": "APIFOX_{{testBatch}}",
                "flv": "APIFOX_{{testBatch}}",
                "hls": "APIFOX_{{testBatch}}",
                "rtmp": "APIFOX_{{testBatch}}",
                "rtsp": "APIFOX_{{testBatch}}",
                "webrtc": "APIFOX_{{testBatch}}",
                "wsFlv": "APIFOX_{{testBatch}}",
                "enabled": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 244,
            "controller": "BrightLocalController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 358,
            "function": "aiboxLocalChannelCreate(body: { schoolId: number | string; canteenId?: number | string | null; unitName: string; aiboxId?: number | string | null; aiboxName?: string; channelId: string; channelName?: string; faislenationCode?: string; flv?: string; hls?: string; rtmp?: string; rtsp?: string; webrtc?: string; wsFlv?: string; enabled?: boolean })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815063-run"
      }
    },
    "/bright-local/ai/events": {
      "get": {
        "summary": "BrightLocalController.aiEvents",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:556；BrightLocalController.aiEvents\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:287；brightLocalAiEvents(params: { page?: number; pageSize?: number; type?: string; status?: 'OPEN'|'CLOSED'|'FALSE'|''; canteenId?: string|number; start?: string; end?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_aiEvents",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：'OPEN' | 'CLOSED' | 'FALSE'",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "OPEN",
                "CLOSED",
                "FALSE"
              ],
              "example": "OPEN"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 556,
            "controller": "BrightLocalController",
            "handler": "aiEvents"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 287,
            "function": "brightLocalAiEvents(params: { page?: number; pageSize?: number; type?: string; status?: 'OPEN'|'CLOSED'|'FALSE'|''; canteenId?: string|number; start?: string; end?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815064-run"
      }
    },
    "/bright-local/ai/events/detail": {
      "get": {
        "summary": "BrightLocalController.detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:673；BrightLocalController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:298；brightLocalAiEventDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_detail",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 673,
            "controller": "BrightLocalController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 298,
            "function": "brightLocalAiEventDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815065-run"
      }
    },
    "/bright-local/ai/events/export.csv": {
      "get": {
        "summary": "Export local AI events (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:595；BrightLocalController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_exportCsv",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：'OPEN' | 'CLOSED' | 'FALSE'",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "OPEN",
                "CLOSED",
                "FALSE"
              ],
              "example": "OPEN"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 595,
            "controller": "BrightLocalController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815066-run"
      }
    },
    "/bright-local/aibox-boxes/full": {
      "get": {
        "summary": "List AIBox boxes for management",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:376；BrightLocalController.listAiboxBoxesFull\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_listAiboxBoxesFull",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 376,
            "controller": "BrightLocalController",
            "handler": "listAiboxBoxesFull"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815067-run"
      }
    },
    "/bright-local/playback": {
      "get": {
        "summary": "BrightLocalController.playback",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:477；BrightLocalController.playback\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:282；brightLocalPlayback(schoolId: string, channelId: string, date: string, page: number, pageSize: number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_playback",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "channelId",
            "in": "query",
            "description": "来源：Query(channelId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "来源：Query(date)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 477,
            "controller": "BrightLocalController",
            "handler": "playback"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 282,
            "function": "brightLocalPlayback(schoolId: string, channelId: string, date: string, page: number, pageSize: number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815068-run"
      }
    },
    "/bright-local/strangers": {
      "get": {
        "summary": "List local strangers (paged)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:102；BrightLocalController.strangers\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:302；brightLocalStrangers(params: { canteenId?: string | number; start?: string; end?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_strangers",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 102,
            "controller": "BrightLocalController",
            "handler": "strangers"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 302,
            "function": "brightLocalStrangers(params: { canteenId?: string | number; start?: string; end?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815069-run"
      }
    },
    "/bright-local/strangers/export.csv": {
      "get": {
        "summary": "Export local strangers (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:160；BrightLocalController.strangersExport\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_strangersExport",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 160,
            "controller": "BrightLocalController",
            "handler": "strangersExport"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815070-run"
      }
    },
    "/bright-local/ai/events/handle": {
      "post": {
        "summary": "BrightLocalController.handleLocal",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:631；BrightLocalController.handleLocal\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:297；brightLocalAiEventHandleEx(body: { eventId: string; decision?: '已现场纠正' | '误报' | '其他'; note?: string; evidence?: string[]; handledBy?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_handleLocal",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "eventId": {
                    "type": "string",
                    "example": "1"
                  },
                  "decision": {
                    "type": "string",
                    "enum": [
                      "已现场纠正",
                      "误报",
                      "其他"
                    ],
                    "example": "已现场纠正"
                  },
                  "note": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "evidence": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "handledBy": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "eventId"
                ],
                "x-apifox-orders": [
                  "eventId",
                  "decision",
                  "note",
                  "evidence",
                  "handledBy"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "eventId": "1",
                "decision": "已现场纠正",
                "note": "APIFOX_{{testBatch}}_001",
                "evidence": [
                  "APIFOX_{{testBatch}}"
                ],
                "handledBy": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 631,
            "controller": "BrightLocalController",
            "handler": "handleLocal"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 297,
            "function": "brightLocalAiEventHandleEx(body: { eventId: string; decision?: '已现场纠正' | '误报' | '其他'; note?: string; evidence?: string[]; handledBy?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815071-run"
      }
    },
    "/bright-local/ai/events/handle/batch": {
      "post": {
        "summary": "BrightLocalController.handleBatch",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:658；BrightLocalController.handleBatch\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:299；brightLocalAiEventsBatchHandle(items: Array<{ eventId: string; decision?: '误报' | '已现场纠正' }>)；body=items\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_handleBatch",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "eventId": {
                          "type": "string",
                          "example": "1"
                        },
                        "decision": {
                          "type": "string",
                          "enum": [
                            "误报",
                            "已现场纠正"
                          ],
                          "example": "误报"
                        }
                      },
                      "required": [
                        "eventId"
                      ],
                      "x-apifox-orders": [
                        "eventId",
                        "decision"
                      ],
                      "x-apifox-ignore-properties": []
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "items": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "eventId": {
                              "type": "string",
                              "example": "1"
                            },
                            "decision": {
                              "type": "string",
                              "enum": [
                                "误报",
                                "已现场纠正"
                              ],
                              "example": "误报"
                            }
                          },
                          "required": [
                            "eventId"
                          ],
                          "x-apifox-orders": [
                            "eventId",
                            "decision"
                          ],
                          "x-apifox-ignore-properties": []
                        }
                      },
                      "handledBy": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      }
                    },
                    "required": [
                      "items"
                    ],
                    "x-apifox-orders": [
                      "items",
                      "handledBy"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                ]
              },
              "example": [
                {
                  "eventId": "1",
                  "decision": "误报"
                }
              ]
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 658,
            "controller": "BrightLocalController",
            "handler": "handleBatch"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 299,
            "function": "brightLocalAiEventsBatchHandle(items: Array<{ eventId: string; decision?: '误报' | '已现场纠正' }>)",
            "bodyExpression": "items"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815072-run"
      }
    },
    "/bright-local/refresh": {
      "post": {
        "summary": "BrightLocalController.refresh",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/aibox-local.controller.ts:530；BrightLocalController.refresh\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:332；brightLocalRefresh(schoolId: string, channelId: string, date: string)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightLocalController_refresh",
        "tags": [
          "明厨亮灶/Bright Kitchen - Local"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "channelId",
            "in": "query",
            "description": "来源：Query(channelId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "来源：Query(date)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/aibox-local.controller.ts",
            "line": 530,
            "controller": "BrightLocalController",
            "handler": "refresh"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 332,
            "function": "brightLocalRefresh(schoolId: string, channelId: string, date: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen - Local",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815073-run"
      }
    },
    "/bright/channels": {
      "get": {
        "summary": "BrightController.channels",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:61；BrightController.channels\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_channels",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 61,
            "controller": "BrightController",
            "handler": "channels"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815074-run"
      }
    },
    "/bright/reg/cameras": {
      "get": {
        "summary": "BrightController.regCameras",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:85；BrightController.regCameras\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_regCameras",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 85,
            "controller": "BrightController",
            "handler": "regCameras"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815075-run"
      }
    },
    "/bright/reg/download": {
      "get": {
        "summary": "BrightController.regDownload",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:319；BrightController.regDownload\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_regDownload",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 319,
            "controller": "BrightController",
            "handler": "regDownload"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815076-run"
      }
    },
    "/bright/reg/playback": {
      "get": {
        "summary": "BrightController.playback",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:177；BrightController.playback\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:342；brightPlayback(schoolId: string, cameraId: string, start: string, end: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_playback",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 177,
            "controller": "BrightController",
            "handler": "playback"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 342,
            "function": "brightPlayback(schoolId: string, cameraId: string, start: string, end: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815077-run"
      }
    },
    "/bright/reg/snapshots": {
      "get": {
        "summary": "BrightController.listSnaps",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:269；BrightController.listSnaps\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:348；brightSnapshots(params: { schoolId?: string; cameraId?: string; start?: string; end?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_listSnaps",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 269,
            "controller": "BrightController",
            "handler": "listSnaps"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 348,
            "function": "brightSnapshots(params: { schoolId?: string; cameraId?: string; start?: string; end?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815078-run"
      },
      "post": {
        "summary": "BrightController.createSnap",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:298；BrightController.createSnap\n\n### 前端调用证据\n- mobile-emergency: apps/mobile-emergency/src/api/index.ts:12；makeSnapshot(b: { schoolId: string; cameraId: string; at?: string; url?: string })；body=b\n- screen: apps/screen/src/api/index.ts:13；makeSnapshot(b: { schoolId: string; cameraId: string; at?: string; url?: string })；body=b\n- web-regulator: apps/web-regulator/src/services/api.ts:357；brightCreateSnapshot(body: { schoolId: string; cameraId: string; at?: string; url?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_createSnap",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "cameraId": {
                    "type": "string",
                    "example": "1"
                  },
                  "at": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "url": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "schoolId",
                  "cameraId"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "cameraId",
                  "at",
                  "url"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "cameraId": "1",
                "at": "2026-09-24 10:00:00",
                "url": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 298,
            "controller": "BrightController",
            "handler": "createSnap"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-emergency",
            "file": "apps/mobile-emergency/src/api/index.ts",
            "line": 12,
            "function": "makeSnapshot(b: { schoolId: string; cameraId: string; at?: string; url?: string })",
            "bodyExpression": "b"
          },
          {
            "app": "screen",
            "file": "apps/screen/src/api/index.ts",
            "line": 13,
            "function": "makeSnapshot(b: { schoolId: string; cameraId: string; at?: string; url?: string })",
            "bodyExpression": "b"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 357,
            "function": "brightCreateSnapshot(body: { schoolId: string; cameraId: string; at?: string; url?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815079-run"
      }
    },
    "/bright/school/cameras": {
      "get": {
        "summary": "BrightController.schoolCameras",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:118；BrightController.schoolCameras\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_schoolCameras",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 118,
            "controller": "BrightController",
            "handler": "schoolCameras"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815080-run"
      }
    },
    "/bright/school/download": {
      "get": {
        "summary": "BrightController.schoolDownload",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:331；BrightController.schoolDownload\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:335；brightDownload(schoolId: string, cameraId: string, start: string, end: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_schoolDownload",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 331,
            "controller": "BrightController",
            "handler": "schoolDownload"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 335,
            "function": "brightDownload(schoolId: string, cameraId: string, start: string, end: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815081-run"
      }
    },
    "/bright/school/playback": {
      "get": {
        "summary": "BrightController.schoolPlayback",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:198；BrightController.schoolPlayback\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:271；brightPlayback(schoolId: string, cameraId: string, start: string, end: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_schoolPlayback",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 198,
            "controller": "BrightController",
            "handler": "schoolPlayback"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 271,
            "function": "brightPlayback(schoolId: string, cameraId: string, start: string, end: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815082-run"
      }
    },
    "/bright/school/snapshots": {
      "get": {
        "summary": "BrightController.schoolSnaps",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:286；BrightController.schoolSnaps\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:341；brightSnapshots(params: { schoolId?: string; cameraId?: string; start?: string; end?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_schoolSnaps",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 286,
            "controller": "BrightController",
            "handler": "schoolSnaps"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 341,
            "function": "brightSnapshots(params: { schoolId?: string; cameraId?: string; start?: string; end?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815083-run"
      },
      "post": {
        "summary": "BrightController.createSchoolSnap",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:312；BrightController.createSchoolSnap\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:376；brightCreateSnapshot(body: { schoolId?: string; cameraId: string; at?: string; url?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_createSchoolSnap",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "cameraId": {
                    "type": "string",
                    "example": "1"
                  },
                  "at": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "url": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "cameraId"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "cameraId",
                  "at",
                  "url"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "cameraId": "1",
                "at": "2026-09-24 10:00:00",
                "url": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 312,
            "controller": "BrightController",
            "handler": "createSchoolSnap"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 376,
            "function": "brightCreateSnapshot(body: { schoolId?: string; cameraId: string; at?: string; url?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815084-run"
      }
    },
    "/bright/school/trustivs-camera-options": {
      "get": {
        "summary": "BrightController.schoolTrustivsCameraOptions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:248；BrightController.schoolTrustivsCameraOptions\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_schoolTrustivsCameraOptions",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 248,
            "controller": "BrightController",
            "handler": "schoolTrustivsCameraOptions"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815085-run"
      }
    },
    "/bright/school/trustivs-cameras": {
      "get": {
        "summary": "BrightController.schoolTrustivsCameras",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:212；BrightController.schoolTrustivsCameras\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_schoolTrustivsCameras",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 212,
            "controller": "BrightController",
            "handler": "schoolTrustivsCameras"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815086-run"
      }
    },
    "/bright/start/{schoolId}/{cameraId}": {
      "get": {
        "summary": "BrightController.start",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/bright.controller.ts:71；BrightController.start\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:340；brightStart(schoolId: string, cameraId: string)\n- web-school: apps/web-school/src/services/api.ts:269；brightStart(schoolId: string, cameraId: string)\n- mobile-device: apps/mobile-device/src/services/api.ts:137；brightStart(schoolId: string|number, cameraId: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "BrightController_start",
        "tags": [
          "明厨亮灶/Bright Kitchen"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "cameraId",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Bright Kitchen"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/bright.controller.ts",
            "line": 71,
            "controller": "BrightController",
            "handler": "start"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 340,
            "function": "brightStart(schoolId: string, cameraId: string)",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 269,
            "function": "brightStart(schoolId: string, cameraId: string)",
            "bodyExpression": ""
          },
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/services/api.ts",
            "line": 137,
            "function": "brightStart(schoolId: string|number, cameraId: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "明厨亮灶/Bright Kitchen",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815087-run"
      }
    },
    "/school/companion-meals/{id}": {
      "delete": {
        "summary": "CompanionMealController.remove",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/companion-meal.controller.ts:50；CompanionMealController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1511；companionMealDelete(id: string | number)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CompanionMealController_remove",
        "tags": [
          "学校端/Companion Meals"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Companion Meals"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/companion-meal.controller.ts",
            "line": 50,
            "controller": "CompanionMealController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1511,
            "function": "companionMealDelete(id: string | number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Companion Meals",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815088-run"
      },
      "get": {
        "summary": "CompanionMealController.detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/companion-meal.controller.ts:37；CompanionMealController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1500；companionMealDetail(id: string | number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CompanionMealController_detail",
        "tags": [
          "学校端/Companion Meals"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Companion Meals"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/companion-meal.controller.ts",
            "line": 37,
            "controller": "CompanionMealController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1500,
            "function": "companionMealDetail(id: string | number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Companion Meals",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815089-run"
      },
      "patch": {
        "summary": "CompanionMealController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/companion-meal.controller.ts:43；CompanionMealController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1502；companionMealUpdate(id: string | number, patch: any)；body=JSON.stringify(patch)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CompanionMealController_update",
        "tags": [
          "学校端/Companion Meals"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "x-apifox-orders": [],
                "properties": {},
                "x-apifox-ignore-properties": []
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Companion Meals"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/companion-meal.controller.ts",
            "line": 43,
            "controller": "CompanionMealController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1502,
            "function": "companionMealUpdate(id: string | number, patch: any)",
            "bodyExpression": "JSON.stringify(patch)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Companion Meals",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815090-run"
      }
    },
    "/school/companion-meals": {
      "get": {
        "summary": "CompanionMealController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/companion-meal.controller.ts:11；CompanionMealController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1468；companionMealsList(params: { schoolId?: string | number; canteenIds?: Array<string|number>; person?: string; ratingFilter?: 'all'|'good'|'normal'|'bad'; start?: string; end?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CompanionMealController_list",
        "tags": [
          "学校端/Companion Meals"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "person",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "ratingFilter",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Companion Meals"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/companion-meal.controller.ts",
            "line": 11,
            "controller": "CompanionMealController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1468,
            "function": "companionMealsList(params: { schoolId?: string | number; canteenIds?: Array<string|number>; person?: string; ratingFilter?: 'all'|'good'|'normal'|'bad'; start?: string; end?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Companion Meals",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815091-run"
      },
      "post": {
        "summary": "CompanionMealController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/companion-meal.controller.ts:27；CompanionMealController.create\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/services/api.ts:201；companionCreate(body: any)；body=body\n- web-school: apps/web-school/src/services/api.ts:1492；companionMealCreate(body: { schoolId?: string | number; canteenId?: string | number; dineDate: string; meal: '早餐'|'午餐'|'晚餐'; personName: string; dinersCount: number; dishAspects?: string[]; rating?: number; images?: string[]; opinion?: string; signatureData: string; status?: '草稿'|'已提交'; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CompanionMealController_create",
        "tags": [
          "学校端/Companion Meals"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "x-apifox-orders": [],
                "properties": {},
                "x-apifox-ignore-properties": []
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Companion Meals"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/companion-meal.controller.ts",
            "line": 27,
            "controller": "CompanionMealController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/services/api.ts",
            "line": 201,
            "function": "companionCreate(body: any)",
            "bodyExpression": "body"
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1492,
            "function": "companionMealCreate(body: { schoolId?: string | number; canteenId?: string | number; dineDate: string; meal: '早餐'|'午餐'|'晚餐'; personName: string; dinersCount: number; dishAspects?: string[]; rating?: number; images?: string[]; opinion?: string; signatureData: string; status?: '草稿'|'已提交'; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Companion Meals",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815092-run"
      }
    },
    "/school/device-iot": {
      "delete": {
        "summary": "删除设备接入配置",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-iot-configs.controller.ts:78；DeviceIotConfigsController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:741；deviceIotDelete(id: number)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceIotConfigsController_remove",
        "tags": [
          "学校端/DeviceIotConfig"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-iot-configs.controller.ts",
            "line": 78,
            "controller": "DeviceIotConfigsController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 741,
            "function": "deviceIotDelete(id: number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/DeviceIotConfig",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815093-run"
      },
      "get": {
        "summary": "设备接入配置列表",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-iot-configs.controller.ts:19；DeviceIotConfigsController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:738；deviceIotConfigs(params: { schoolId?: number; canteenId?: number; deviceKind?: string; vendor?: string; enabled?: 'true'|'false'|'all'; q?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceIotConfigsController_list",
        "tags": [
          "学校端/DeviceIotConfig"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "deviceKind",
            "in": "query",
            "description": "来源：Query(deviceKind)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "vendor",
            "in": "query",
            "description": "来源：Query(vendor)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "enabled",
            "in": "query",
            "description": "来源：Query(enabled)；源码类型：'true' | 'false' | 'all'",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false",
                "all"
              ],
              "example": "true"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "来源：Query(q)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-iot-configs.controller.ts",
            "line": 19,
            "controller": "DeviceIotConfigsController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 738,
            "function": "deviceIotConfigs(params: { schoolId?: number; canteenId?: number; deviceKind?: string; vendor?: string; enabled?: 'true'|'false'|'all'; q?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/DeviceIotConfig",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815094-run"
      },
      "patch": {
        "summary": "更新设备接入配置",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-iot-configs.controller.ts:54；DeviceIotConfigsController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:740；deviceIotUpdate(id: number, body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceIotConfigsController_update",
        "tags": [
          "学校端/DeviceIotConfig"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-iot-configs.controller.ts",
            "line": 54,
            "controller": "DeviceIotConfigsController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 740,
            "function": "deviceIotUpdate(id: number, body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/DeviceIotConfig",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815095-run"
      },
      "post": {
        "summary": "新增设备接入配置",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-iot-configs.controller.ts:43；DeviceIotConfigsController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:739；deviceIotCreate(body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceIotConfigsController_create",
        "tags": [
          "学校端/DeviceIotConfig"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-iot-configs.controller.ts",
            "line": 43,
            "controller": "DeviceIotConfigsController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 739,
            "function": "deviceIotCreate(body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/DeviceIotConfig",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815096-run"
      }
    },
    "/school/foods/{id}": {
      "delete": {
        "summary": "删除菜品（并同步设备端删除）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:189；SchoolFoodsController.remove\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_remove",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "code",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SchoolFoods"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 189,
            "controller": "SchoolFoodsController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815097-run"
      },
      "patch": {
        "summary": "更新菜品（并同步设备端）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:155；SchoolFoodsController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:687；schoolFoodsUpdate(id: number, body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_update",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SchoolFoods"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 155,
            "controller": "SchoolFoodsController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 687,
            "function": "schoolFoodsUpdate(id: number, body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815098-run"
      }
    },
    "/school/foods": {
      "get": {
        "summary": "菜品库列表",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:17；SchoolFoodsController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:685；schoolFoodsList(params: { q?: string; status?: 'enabled'|'disabled'|'all'; canteenId?: number; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_list",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SchoolFoods"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 17,
            "controller": "SchoolFoodsController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 685,
            "function": "schoolFoodsList(params: { q?: string; status?: 'enabled'|'disabled'|'all'; canteenId?: number; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815099-run"
      },
      "post": {
        "summary": "新增菜品（并同步设备端）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:93；SchoolFoodsController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:686；schoolFoodsCreate(body: { code?: string; name: string; canteenId?: number; remark?: string; imageUrl?: string; enabled?: boolean; by?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_create",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "菜品编号（可选，不传则生成）"
                  },
                  "name": {
                    "type": "string"
                  },
                  "imageUrl": {
                    "type": "string"
                  },
                  "remark": {
                    "type": "string"
                  },
                  "enabled": {
                    "type": "boolean",
                    "default": true
                  },
                  "by": {
                    "type": "string"
                  }
                },
                "x-apifox-orders": [
                  "code",
                  "name",
                  "imageUrl",
                  "remark",
                  "enabled",
                  "by"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "code": "APIFOX_{{testBatch}}",
                "name": "APIFOX_{{testBatch}}_测试数据",
                "imageUrl": "https://example.test/apifox-autotest.jpg",
                "remark": "APIFOX_{{testBatch}} 自动化测试数据",
                "enabled": true,
                "by": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SchoolFoods"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 93,
            "controller": "SchoolFoodsController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 686,
            "function": "schoolFoodsCreate(body: { code?: string; name: string; canteenId?: number; remark?: string; imageUrl?: string; enabled?: boolean; by?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815100-run"
      }
    },
    "/school/foods/exists": {
      "get": {
        "summary": "检查菜品名称是否已存在",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:83；SchoolFoodsController.exists\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:697；schoolFoodsExists(name: string, canteenId: number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_exists",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "来源：Query(name)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_测试数据"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 83,
            "controller": "SchoolFoodsController",
            "handler": "exists"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 697,
            "function": "schoolFoodsExists(name: string, canteenId: number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815101-run"
      }
    },
    "/school/foods/export.csv": {
      "get": {
        "summary": "导出菜品 CSV",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:235；SchoolFoodsController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_exportCsv",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "返回 { csv }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SchoolFoods"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 235,
            "controller": "SchoolFoodsController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815102-run"
      }
    },
    "/school/foods/import": {
      "post": {
        "summary": "批量导入（CSV/JSON）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-foods.controller.ts:198；SchoolFoodsController.import\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:689；schoolFoodsImport(body: { items?: any[]; csv?: string; overwrite?: boolean; by?: string })；body=body\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolFoodsController_import",
        "tags": [
          "学校端/SchoolFoods"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "x-apifox-orders": [],
                      "properties": {},
                      "x-apifox-ignore-properties": []
                    }
                  },
                  "csv": {
                    "type": "string"
                  },
                  "overwrite": {
                    "type": "boolean"
                  },
                  "by": {
                    "type": "string"
                  }
                },
                "x-apifox-orders": [
                  "items",
                  "csv",
                  "overwrite",
                  "by"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "items": [
                  {}
                ],
                "csv": "APIFOX_{{testBatch}}",
                "overwrite": true,
                "by": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SchoolFoods"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-foods.controller.ts",
            "line": 198,
            "controller": "SchoolFoodsController",
            "handler": "import"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 689,
            "function": "schoolFoodsImport(body: { items?: any[]; csv?: string; overwrite?: boolean; by?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SchoolFoods",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815103-run"
      }
    },
    "/school/meal-plans/{id}": {
      "delete": {
        "summary": "删除配餐",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:158；MealPlansController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:674；mealPlansDelete(id: number)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_remove",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 158,
            "controller": "MealPlansController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 674,
            "function": "mealPlansDelete(id: number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815104-run"
      },
      "patch": {
        "summary": "更新配餐",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:117；MealPlansController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:673；mealPlansUpdate(id: number, body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_update",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 117,
            "controller": "MealPlansController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 673,
            "function": "mealPlansUpdate(id: number, body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815105-run"
      }
    },
    "/school/meal-plans": {
      "get": {
        "summary": "列表查询配餐",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:55；MealPlansController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:669；mealPlansList(params: { schoolId?: number; canteenId?: number; start?: string; end?: string; meal?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_list",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "meal",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 55,
            "controller": "MealPlansController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 669,
            "function": "mealPlansList(params: { schoolId?: number; canteenId?: number; start?: string; end?: string; meal?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815106-run"
      },
      "post": {
        "summary": "新增/覆盖配餐",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:81；MealPlansController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:672；mealPlansCreate(body: { schoolId: number; canteenId?: number; date: string; meal: string; foods: string[]; remark?: string; by?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_create",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "schoolId",
                  "date",
                  "meal",
                  "foods"
                ],
                "properties": {
                  "schoolId": {
                    "type": "integer"
                  },
                  "canteenId": {
                    "type": "integer"
                  },
                  "date": {
                    "type": "string",
                    "example": "2025-01-01"
                  },
                  "meal": {
                    "type": "string",
                    "example": "早餐"
                  },
                  "foods": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "菜品名称数组"
                  },
                  "remark": {
                    "type": "string"
                  },
                  "by": {
                    "type": "string",
                    "description": "操作员"
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "date",
                  "meal",
                  "foods",
                  "remark",
                  "by"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "date": "2025-01-01",
                "meal": "早餐",
                "foods": [
                  "APIFOX_{{testBatch}}"
                ],
                "remark": "APIFOX_{{testBatch}} 自动化测试数据",
                "by": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 81,
            "controller": "MealPlansController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 672,
            "function": "mealPlansCreate(body: { schoolId: number; canteenId?: number; date: string; meal: string; foods: string[]; remark?: string; by?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815107-run"
      }
    },
    "/school/meal-plans/export.csv": {
      "get": {
        "summary": "导出CSV",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:269；MealPlansController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_exportCsv",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "返回 CSV 文本",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 269,
            "controller": "MealPlansController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815108-run"
      }
    },
    "/school/meal-plans/copy-week": {
      "post": {
        "summary": "复制上一周配餐到本周",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:282；MealPlansController.copyWeek\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:683；mealPlansCopyWeek(body: { schoolId: number; canteenId?: number; from: string; to: string; overwrite?: boolean })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_copyWeek",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "schoolId",
                  "from",
                  "to"
                ],
                "properties": {
                  "schoolId": {
                    "type": "integer"
                  },
                  "canteenId": {
                    "type": "integer"
                  },
                  "from": {
                    "type": "string",
                    "example": "2025-01-06"
                  },
                  "to": {
                    "type": "string",
                    "example": "2025-01-13"
                  },
                  "overwrite": {
                    "type": "boolean"
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "from",
                  "to",
                  "overwrite"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "from": "2025-01-06",
                "to": "2025-01-13",
                "overwrite": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 282,
            "controller": "MealPlansController",
            "handler": "copyWeek"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 683,
            "function": "mealPlansCopyWeek(body: { schoolId: number; canteenId?: number; from: string; to: string; overwrite?: boolean })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815109-run"
      }
    },
    "/school/meal-plans/import": {
      "post": {
        "summary": "批量导入（CSV/JSON）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/meal-plans.controller.ts:192；MealPlansController.import\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:682；mealPlansImport(body: { items: any[]; overwrite?: boolean })；body=body\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MealPlansController_import",
        "tags": [
          "学校端/MealPlans"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "x-apifox-orders": [],
                      "properties": {},
                      "x-apifox-ignore-properties": []
                    }
                  },
                  "overwrite": {
                    "type": "boolean"
                  }
                },
                "x-apifox-orders": [
                  "items",
                  "overwrite"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "items": [
                  {}
                ],
                "overwrite": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "MealPlans"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/meal-plans.controller.ts",
            "line": 192,
            "controller": "MealPlansController",
            "handler": "import"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 682,
            "function": "mealPlansImport(body: { items: any[]; overwrite?: boolean })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MealPlans",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815110-run"
      }
    },
    "/school/morning-checks/{id}": {
      "delete": {
        "summary": "MorningCheckController.remove",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:287；MorningCheckController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:580；morningDelete(id: number)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_remove",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 287,
            "controller": "MorningCheckController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 580,
            "function": "morningDelete(id: number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815111-run"
      }
    },
    "/school/morning-checks": {
      "post": {
        "summary": "Create morning check record",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:231；MorningCheckController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:579；morningCreate(body: { staff: string; temp: number; schoolId?: number; at?: string; // 指定日期/时间（可选） hygiene?: '正常'|'异常'; photoUrl?: string; // Optional third-party-compatible fields State?: number; CheckResult?: number; HeathResult?: number; IsUrl?: boolean | number; Picture_Img_Base64?: string; Picture_Img_Url?: string; Face_Img_Base64?: string; Face_Img_Url?: string; Picture_Back_Img_Base64?: string; Picture_Back_Img_Url?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_create",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 231,
            "controller": "MorningCheckController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 579,
            "function": "morningCreate(body: { staff: string; temp: number; schoolId?: number; at?: string; // 指定日期/时间（可选） hygiene?: '正常'|'异常'; photoUrl?: string; // Optional third-party-compatible fields State?: number; CheckResult?: number; HeathResult?: number; IsUrl?: boolean | number; Picture_Img_Base64?: string; Picture_Img_Url?: string; Face_Img_Base64?: string; Face_Img_Url?: string; Picture_Back_Img_Base64?: string; Picture_Back_Img_Url?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815112-run"
      },
      "get": {
        "summary": "List morning checks (paged, filterable)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-mc.adapter.controller.ts:11；MorningCheckApiAdapterController.list\n- services/gateway-service/src/modules/morning-check.controller.ts:47；MorningCheckController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:533；morningList(params: { schoolId?: number; canteenId?: number|string; staff?: string; result?: '正常' | '异常'; start?: string; end?: string; page?: number; pageSize?: number })\n- mobile-emergency: apps/mobile-emergency/src/api/index.ts:30；morningChecks(params: { schoolId?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_list",
        "tags": [
          "学校端/MorningCheckApiAdapter"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "staff",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "result",
            "in": "query",
            "description": "来源：Query(result)；源码类型：MCResult",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：MCResult",
              "x-source-type": "MCResult",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedMorningChecks"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-mc.adapter.controller.ts",
            "line": 11,
            "controller": "MorningCheckApiAdapterController",
            "handler": "list"
          },
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 47,
            "controller": "MorningCheckController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 533,
            "function": "morningList(params: { schoolId?: number; canteenId?: number|string; staff?: string; result?: '正常' | '异常'; start?: string; end?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          },
          {
            "app": "mobile-emergency",
            "file": "apps/mobile-emergency/src/api/index.ts",
            "line": 30,
            "function": "morningChecks(params: { schoolId?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/MorningCheckApiAdapter",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815285-run"
      }
    },
    "/school/morning-checks/export.csv": {
      "get": {
        "summary": "Export morning checks (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:301；MorningCheckController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_exportCsv",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "staff",
            "in": "query",
            "description": "来源：Query(staff)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "result",
            "in": "query",
            "description": "来源：Query(result)；源码类型：MCResult",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：MCResult",
              "x-source-type": "MCResult",
              "x-apifox-orders": []
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 301,
            "controller": "MorningCheckController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815113-run"
      }
    },
    "/school/morning-checks/history": {
      "get": {
        "summary": "List all morning checks for a staff on a date",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:216；MorningCheckController.history\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:543；morningHistory(params: { schoolId: number | string; staff: number | string; date: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_history",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "staff",
            "in": "query",
            "description": "来源：Query(staff)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "来源：Query(date)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 216,
            "controller": "MorningCheckController",
            "handler": "history"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 543,
            "function": "morningHistory(params: { schoolId: number | string; staff: number | string; date: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815114-run"
      }
    },
    "/school/morning-checks/overview": {
      "get": {
        "summary": "Daily overview by canteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:140；MorningCheckController.overview\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:553；morningOverview(params: { schoolId?: number|string; date?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_overview",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 140,
            "controller": "MorningCheckController",
            "handler": "overview"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 553,
            "function": "morningOverview(params: { schoolId?: number|string; date?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815115-run"
      }
    },
    "/school/morning-checks/{id}/handle": {
      "patch": {
        "summary": "MorningCheckController.setHandle",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:277；MorningCheckController.setHandle\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:582；morningSetHandle(id: number, body: { decision: 'allow'|'suspend'; note: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_setHandle",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "来源：Param(id)；源码类型：number",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "decision": {
                    "type": "string",
                    "enum": [
                      "allow",
                      "suspend"
                    ],
                    "example": "allow"
                  },
                  "note": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "by": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "decision",
                  "note"
                ],
                "x-apifox-orders": [
                  "decision",
                  "note",
                  "by"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "decision": "allow",
                "note": "APIFOX_{{testBatch}}_001",
                "by": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 277,
            "controller": "MorningCheckController",
            "handler": "setHandle"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 582,
            "function": "morningSetHandle(id: number, body: { decision: 'allow'|'suspend'; note: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815116-run"
      }
    },
    "/school/morning-checks/{id}/measure": {
      "patch": {
        "summary": "MorningCheckController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:267；MorningCheckController.setMeasure\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:581；morningSetMeasure(id: number, measure: string)；body={ measure }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_setMeasure",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 267,
            "controller": "MorningCheckController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 581,
            "function": "morningSetMeasure(id: number, measure: string)",
            "bodyExpression": "{ measure }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815117-run"
      }
    },
    "/school/morning-checks/device/callback": {
      "post": {
        "summary": "MorningCheckController.deviceCallback",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/morning-check.controller.ts:261；MorningCheckController.deviceCallback\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_deviceCallback",
        "tags": [
          "学校端/Morning Checks"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "staff": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "temp": {
                    "type": "number",
                    "example": 10
                  }
                },
                "required": [
                  "staff",
                  "temp"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "staff",
                  "temp"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "staff": "APIFOX_{{testBatch}}",
                "temp": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 261,
            "controller": "MorningCheckController",
            "handler": "deviceCallback"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Morning Checks",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815118-run"
      }
    },
    "/school/sampling/operators": {
      "delete": {
        "summary": "批量移除留样人员",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:377；SamplingOperatorsController.remove\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_remove",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "来源：Query(ids)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "ids"
                ],
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                },
                "x-apifox-orders": [
                  "ids"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "ids": [
                  10
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SamplingOperators"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 377,
            "controller": "SamplingOperatorsController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815119-run"
      },
      "get": {
        "summary": "留样人员列表",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:196；SamplingOperatorsController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:729；samplingOpsList(params: { schoolId?: number; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_list",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SamplingOperators"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 196,
            "controller": "SamplingOperatorsController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 729,
            "function": "samplingOpsList(params: { schoolId?: number; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815120-run"
      },
      "post": {
        "summary": "添加留样人员",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:276；SamplingOperatorsController.add\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:730；samplingOpsAdd(body: { schoolId?: number; canteenId?: number; serialNumber?: string; password?: string; faceOssUrl?: string; faceFilePath?: string; personnelIds: number[] })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_add",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "personnelIds"
                ],
                "properties": {
                  "schoolId": {
                    "type": "integer"
                  },
                  "canteenId": {
                    "type": "integer"
                  },
                  "personnelIds": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "personnelIds"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "personnelIds": [
                  10
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SamplingOperators"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 276,
            "controller": "SamplingOperatorsController",
            "handler": "add"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 730,
            "function": "samplingOpsAdd(body: { schoolId?: number; canteenId?: number; serialNumber?: string; password?: string; faceOssUrl?: string; faceFilePath?: string; personnelIds: number[] })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815121-run"
      }
    },
    "/school/sampling/operators/detail": {
      "get": {
        "summary": "获取留样人员详情（含密码，仅用于编辑回显）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:465；SamplingOperatorsController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:734；samplingOpsDetail(id: string|number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_detail",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 465,
            "controller": "SamplingOperatorsController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 734,
            "function": "samplingOpsDetail(id: string|number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815122-run"
      }
    },
    "/school/sampling/operators/remove": {
      "post": {
        "summary": "批量移除留样人员（POST 兼容，删除 sammei_users）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:416；SamplingOperatorsController.removeByPost\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:731；samplingOpsRemove(body: { ids: number[] })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_removeByPost",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number",
                          "example": 10
                        },
                        {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        }
                      ]
                    }
                  },
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "serialNumber": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  }
                },
                "x-apifox-orders": [
                  "ids",
                  "schoolId",
                  "serialNumber"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "ids": [
                  10
                ],
                "schoolId": 1,
                "serialNumber": "APIFOX_{{testBatch}}_001"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 416,
            "controller": "SamplingOperatorsController",
            "handler": "removeByPost"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 731,
            "function": "samplingOpsRemove(body: { ids: number[] })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815123-run"
      }
    },
    "/school/sampling/operators/sync": {
      "post": {
        "summary": "向设备同步留样人员（OperateUserList）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:443；SamplingOperatorsController.sync\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:732；samplingOpsSync(body: { schoolId?: number })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_sync",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  }
                },
                "x-apifox-orders": [
                  "schoolId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SamplingOperators"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 443,
            "controller": "SamplingOperatorsController",
            "handler": "sync"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 732,
            "function": "samplingOpsSync(body: { schoolId?: number })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815124-run"
      }
    },
    "/school/sampling/operators/upsert": {
      "post": {
        "summary": "新增/更新单个留样人员（含人脸与时间等扩展字段）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.controller.ts:308；SamplingOperatorsController.upsert\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:733；samplingOpsUpsert(body: { id: string|number; userName?: string; faceOssUrl?: string; faceFilePath?: string; updTime?: string; pushTime?: string; userNo?: string; jobTitle?: string; enabled?: boolean; canteenId?: number; serialNumber?: string; password?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsController_upsert",
        "tags": [
          "学校端/SamplingOperators"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.controller.ts",
            "line": 308,
            "controller": "SamplingOperatorsController",
            "handler": "upsert"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 733,
            "function": "samplingOpsUpsert(body: { id: string|number; userName?: string; faceOssUrl?: string; faceFilePath?: string; updTime?: string; pushTime?: string; userNo?: string; jobTitle?: string; enabled?: boolean; canteenId?: number; serialNumber?: string; password?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815125-run"
      }
    },
    "/school/waste/categories/{id}": {
      "delete": {
        "summary": "WasteController.delete",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:40；WasteController.delete\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:935；wasteCategoryDelete(id: string)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_delete",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 40,
            "controller": "WasteController",
            "handler": "delete"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 935,
            "function": "wasteCategoryDelete(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815126-run"
      }
    },
    "/school/waste/records/{id}": {
      "delete": {
        "summary": "WasteController.deleteOne",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:176；WasteController.deleteOne\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:965；wasteDelete(id: number)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_deleteOne",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 176,
            "controller": "WasteController",
            "handler": "deleteOne"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 965,
            "function": "wasteDelete(id: number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815127-run"
      },
      "get": {
        "summary": "WasteController.getOne",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:171；WasteController.getOne\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_getOne",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 171,
            "controller": "WasteController",
            "handler": "getOne"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815128-run"
      }
    },
    "/school/waste/categories": {
      "get": {
        "summary": "WasteController.categories",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:19；WasteController.categories\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:932；wasteCategories()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_categories",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "enabled",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 19,
            "controller": "WasteController",
            "handler": "categories"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 932,
            "function": "wasteCategories()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815129-run"
      },
      "post": {
        "summary": "WasteController.createCategory",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:25；WasteController.createCategory\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:933；wasteCategoryCreate(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_createCategory",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 25,
            "controller": "WasteController",
            "handler": "createCategory"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 933,
            "function": "wasteCategoryCreate(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815130-run"
      }
    },
    "/school/waste/records": {
      "get": {
        "summary": "List waste records (paged)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:49；WasteController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:947；wasteList(params: { category?: string; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; canteenId?: number; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_list",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "来源：Query(category)；源码类型：WasteCategory",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：WasteCategory",
              "x-source-type": "WasteCategory",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedWasteRecords"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 49,
            "controller": "WasteController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 947,
            "function": "wasteList(params: { category?: string; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; canteenId?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815131-run"
      },
      "post": {
        "summary": "Create waste record",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:152；WasteController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:964；wasteCreate(body: { date?: string; category: string; amount: number; buyer: string; person: string; schoolId?: number; canteenId?: number; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_create",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 152,
            "controller": "WasteController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 964,
            "function": "wasteCreate(body: { date?: string; category: string; amount: number; buyer: string; person: string; schoolId?: number; canteenId?: number; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815132-run"
      }
    },
    "/school/waste/records/export.csv": {
      "get": {
        "summary": "Export waste records (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:74；WasteController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_exportCsv",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "来源：Query(category)；源码类型：WasteCategory",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：WasteCategory",
              "x-source-type": "WasteCategory",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 74,
            "controller": "WasteController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815133-run"
      }
    },
    "/school/waste/categories/{id}/enable": {
      "patch": {
        "summary": "WasteController.setEnabled",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/waste.controller.ts:31；WasteController.setEnabled\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:934；wasteCategorySetEnabled(id: string, enabled: boolean)；body={ enabled }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WasteController_setEnabled",
        "tags": [
          "学校端/Waste"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "enabled"
                ],
                "x-apifox-orders": [
                  "enabled"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "enabled": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Waste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/waste.controller.ts",
            "line": 31,
            "controller": "WasteController",
            "handler": "setEnabled"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 934,
            "function": "wasteCategorySetEnabled(id: string, enabled: boolean)",
            "bodyExpression": "{ enabled }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Waste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815134-run"
      }
    },
    "/school/ai/events": {
      "get": {
        "summary": "AIController.schoolEvents",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:205；AIController.schoolEvents\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:393；aiEventsList(params: { schoolId?: string; type?: string; status?: 'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'; canteenId?: string; start?: string; end?: string; page?: number; pageSize?: number; })\n- mobile-device: apps/mobile-device/src/api/modules/ai.ts:19；fetchAiEvents(params: { schoolId?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolEvents",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 205,
            "controller": "AIController",
            "handler": "schoolEvents"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 393,
            "function": "aiEventsList(params: { schoolId?: string; type?: string; status?: 'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'; canteenId?: string; start?: string; end?: string; page?: number; pageSize?: number; })",
            "bodyExpression": ""
          },
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api/modules/ai.ts",
            "line": 19,
            "function": "fetchAiEvents(params: { schoolId?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815135-run"
      }
    },
    "/school/ai/events/detail": {
      "get": {
        "summary": "AIController.schoolEventDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:480；AIController.schoolEventDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:489；aiEventDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolEventDetail",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 480,
            "controller": "AIController",
            "handler": "schoolEventDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 489,
            "function": "aiEventDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815136-run"
      }
    },
    "/school/ai/events/export.csv": {
      "get": {
        "summary": "Export AI events list (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:310；AIController.schoolEventsExport\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:411；aiEventsExportCsv(params: { schoolId?: string; type?: string; status?: 'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'; cameraId?: string; canteenId?: string; start?: string; end?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolEventsExport",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 310,
            "controller": "AIController",
            "handler": "schoolEventsExport"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 411,
            "function": "aiEventsExportCsv(params: { schoolId?: string; type?: string; status?: 'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'; cameraId?: string; canteenId?: string; start?: string; end?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815137-run"
      }
    },
    "/school/ai/events/summary": {
      "get": {
        "summary": "Get AI events summary for school",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:249；AIController.schoolEventsSummary\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:430；aiEventsSummary(params: { schoolId?: string; dim?: 'day' | 'week' | 'month'; start?: string; end?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolEventsSummary",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "dim",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 249,
            "controller": "AIController",
            "handler": "schoolEventsSummary"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 430,
            "function": "aiEventsSummary(params: { schoolId?: string; dim?: 'day' | 'week' | 'month'; start?: string; end?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815138-run"
      }
    },
    "/school/ai/events/summary/export.csv": {
      "get": {
        "summary": "Export AI events summary (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:386；AIController.schoolEventsSummaryExport\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:463；aiEventsSummaryExportCsv(params: { schoolId?: string; dim?: 'day' | 'week' | 'month'; start?: string; end?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolEventsSummaryExport",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "dim",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 386,
            "controller": "AIController",
            "handler": "schoolEventsSummaryExport"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 463,
            "function": "aiEventsSummaryExportCsv(params: { schoolId?: string; dim?: 'day' | 'week' | 'month'; start?: string; end?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815139-run"
      }
    },
    "/school/ai/home/summary/local": {
      "get": {
        "summary": "AIController.homeAiSummaryLocal",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:123；AIController.homeAiSummaryLocal\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:448；aiHomeTypesLocal(params: { schoolId?: string; start?: string; end?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_homeAiSummaryLocal",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string | number",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "1"
                },
                {
                  "type": "number",
                  "example": 1
                }
              ]
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 123,
            "controller": "AIController",
            "handler": "homeAiSummaryLocal"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 448,
            "function": "aiHomeTypesLocal(params: { schoolId?: string; start?: string; end?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815140-run"
      }
    },
    "/school/ai/home/summary/network": {
      "get": {
        "summary": "AIController.homeAiSummaryNetwork",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:98；AIController.homeAiSummaryNetwork\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:439；aiHomeTypesNetwork(params: { schoolId?: string; start?: string; end?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_homeAiSummaryNetwork",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 98,
            "controller": "AIController",
            "handler": "homeAiSummaryNetwork"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 439,
            "function": "aiHomeTypesNetwork(params: { schoolId?: string; start?: string; end?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815141-run"
      }
    },
    "/school/ai/strangers": {
      "get": {
        "summary": "AIController.schoolStrangers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:159；AIController.schoolStrangers\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:494；aiStrangers(params: { schoolId?: string | number; start?: string; end?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolStrangers",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 159,
            "controller": "AIController",
            "handler": "schoolStrangers"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 494,
            "function": "aiStrangers(params: { schoolId?: string | number; start?: string; end?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815142-run"
      }
    },
    "/school/ai/summary/pie": {
      "get": {
        "summary": "AIController.schoolAiSummaryPie",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:356；AIController.schoolAiSummaryPie\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_schoolAiSummaryPie",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 356,
            "controller": "AIController",
            "handler": "schoolAiSummaryPie"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815143-run"
      }
    },
    "/school/ai/types": {
      "get": {
        "summary": "AIController.listTypes",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:90；AIController.listTypes\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:95；aiTypes()\n- web-school: apps/web-school/src/services/api.ts:380；aiTypes()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_listTypes",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 90,
            "controller": "AIController",
            "handler": "listTypes"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 95,
            "function": "aiTypes()",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 380,
            "function": "aiTypes()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815144-run"
      }
    },
    "/school/ai/events/status": {
      "patch": {
        "summary": "AIController.setStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:466；AIController.setStatus\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:491；aiEventMarkFalse(id: string)；body={ status: 'FALSE' }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_setStatus",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "OPEN",
                      "ACK",
                      "CLOSED",
                      "FALSE"
                    ],
                    "example": "OPEN"
                  },
                  "note": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "handledBy": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "status"
                ],
                "x-apifox-orders": [
                  "status",
                  "note",
                  "handledBy"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": "OPEN",
                "note": "APIFOX_{{testBatch}}_001",
                "handledBy": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 466,
            "controller": "AIController",
            "handler": "setStatus"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 491,
            "function": "aiEventMarkFalse(id: string)",
            "bodyExpression": "{ status: 'FALSE' }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815145-run"
      }
    },
    "/school/ai/events/handle": {
      "post": {
        "summary": "AIController.handleSchool",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:439；AIController.handleSchool\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:487；aiEventHandle(eventId: string, measure: string)；body={ eventId, measure }\n- web-school: apps/web-school/src/services/api.ts:488；aiEventHandleEx(body: { eventId: string; decision?: '已现场纠正' | '误报' | '其他'; note?: string; evidence?: string[]; handledBy?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_handleSchool",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "eventId": {
                    "type": "string",
                    "example": "1"
                  },
                  "decision": {
                    "type": "string",
                    "enum": [
                      "已现场纠正",
                      "误报",
                      "其他"
                    ],
                    "example": "已现场纠正"
                  },
                  "measure": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "eventId"
                ],
                "x-apifox-orders": [
                  "eventId",
                  "decision",
                  "measure"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "eventId": "1",
                "decision": "已现场纠正",
                "measure": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 439,
            "controller": "AIController",
            "handler": "handleSchool"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 487,
            "function": "aiEventHandle(eventId: string, measure: string)",
            "bodyExpression": "{ eventId, measure }"
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 488,
            "function": "aiEventHandleEx(body: { eventId: string; decision?: '已现场纠正' | '误报' | '其他'; note?: string; evidence?: string[]; handledBy?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815146-run"
      }
    },
    "/school/ai/events/mock": {
      "post": {
        "summary": "AIController.mockSchoolEvents",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:494；AIController.mockSchoolEvents\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:492；aiEventsMock(body: { schoolId?: string; count?: number; perCameraCount?: number; start?: string; end?: string; handledRatio?: number; falseRatio?: number; cameraIds?: string[] })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_mockSchoolEvents",
        "tags": [
          "学校端/AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "x-apifox-orders": [
                  "schoolId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 494,
            "controller": "AIController",
            "handler": "mockSchoolEvents"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 492,
            "function": "aiEventsMock(body: { schoolId?: string; count?: number; perCameraCount?: number; start?: string; end?: string; handledRatio?: number; falseRatio?: number; cameraIds?: string[] })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815147-run"
      }
    },
    "/school/analytics/alerts": {
      "get": {
        "summary": "AnalyticsController.alerts",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/analytics.controller.ts:257；AnalyticsController.alerts\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1367；analyticsAlerts(params: { schoolId?: string; type?: string; status?: '未处理' | '已处理'; start?: string; end?: string; canteenId?: number })\n- web-regulator: apps/web-regulator/src/services/api.ts:1215；alertsEvents(params: { type?: string; schoolId?: string; start?: string; end?: string; page?: number; pageSize?: number; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AnalyticsController_alerts",
        "tags": [
          "学校端/Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "regView",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/analytics.controller.ts",
            "line": 257,
            "controller": "AnalyticsController",
            "handler": "alerts"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1367,
            "function": "analyticsAlerts(params: { schoolId?: string; type?: string; status?: '未处理' | '已处理'; start?: string; end?: string; canteenId?: number })",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1215,
            "function": "alertsEvents(params: { type?: string; schoolId?: string; start?: string; end?: string; page?: number; pageSize?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815148-run"
      }
    },
    "/school/analytics/dashboard": {
      "get": {
        "summary": "AnalyticsController.dashboard",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/analytics.controller.ts:20；AnalyticsController.dashboard\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AnalyticsController_dashboard",
        "tags": [
          "学校端/Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/analytics.controller.ts",
            "line": 20,
            "controller": "AnalyticsController",
            "handler": "dashboard"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815149-run"
      }
    },
    "/school/analytics/health": {
      "get": {
        "summary": "AnalyticsController.health",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/analytics.controller.ts:47；AnalyticsController.health\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AnalyticsController_health",
        "tags": [
          "学校端/Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/analytics.controller.ts",
            "line": 47,
            "controller": "AnalyticsController",
            "handler": "health"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815150-run"
      }
    },
    "/school/analytics/personnel-health": {
      "get": {
        "summary": "AnalyticsController.personnelHealth",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/analytics.controller.ts:113；AnalyticsController.personnelHealth\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AnalyticsController_personnelHealth",
        "tags": [
          "学校端/Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/analytics.controller.ts",
            "line": 113,
            "controller": "AnalyticsController",
            "handler": "personnelHealth"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815151-run"
      }
    },
    "/school/analytics/stream": {
      "get": {
        "summary": "AnalyticsController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/analytics.controller.ts:277；AnalyticsController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AnalyticsController_stream",
        "tags": [
          "学校端/Analytics"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/analytics.controller.ts",
            "line": 277,
            "controller": "AnalyticsController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815152-run"
      }
    },
    "/school/analytics/alerts/handle": {
      "post": {
        "summary": "AnalyticsController.handleAlert",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/analytics.controller.ts:271；AnalyticsController.handleAlert\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1314；analyticsAlertHandle(payload: { id: string; type: string; measure?: string; status?: '未处理' | '已处理' })；body=JSON.stringify(payload)\n- web-school: apps/web-school/src/services/api.ts:1375；analyticsAlertHandle(payload: { id: string; type: string; measure?: string; status?: '未处理' | '已处理' })；body=JSON.stringify(payload)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AnalyticsController_handleAlert",
        "tags": [
          "学校端/Analytics"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "measure": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "未处理",
                      "已处理"
                    ],
                    "example": "未处理"
                  }
                },
                "required": [
                  "id",
                  "type"
                ],
                "x-apifox-orders": [
                  "id",
                  "type",
                  "measure",
                  "status"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "type": "APIFOX_{{testBatch}}",
                "measure": "APIFOX_{{testBatch}}",
                "status": "未处理"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/analytics.controller.ts",
            "line": 271,
            "controller": "AnalyticsController",
            "handler": "handleAlert"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1314,
            "function": "analyticsAlertHandle(payload: { id: string; type: string; measure?: string; status?: '未处理' | '已处理' })",
            "bodyExpression": "JSON.stringify(payload)"
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1375,
            "function": "analyticsAlertHandle(payload: { id: string; type: string; measure?: string; status?: '未处理' | '已处理' })",
            "bodyExpression": "JSON.stringify(payload)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815153-run"
      }
    },
    "/school/assets/maintenance": {
      "get": {
        "summary": "HygieneController.listAssets",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/hygiene.controller.ts:46；HygieneController.listAssets\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:873；assetsList(params: { asset?: string; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HygieneController_listAssets",
        "tags": [
          "学校端/Hygiene"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "asset",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "x-apifox-orders": []
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Hygiene"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/hygiene.controller.ts",
            "line": 46,
            "controller": "HygieneController",
            "handler": "listAssets"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 873,
            "function": "assetsList(params: { asset?: string; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Hygiene",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815154-run"
      },
      "post": {
        "summary": "HygieneController.createAsset",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/hygiene.controller.ts:61；HygieneController.createAsset\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:888；assetsCreate(body: { asset: string; date?: string; action: string; by: string; schoolId?: number; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HygieneController_createAsset",
        "tags": [
          "学校端/Hygiene"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "asset": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "date": {
                    "type": "string",
                    "example": "2026-09-24"
                  },
                  "action": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "by": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "asset",
                  "action",
                  "by"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "asset",
                  "date",
                  "action",
                  "by"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "asset": "APIFOX_{{testBatch}}",
                "date": "2026-09-24",
                "action": "APIFOX_{{testBatch}}",
                "by": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Hygiene"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/hygiene.controller.ts",
            "line": 61,
            "controller": "HygieneController",
            "handler": "createAsset"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 888,
            "function": "assetsCreate(body: { asset: string; date?: string; action: string; by: string; schoolId?: number; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Hygiene",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815155-run"
      }
    },
    "/school/hygiene/inspections": {
      "get": {
        "summary": "List hygiene inspections",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/hygiene.controller.ts:14；HygieneController.listInspections\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:847；hygieneList(params: { result?: '合格' | '不合格'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HygieneController_listInspections",
        "tags": [
          "学校端/Hygiene"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "result",
            "in": "query",
            "description": "来源：Query(result)；源码类型：InspectResult",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：InspectResult",
              "x-source-type": "InspectResult",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedHygieneInspections"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Hygiene"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/hygiene.controller.ts",
            "line": 14,
            "controller": "HygieneController",
            "handler": "listInspections"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 847,
            "function": "hygieneList(params: { result?: '合格' | '不合格'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Hygiene",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815156-run"
      },
      "post": {
        "summary": "Create hygiene inspection",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/hygiene.controller.ts:30；HygieneController.createInspection\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:862；hygieneCreate(body: { date?: string; result: '合格' | '不合格'; by: string; remark?: string; schoolId?: number; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HygieneController_createInspection",
        "tags": [
          "学校端/Hygiene"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "date": {
                    "type": "string",
                    "example": "2026-09-24"
                  },
                  "result": {
                    "type": "object",
                    "description": "源码类型：InspectResult",
                    "x-source-type": "InspectResult",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "by": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "result",
                  "by"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "date",
                  "result",
                  "by",
                  "remark"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "date": "2026-09-24",
                "result": {},
                "by": "APIFOX_{{testBatch}}",
                "remark": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Hygiene"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/hygiene.controller.ts",
            "line": 30,
            "controller": "HygieneController",
            "handler": "createInspection"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 862,
            "function": "hygieneCreate(body: { date?: string; result: '合格' | '不合格'; by: string; remark?: string; schoolId?: number; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Hygiene",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815157-run"
      }
    },
    "/school/hygiene/stream": {
      "get": {
        "summary": "HygieneController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/hygiene.controller.ts:69；HygieneController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HygieneController_stream",
        "tags": [
          "学校端/Hygiene"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Hygiene"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/hygiene.controller.ts",
            "line": 69,
            "controller": "HygieneController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Hygiene",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815158-run"
      }
    },
    "/school/canteen-detail": {
      "get": {
        "summary": "CanteensController.canteenDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:258；CanteensController.canteenDetail\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/services/api.ts:191；canteenDetail(params: { canteenId: number|string; schoolId?: number|string })\n- web-school: apps/web-school/src/services/api.ts:1311；canteenDetail(canteenId: number | string, schoolId: number | string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_canteenDetail",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 258,
            "controller": "CanteensController",
            "handler": "canteenDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/services/api.ts",
            "line": 191,
            "function": "canteenDetail(params: { canteenId: number|string; schoolId?: number|string })",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1311,
            "function": "canteenDetail(canteenId: number | string, schoolId: number | string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815159-run"
      },
      "patch": {
        "summary": "CanteensController.updateCanteenDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:290；CanteensController.updateCanteenDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1325；canteenDetailUpdate(body: { canteenId: number; name?: string; address?: string; manager?: string; phone?: string; areaCovered?: number; staffCount?: number; eatPersonCount?: number; remark?: string; biz?: { id?: number; number: string; authority?: string; issueAt: string; expireAt: string; imageUrl?: string }; food?: { id?: number; number: string; authority?: string; permitItems?: string; issueAt: string; expireAt: string; imageUrl?: string }; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_updateCanteenDetail",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "address": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "manager": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "areaCovered": {
                    "type": "number",
                    "example": 10
                  },
                  "staffCount": {
                    "type": "number",
                    "example": 10
                  },
                  "eatPersonCount": {
                    "type": "number",
                    "example": 10
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  },
                  "biz": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "example": 1
                      },
                      "number": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}_001"
                      },
                      "authority": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      "issueAt": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      },
                      "expireAt": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      },
                      "imageUrl": {
                        "type": "string",
                        "example": "https://example.test/apifox-autotest.jpg"
                      }
                    },
                    "required": [
                      "number",
                      "issueAt",
                      "expireAt"
                    ],
                    "x-apifox-orders": [
                      "id",
                      "number",
                      "authority",
                      "issueAt",
                      "expireAt",
                      "imageUrl"
                    ],
                    "x-apifox-ignore-properties": []
                  },
                  "food": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "example": 1
                      },
                      "number": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}_001"
                      },
                      "authority": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      "permitItems": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      "issueAt": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      },
                      "expireAt": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      },
                      "imageUrl": {
                        "type": "string",
                        "example": "https://example.test/apifox-autotest.jpg"
                      }
                    },
                    "required": [
                      "number",
                      "issueAt",
                      "expireAt"
                    ],
                    "x-apifox-orders": [
                      "id",
                      "number",
                      "authority",
                      "permitItems",
                      "issueAt",
                      "expireAt",
                      "imageUrl"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                },
                "required": [
                  "canteenId"
                ],
                "x-apifox-orders": [
                  "canteenId",
                  "name",
                  "address",
                  "manager",
                  "phone",
                  "areaCovered",
                  "staffCount",
                  "eatPersonCount",
                  "remark",
                  "biz",
                  "food"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "canteenId": 1,
                "name": "APIFOX_{{testBatch}}_测试数据",
                "address": "APIFOX_{{testBatch}}",
                "manager": "APIFOX_{{testBatch}}",
                "phone": "13800138000",
                "areaCovered": 10,
                "staffCount": 10,
                "eatPersonCount": 10,
                "remark": "APIFOX_{{testBatch}} 自动化测试数据",
                "biz": {
                  "id": 1,
                  "number": "APIFOX_{{testBatch}}_001",
                  "authority": "APIFOX_{{testBatch}}",
                  "issueAt": "2026-09-24 10:00:00",
                  "expireAt": "2026-09-24 10:00:00",
                  "imageUrl": "https://example.test/apifox-autotest.jpg"
                },
                "food": {
                  "id": 1,
                  "number": "APIFOX_{{testBatch}}_001",
                  "authority": "APIFOX_{{testBatch}}",
                  "permitItems": "APIFOX_{{testBatch}}",
                  "issueAt": "2026-09-24 10:00:00",
                  "expireAt": "2026-09-24 10:00:00",
                  "imageUrl": "https://example.test/apifox-autotest.jpg"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 290,
            "controller": "CanteensController",
            "handler": "updateCanteenDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1325,
            "function": "canteenDetailUpdate(body: { canteenId: number; name?: string; address?: string; manager?: string; phone?: string; areaCovered?: number; staffCount?: number; eatPersonCount?: number; remark?: string; biz?: { id?: number; number: string; authority?: string; issueAt: string; expireAt: string; imageUrl?: string }; food?: { id?: number; number: string; authority?: string; permitItems?: string; issueAt: string; expireAt: string; imageUrl?: string }; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815160-run"
      }
    },
    "/school/canteen-licenses": {
      "get": {
        "summary": "CanteensController.listLicenses",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:186；CanteensController.listLicenses\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_listLicenses",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 186,
            "controller": "CanteensController",
            "handler": "listLicenses"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815161-run"
      },
      "patch": {
        "summary": "CanteensController.updateLicense",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:231；CanteensController.updateLicense\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_updateLicense",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "number": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "authority": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "permitItems": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "issueAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "expireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "x-apifox-orders": [
                  "number",
                  "authority",
                  "permitItems",
                  "issueAt",
                  "expireAt",
                  "imageUrl",
                  "type"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "number": "APIFOX_{{testBatch}}_001",
                "authority": "APIFOX_{{testBatch}}",
                "permitItems": "APIFOX_{{testBatch}}",
                "issueAt": "2026-09-24 10:00:00",
                "expireAt": "2026-09-24 10:00:00",
                "imageUrl": "https://example.test/apifox-autotest.jpg",
                "type": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 231,
            "controller": "CanteensController",
            "handler": "updateLicense"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815162-run"
      },
      "post": {
        "summary": "CanteensController.createLicense",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:214；CanteensController.createLicense\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_createLicense",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  },
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "number": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "authority": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "permitItems": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "issueAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "expireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "canteenId",
                  "type"
                ],
                "x-apifox-orders": [
                  "canteenId",
                  "type",
                  "number",
                  "authority",
                  "permitItems",
                  "issueAt",
                  "expireAt",
                  "imageUrl"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "canteenId": 1,
                "type": "APIFOX_{{testBatch}}",
                "number": "APIFOX_{{testBatch}}_001",
                "authority": "APIFOX_{{testBatch}}",
                "permitItems": "APIFOX_{{testBatch}}",
                "issueAt": "2026-09-24 10:00:00",
                "expireAt": "2026-09-24 10:00:00",
                "imageUrl": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 214,
            "controller": "CanteensController",
            "handler": "createLicense"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815163-run"
      }
    },
    "/school/canteens": {
      "get": {
        "summary": "CanteensController.listCanteens",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:24；CanteensController.listCanteens\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1251；canteensAll(schoolId: string | number)\n- web-school: apps/web-school/src/services/api.ts:1259；canteensByStatus(schoolId: string | number, enabled: 'all' | 'true' | 'false')\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_listCanteens",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "enabled",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 24,
            "controller": "CanteensController",
            "handler": "listCanteens"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1251,
            "function": "canteensAll(schoolId: string | number)",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1259,
            "function": "canteensByStatus(schoolId: string | number, enabled: 'all' | 'true' | 'false')",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815164-run"
      },
      "patch": {
        "summary": "CanteensController.updateCanteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:102；CanteensController.updateCanteen\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1267；canteenUpdateSimple(id: number, patchBody: { name?: string; code?: string; address?: string; manager?: string; phone?: string; enabled?: boolean; instrument?: string | null; ygSn?: string | null })；body=patchBody\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_updateCanteen",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "code": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "address": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "manager": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "ygSn": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "instrument": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  }
                },
                "x-apifox-orders": [
                  "name",
                  "code",
                  "address",
                  "manager",
                  "phone",
                  "enabled",
                  "ygSn",
                  "instrument"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "code": "APIFOX_{{testBatch}}",
                "address": "APIFOX_{{testBatch}}",
                "manager": "APIFOX_{{testBatch}}",
                "phone": "13800138000",
                "enabled": true,
                "ygSn": "APIFOX_{{testBatch}}",
                "instrument": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 102,
            "controller": "CanteensController",
            "handler": "updateCanteen"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1267,
            "function": "canteenUpdateSimple(id: number, patchBody: { name?: string; code?: string; address?: string; manager?: string; phone?: string; enabled?: boolean; instrument?: string | null; ygSn?: string | null })",
            "bodyExpression": "patchBody"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815165-run"
      },
      "post": {
        "summary": "CanteensController.createCanteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:90；CanteensController.createCanteen\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1262；canteenCreateSimple(body: { schoolId?: number; name: string; code?: string; address?: string; manager?: string; phone?: string; enabled?: boolean; instrument?: string; ygSn?: string })；body=body\n- web-school: apps/web-school/src/services/api.ts:1343；canteenCreate(body: { schoolId?: number; name: string; address?: string; manager?: string; phone?: string })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_createCanteen",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "code": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "address": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "manager": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "ygSn": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "instrument": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "name",
                  "code",
                  "address",
                  "manager",
                  "phone",
                  "enabled",
                  "ygSn",
                  "instrument"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "name": "APIFOX_{{testBatch}}_测试数据",
                "code": "APIFOX_{{testBatch}}",
                "address": "APIFOX_{{testBatch}}",
                "manager": "APIFOX_{{testBatch}}",
                "phone": "13800138000",
                "enabled": true,
                "ygSn": "APIFOX_{{testBatch}}",
                "instrument": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 90,
            "controller": "CanteensController",
            "handler": "createCanteen"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1262,
            "function": "canteenCreateSimple(body: { schoolId?: number; name: string; code?: string; address?: string; manager?: string; phone?: string; enabled?: boolean; instrument?: string; ygSn?: string })",
            "bodyExpression": "body"
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1343,
            "function": "canteenCreate(body: { schoolId?: number; name: string; address?: string; manager?: string; phone?: string })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815166-run"
      }
    },
    "/school/canteens/summary": {
      "get": {
        "summary": "CanteensController.listCanteenSummary",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:44；CanteensController.listCanteenSummary\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_listCanteenSummary",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 44,
            "controller": "CanteensController",
            "handler": "listCanteenSummary"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815167-run"
      }
    },
    "/school/canteen-detail/delete": {
      "post": {
        "summary": "CanteensController.deleteCanteenDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:365；CanteensController.deleteCanteenDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1334；canteenDetailDelete(canteenId: number)；body=JSON.stringify({ canteenId })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_deleteCanteenDetail",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "canteenId"
                ],
                "x-apifox-orders": [
                  "canteenId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "canteenId": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 365,
            "controller": "CanteensController",
            "handler": "deleteCanteenDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1334,
            "function": "canteenDetailDelete(canteenId: number)",
            "bodyExpression": "JSON.stringify({ canteenId })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815168-run"
      }
    },
    "/school/canteen-licenses/delete": {
      "post": {
        "summary": "CanteensController.deleteLicense",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:245；CanteensController.deleteLicense\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_deleteLicense",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 245,
            "controller": "CanteensController",
            "handler": "deleteLicense"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815169-run"
      }
    },
    "/school/canteens/delete": {
      "post": {
        "summary": "CanteensController.deleteCanteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/canteens.controller.ts:169；CanteensController.deleteCanteen\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CanteensController_deleteCanteen",
        "tags": [
          "学校端/Canteens"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Canteens"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/canteens.controller.ts",
            "line": 169,
            "controller": "CanteensController",
            "handler": "deleteCanteen"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Canteens",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815170-run"
      }
    },
    "/school/cater/categories": {
      "get": {
        "summary": "外部菜品分类映射（静态）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/cater-proxy.controller.ts:13；CaterProxyController.categories\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:727；caterCategories()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CaterProxyController_categories",
        "tags": [
          "学校端/CaterProxy"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/cater-proxy.controller.ts",
            "line": 13,
            "controller": "CaterProxyController",
            "handler": "categories"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 727,
            "function": "caterCategories()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/CaterProxy",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815171-run"
      }
    },
    "/school/cater/select": {
      "get": {
        "summary": "代理外部接口：仅分页 /p/cater/select（带 cookie 与 headers）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/cater-proxy.controller.ts:27；CaterProxyController.select\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CaterProxyController_select",
        "tags": [
          "学校端/CaterProxy"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/cater-proxy.controller.ts",
            "line": 27,
            "controller": "CaterProxyController",
            "handler": "select"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/CaterProxy",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815172-run"
      }
    },
    "/school/certificates": {
      "get": {
        "summary": "SchoolCertificatesController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-certificates.controller.ts:14；SchoolCertificatesController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1198；certList(params: { owner?: string; type?: string; status?: '有效' | '过期'; schoolId?: string | number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolCertificatesController_list",
        "tags": [
          "学校端/Certificates"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Certificates"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-certificates.controller.ts",
            "line": 14,
            "controller": "SchoolCertificatesController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1198,
            "function": "certList(params: { owner?: string; type?: string; status?: '有效' | '过期'; schoolId?: string | number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Certificates",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815173-run"
      },
      "patch": {
        "summary": "SchoolCertificatesController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-certificates.controller.ts:38；SchoolCertificatesController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1208；certUpdate(id: string, body: { owner?: string; type?: string; number?: string; expireAt?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolCertificatesController_update",
        "tags": [
          "学校端/Certificates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "x-apifox-orders": []
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Certificates"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-certificates.controller.ts",
            "line": 38,
            "controller": "SchoolCertificatesController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1208,
            "function": "certUpdate(id: string, body: { owner?: string; type?: string; number?: string; expireAt?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Certificates",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815174-run"
      },
      "post": {
        "summary": "SchoolCertificatesController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-certificates.controller.ts:27；SchoolCertificatesController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1207；certCreate(body: { owner: string; type: string; number: string; expireAt: string; schoolId?: string | number })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolCertificatesController_create",
        "tags": [
          "学校端/Certificates"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "x-apifox-orders": []
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Certificates"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-certificates.controller.ts",
            "line": 27,
            "controller": "SchoolCertificatesController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1207,
            "function": "certCreate(body: { owner: string; type: string; number: string; expireAt: string; schoolId?: string | number })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Certificates",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815175-run"
      }
    },
    "/school/certificates/export.csv": {
      "get": {
        "summary": "Export certificates CSV",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-certificates.controller.ts:57；SchoolCertificatesController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolCertificatesController_exportCsv",
        "tags": [
          "学校端/Certificates"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Certificates"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-certificates.controller.ts",
            "line": 57,
            "controller": "SchoolCertificatesController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Certificates",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815176-run"
      }
    },
    "/school/certificates/delete": {
      "post": {
        "summary": "SchoolCertificatesController.remove",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-certificates.controller.ts:51；SchoolCertificatesController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1209；certDelete(id: string)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolCertificatesController_remove",
        "tags": [
          "学校端/Certificates"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      }
                    ]
                  }
                },
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Certificates"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-certificates.controller.ts",
            "line": 51,
            "controller": "SchoolCertificatesController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1209,
            "function": "certDelete(id: string)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Certificates",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815177-run"
      }
    },
    "/school/credentials/canteens": {
      "get": {
        "summary": "CredentialsController.listCanteens",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:21；CredentialsController.listCanteens\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_listCanteens",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 21,
            "controller": "CredentialsController",
            "handler": "listCanteens"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815178-run"
      },
      "post": {
        "summary": "CredentialsController.createCanteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:26；CredentialsController.createCanteen\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_createCanteen",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "address": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "licenseExpireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  }
                },
                "required": [
                  "name",
                  "licenseExpireAt"
                ],
                "x-apifox-orders": [
                  "name",
                  "address",
                  "licenseExpireAt"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "address": "APIFOX_{{testBatch}}",
                "licenseExpireAt": "2026-09-24 10:00:00"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 26,
            "controller": "CredentialsController",
            "handler": "createCanteen"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815179-run"
      }
    },
    "/school/credentials/exceptions": {
      "get": {
        "summary": "CredentialsController.listExceptions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:63；CredentialsController.listExceptions\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_listExceptions",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：EntityType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：EntityType",
              "x-source-type": "EntityType",
              "x-apifox-orders": []
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 63,
            "controller": "CredentialsController",
            "handler": "listExceptions"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815180-run"
      }
    },
    "/school/credentials/stream": {
      "get": {
        "summary": "CredentialsController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:80；CredentialsController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_stream",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Server-Sent Events stream",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 80,
            "controller": "CredentialsController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815181-run"
      }
    },
    "/school/credentials/suppliers": {
      "get": {
        "summary": "CredentialsController.listSuppliers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:49；CredentialsController.listSuppliers\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_listSuppliers",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 49,
            "controller": "CredentialsController",
            "handler": "listSuppliers"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815182-run"
      },
      "post": {
        "summary": "CredentialsController.createSupplier",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:54；CredentialsController.createSupplier\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_createSupplier",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "licenseExpireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  }
                },
                "required": [
                  "name",
                  "licenseExpireAt"
                ],
                "x-apifox-orders": [
                  "name",
                  "phone",
                  "licenseExpireAt"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "phone": "13800138000",
                "licenseExpireAt": "2026-09-24 10:00:00"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 54,
            "controller": "CredentialsController",
            "handler": "createSupplier"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815183-run"
      }
    },
    "/school/credentials/workers": {
      "get": {
        "summary": "CredentialsController.listWorkers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:35；CredentialsController.listWorkers\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_listWorkers",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 35,
            "controller": "CredentialsController",
            "handler": "listWorkers"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815184-run"
      },
      "post": {
        "summary": "CredentialsController.createWorker",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:40；CredentialsController.createWorker\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_createWorker",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "role": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "healthCertExpireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  }
                },
                "required": [
                  "name",
                  "healthCertExpireAt"
                ],
                "x-apifox-orders": [
                  "name",
                  "role",
                  "healthCertExpireAt"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "role": "APIFOX_{{testBatch}}",
                "healthCertExpireAt": "2026-09-24 10:00:00"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 40,
            "controller": "CredentialsController",
            "handler": "createWorker"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815185-run"
      }
    },
    "/school/credentials/exceptions/{id}/measure": {
      "patch": {
        "summary": "CredentialsController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/credentials.controller.ts:71；CredentialsController.setMeasure\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CredentialsController_setMeasure",
        "tags": [
          "学校端/Credentials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "来源：Param(id)；源码类型：string",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "measure": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "measure"
                ],
                "x-apifox-orders": [
                  "measure"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "measure": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/credentials.controller.ts",
            "line": 71,
            "controller": "CredentialsController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815186-run"
      }
    },
    "/school/device-safety": {
      "get": {
        "summary": "DeviceSafetyController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-safety.controller.ts:12；DeviceSafetyController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1413；deviceSafetyList(params: { schoolId?: number | string; canteenId?: number; start?: string; end?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceSafetyController_list",
        "tags": [
          "学校端/Device Safety"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDeviceSafetyRecords"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Device Safety"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-safety.controller.ts",
            "line": 12,
            "controller": "DeviceSafetyController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1413,
            "function": "deviceSafetyList(params: { schoolId?: number | string; canteenId?: number; start?: string; end?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Device Safety",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815187-run"
      },
      "post": {
        "summary": "DeviceSafetyController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-safety.controller.ts:28；DeviceSafetyController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1431；deviceSafetyCreate(body: { schoolId?: number | string; canteenId?: number | string; deviceName: string; items: string[]; result: '正常' | '异常'; description?: string; measures?: string; handler?: string; imageUrl?: string; signatureData?: string; checkDate: string; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceSafetyController_create",
        "tags": [
          "学校端/Device Safety"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Device Safety"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-safety.controller.ts",
            "line": 28,
            "controller": "DeviceSafetyController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1431,
            "function": "deviceSafetyCreate(body: { schoolId?: number | string; canteenId?: number | string; deviceName: string; items: string[]; result: '正常' | '异常'; description?: string; measures?: string; handler?: string; imageUrl?: string; signatureData?: string; checkDate: string; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Device Safety",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815188-run"
      }
    },
    "/school/device-safety/detail": {
      "get": {
        "summary": "DeviceSafetyController.detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-safety.controller.ts:50；DeviceSafetyController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1439；deviceSafetyDetail(id: number | string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceSafetyController_detail",
        "tags": [
          "学校端/Device Safety"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Device Safety"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-safety.controller.ts",
            "line": 50,
            "controller": "DeviceSafetyController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1439,
            "function": "deviceSafetyDetail(id: number | string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Device Safety",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815189-run"
      }
    },
    "/school/device-safety/{id}": {
      "patch": {
        "summary": "DeviceSafetyController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-safety.controller.ts:56；DeviceSafetyController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1457；deviceSafetyUpdate(id: number | string, body: { canteenId?: number | string | null; deviceName?: string; items?: string[]; result?: '正常' | '异常'; description?: string | null; measures?: string | null; handler?: string | null; imageUrl?: string | null; signatureData?: string | null; checkDate?: string; schoolId?: number | string; // ignored server-side for update })；body=JSON.stringify(payload)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceSafetyController_update",
        "tags": [
          "学校端/Device Safety"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeviceSafetyBodyDTO"
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Device Safety"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-safety.controller.ts",
            "line": 56,
            "controller": "DeviceSafetyController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1457,
            "function": "deviceSafetyUpdate(id: number | string, body: { canteenId?: number | string | null; deviceName?: string; items?: string[]; result?: '正常' | '异常'; description?: string | null; measures?: string | null; handler?: string | null; imageUrl?: string | null; signatureData?: string | null; checkDate?: string; schoolId?: number | string; // ignored server-side for update })",
            "bodyExpression": "JSON.stringify(payload)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Device Safety",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815190-run"
      }
    },
    "/school/devices": {
      "get": {
        "summary": "List devices (school scope)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/devices.controller.ts:14；DevicesController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1386；devicesList(params: { schoolId?: string; type?: string; status?: string; q?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DevicesController_list",
        "tags": [
          "学校端/Devices"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Devices"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/devices.controller.ts",
            "line": 14,
            "controller": "DevicesController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1386,
            "function": "devicesList(params: { schoolId?: string; type?: string; status?: string; q?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Devices",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815191-run"
      }
    },
    "/school/devices/statuses": {
      "get": {
        "summary": "DevicesController.statuses",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/devices.controller.ts:29；DevicesController.statuses\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DevicesController_statuses",
        "tags": [
          "学校端/Devices"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Devices"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/devices.controller.ts",
            "line": 29,
            "controller": "DevicesController",
            "handler": "statuses"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Devices",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815192-run"
      }
    },
    "/school/devices/types": {
      "get": {
        "summary": "DevicesController.types",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/devices.controller.ts:26；DevicesController.types\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DevicesController_types",
        "tags": [
          "学校端/Devices"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Devices"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/devices.controller.ts",
            "line": 26,
            "controller": "DevicesController",
            "handler": "types"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Devices",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815193-run"
      }
    },
    "/school/dine/meal-options": {
      "get": {
        "summary": "DineController.mealOptions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:70；DineController.mealOptions\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:989；dineMealOptions()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_mealOptions",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 70,
            "controller": "DineController",
            "handler": "mealOptions"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 989,
            "function": "dineMealOptions()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815194-run"
      }
    },
    "/school/dine/meals": {
      "get": {
        "summary": "DineController.meals",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:64；DineController.meals\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:988；dineMeals()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_meals",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 64,
            "controller": "DineController",
            "handler": "meals"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 988,
            "function": "dineMeals()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815195-run"
      }
    },
    "/school/dine/records": {
      "post": {
        "summary": "DineController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:82；DineController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1018；dineCreate(body: { meal?: string; mealCode?: number; people: string[]; imageUrl?: string; comment?: string; schoolId?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_create",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 82,
            "controller": "DineController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1018,
            "function": "dineCreate(body: { meal?: string; mealCode?: number; people: string[]; imageUrl?: string; comment?: string; schoolId?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815196-run"
      },
      "get": {
        "summary": "DineApiAdapterController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-dine.adapter.controller.ts:23；DineApiAdapterController.list\n- services/gateway-service/src/modules/dine.controller.ts:44；DineController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1002；dineList(params: { meal?: string; mealCode?: number; exception?: 'true' | 'false'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_list",
        "tags": [
          "学校端/DineApiAdapter"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "mealCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "mealKey",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "exception",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "meal",
            "in": "query",
            "description": "来源：Query(meal)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDineRecords"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-dine.adapter.controller.ts",
            "line": 23,
            "controller": "DineApiAdapterController",
            "handler": "list"
          },
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 44,
            "controller": "DineController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1002,
            "function": "dineList(params: { meal?: string; mealCode?: number; exception?: 'true' | 'false'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/DineApiAdapter",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815201-run"
      }
    },
    "/school/dine/records/{id}/measure": {
      "patch": {
        "summary": "DineController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:118；DineController.setMeasure\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1019；dineSetMeasure(id: string, measure: string)；body={ measure }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_setMeasure",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 118,
            "controller": "DineController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1019,
            "function": "dineSetMeasure(id: string, measure: string)",
            "bodyExpression": "{ measure }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815197-run"
      }
    },
    "/school/dine/camera/callback": {
      "post": {
        "summary": "DineController.camera",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:101；DineController.camera\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_camera",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "meal": {
                    "type": "object",
                    "description": "源码类型：Meal",
                    "x-source-type": "Meal",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "mealCode": {
                    "type": "number",
                    "example": 10
                  },
                  "mealKey": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "people": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "comment": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "people",
                  "imageUrl"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "meal",
                  "mealCode",
                  "mealKey",
                  "people",
                  "imageUrl",
                  "comment"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "meal": {},
                "mealCode": 10,
                "mealKey": "APIFOX_{{testBatch}}",
                "people": [
                  "APIFOX_{{testBatch}}"
                ],
                "imageUrl": "https://example.test/apifox-autotest.jpg",
                "comment": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 101,
            "controller": "DineController",
            "handler": "camera"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815198-run"
      }
    },
    "/school/dine/qr/create": {
      "post": {
        "summary": "DineController.createQr",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:129；DineController.createQr\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1020；dineQrCreate(mealOrCode: string | number, schoolId: string)；body=typeof mealOrCode === 'number' ? { mealCode: mealOrCode, schoolId } : { mealKey: mealOrCode, schoolId }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_createQr",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "meal": {
                    "type": "object",
                    "description": "源码类型：Meal",
                    "x-source-type": "Meal",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "mealCode": {
                    "type": "number",
                    "example": 10
                  },
                  "mealKey": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "meal",
                  "mealCode",
                  "mealKey"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "meal": {},
                "mealCode": 10,
                "mealKey": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 129,
            "controller": "DineController",
            "handler": "createQr"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1020,
            "function": "dineQrCreate(mealOrCode: string | number, schoolId: string)",
            "bodyExpression": "typeof mealOrCode === 'number' ? { mealCode: mealOrCode, schoolId } : { mealKey: mealOrCode, schoolId }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815199-run"
      }
    },
    "/school/dine/qr/submit": {
      "post": {
        "summary": "DineController.submitQr",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dine.controller.ts:136；DineController.submitQr\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_submitQr",
        "tags": [
          "学校端/Dine"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "people": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "comment": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "token",
                  "people"
                ],
                "x-apifox-orders": [
                  "token",
                  "people",
                  "imageUrl",
                  "comment"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "token": "APIFOX_{{testBatch}}",
                "people": [
                  "APIFOX_{{testBatch}}"
                ],
                "imageUrl": "https://example.test/apifox-autotest.jpg",
                "comment": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 136,
            "controller": "DineController",
            "handler": "submitQr"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Dine",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815200-run"
      }
    },
    "/school/dine/stream": {
      "get": {
        "summary": "DineApiAdapterController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-dine.adapter.controller.ts:39；DineApiAdapterController.stream\n- services/gateway-service/src/modules/dine.controller.ts:142；DineController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DineController_stream",
        "tags": [
          "学校端/DineApiAdapter"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Dine"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-dine.adapter.controller.ts",
            "line": 39,
            "controller": "DineApiAdapterController",
            "handler": "stream"
          },
          {
            "file": "services/gateway-service/src/modules/dine.controller.ts",
            "line": 142,
            "controller": "DineController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/DineApiAdapter",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815202-run"
      }
    },
    "/school/disinfection/records": {
      "get": {
        "summary": "List disinfection records",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:23；DisinfectionController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:901；disinfectionList(params: { method?: string; exception?: 'true' | 'false'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_list",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "exception",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "method",
            "in": "query",
            "description": "来源：Query(method)；源码类型：DisinfectionMethod",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：DisinfectionMethod",
              "x-source-type": "DisinfectionMethod",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedDisinfectionRecords"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 23,
            "controller": "DisinfectionController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 901,
            "function": "disinfectionList(params: { method?: string; exception?: 'true' | 'false'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815203-run"
      },
      "post": {
        "summary": "Create disinfection record",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:41；DisinfectionController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:920；disinfectionCreate(body: { method: string; duration: number; items: string; canteenId: number; responsible: string; at: string; // ISO datetime temperature?: number; imageUrl?: string; schoolId?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_create",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 41,
            "controller": "DisinfectionController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 920,
            "function": "disinfectionCreate(body: { method: string; duration: number; items: string; canteenId: number; responsible: string; at: string; // ISO datetime temperature?: number; imageUrl?: string; schoolId?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815204-run"
      }
    },
    "/school/disinfection/records/{id}": {
      "get": {
        "summary": "DisinfectionController.detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:92；DisinfectionController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:922；disinfectionDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_detail",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 92,
            "controller": "DisinfectionController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 922,
            "function": "disinfectionDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815205-run"
      }
    },
    "/school/disinfection/stream": {
      "get": {
        "summary": "DisinfectionController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:117；DisinfectionController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_stream",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 117,
            "controller": "DisinfectionController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815206-run"
      }
    },
    "/school/disinfection/records/{id}/measure": {
      "patch": {
        "summary": "DisinfectionController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:80；DisinfectionController.setMeasure\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:921；disinfectionSetMeasure(id: string, measure: string)；body={ measure }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_setMeasure",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 80,
            "controller": "DisinfectionController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 921,
            "function": "disinfectionSetMeasure(id: string, measure: string)",
            "bodyExpression": "{ measure }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815207-run"
      }
    },
    "/school/disinfection/device/callback": {
      "post": {
        "summary": "DisinfectionController.device",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:62；DisinfectionController.device\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_device",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  },
                  "method": {
                    "type": "object",
                    "description": "源码类型：DisinfectionMethod",
                    "x-source-type": "DisinfectionMethod",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "duration": {
                    "type": "number",
                    "example": 10
                  },
                  "items": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "temperature": {
                    "type": "number",
                    "example": 10
                  },
                  "responsible": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "method",
                  "duration",
                  "items"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "method",
                  "duration",
                  "items",
                  "temperature",
                  "responsible",
                  "imageUrl"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "canteenId": 1,
                "method": {},
                "duration": 10,
                "items": "APIFOX_{{testBatch}}",
                "temperature": 10,
                "responsible": "APIFOX_{{testBatch}}",
                "imageUrl": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 62,
            "controller": "DisinfectionController",
            "handler": "device"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815208-run"
      }
    },
    "/school/disinfection/records/import": {
      "post": {
        "summary": "DisinfectionController.import",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/disinfection.controller.ts:97；DisinfectionController.import\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:925；disinfectionImport(payload: { items: any[] } | string)；body=isCsv ? (payload as string) : payload\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DisinfectionController_import",
        "tags": [
          "学校端/Disinfection"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Disinfection"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/disinfection.controller.ts",
            "line": 97,
            "controller": "DisinfectionController",
            "handler": "import"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 925,
            "function": "disinfectionImport(payload: { items: any[] } | string)",
            "bodyExpression": "isCsv ? (payload as string) : payload"
          }
        ],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Disinfection",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815209-run"
      }
    },
    "/school/emergency/cameras": {
      "get": {
        "summary": "EmergencyController.cameras",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:79；EmergencyController.cameras\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_cameras",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 79,
            "controller": "EmergencyController",
            "handler": "cameras"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815210-run"
      }
    },
    "/school/emergency/duty": {
      "get": {
        "summary": "EmergencyController.duty",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:40；EmergencyController.duty\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_duty",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 40,
            "controller": "EmergencyController",
            "handler": "duty"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815211-run"
      },
      "post": {
        "summary": "EmergencyController.saveDuty",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:43；EmergencyController.saveDuty\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_saveDuty",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "members": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "oncall": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "name",
                  "members",
                  "oncall"
                ],
                "x-apifox-orders": [
                  "id",
                  "name",
                  "members",
                  "oncall"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "name": "APIFOX_{{testBatch}}_测试数据",
                "members": [
                  "APIFOX_{{testBatch}}"
                ],
                "oncall": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 43,
            "controller": "EmergencyController",
            "handler": "saveDuty"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815212-run"
      }
    },
    "/school/emergency/duty/export.csv": {
      "get": {
        "summary": "EmergencyController.exportDutyCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:129；EmergencyController.exportDutyCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_exportDutyCsv",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 129,
            "controller": "EmergencyController",
            "handler": "exportDutyCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815213-run"
      }
    },
    "/school/emergency/events": {
      "get": {
        "summary": "EmergencyController.listEvents",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:15；EmergencyController.listEvents\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_listEvents",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：AlertType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：AlertType",
              "x-source-type": "AlertType",
              "x-apifox-orders": []
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：any",
            "required": false,
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 15,
            "controller": "EmergencyController",
            "handler": "listEvents"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815214-run"
      }
    },
    "/school/emergency/events/export.csv": {
      "get": {
        "summary": "EmergencyController.exportEventsCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:97；EmergencyController.exportEventsCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_exportEventsCsv",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：AlertType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：AlertType",
              "x-source-type": "AlertType",
              "x-apifox-orders": []
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：any",
            "required": false,
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 97,
            "controller": "EmergencyController",
            "handler": "exportEventsCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815215-run"
      }
    },
    "/school/emergency/meetings": {
      "get": {
        "summary": "EmergencyController.meetings",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:49；EmergencyController.meetings\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_meetings",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 49,
            "controller": "EmergencyController",
            "handler": "meetings"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815216-run"
      },
      "post": {
        "summary": "EmergencyController.createMeeting",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:52；EmergencyController.createMeeting\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_createMeeting",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "scene": {
                    "type": "object",
                    "description": "源码类型：AlertType",
                    "x-source-type": "AlertType",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "micOn": {
                    "type": "boolean",
                    "example": true
                  },
                  "camOn": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "scene",
                  "title"
                ],
                "x-apifox-orders": [
                  "scene",
                  "title",
                  "micOn",
                  "camOn"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "scene": {},
                "title": "APIFOX_{{testBatch}}_测试数据",
                "micOn": true,
                "camOn": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 52,
            "controller": "EmergencyController",
            "handler": "createMeeting"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815217-run"
      }
    },
    "/school/emergency/overview": {
      "get": {
        "summary": "EmergencyController.overview",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:11；EmergencyController.overview\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_overview",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 11,
            "controller": "EmergencyController",
            "handler": "overview"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815218-run"
      }
    },
    "/school/emergency/plans": {
      "get": {
        "summary": "EmergencyController.plans",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:31；EmergencyController.plans\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_plans",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 31,
            "controller": "EmergencyController",
            "handler": "plans"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815219-run"
      },
      "post": {
        "summary": "EmergencyController.createPlan",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:34；EmergencyController.createPlan\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_createPlan",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "flow": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "law": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "title",
                  "flow"
                ],
                "x-apifox-orders": [
                  "title",
                  "flow",
                  "law",
                  "actions"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "title": "APIFOX_{{testBatch}}_测试数据",
                "flow": "APIFOX_{{testBatch}}",
                "law": "APIFOX_{{testBatch}}",
                "actions": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 34,
            "controller": "EmergencyController",
            "handler": "createPlan"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815220-run"
      }
    },
    "/school/emergency/plans/export.csv": {
      "get": {
        "summary": "EmergencyController.exportPlansCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:111；EmergencyController.exportPlansCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_exportPlansCsv",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 111,
            "controller": "EmergencyController",
            "handler": "exportPlansCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815221-run"
      }
    },
    "/school/emergency/resources": {
      "get": {
        "summary": "EmergencyController.resources",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:82；EmergencyController.resources\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_resources",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 82,
            "controller": "EmergencyController",
            "handler": "resources"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815222-run"
      }
    },
    "/school/emergency/stream": {
      "get": {
        "summary": "EmergencyController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:92；EmergencyController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_stream",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 92,
            "controller": "EmergencyController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815223-run"
      }
    },
    "/school/emergency/tasks": {
      "get": {
        "summary": "EmergencyController.tasks",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:66；EmergencyController.tasks\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_tasks",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [
          {
            "name": "scene",
            "in": "query",
            "description": "来源：Query(scene)；源码类型：AlertType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：AlertType",
              "x-source-type": "AlertType",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 66,
            "controller": "EmergencyController",
            "handler": "tasks"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815224-run"
      },
      "post": {
        "summary": "EmergencyController.createTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:69；EmergencyController.createTask\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_createTask",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "scene": {
                    "type": "object",
                    "description": "源码类型：AlertType",
                    "x-source-type": "AlertType",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "assignees": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "scene",
                  "title",
                  "assignees"
                ],
                "x-apifox-orders": [
                  "scene",
                  "title",
                  "assignees"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "scene": {},
                "title": "APIFOX_{{testBatch}}_测试数据",
                "assignees": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 69,
            "controller": "EmergencyController",
            "handler": "createTask"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815225-run"
      }
    },
    "/school/emergency/tasks/export.csv": {
      "get": {
        "summary": "EmergencyController.exportTasksCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:141；EmergencyController.exportTasksCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_exportTasksCsv",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [
          {
            "name": "scene",
            "in": "query",
            "description": "来源：Query(scene)；源码类型：AlertType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：AlertType",
              "x-source-type": "AlertType",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 141,
            "controller": "EmergencyController",
            "handler": "exportTasksCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815226-run"
      }
    },
    "/school/emergency/meetings/state": {
      "patch": {
        "summary": "EmergencyController.setMeetingState",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:57；EmergencyController.setMeetingState\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_setMeetingState",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "micOn": {
                    "type": "boolean",
                    "example": true
                  },
                  "camOn": {
                    "type": "boolean",
                    "example": true
                  },
                  "sharing": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "x-apifox-orders": [
                  "micOn",
                  "camOn",
                  "sharing"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "micOn": true,
                "camOn": true,
                "sharing": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 57,
            "controller": "EmergencyController",
            "handler": "setMeetingState"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815227-run"
      }
    },
    "/school/emergency/tasks/status": {
      "patch": {
        "summary": "EmergencyController.setTaskStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:72；EmergencyController.setTaskStatus\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_setTaskStatus",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "待办",
                      "进行中",
                      "已完成"
                    ],
                    "example": "待办"
                  }
                },
                "required": [
                  "status"
                ],
                "x-apifox-orders": [
                  "status"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": "待办"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 72,
            "controller": "EmergencyController",
            "handler": "setTaskStatus"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815228-run"
      }
    },
    "/school/emergency/alerts/raise": {
      "post": {
        "summary": "EmergencyController.raise",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:18；EmergencyController.raise\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_raise",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "object",
                    "description": "源码类型：AlertType",
                    "x-source-type": "AlertType",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "level": {}
                },
                "required": [
                  "type",
                  "title"
                ],
                "x-apifox-orders": [
                  "type",
                  "title",
                  "level"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "type": {},
                "title": "APIFOX_{{testBatch}}_测试数据",
                "level": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 18,
            "controller": "EmergencyController",
            "handler": "raise"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815229-run"
      }
    },
    "/school/emergency/events/accept": {
      "post": {
        "summary": "EmergencyController.accept",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:21；EmergencyController.accept\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_accept",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 21,
            "controller": "EmergencyController",
            "handler": "accept"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815230-run"
      }
    },
    "/school/emergency/events/clear": {
      "post": {
        "summary": "EmergencyController.clear",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:24；EmergencyController.clear\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_clear",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 24,
            "controller": "EmergencyController",
            "handler": "clear"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815231-run"
      }
    },
    "/school/emergency/events/start-plan": {
      "post": {
        "summary": "EmergencyController.startPlan",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:27；EmergencyController.startPlan\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_startPlan",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "planId": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id",
                  "planId"
                ],
                "x-apifox-orders": [
                  "id",
                  "planId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "planId": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 27,
            "controller": "EmergencyController",
            "handler": "startPlan"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815232-run"
      }
    },
    "/school/emergency/meetings/invite": {
      "post": {
        "summary": "EmergencyController.invite",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:63；EmergencyController.invite\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_invite",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "who": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "id",
                  "who"
                ],
                "x-apifox-orders": [
                  "id",
                  "who"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "who": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 63,
            "controller": "EmergencyController",
            "handler": "invite"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815233-run"
      }
    },
    "/school/emergency/notify": {
      "post": {
        "summary": "EmergencyController.notify",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/emergency.controller.ts:86；EmergencyController.notify\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "EmergencyController_notify",
        "tags": [
          "学校端/Emergency"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "scene": {
                    "type": "object",
                    "description": "源码类型：AlertType",
                    "x-source-type": "AlertType",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "to": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "via": {
                    "type": "string",
                    "enum": [
                      "sms",
                      "voice",
                      "app"
                    ],
                    "example": "sms"
                  },
                  "content": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "scene",
                  "to",
                  "via",
                  "content"
                ],
                "x-apifox-orders": [
                  "scene",
                  "to",
                  "via",
                  "content"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "scene": {},
                "to": "APIFOX_{{testBatch}}",
                "via": "sms",
                "content": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/emergency.controller.ts",
            "line": 86,
            "controller": "EmergencyController",
            "handler": "notify"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Emergency",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815234-run"
      }
    },
    "/school/home/overview": {
      "get": {
        "summary": "Aggregated home overview (single API)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-home.controller.ts:46；SchoolHomeController.overview\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:227；homeOverview(params: { schoolId?: string; canteenId?: string; aiPeriod?: 'week' | '7d' })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolHomeController_overview",
        "tags": [
          "学校端/School Home"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "aiPeriod",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School Home"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-home.controller.ts",
            "line": 46,
            "controller": "SchoolHomeController",
            "handler": "overview"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 227,
            "function": "homeOverview(params: { schoolId?: string; canteenId?: string; aiPeriod?: 'week' | '7d' })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School Home",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815235-run"
      }
    },
    "/school/inventory/additives": {
      "get": {
        "summary": "List food additives",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:664；InventoryController.listAdditives\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listAdditives",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 664,
            "controller": "InventoryController",
            "handler": "listAdditives"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815236-run"
      },
      "post": {
        "summary": "Create food additive record",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:669；InventoryController.createAdditive\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1194；invAdditiveCreate(body: { name: string; amount: number; dish?: string; by?: string; schoolId?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createAdditive",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "amount": {
                    "type": "number",
                    "example": 10
                  },
                  "dish": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "by": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "name",
                  "amount"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "name",
                  "amount",
                  "dish",
                  "by"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "name": "APIFOX_{{testBatch}}_测试数据",
                "amount": 10,
                "dish": "APIFOX_{{testBatch}}",
                "by": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 669,
            "controller": "InventoryController",
            "handler": "createAdditive"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1194,
            "function": "invAdditiveCreate(body: { name: string; amount: number; dish?: string; by?: string; schoolId?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815237-run"
      }
    },
    "/school/inventory/categories": {
      "get": {
        "summary": "List categories",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:20；InventoryController.listCategories\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listCategories",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 20,
            "controller": "InventoryController",
            "handler": "listCategories"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815238-run"
      },
      "post": {
        "summary": "Create category",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:25；InventoryController.createCategory\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1023；invCategoryCreate(name: string, schoolId: string)；body={ name, schoolId }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createCategory",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 25,
            "controller": "InventoryController",
            "handler": "createCategory"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1023,
            "function": "invCategoryCreate(name: string, schoolId: string)",
            "bodyExpression": "{ name, schoolId }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815239-run"
      }
    },
    "/school/inventory/inbound": {
      "get": {
        "summary": "InventoryController.listInbound",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:283；InventoryController.listInbound\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listInbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 283,
            "controller": "InventoryController",
            "handler": "listInbound"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815240-run"
      },
      "post": {
        "summary": "InventoryController.createInbound",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:358；InventoryController.createInbound\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1114；invInboundCreate(body: { productId: string; qty: number; supplierId?: string; warehouseId?: string; imageUrl?: string; schoolId?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createInbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 358,
            "controller": "InventoryController",
            "handler": "createInbound"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1114,
            "function": "invInboundCreate(body: { productId: string; qty: number; supplierId?: string; warehouseId?: string; imageUrl?: string; schoolId?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815241-run"
      }
    },
    "/school/inventory/inbound/doc": {
      "get": {
        "summary": "InventoryController.inboundDocDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:390；InventoryController.inboundDocDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1117；invInboundDocDetail(docNo: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_inboundDocDetail",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "docNo",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "x-apifox-orders": []
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 390,
            "controller": "InventoryController",
            "handler": "inboundDocDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1117,
            "function": "invInboundDocDetail(docNo: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815242-run"
      },
      "patch": {
        "summary": "Update inbound document",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:396；InventoryController.updateInboundDoc\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1119；invInboundUpdateDoc(docNo: string, body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_updateInboundDoc",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "docNo",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 396,
            "controller": "InventoryController",
            "handler": "updateInboundDoc"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1119,
            "function": "invInboundUpdateDoc(docNo: string, body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815243-run"
      },
      "post": {
        "summary": "InventoryController.createInboundDoc",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:374；InventoryController.createInboundDoc\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1118；invInboundCreateDoc(body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createInboundDoc",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 374,
            "controller": "InventoryController",
            "handler": "createInboundDoc"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1118,
            "function": "invInboundCreateDoc(body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815244-run"
      }
    },
    "/school/inventory/inbound/docs": {
      "get": {
        "summary": "InventoryController.listInboundDocs",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:290；InventoryController.listInboundDocs\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listInboundDocs",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 290,
            "controller": "InventoryController",
            "handler": "listInboundDocs"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815245-run"
      }
    },
    "/school/inventory/inbound/export.csv": {
      "get": {
        "summary": "Export inbound document summary (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:296；InventoryController.exportInboundCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_exportInboundCsv",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 296,
            "controller": "InventoryController",
            "handler": "exportInboundCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815246-run"
      }
    },
    "/school/inventory/outbound": {
      "get": {
        "summary": "List outbound records",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:438；InventoryController.listOutbound\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listOutbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 438,
            "controller": "InventoryController",
            "handler": "listOutbound"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815247-run"
      },
      "post": {
        "summary": "Create outbound record",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:498；InventoryController.createOutbound\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1151；invOutboundCreate(body: { productId: string; qty: number; purpose?: string; by?: string; receiver?: string; canteenId?: number; date?: string; warehouseId?: string; schoolId?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createOutbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 498,
            "controller": "InventoryController",
            "handler": "createOutbound"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1151,
            "function": "invOutboundCreate(body: { productId: string; qty: number; purpose?: string; by?: string; receiver?: string; canteenId?: number; date?: string; warehouseId?: string; schoolId?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815248-run"
      }
    },
    "/school/inventory/outbound/batches": {
      "get": {
        "summary": "List outbound batches (recent)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:552；InventoryController.outboundBatches\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1131；invOutboundBatches(params: { schoolId?: string | number; productId: string | number; canteenId?: string | number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_outboundBatches",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string | number",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "1"
                },
                {
                  "type": "number",
                  "example": 1
                }
              ]
            }
          },
          {
            "name": "productId",
            "in": "query",
            "description": "来源：Query(productId)；源码类型：string | number",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "1"
                },
                {
                  "type": "number",
                  "example": 1
                }
              ]
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string | number",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "1"
                },
                {
                  "type": "number",
                  "example": 1
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 552,
            "controller": "InventoryController",
            "handler": "outboundBatches"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1131,
            "function": "invOutboundBatches(params: { schoolId?: string | number; productId: string | number; canteenId?: string | number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815249-run"
      }
    },
    "/school/inventory/outbound/export.csv": {
      "get": {
        "summary": "Export outbound records (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:446；InventoryController.exportOutboundCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_exportOutboundCsv",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 446,
            "controller": "InventoryController",
            "handler": "exportOutboundCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815250-run"
      }
    },
    "/school/inventory/products": {
      "get": {
        "summary": "List products",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:33；InventoryController.listProductsV2\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listProductsV2",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 33,
            "controller": "InventoryController",
            "handler": "listProductsV2"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815251-run"
      },
      "patch": {
        "summary": "Update product",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:44；InventoryController.updateProductV2\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1027；invProductUpdate(id: number, patchBody: any)；body=patchBody\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_updateProductV2",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 44,
            "controller": "InventoryController",
            "handler": "updateProductV2"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1027,
            "function": "invProductUpdate(id: number, patchBody: any)",
            "bodyExpression": "patchBody"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815252-run"
      },
      "post": {
        "summary": "Create product",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:38；InventoryController.createProductV2\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1026；invProductCreate(body: { schoolId?: string | number; name: string; unit: string; category?: string; spec?: string; lastPrice?: number })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createProductV2",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "unit": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "category": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "spec": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "lastPrice": {
                    "type": "number",
                    "example": 10
                  }
                },
                "required": [
                  "name",
                  "unit"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "name",
                  "unit",
                  "category",
                  "spec",
                  "lastPrice"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "name": "APIFOX_{{testBatch}}_测试数据",
                "unit": "APIFOX_{{testBatch}}",
                "category": "APIFOX_{{testBatch}}",
                "spec": "APIFOX_{{testBatch}}",
                "lastPrice": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 38,
            "controller": "InventoryController",
            "handler": "createProductV2"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1026,
            "function": "invProductCreate(body: { schoolId?: string | number; name: string; unit: string; category?: string; spec?: string; lastPrice?: number })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815253-run"
      }
    },
    "/school/inventory/stock": {
      "get": {
        "summary": "Stock summary",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:564；InventoryController.stock\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_stock",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 564,
            "controller": "InventoryController",
            "handler": "stock"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815254-run"
      }
    },
    "/school/inventory/stock/batches": {
      "get": {
        "summary": "List stock batches by product",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:575；InventoryController.stockBatches\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1158；invStockBatches(params: { schoolId?: string | number; near?: 'true' | 'false' })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_stockBatches",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "near",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：number | string",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "number",
                  "example": 1
                },
                {
                  "type": "string",
                  "example": "1"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 575,
            "controller": "InventoryController",
            "handler": "stockBatches"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1158,
            "function": "invStockBatches(params: { schoolId?: string | number; near?: 'true' | 'false' })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815255-run"
      }
    },
    "/school/inventory/stock/export.csv": {
      "get": {
        "summary": "Export stock batches (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:585；InventoryController.exportStockCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_exportStockCsv",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "near",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：number | string",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "number",
                  "example": 1
                },
                {
                  "type": "string",
                  "example": "1"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 585,
            "controller": "InventoryController",
            "handler": "exportStockCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815256-run"
      }
    },
    "/school/inventory/stream": {
      "get": {
        "summary": "InventoryController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:678；InventoryController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_stream",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 678,
            "controller": "InventoryController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815257-run"
      }
    },
    "/school/inventory/suppliers": {
      "get": {
        "summary": "List suppliers (paged, filterable)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:73；InventoryController.listSuppliers\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1044；invSuppliers(params: { q?: string; enabled?: 'true' | 'false'; expired?: 'true' | 'false'; expireStart?: string; expireEnd?: string; page?: number; pageSize?: number; schoolId?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listSuppliers",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "enabled",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "expired",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "expireStart",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "expireEnd",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedSuppliers"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 73,
            "controller": "InventoryController",
            "handler": "listSuppliers"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1044,
            "function": "invSuppliers(params: { q?: string; enabled?: 'true' | 'false'; expired?: 'true' | 'false'; expireStart?: string; expireEnd?: string; page?: number; pageSize?: number; schoolId?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815258-run"
      },
      "patch": {
        "summary": "Update supplier",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:114；InventoryController.updateSupplier\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1276；invSupplierUpdate(id: string, body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_updateSupplier",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 114,
            "controller": "InventoryController",
            "handler": "updateSupplier"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1276,
            "function": "invSupplierUpdate(id: string, body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815259-run"
      },
      "post": {
        "summary": "Create supplier",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:95；InventoryController.createSupplier\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1053；invSupplierCreate(body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createSupplier",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 95,
            "controller": "InventoryController",
            "handler": "createSupplier"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1053,
            "function": "invSupplierCreate(body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815260-run"
      }
    },
    "/school/inventory/suppliers/{id}/certificates/export.csv": {
      "get": {
        "summary": "Export supplier certificates CSV",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:148；InventoryController.exportSupplierCerts\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_exportSupplierCerts",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 148,
            "controller": "InventoryController",
            "handler": "exportSupplierCerts"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815261-run"
      }
    },
    "/school/inventory/suppliers/detail": {
      "get": {
        "summary": "Supplier detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:90；InventoryController.getSupplier\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1278；invSupplierDetail(id: string | number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_getSupplier",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 90,
            "controller": "InventoryController",
            "handler": "getSupplier"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1278,
            "function": "invSupplierDetail(id: string | number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815262-run"
      }
    },
    "/school/inventory/suppliers/export.csv": {
      "get": {
        "summary": "Export suppliers CSV",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:173；InventoryController.exportCsv\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1281；invSuppliersExportCsv()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_exportCsv",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 173,
            "controller": "InventoryController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1281,
            "function": "invSuppliersExportCsv()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815263-run"
      }
    },
    "/school/inventory/suppliers/summary": {
      "get": {
        "summary": "Supplier summary",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:168；InventoryController.summary\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1307；invSupplierSummary(id: string | number)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_summary",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 168,
            "controller": "InventoryController",
            "handler": "summary"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1307,
            "function": "invSupplierSummary(id: string | number)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815264-run"
      }
    },
    "/school/inventory/tickets": {
      "get": {
        "summary": "List purchase tickets",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:650；InventoryController.listTickets\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listTickets",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 650,
            "controller": "InventoryController",
            "handler": "listTickets"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815265-run"
      },
      "post": {
        "summary": "Create purchase ticket",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:656；InventoryController.createTicket\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createTicket",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "productId": {
                    "type": "string",
                    "example": "1"
                  },
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "productId",
                  "type"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "productId",
                  "type",
                  "imageUrl"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "productId": "1",
                "type": "APIFOX_{{testBatch}}",
                "imageUrl": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 656,
            "controller": "InventoryController",
            "handler": "createTicket"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815266-run"
      }
    },
    "/school/inventory/warehouses": {
      "get": {
        "summary": "List warehouses",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:245；InventoryController.listWarehouses\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_listWarehouses",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 245,
            "controller": "InventoryController",
            "handler": "listWarehouses"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815267-run"
      },
      "patch": {
        "summary": "Update warehouse",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:258；InventoryController.updateWarehouse\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1074；invWarehouseUpdate(id: string, body: { name?: string; location?: string; capacity?: number })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_updateWarehouse",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "location": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "capacity": {
                    "type": "number",
                    "example": 10
                  }
                },
                "x-apifox-orders": [
                  "name",
                  "location",
                  "capacity"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "location": "APIFOX_{{testBatch}}",
                "capacity": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 258,
            "controller": "InventoryController",
            "handler": "updateWarehouse"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1074,
            "function": "invWarehouseUpdate(id: string, body: { name?: string; location?: string; capacity?: number })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815268-run"
      },
      "post": {
        "summary": "Create warehouse",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:250；InventoryController.createWarehouse\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1064；invWarehouseCreate(body: { name: string; location?: string; capacity?: number; schoolId?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_createWarehouse",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "location": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "capacity": {
                    "type": "number",
                    "example": 10
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "name",
                  "location",
                  "capacity"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "name": "APIFOX_{{testBatch}}_测试数据",
                "location": "APIFOX_{{testBatch}}",
                "capacity": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 250,
            "controller": "InventoryController",
            "handler": "createWarehouse"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1064,
            "function": "invWarehouseCreate(body: { name: string; location?: string; capacity?: number; schoolId?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815269-run"
      }
    },
    "/school/inventory/inbound/scale": {
      "post": {
        "summary": "Scale inbound (+/- quantity)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:421；InventoryController.scaleInbound\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_scaleInbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "productId": {
                    "type": "string",
                    "example": "1"
                  },
                  "weight": {
                    "type": "number",
                    "example": 10
                  },
                  "supplierId": {
                    "type": "string",
                    "example": "1"
                  },
                  "warehouseId": {
                    "type": "string",
                    "example": "1"
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "productId",
                  "weight"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "productId",
                  "weight",
                  "supplierId",
                  "warehouseId",
                  "imageUrl"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "productId": "1",
                "weight": 10,
                "supplierId": "1",
                "warehouseId": "1",
                "imageUrl": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 421,
            "controller": "InventoryController",
            "handler": "scaleInbound"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815270-run"
      }
    },
    "/school/inventory/outbound/clear": {
      "post": {
        "summary": "Clear outbound batch",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:538；InventoryController.clearOutbound\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_clearOutbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  }
                },
                "x-apifox-orders": [
                  "schoolId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 538,
            "controller": "InventoryController",
            "handler": "clearOutbound"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815271-run"
      }
    },
    "/school/inventory/outbound/scale": {
      "post": {
        "summary": "Scale outbound (+/- quantity)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:518；InventoryController.scaleOutbound\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_scaleOutbound",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "productId": {
                    "type": "string",
                    "example": "1"
                  },
                  "weight": {
                    "type": "number",
                    "example": 10
                  },
                  "purpose": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "by": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "receiver": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  },
                  "warehouseId": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "productId",
                  "weight"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "productId",
                  "weight",
                  "purpose",
                  "by",
                  "receiver",
                  "canteenId",
                  "warehouseId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "productId": "1",
                "weight": 10,
                "purpose": "APIFOX_{{testBatch}}",
                "by": "APIFOX_{{testBatch}}",
                "receiver": "APIFOX_{{testBatch}}",
                "canteenId": 1,
                "warehouseId": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 518,
            "controller": "InventoryController",
            "handler": "scaleOutbound"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815272-run"
      }
    },
    "/school/inventory/products/delete": {
      "post": {
        "summary": "Delete product",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:62；InventoryController.deleteProductV2\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1030；invProductDelete(id: number)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_deleteProductV2",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 62,
            "controller": "InventoryController",
            "handler": "deleteProductV2"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1030,
            "function": "invProductDelete(id: number)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815273-run"
      }
    },
    "/school/inventory/products/import/cloud": {
      "post": {
        "summary": "InventoryController.importCloudV2",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:53；InventoryController.importCloudV2\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_importCloudV2",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 53,
            "controller": "InventoryController",
            "handler": "importCloudV2"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815274-run"
      }
    },
    "/school/inventory/products/import/template": {
      "post": {
        "summary": "Import products from template",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:56；InventoryController.importTemplateV2\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1029；invImportTemplate(schoolId: string | number | undefined, items: Array<{ name: string; unit: string; category?: string; spec?: string; lastPrice?: number }>)；body={ schoolId, items }\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_importTemplateV2",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      }
                    ]
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}_测试数据"
                        },
                        "unit": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        },
                        "category": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        },
                        "spec": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        },
                        "lastPrice": {
                          "type": "number",
                          "example": 10
                        }
                      },
                      "required": [
                        "name",
                        "unit"
                      ],
                      "x-apifox-orders": [
                        "name",
                        "unit",
                        "category",
                        "spec",
                        "lastPrice"
                      ],
                      "x-apifox-ignore-properties": []
                    }
                  }
                },
                "required": [
                  "items"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "items"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "items": [
                  {
                    "name": "APIFOX_{{testBatch}}_测试数据",
                    "unit": "APIFOX_{{testBatch}}",
                    "category": "APIFOX_{{testBatch}}",
                    "spec": "APIFOX_{{testBatch}}",
                    "lastPrice": 10
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 56,
            "controller": "InventoryController",
            "handler": "importTemplateV2"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1029,
            "function": "invImportTemplate(schoolId: string | number | undefined, items: Array<{ name: string; unit: string; category?: string; spec?: string; lastPrice?: number }>)",
            "bodyExpression": "{ schoolId, items }"
          }
        ],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815275-run"
      }
    },
    "/school/inventory/stock/stocktake": {
      "post": {
        "summary": "Stocktake one product",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:569；InventoryController.stocktake\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1181；invStocktake(body: { productId: string; qty: number; schoolId?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_stocktake",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "productId": {
                    "type": "string",
                    "example": "1"
                  },
                  "qty": {
                    "type": "number",
                    "example": 10
                  }
                },
                "required": [
                  "productId",
                  "qty"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "productId",
                  "qty"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "productId": "1",
                "qty": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 569,
            "controller": "InventoryController",
            "handler": "stocktake"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1181,
            "function": "invStocktake(body: { productId: string; qty: number; schoolId?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815276-run"
      }
    },
    "/school/inventory/stock/stocktake-batch": {
      "post": {
        "summary": "Batch stocktake multiple products",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:640；InventoryController.stocktakeBatch\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1180；invStocktakeBatch(body: { schoolId?: string | number; inboundId: number | string; actualQty: number; operator?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_stocktakeBatch",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "inboundId": {
                    "type": "number",
                    "example": 1
                  },
                  "actualQty": {
                    "type": "number",
                    "example": 10
                  },
                  "operator": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "inboundId",
                  "actualQty"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "inboundId",
                  "actualQty",
                  "operator"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "inboundId": 1,
                "actualQty": 10,
                "operator": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 640,
            "controller": "InventoryController",
            "handler": "stocktakeBatch"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1180,
            "function": "invStocktakeBatch(body: { schoolId?: string | number; inboundId: number | string; actualQty: number; operator?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815277-run"
      }
    },
    "/school/inventory/suppliers/{id}/certificates": {
      "post": {
        "summary": "Add supplier certificate",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:141；InventoryController.addCert\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1304；invSupplierAddCert(id: string | number, body: { type: string; number?: string; authority?: string; expireAt?: string; imageUrl?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_addCert",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "number": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "authority": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "expireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "type"
                ],
                "x-apifox-orders": [
                  "type",
                  "number",
                  "authority",
                  "expireAt",
                  "imageUrl"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "type": "APIFOX_{{testBatch}}",
                "number": "APIFOX_{{testBatch}}_001",
                "authority": "APIFOX_{{testBatch}}",
                "expireAt": "2026-09-24 10:00:00",
                "imageUrl": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 141,
            "controller": "InventoryController",
            "handler": "addCert"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1304,
            "function": "invSupplierAddCert(id: string | number, body: { type: string; number?: string; authority?: string; expireAt?: string; imageUrl?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815278-run"
      }
    },
    "/school/inventory/suppliers/{id}/certificates/import": {
      "post": {
        "summary": "Import supplier certificates",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:162；InventoryController.importSupplierCerts\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_importSupplierCerts",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 162,
            "controller": "InventoryController",
            "handler": "importSupplierCerts"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815279-run"
      }
    },
    "/school/inventory/suppliers/delete": {
      "post": {
        "summary": "Delete supplier",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:123；InventoryController.deleteSupplier\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1277；invSupplierDelete(id: string)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_deleteSupplier",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 123,
            "controller": "InventoryController",
            "handler": "deleteSupplier"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1277,
            "function": "invSupplierDelete(id: string)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815280-run"
      }
    },
    "/school/inventory/suppliers/enable/batch": {
      "post": {
        "summary": "Batch enable/disable suppliers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:132；InventoryController.batchEnable\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1279；invSuppliersBatchEnable(ids: string[], enabled: boolean)；body={ ids, enabled }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_batchEnable",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "ids",
                  "enabled"
                ],
                "x-apifox-orders": [
                  "ids",
                  "enabled"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "ids": [
                  "APIFOX_{{testBatch}}"
                ],
                "enabled": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 132,
            "controller": "InventoryController",
            "handler": "batchEnable"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1279,
            "function": "invSuppliersBatchEnable(ids: string[], enabled: boolean)",
            "bodyExpression": "{ ids, enabled }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815281-run"
      }
    },
    "/school/inventory/suppliers/import": {
      "post": {
        "summary": "InventoryController.importSuppliers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:210；InventoryController.importSuppliers\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1293；invSuppliersImport(payload: { items: any[] } | string)；body=isCsv ? (payload as string) : payload\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_importSuppliers",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 210,
            "controller": "InventoryController",
            "handler": "importSuppliers"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1293,
            "function": "invSuppliersImport(payload: { items: any[] } | string)",
            "bodyExpression": "isCsv ? (payload as string) : payload"
          }
        ],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815282-run"
      }
    },
    "/school/inventory/warehouses/delete": {
      "post": {
        "summary": "Delete warehouse",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/inventory/inventory.controller.ts:272；InventoryController.deleteWarehouse\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1076；invWarehouseDelete(id: string)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "InventoryController_deleteWarehouse",
        "tags": [
          "学校端/Inventory"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Inventory"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/inventory/inventory.controller.ts",
            "line": 272,
            "controller": "InventoryController",
            "handler": "deleteWarehouse"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1076,
            "function": "invWarehouseDelete(id: string)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Inventory",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815283-run"
      }
    },
    "/school/messages/rectify": {
      "get": {
        "summary": "SchoolMessagesController.schoolRectifyList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-messages.controller.ts:38；SchoolMessagesController.schoolRectifyList\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1651；schoolRectifyMessages(params: { schoolId?: string; start?: string; end?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolMessagesController_schoolRectifyList",
        "tags": [
          "学校端/School Messages"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School Messages"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-messages.controller.ts",
            "line": 38,
            "controller": "SchoolMessagesController",
            "handler": "schoolRectifyList"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1651,
            "function": "schoolRectifyMessages(params: { schoolId?: string; start?: string; end?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School Messages",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815284-run"
      }
    },
    "/school/morning-checks/stream": {
      "get": {
        "summary": "MorningCheckApiAdapterController.sse",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-mc.adapter.controller.ts:25；MorningCheckApiAdapterController.sse\n- services/gateway-service/src/modules/morning-check.controller.ts:296；MorningCheckController.sse\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "MorningCheckController_sse",
        "tags": [
          "学校端/MorningCheckApiAdapter"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Morning Checks"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-mc.adapter.controller.ts",
            "line": 25,
            "controller": "MorningCheckApiAdapterController",
            "handler": "sse"
          },
          {
            "file": "services/gateway-service/src/modules/morning-check.controller.ts",
            "line": 296,
            "controller": "MorningCheckController",
            "handler": "sse"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/MorningCheckApiAdapter",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815286-run"
      }
    },
    "/school/personnel": {
      "get": {
        "summary": "PersonnelController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/personnel.controller.ts:70；PersonnelController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:767；personnelList(params: { schoolId?: number; name?: string; phone?: string; canteenId?: number; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PersonnelController_list",
        "tags": [
          "学校端/Personnel"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_测试数据"
            }
          },
          {
            "name": "phone",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "13800138000"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedPersonnel"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Personnel"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/personnel.controller.ts",
            "line": 70,
            "controller": "PersonnelController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 767,
            "function": "personnelList(params: { schoolId?: number; name?: string; phone?: string; canteenId?: number; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Personnel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815287-run"
      },
      "patch": {
        "summary": "PersonnelController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/personnel.controller.ts:225；PersonnelController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1273；personnelUpdate(id: number, patchBody: any)；body=patchBody\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PersonnelController_update",
        "tags": [
          "学校端/Personnel"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "gender": {
                    "type": "string",
                    "enum": [
                      "男",
                      "女"
                    ],
                    "example": "男"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "jobTitle": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "healthCertNo": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "healthCertAuthority": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "healthCertIssueAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "healthCertExpireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "healthCertFrontUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "healthCertBackUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "x-apifox-orders": [
                  "canteenId",
                  "name",
                  "gender",
                  "phone",
                  "jobTitle",
                  "healthCertNo",
                  "healthCertAuthority",
                  "healthCertIssueAt",
                  "healthCertExpireAt",
                  "healthCertFrontUrl",
                  "healthCertBackUrl",
                  "enabled"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "canteenId": 1,
                "name": "APIFOX_{{testBatch}}_测试数据",
                "gender": "男",
                "phone": "13800138000",
                "jobTitle": "APIFOX_{{testBatch}}_测试数据",
                "healthCertNo": "APIFOX_{{testBatch}}_001",
                "healthCertAuthority": "APIFOX_{{testBatch}}",
                "healthCertIssueAt": "2026-09-24 10:00:00",
                "healthCertExpireAt": "2026-09-24 10:00:00",
                "healthCertFrontUrl": "https://example.test/apifox-autotest.jpg",
                "healthCertBackUrl": "https://example.test/apifox-autotest.jpg",
                "enabled": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Personnel"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/personnel.controller.ts",
            "line": 225,
            "controller": "PersonnelController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1273,
            "function": "personnelUpdate(id: number, patchBody: any)",
            "bodyExpression": "patchBody"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Personnel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815288-run"
      },
      "post": {
        "summary": "PersonnelController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/personnel.controller.ts:136；PersonnelController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1272；personnelCreate(body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PersonnelController_create",
        "tags": [
          "学校端/Personnel"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "canteenId": {
                    "type": "number",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "gender": {
                    "type": "string",
                    "enum": [
                      "男",
                      "女"
                    ],
                    "example": "男"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "jobTitle": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "healthCertNo": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "healthCertAuthority": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "healthCertIssueAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "healthCertExpireAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "healthCertFrontUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "healthCertBackUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "idCardNumber": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "accessCard": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "idCardFrontUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "facePhotoUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "name",
                  "gender",
                  "phone",
                  "jobTitle",
                  "healthCertNo",
                  "healthCertAuthority",
                  "healthCertIssueAt",
                  "healthCertExpireAt",
                  "healthCertFrontUrl",
                  "healthCertBackUrl",
                  "enabled",
                  "idCardNumber",
                  "accessCard",
                  "idCardFrontUrl",
                  "facePhotoUrl"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "name": "APIFOX_{{testBatch}}_测试数据",
                "gender": "男",
                "phone": "13800138000",
                "jobTitle": "APIFOX_{{testBatch}}_测试数据",
                "healthCertNo": "APIFOX_{{testBatch}}_001",
                "healthCertAuthority": "APIFOX_{{testBatch}}",
                "healthCertIssueAt": "2026-09-24 10:00:00",
                "healthCertExpireAt": "2026-09-24 10:00:00",
                "healthCertFrontUrl": "https://example.test/apifox-autotest.jpg",
                "healthCertBackUrl": "https://example.test/apifox-autotest.jpg",
                "enabled": true,
                "idCardNumber": "APIFOX_{{testBatch}}_001",
                "accessCard": "APIFOX_{{testBatch}}",
                "idCardFrontUrl": "https://example.test/apifox-autotest.jpg",
                "facePhotoUrl": "https://example.test/apifox-autotest.jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Personnel"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/personnel.controller.ts",
            "line": 136,
            "controller": "PersonnelController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1272,
            "function": "personnelCreate(body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Personnel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815289-run"
      }
    },
    "/school/personnel/detail": {
      "get": {
        "summary": "PersonnelController.detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/personnel.controller.ts:296；PersonnelController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1275；personnelDetail(id: number | string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PersonnelController_detail",
        "tags": [
          "学校端/Personnel"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Personnel"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/personnel.controller.ts",
            "line": 296,
            "controller": "PersonnelController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1275,
            "function": "personnelDetail(id: number | string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Personnel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815290-run"
      }
    },
    "/school/personnel/delete": {
      "post": {
        "summary": "PersonnelController.remove",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/personnel.controller.ts:285；PersonnelController.remove\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1274；personnelDelete(id: number)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PersonnelController_remove",
        "tags": [
          "学校端/Personnel"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Personnel"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/personnel.controller.ts",
            "line": 285,
            "controller": "PersonnelController",
            "handler": "remove"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1274,
            "function": "personnelDelete(id: number)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Personnel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815291-run"
      }
    },
    "/school/pesticide/records": {
      "get": {
        "summary": "List pesticide test records",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide.controller.ts:25；PesticideController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:780；pesticideList(params: { q?: string; result?: '合格' | '不合格'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideController_list",
        "tags": [
          "学校端/Pesticide"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "result",
            "in": "query",
            "description": "来源：Query(result)；源码类型：PesticideResult",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：PesticideResult",
              "x-source-type": "PesticideResult",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedPesticideRecords"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Pesticide"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide.controller.ts",
            "line": 25,
            "controller": "PesticideController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 780,
            "function": "pesticideList(params: { q?: string; result?: '合格' | '不合格'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Pesticide",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815292-run"
      },
      "post": {
        "summary": "Create pesticide test record",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide.controller.ts:96；PesticideController.create\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:822；pesticideCreate(body: { sample: string; device: string; result: '合格' | '不合格'; imageUrl?: string; remark?: string; schoolId?: number; canteenId?: number; jiancedidian?: string; lianxidianhua?: string; tester?: string; value?: number | string; at?: string; // 检测时间（可选 ISO） })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideController_create",
        "tags": [
          "学校端/Pesticide"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Pesticide"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide.controller.ts",
            "line": 96,
            "controller": "PesticideController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 822,
            "function": "pesticideCreate(body: { sample: string; device: string; result: '合格' | '不合格'; imageUrl?: string; remark?: string; schoolId?: number; canteenId?: number; jiancedidian?: string; lianxidianhua?: string; tester?: string; value?: number | string; at?: string; // 检测时间（可选 ISO） })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Pesticide",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815293-run"
      }
    },
    "/school/pesticide/records/export.csv": {
      "get": {
        "summary": "Export pesticide rapid-test records (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide.controller.ts:44；PesticideController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideController_exportCsv",
        "tags": [
          "学校端/Pesticide"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "result",
            "in": "query",
            "description": "来源：Query(result)；源码类型：PesticideResult",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：PesticideResult",
              "x-source-type": "PesticideResult",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Pesticide"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide.controller.ts",
            "line": 44,
            "controller": "PesticideController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Pesticide",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815294-run"
      }
    },
    "/school/pesticide/stream": {
      "get": {
        "summary": "PesticideController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide.controller.ts:146；PesticideController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideController_stream",
        "tags": [
          "学校端/Pesticide"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Pesticide"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide.controller.ts",
            "line": 146,
            "controller": "PesticideController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Pesticide",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815295-run"
      }
    },
    "/school/pesticide/records/{id}/measure": {
      "patch": {
        "summary": "PesticideController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide.controller.ts:136；PesticideController.setMeasure\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:986；pesticideSetMeasure(id: number, measure: string)；body={ measure }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideController_setMeasure",
        "tags": [
          "学校端/Pesticide"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Pesticide"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide.controller.ts",
            "line": 136,
            "controller": "PesticideController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 986,
            "function": "pesticideSetMeasure(id: number, measure: string)",
            "bodyExpression": "{ measure }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Pesticide",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815296-run"
      }
    },
    "/school/pesticide/device/callback": {
      "post": {
        "summary": "PesticideController.device",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide.controller.ts:120；PesticideController.device\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:985；pesticideDeviceCallback(body: { sample: string; device: string; result: '合格' | '不合格'; remark?: string; schoolId?: number; })；body=body\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideController_device",
        "tags": [
          "学校端/Pesticide"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "sample": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "device": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "result": {
                    "type": "object",
                    "description": "源码类型：PesticideResult",
                    "x-source-type": "PesticideResult",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "sample",
                  "device",
                  "result"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "sample",
                  "device",
                  "result",
                  "imageUrl",
                  "remark"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "sample": "APIFOX_{{testBatch}}",
                "device": "APIFOX_{{testBatch}}",
                "result": {},
                "imageUrl": "https://example.test/apifox-autotest.jpg",
                "remark": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Pesticide"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide.controller.ts",
            "line": 120,
            "controller": "PesticideController",
            "handler": "device"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 985,
            "function": "pesticideDeviceCallback(body: { sample: string; device: string; result: '合格' | '不合格'; remark?: string; schoolId?: number; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Pesticide",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815297-run"
      }
    },
    "/school/public/config": {
      "get": {
        "summary": "PublicConfigController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/public-config.controller.ts:12；PublicConfigController.get\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PublicConfigController_get",
        "tags": [
          "学校端/Public Config"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicConfigDTO"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Public Config"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/public-config.controller.ts",
            "line": 12,
            "controller": "PublicConfigController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Public Config",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815298-run"
      },
      "post": {
        "summary": "PublicConfigController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/public-config.controller.ts:18；PublicConfigController.update\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1353；publicConfigUpdate(cfg: any & { schoolId?: string })；body=cfg\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PublicConfigController_update",
        "tags": [
          "学校端/Public Config"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Public Config"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/public-config.controller.ts",
            "line": 18,
            "controller": "PublicConfigController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1353,
            "function": "publicConfigUpdate(cfg: any & { schoolId?: string })",
            "bodyExpression": "cfg"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Public Config",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815299-run"
      }
    },
    "/school/public/config/audit": {
      "get": {
        "summary": "PublicConfigController.audit",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/public-config.controller.ts:37；PublicConfigController.audit\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PublicConfigController_audit",
        "tags": [
          "学校端/Public Config"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Public Config"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/public-config.controller.ts",
            "line": 37,
            "controller": "PublicConfigController",
            "handler": "audit"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Public Config",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815300-run"
      }
    },
    "/school/public/config/feedback/qr": {
      "get": {
        "summary": "PublicConfigController.feedbackQr",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/public-config.controller.ts:43；PublicConfigController.feedbackQr\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1356；publicFeedbackQr(params: { schoolId?: string; canteenId?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PublicConfigController_feedbackQr",
        "tags": [
          "学校端/Public Config"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Feedback QR for mobile Sunshine page",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": []
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Public Config"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/public-config.controller.ts",
            "line": 43,
            "controller": "PublicConfigController",
            "handler": "feedbackQr"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1356,
            "function": "publicFeedbackQr(params: { schoolId?: string; canteenId?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Public Config",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815301-run"
      }
    },
    "/school/public/feedback": {
      "get": {
        "summary": "PublicFeedbackController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/public-feedback.controller.ts:40；PublicFeedbackController.list\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:478；publicFeedbackList(params: { schoolId: number | string; canteenId?: number | string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PublicFeedbackController_list",
        "tags": [
          "学校端/Public Feedback"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Public Feedback"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/public-feedback.controller.ts",
            "line": 40,
            "controller": "PublicFeedbackController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 478,
            "function": "publicFeedbackList(params: { schoolId: number | string; canteenId?: number | string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Public Feedback",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815302-run"
      }
    },
    "/school/risk/catalog": {
      "get": {
        "summary": "RiskController.catalog",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:27；RiskController.catalog\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1394；riskCatalog()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_catalog",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 27,
            "controller": "RiskController",
            "handler": "catalog"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1394,
            "function": "riskCatalog()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815303-run"
      },
      "patch": {
        "summary": "RiskController.updateCatalog",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:35；RiskController.updateCatalog\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1519；riskCatalogUpdate(id: string, body: any)；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_updateCatalog",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 35,
            "controller": "RiskController",
            "handler": "updateCatalog"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1519,
            "function": "riskCatalogUpdate(id: string, body: any)",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815304-run"
      },
      "post": {
        "summary": "RiskController.createCatalog",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:30；RiskController.createCatalog\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1401；riskCatalogCreate(body: { category?: string; title: string; level: '低' | '中' | '高'; desc?: string; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_createCatalog",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "category": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "level": {},
                  "desc": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "title",
                  "level"
                ],
                "x-apifox-orders": [
                  "category",
                  "title",
                  "level",
                  "desc"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "category": "APIFOX_{{testBatch}}",
                "title": "APIFOX_{{testBatch}}_测试数据",
                "level": "APIFOX_{{testBatch}}",
                "desc": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 30,
            "controller": "RiskController",
            "handler": "createCatalog"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1401,
            "function": "riskCatalogCreate(body: { category?: string; title: string; level: '低' | '中' | '高'; desc?: string; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815305-run"
      }
    },
    "/school/risk/catalog/export.csv": {
      "get": {
        "summary": "RiskController.catalogExportCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:42；RiskController.catalogExportCsv\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1640；riskCatalogExportCsv()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_catalogExportCsv",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 42,
            "controller": "RiskController",
            "handler": "catalogExportCsv"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1640,
            "function": "riskCatalogExportCsv()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815306-run"
      }
    },
    "/school/risk/reports": {
      "get": {
        "summary": "RiskController.reports",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:55；RiskController.reports\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1548；riskReports(params: { schoolId?: string; status?: '待处理' | '整改中' | '已整改'; start?: string; end?: string; location?: string; object?: string; page?: number; pageSize?: number; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_reports",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "location",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "object",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：ReportStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：ReportStatus",
              "x-source-type": "ReportStatus",
              "x-apifox-orders": []
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 55,
            "controller": "RiskController",
            "handler": "reports"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1548,
            "function": "riskReports(params: { schoolId?: string; status?: '待处理' | '整改中' | '已整改'; start?: string; end?: string; location?: string; object?: string; page?: number; pageSize?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815307-run"
      },
      "post": {
        "summary": "RiskController.createReport",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:66；RiskController.createReport\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1559；riskReportCreate(body: { schoolId?: string; location: string; object: string; desc: string; images?: string[]; riskId?: string; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_createReport",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "location": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "object": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "desc": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "riskId": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "location",
                  "object",
                  "desc"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "location",
                  "object",
                  "desc",
                  "images",
                  "riskId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "location": "APIFOX_{{testBatch}}",
                "object": "APIFOX_{{testBatch}}",
                "desc": "APIFOX_{{testBatch}}",
                "images": [
                  "APIFOX_{{testBatch}}"
                ],
                "riskId": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 66,
            "controller": "RiskController",
            "handler": "createReport"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1559,
            "function": "riskReportCreate(body: { schoolId?: string; location: string; object: string; desc: string; images?: string[]; riskId?: string; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815308-run"
      }
    },
    "/school/risk/reports/detail": {
      "get": {
        "summary": "RiskController.reportDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:79；RiskController.reportDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1648；riskReportDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_reportDetail",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 79,
            "controller": "RiskController",
            "handler": "reportDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1648,
            "function": "riskReportDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815309-run"
      }
    },
    "/school/risk/reports/export.csv": {
      "get": {
        "summary": "RiskController.reportsExport",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:89；RiskController.reportsExport\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_reportsExport",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "location",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "object",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：ReportStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：ReportStatus",
              "x-source-type": "ReportStatus",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 89,
            "controller": "RiskController",
            "handler": "reportsExport"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815310-run"
      }
    },
    "/school/risk/tasks": {
      "get": {
        "summary": "RiskController.tasks",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:137；RiskController.tasks\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1595；riskTasks(params: { schoolId?: string; assignee?: string; status?: '待处理' | '进行中' | '已完成'; start?: string; end?: string; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_tasks",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "assignee",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：TaskStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：TaskStatus",
              "x-source-type": "TaskStatus",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 137,
            "controller": "RiskController",
            "handler": "tasks"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1595,
            "function": "riskTasks(params: { schoolId?: string; assignee?: string; status?: '待处理' | '进行中' | '已完成'; start?: string; end?: string; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815311-run"
      },
      "post": {
        "summary": "RiskController.createTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:147；RiskController.createTask\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1606；riskTaskCreate(body: { assignee: string; location: string; object: string; riskId?: string; dueAt?: string; note?: string; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_createTask",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {
                        "type": "number",
                        "example": 1
                      }
                    ]
                  },
                  "assignee": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "location": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "object": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "riskId": {
                    "type": "string",
                    "example": "1"
                  },
                  "dueAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "note": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  }
                },
                "required": [
                  "assignee",
                  "location",
                  "object"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "assignee",
                  "location",
                  "object",
                  "riskId",
                  "dueAt",
                  "note"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "assignee": "APIFOX_{{testBatch}}",
                "location": "APIFOX_{{testBatch}}",
                "object": "APIFOX_{{testBatch}}",
                "riskId": "1",
                "dueAt": "2026-09-24 10:00:00",
                "note": "APIFOX_{{testBatch}}_001"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 147,
            "controller": "RiskController",
            "handler": "createTask"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1606,
            "function": "riskTaskCreate(body: { assignee: string; location: string; object: string; riskId?: string; dueAt?: string; note?: string; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815312-run"
      }
    },
    "/school/risk/tasks/detail": {
      "get": {
        "summary": "RiskController.taskDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:161；RiskController.taskDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1646；riskTaskDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_taskDetail",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 161,
            "controller": "RiskController",
            "handler": "taskDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1646,
            "function": "riskTaskDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815313-run"
      }
    },
    "/school/risk/tasks/export.csv": {
      "get": {
        "summary": "RiskController.tasksExport",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:171；RiskController.tasksExport\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_tasksExport",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "assignee",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：TaskStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：TaskStatus",
              "x-source-type": "TaskStatus",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 171,
            "controller": "RiskController",
            "handler": "tasksExport"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815314-run"
      }
    },
    "/school/risk/reports/status": {
      "patch": {
        "summary": "RiskController.setReportStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:82；RiskController.setReportStatus\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1571；riskReportSetStatus(id: string, body: { status: '待处理' | '整改中' | '已整改'; measures?: string; rectifiedBy?: string })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_setReportStatus",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "object",
                    "description": "源码类型：ReportStatus",
                    "x-source-type": "ReportStatus",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "measures": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "rectifiedBy": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "status"
                ],
                "x-apifox-orders": [
                  "status",
                  "measures",
                  "rectifiedBy"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": {},
                "measures": "APIFOX_{{testBatch}}",
                "rectifiedBy": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 82,
            "controller": "RiskController",
            "handler": "setReportStatus"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1571,
            "function": "riskReportSetStatus(id: string, body: { status: '待处理' | '整改中' | '已整改'; measures?: string; rectifiedBy?: string })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815315-run"
      }
    },
    "/school/risk/tasks/status": {
      "patch": {
        "summary": "RiskController.setTaskStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:164；RiskController.setTaskStatus\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1615；riskTaskSetStatus(id: string, status: '待处理' | '进行中' | '已完成')；body=JSON.stringify({ status })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_setTaskStatus",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "object",
                    "description": "源码类型：TaskStatus",
                    "x-source-type": "TaskStatus",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  }
                },
                "required": [
                  "status"
                ],
                "x-apifox-orders": [
                  "status"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": {}
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 164,
            "controller": "RiskController",
            "handler": "setTaskStatus"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1615,
            "function": "riskTaskSetStatus(id: string, status: '待处理' | '进行中' | '已完成')",
            "bodyExpression": "JSON.stringify({ status })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815316-run"
      }
    },
    "/school/risk/catalog/delete": {
      "post": {
        "summary": "RiskController.deleteCatalog",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:38；RiskController.deleteCatalog\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1528；riskCatalogDelete(id: string)；body=JSON.stringify({ id })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_deleteCatalog",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 38,
            "controller": "RiskController",
            "handler": "deleteCatalog"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1528,
            "function": "riskCatalogDelete(id: string)",
            "bodyExpression": "JSON.stringify({ id })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815317-run"
      }
    },
    "/school/risk/tasks/submit": {
      "post": {
        "summary": "RiskController.submitTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/risk.controller.ts:167；RiskController.submitTask\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1624；riskTaskSubmit(id: string, result: string, images: string[])；body=JSON.stringify({ id, result, images })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RiskController_submitTask",
        "tags": [
          "学校端/Risk"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "result": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "id",
                  "result"
                ],
                "x-apifox-orders": [
                  "id",
                  "result",
                  "images"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "result": "APIFOX_{{testBatch}}",
                "images": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/risk.controller.ts",
            "line": 167,
            "controller": "RiskController",
            "handler": "submitTask"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1624,
            "function": "riskTaskSubmit(id: string, result: string, images: string[])",
            "bodyExpression": "JSON.stringify({ id, result, images })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Risk",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815318-run"
      }
    },
    "/school/sampling/records": {
      "get": {
        "summary": "SamplingController.listRecords",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:28；SamplingController.listRecords\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:622；samplingList(params: { sample?: string; status?: string; exception?: 'true' | 'false'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_listRecords",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "sample",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "exception",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：SampleStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：SampleStatus",
              "x-source-type": "SampleStatus",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedSamplingRecords"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Sampling"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 28,
            "controller": "SamplingController",
            "handler": "listRecords"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 622,
            "function": "samplingList(params: { sample?: string; status?: string; exception?: 'true' | 'false'; start?: string; end?: string; page?: number; pageSize?: number; schoolId?: number; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815319-run"
      },
      "post": {
        "summary": "SamplingController.createRecord",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:56；SamplingController.createRecord\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:661；samplingCreate(body: { sample: string; weight: number; imageUrl?: string; duration: number; by: string; cabinet?: string; schoolId?: number; canteenId?: number; cookTime?: string; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_createRecord",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sampling"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 56,
            "controller": "SamplingController",
            "handler": "createRecord"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 661,
            "function": "samplingCreate(body: { sample: string; weight: number; imageUrl?: string; duration: number; by: string; cabinet?: string; schoolId?: number; canteenId?: number; cookTime?: string; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815320-run"
      }
    },
    "/school/sampling/records/export.csv": {
      "get": {
        "summary": "Export sampling records (CSV)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:128；SamplingController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_exportCsv",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "sample",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "exception",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：SampleStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：SampleStatus",
              "x-source-type": "SampleStatus",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sampling"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 128,
            "controller": "SamplingController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815321-run"
      }
    },
    "/school/sampling/stream": {
      "get": {
        "summary": "SamplingController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:182；SamplingController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_stream",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sampling"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 182,
            "controller": "SamplingController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815322-run"
      }
    },
    "/school/sampling/records/{id}/measure": {
      "patch": {
        "summary": "SamplingController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:98；SamplingController.setMeasure\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:662；samplingSetMeasure(id: number, measure: string)；body={ measure }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_setMeasure",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "x-apifox-ignore-properties": [],
                "x-apifox-orders": []
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sampling"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 98,
            "controller": "SamplingController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 662,
            "function": "samplingSetMeasure(id: number, measure: string)",
            "bodyExpression": "{ measure }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815323-run"
      }
    },
    "/school/sampling/records/{id}/status": {
      "patch": {
        "summary": "SamplingController.setStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:108；SamplingController.setStatus\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1069；samplingUpdateStatus(id: number, body: { status?: 'ACTIVE' | 'CLEARED'; quyangUserName?: string; takeTime?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_setStatus",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "来源：Param(id)；源码类型：number",
            "required": true,
            "example": "",
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE",
                      "CLEARED"
                    ],
                    "example": "ACTIVE"
                  },
                  "quyangUserName": {
                    "type": "string",
                    "example": "apifox_autotest"
                  },
                  "takeTime": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  }
                },
                "x-apifox-orders": [
                  "status",
                  "quyangUserName",
                  "takeTime"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": "ACTIVE",
                "quyangUserName": "apifox_autotest",
                "takeTime": "2026-09-24 10:00:00"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 108,
            "controller": "SamplingController",
            "handler": "setStatus"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1069,
            "function": "samplingUpdateStatus(id: number, body: { status?: 'ACTIVE' | 'CLEARED'; quyangUserName?: string; takeTime?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815324-run"
      }
    },
    "/school/sampling/device/callback": {
      "post": {
        "summary": "SamplingController.deviceCallback",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling.controller.ts:81；SamplingController.deviceCallback\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingController_deviceCallback",
        "tags": [
          "学校端/Sampling"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "sample": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "weight": {
                    "type": "number",
                    "example": 10
                  },
                  "imageUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "duration": {
                    "type": "number",
                    "example": 10
                  },
                  "by": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "cabinet": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "sample",
                  "weight",
                  "duration",
                  "by"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "sample",
                  "weight",
                  "imageUrl",
                  "duration",
                  "by",
                  "cabinet"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "sample": "APIFOX_{{testBatch}}",
                "weight": 10,
                "imageUrl": "https://example.test/apifox-autotest.jpg",
                "duration": 10,
                "by": "APIFOX_{{testBatch}}",
                "cabinet": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sampling"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling.controller.ts",
            "line": 81,
            "controller": "SamplingController",
            "handler": "deviceCallback"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/Sampling",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815325-run"
      }
    },
    "/school/system/announcements": {
      "get": {
        "summary": "SystemController.listAnnouncements",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:24；SystemController.listAnnouncements\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1658；sysAnnouncements(params: { page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_listAnnouncements",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 24,
            "controller": "SystemController",
            "handler": "listAnnouncements"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1658,
            "function": "sysAnnouncements(params: { page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815326-run"
      },
      "post": {
        "summary": "SystemController.createAnnouncement",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:36；SystemController.createAnnouncement\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1664；sysAnnouncementCreate(body: { title: string; content: string }, traceId: string)；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_createAnnouncement",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "content": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "title",
                  "content"
                ],
                "x-apifox-orders": [
                  "title",
                  "content"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "title": "APIFOX_{{testBatch}}_测试数据",
                "content": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 36,
            "controller": "SystemController",
            "handler": "createAnnouncement"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1664,
            "function": "sysAnnouncementCreate(body: { title: string; content: string }, traceId: string)",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815327-run"
      }
    },
    "/school/system/announcements/detail": {
      "get": {
        "summary": "SystemController.announcementDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:42；SystemController.announcementDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1662；sysAnnouncementDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_announcementDetail",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 42,
            "controller": "SystemController",
            "handler": "announcementDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1662,
            "function": "sysAnnouncementDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815328-run"
      }
    },
    "/school/system/apps": {
      "get": {
        "summary": "SystemController.apps",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:85；SystemController.apps\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1706；sysApps()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_apps",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 85,
            "controller": "SystemController",
            "handler": "apps"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1706,
            "function": "sysApps()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815329-run"
      }
    },
    "/school/system/canteen": {
      "get": {
        "summary": "SystemController.canteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:57；SystemController.canteen\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1673；sysCanteenGet()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_canteen",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 57,
            "controller": "SystemController",
            "handler": "canteen"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1673,
            "function": "sysCanteenGet()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815330-run"
      },
      "post": {
        "summary": "SystemController.saveCanteen",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:60；SystemController.saveCanteen\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1678；sysCanteenSave(body: any)；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_saveCanteen",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 60,
            "controller": "SystemController",
            "handler": "saveCanteen"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1678,
            "function": "sysCanteenSave(body: any)",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815331-run"
      }
    },
    "/school/system/linkage": {
      "get": {
        "summary": "SystemController.linkageList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:69；SystemController.linkageList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_linkageList",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：any",
            "required": false,
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 69,
            "controller": "SystemController",
            "handler": "linkageList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815332-run"
      }
    },
    "/school/system/meals": {
      "get": {
        "summary": "SystemController.meals",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:113；SystemController.meals\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_meals",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 113,
            "controller": "SystemController",
            "handler": "meals"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815333-run"
      },
      "post": {
        "summary": "SystemController.saveMeals",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:116；SystemController.saveMeals\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_saveMeals",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {}
                  }
                },
                "required": [
                  "items"
                ],
                "x-apifox-orders": [
                  "items"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "items": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 116,
            "controller": "SystemController",
            "handler": "saveMeals"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815334-run"
      }
    },
    "/school/system/news": {
      "get": {
        "summary": "SystemController.schoolNews",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:283；SystemController.schoolNews\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:825；sysNews(params: { page?: number; pageSize?: number; enabled?: 'true' | 'false' })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_schoolNews",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "enabled",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 283,
            "controller": "SystemController",
            "handler": "schoolNews"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 825,
            "function": "sysNews(params: { page?: number; pageSize?: number; enabled?: 'true' | 'false' })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815335-run"
      }
    },
    "/school/system/news/detail": {
      "get": {
        "summary": "SystemController.schoolNewsDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:290；SystemController.schoolNewsDetail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:829；sysNewsDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_schoolNewsDetail",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 290,
            "controller": "SystemController",
            "handler": "schoolNewsDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 829,
            "function": "sysNewsDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815336-run"
      }
    },
    "/school/system/org-type": {
      "get": {
        "summary": "SystemController.getOrgType",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:90；SystemController.getOrgType\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_getOrgType",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 90,
            "controller": "SystemController",
            "handler": "getOrgType"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815337-run"
      },
      "post": {
        "summary": "SystemController.saveOrgType",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:101；SystemController.saveOrgType\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1823；sysOrgTypeSave(orgType: 'school'|'enterprise', schoolId: number|string)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_saveOrgType",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "orgType": {
                    "type": "string",
                    "enum": [
                      "school",
                      "enterprise"
                    ],
                    "example": "school"
                  }
                },
                "required": [
                  "orgType"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "orgType"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "orgType": "school"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 101,
            "controller": "SystemController",
            "handler": "saveOrgType"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1823,
            "function": "sysOrgTypeSave(orgType: 'school'|'enterprise', schoolId: number|string)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815338-run"
      }
    },
    "/school/system/permissions": {
      "get": {
        "summary": "SystemController.permissions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:259；SystemController.permissions\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1804；sysPermissions()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_permissions",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 259,
            "controller": "SystemController",
            "handler": "permissions"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1804,
            "function": "sysPermissions()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815339-run"
      }
    },
    "/school/system/roles": {
      "get": {
        "summary": "SystemController.roles",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:162；SystemController.roles\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1749；sysRoles(params: { schoolId?: number; q?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_roles",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 162,
            "controller": "SystemController",
            "handler": "roles"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1749,
            "function": "sysRoles(params: { schoolId?: number; q?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815340-run"
      },
      "patch": {
        "summary": "SystemController.updateRole",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:184；SystemController.updateRole\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1771；sysRoleUpdate(id: number, patch: { name?: string; remark?: string }, traceId: string)；body=JSON.stringify({ id, patch })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_updateRole",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  },
                  "patch": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}_测试数据"
                      },
                      "remark": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}} 自动化测试数据"
                      }
                    },
                    "x-apifox-orders": [
                      "name",
                      "remark"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                },
                "required": [
                  "id",
                  "patch"
                ],
                "x-apifox-orders": [
                  "id",
                  "patch"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1,
                "patch": {
                  "name": "APIFOX_{{testBatch}}_测试数据",
                  "remark": "APIFOX_{{testBatch}} 自动化测试数据"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 184,
            "controller": "SystemController",
            "handler": "updateRole"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1771,
            "function": "sysRoleUpdate(id: number, patch: { name?: string; remark?: string }, traceId: string)",
            "bodyExpression": "JSON.stringify({ id, patch })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815341-run"
      },
      "post": {
        "summary": "SystemController.createRole",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:174；SystemController.createRole\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1753；sysRoleCreate(name: string, remark: string, schoolId: number, traceId: string)；body=JSON.stringify({ name, remark, schoolId })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_createRole",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "name",
                  "remark"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "name": "APIFOX_{{testBatch}}_测试数据",
                "remark": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 174,
            "controller": "SystemController",
            "handler": "createRole"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1753,
            "function": "sysRoleCreate(name: string, remark: string, schoolId: number, traceId: string)",
            "bodyExpression": "JSON.stringify({ name, remark, schoolId })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815342-run"
      }
    },
    "/school/system/roles/permissions": {
      "get": {
        "summary": "SystemController.rolePermissions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:262；SystemController.rolePermissions\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1805；sysRolePermissions(name: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_rolePermissions",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_测试数据"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 262,
            "controller": "SystemController",
            "handler": "rolePermissions"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1805,
            "function": "sysRolePermissions(name: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815343-run"
      },
      "post": {
        "summary": "SystemController.setRolePerms",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:268；SystemController.setRolePerms\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1807；sysRoleSetPermissions(name: string, permissions: string[], traceId: string)；body=JSON.stringify({ name, permissions })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_setRolePerms",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "permissions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "name",
                  "permissions"
                ],
                "x-apifox-orders": [
                  "name",
                  "permissions"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "permissions": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 268,
            "controller": "SystemController",
            "handler": "setRolePerms"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1807,
            "function": "sysRoleSetPermissions(name: string, permissions: string[], traceId: string)",
            "bodyExpression": "JSON.stringify({ name, permissions })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815344-run"
      }
    },
    "/school/system/users": {
      "get": {
        "summary": "SystemController.users",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:125；SystemController.users\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_users",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 125,
            "controller": "SystemController",
            "handler": "users"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815345-run"
      },
      "patch": {
        "summary": "SystemController.updateUser",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:217；SystemController.updateUser\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1722；sysUserUpdate(id: number | string, patch: { name?: string; phone?: string; remark?: string; enabled?: boolean; password?: string }, traceId: string)；body=JSON.stringify({ id, patch })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_updateUser",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "example": 1
                      },
                      "patch": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "APIFOX_{{testBatch}}_测试数据"
                          },
                          "phone": {
                            "type": "string",
                            "example": "13800138000"
                          },
                          "remark": {
                            "type": "string",
                            "example": "APIFOX_{{testBatch}} 自动化测试数据"
                          },
                          "enabled": {
                            "type": "boolean",
                            "example": true
                          },
                          "password": {
                            "type": "string",
                            "example": "Test@123456"
                          }
                        },
                        "x-apifox-orders": [
                          "name",
                          "phone",
                          "remark",
                          "enabled",
                          "password"
                        ],
                        "x-apifox-ignore-properties": []
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "x-apifox-orders": [
                      "id",
                      "patch"
                    ],
                    "x-apifox-ignore-properties": []
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "example": 1
                      },
                      "name": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}_测试数据"
                      },
                      "phone": {
                        "type": "string",
                        "example": "13800138000"
                      },
                      "remark": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}} 自动化测试数据"
                      },
                      "enabled": {
                        "type": "boolean",
                        "example": true
                      },
                      "password": {
                        "type": "string",
                        "example": "Test@123456"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "x-apifox-orders": [
                      "id",
                      "name",
                      "phone",
                      "remark",
                      "enabled",
                      "password"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                ]
              },
              "example": {
                "id": 1,
                "patch": {
                  "name": "APIFOX_{{testBatch}}_测试数据",
                  "phone": "13800138000",
                  "remark": "APIFOX_{{testBatch}} 自动化测试数据",
                  "enabled": true,
                  "password": "Test@123456"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 217,
            "controller": "SystemController",
            "handler": "updateUser"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1722,
            "function": "sysUserUpdate(id: number | string, patch: { name?: string; phone?: string; remark?: string; enabled?: boolean; password?: string }, traceId: string)",
            "bodyExpression": "JSON.stringify({ id, patch })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815346-run"
      },
      "post": {
        "summary": "SystemController.createUser",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:137；SystemController.createUser\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1709；sysUserCreate(body: { name: string; phone?: string; roles?: string[]; remark?: string; enabled?: boolean; password?: string }, traceId: string)；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_createUser",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "phone": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "password": {
                    "type": "string",
                    "example": "Test@123456"
                  },
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name",
                  "phone",
                  "roles",
                  "remark",
                  "enabled",
                  "password",
                  "schoolId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "phone": "13800138000",
                "roles": [
                  "APIFOX_{{testBatch}}"
                ],
                "remark": "APIFOX_{{testBatch}} 自动化测试数据",
                "enabled": true,
                "password": "Test@123456",
                "schoolId": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 137,
            "controller": "SystemController",
            "handler": "createUser"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1709,
            "function": "sysUserCreate(body: { name: string; phone?: string; roles?: string[]; remark?: string; enabled?: boolean; password?: string }, traceId: string)",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815347-run"
      }
    },
    "/school/system/linkage/review": {
      "patch": {
        "summary": "SystemController.reviewLinkage",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:77；SystemController.reviewLinkage\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1698；sysLinkageReview(id: string, status: 'APPROVED' | 'REJECTED', comment: string)；body=JSON.stringify({ status, comment })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_reviewLinkage",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {},
                  "comment": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "status"
                ],
                "x-apifox-orders": [
                  "status",
                  "comment"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": "ACTIVE",
                "comment": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 77,
            "controller": "SystemController",
            "handler": "reviewLinkage"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1698,
            "function": "sysLinkageReview(id: string, status: 'APPROVED' | 'REJECTED', comment: string)",
            "bodyExpression": "JSON.stringify({ status, comment })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815348-run"
      }
    },
    "/school/system/announcements/attach": {
      "post": {
        "summary": "SystemController.attach",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:49；SystemController.attach\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1826；sysAnnouncementAttach(id: string, att: { name: string; url: string }, traceId: string)；body=JSON.stringify({ id, ...att })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_attach",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "url": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "schoolId": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id",
                  "name",
                  "url"
                ],
                "x-apifox-orders": [
                  "id",
                  "name",
                  "url",
                  "schoolId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "name": "APIFOX_{{testBatch}}_测试数据",
                "url": "https://example.test/apifox-autotest.jpg",
                "schoolId": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 49,
            "controller": "SystemController",
            "handler": "attach"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1826,
            "function": "sysAnnouncementAttach(id: string, att: { name: string; url: string }, traceId: string)",
            "bodyExpression": "JSON.stringify({ id, ...att })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815349-run"
      }
    },
    "/school/system/linkage/apply": {
      "post": {
        "summary": "SystemController.applyLinkage",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:72；SystemController.applyLinkage\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1689；sysLinkageApply(body: { org: string; contact?: string; remark?: string })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_applyLinkage",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "org": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "contact": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "org"
                ],
                "x-apifox-orders": [
                  "org",
                  "contact",
                  "remark"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "org": "APIFOX_{{testBatch}}",
                "contact": "APIFOX_{{testBatch}}",
                "remark": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 72,
            "controller": "SystemController",
            "handler": "applyLinkage"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1689,
            "function": "sysLinkageApply(body: { org: string; contact?: string; remark?: string })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815350-run"
      }
    },
    "/school/system/roles/delete": {
      "post": {
        "summary": "SystemController.deleteRole",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:196；SystemController.deleteRole\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1787；sysRoleDelete(id: number)；body=JSON.stringify({ id })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_deleteRole",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 196,
            "controller": "SystemController",
            "handler": "deleteRole"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1787,
            "function": "sysRoleDelete(id: number)",
            "bodyExpression": "JSON.stringify({ id })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815351-run"
      }
    },
    "/school/system/users/delete": {
      "post": {
        "summary": "SystemController.removeUser",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:249；SystemController.removeUser\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1731；sysUserDelete(id: number | string, traceId: string)；body=JSON.stringify({ id })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_removeUser",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 249,
            "controller": "SystemController",
            "handler": "removeUser"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1731,
            "function": "sysUserDelete(id: number | string, traceId: string)",
            "bodyExpression": "JSON.stringify({ id })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815352-run"
      }
    },
    "/school/system/users/enabled": {
      "post": {
        "summary": "SystemController.setUserEnabled",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:240；SystemController.setUserEnabled\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1740；sysUserSetEnabled(id: number | string, enabled: boolean, traceId: string)；body=JSON.stringify({ id, enabled })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_setUserEnabled",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "id",
                  "enabled"
                ],
                "x-apifox-orders": [
                  "id",
                  "enabled"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1,
                "enabled": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 240,
            "controller": "SystemController",
            "handler": "setUserEnabled"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1740,
            "function": "sysUserSetEnabled(id: number | string, enabled: boolean, traceId: string)",
            "bodyExpression": "JSON.stringify({ id, enabled })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815353-run"
      }
    },
    "/school/system/users/roles": {
      "post": {
        "summary": "SystemController.setUserRoles",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/system.controller.ts:209；SystemController.setUserRoles\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1796；sysUserSetRoles(id: string, roles: string[], traceId: string)；body=JSON.stringify({ id, roles })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SystemController_setUserRoles",
        "tags": [
          "学校端/School System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "id",
                  "roles"
                ],
                "x-apifox-orders": [
                  "id",
                  "roles"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "roles": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/system.controller.ts",
            "line": 209,
            "controller": "SystemController",
            "handler": "setUserRoles"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1796,
            "function": "sysUserSetRoles(id: string, roles: string[], traceId: string)",
            "bodyExpression": "JSON.stringify({ id, roles })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "学校端/School System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815354-run"
      }
    },
    "/device/morningChecker/employeeList": {
      "get": {
        "summary": "DeviceController.employeeList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device.controller.ts:14；DeviceController.employeeList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceController_employeeList",
        "tags": [
          "公共与系统/Device"
        ],
        "parameters": [
          {
            "name": "equipmentCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Device"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device.controller.ts",
            "line": 14,
            "controller": "DeviceController",
            "handler": "employeeList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Device",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815363-run"
      }
    },
    "/device/morningChecker/heartBeatInfo": {
      "post": {
        "summary": "DeviceMockController.heartBeat",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/device-mock.controller.ts:15；DeviceMockController.heartBeat\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DeviceMockController_heartBeat",
        "tags": [
          "公共与系统/Device"
        ],
        "parameters": [
          {
            "name": "x-sign",
            "in": "header",
            "description": "Signature header (optional if sign is provided in body)",
            "required": false,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "equipmentCode": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "sign": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "equipmentCode"
                ]
              },
              "example": {
                "equipmentCode": "APIFOX_{{testBatch}}",
                "sign": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Heartbeat accepted",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Device"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/device-mock.controller.ts",
            "line": 15,
            "controller": "DeviceMockController",
            "handler": "heartBeat"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Device",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815364-run"
      }
    },
    "/api/devices": {
      "get": {
        "summary": "IntegrationController.listDevices",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:50；IntegrationController.listDevices\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IntegrationController_listDevices",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 50,
            "controller": "IntegrationController",
            "handler": "listDevices"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815365-run"
      }
    },
    "/api/employees": {
      "get": {
        "summary": "IntegrationController.listEmployees",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:20；IntegrationController.listEmployees\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/api.ts:21；listEmployees()\n- mobile-device: apps/mobile-device/src/api/integration.ts:38；megoEmployees()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IntegrationController_listEmployees",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 20,
            "controller": "IntegrationController",
            "handler": "listEmployees"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api.ts",
            "line": 21,
            "function": "listEmployees()",
            "bodyExpression": ""
          },
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api/integration.ts",
            "line": 38,
            "function": "megoEmployees()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815366-run"
      }
    },
    "/api/morning-checks": {
      "get": {
        "summary": "IntegrationController.listMorningChecks",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:194；IntegrationController.listMorningChecks\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/api/integration.ts:45；megoMorningChecks()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IntegrationController_listMorningChecks",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 194,
            "controller": "IntegrationController",
            "handler": "listMorningChecks"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api/integration.ts",
            "line": 45,
            "function": "megoMorningChecks()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815367-run"
      }
    },
    "/regulator/morning-checks": {
      "get": {
        "summary": "IntegrationController.listReg",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:224；IntegrationController.listReg\n- services/gateway-service/src/modules/regulator-morning-checks.controller.ts:20；RegulatorMorningChecksController.list\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegulatorMorningChecksController_list",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "description": "Required if INGEST_API_KEY is set",
            "required": false,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List received morning checks",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 224,
            "controller": "IntegrationController",
            "handler": "listReg"
          },
          {
            "file": "services/gateway-service/src/modules/regulator-morning-checks.controller.ts",
            "line": 20,
            "controller": "RegulatorMorningChecksController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815368-run"
      }
    },
    "/api/devices/discover": {
      "post": {
        "summary": "IntegrationController.discover",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:58；IntegrationController.discover\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/api/integration.ts:16；megoDiscover(body: { equipmentCode: string; candidates: string[] })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IntegrationController_discover",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 58,
            "controller": "IntegrationController",
            "handler": "discover"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api/integration.ts",
            "line": 16,
            "function": "megoDiscover(body: { equipmentCode: string; candidates: string[] })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815369-run"
      }
    },
    "/api/employees/refresh": {
      "post": {
        "summary": "IntegrationController.refreshEmployees",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:24；IntegrationController.refreshEmployees\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/api.ts:10；refreshEmployees(equipmentCode: string)；body=JSON.stringify({ equipmentCode })\n- mobile-device: apps/mobile-device/src/api/integration.ts:27；megoEmployeesRefresh(equipmentCode: string)；body=JSON.stringify({ equipmentCode })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IntegrationController_refreshEmployees",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 24,
            "controller": "IntegrationController",
            "handler": "refreshEmployees"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api.ts",
            "line": 10,
            "function": "refreshEmployees(equipmentCode: string)",
            "bodyExpression": "JSON.stringify({ equipmentCode })"
          },
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api/integration.ts",
            "line": 27,
            "function": "megoEmployeesRefresh(equipmentCode: string)",
            "bodyExpression": "JSON.stringify({ equipmentCode })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815370-run"
      }
    },
    "/api/integrations/morning-checks/mego": {
      "post": {
        "summary": "IntegrationController.megoIngest",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:83；IntegrationController.megoIngest\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IntegrationController_megoIngest",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [
          {
            "name": "x-sign",
            "in": "header",
            "description": "Signature header (optional if sign is provided in body)",
            "required": false,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "equipmentCode": {
                    "type": "string",
                    "example": ""
                  },
                  "uuid": {
                    "type": "string",
                    "example": ""
                  },
                  "userId": {
                    "type": "string",
                    "example": ""
                  },
                  "checkTime": {
                    "type": "string",
                    "description": "YYYY-MM-DD HH:mm:ss",
                    "example": ""
                  },
                  "foreheadTemp": {
                    "type": "number",
                    "example": ""
                  },
                  "normalTemperatureRange": {
                    "type": "string",
                    "example": "35.9-37.3"
                  },
                  "abnormalTemp": {
                    "type": "integer",
                    "enum": [
                      0,
                      1
                    ],
                    "example": ""
                  },
                  "handCheckResult": {
                    "type": "string",
                    "description": "CSV list",
                    "example": ""
                  },
                  "healthAskResult": {
                    "type": "string",
                    "description": "CSV list",
                    "example": ""
                  },
                  "health": {
                    "type": "integer",
                    "enum": [
                      0,
                      1
                    ],
                    "example": ""
                  },
                  "faceFile": {
                    "type": "string",
                    "format": "binary",
                    "example": ""
                  },
                  "palmFile": {
                    "type": "string",
                    "format": "binary",
                    "example": ""
                  },
                  "backOfHandFile": {
                    "type": "string",
                    "format": "binary",
                    "example": ""
                  },
                  "sign": {
                    "type": "string",
                    "example": ""
                  }
                },
                "required": [
                  "equipmentCode",
                  "userId",
                  "checkTime",
                  "foreheadTemp"
                ]
              },
              "example": {
                "equipmentCode": "",
                "uuid": "",
                "userId": "",
                "checkTime": "",
                "foreheadTemp": "",
                "normalTemperatureRange": "35.9-37.3",
                "abnormalTemp": "",
                "handCheckResult": "",
                "healthAskResult": "",
                "health": "",
                "faceFile": "",
                "palmFile": "",
                "backOfHandFile": "",
                "sign": ""
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Accepted",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 83,
            "controller": "IntegrationController",
            "handler": "megoIngest"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815371-run"
      }
    },
    "/regulator/morning-checks/push": {
      "post": {
        "summary": "IntegrationController.pushReg",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/integration.controller.ts:214；IntegrationController.pushReg\n- services/gateway-service/src/modules/regulator-morning-checks.controller.ts:27；RegulatorMorningChecksController.push\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegulatorMorningChecksController_push",
        "tags": [
          "公共与系统/Integration"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "description": "Required if INGEST_API_KEY is set",
            "required": false,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "x-apifox-orders": [],
                "properties": {},
                "x-apifox-ignore-properties": []
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Accepted with generated id",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/integration.controller.ts",
            "line": 214,
            "controller": "IntegrationController",
            "handler": "pushReg"
          },
          {
            "file": "services/gateway-service/src/modules/regulator-morning-checks.controller.ts",
            "line": 27,
            "controller": "RegulatorMorningChecksController",
            "handler": "push"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815372-run"
      }
    },
    "/gatewayGBS/openApi/getBackUrl": {
      "get": {
        "summary": "TrustivsPlaybackController.getBackUrl",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/playback.controller.ts:15；TrustivsPlaybackController.getBackUrl\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:104；onGetBackUrl()；body={ serial: serial.value, code: code.value, starttime: starttime.value, endtime: endtime.value }\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsPlaybackController_getBackUrl",
        "tags": [
          "公共与系统/TrustIVS Playback"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS Playback"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/playback.controller.ts",
            "line": 15,
            "controller": "TrustivsPlaybackController",
            "handler": "getBackUrl"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 104,
            "function": "onGetBackUrl()",
            "bodyExpression": "{ serial: serial.value, code: code.value, starttime: starttime.value, endtime: endtime.value }"
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS Playback",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815373-run"
      }
    },
    "/gatewayGBS/openApi/getDownloadUrl": {
      "get": {
        "summary": "TrustivsPlaybackController.getDownloadUrl",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/playback.controller.ts:21；TrustivsPlaybackController.getDownloadUrl\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:113；onGetDownloadUrl()；body={ serial: serial.value, code: code.value, starttime: starttime.value, endtime: endtime.value }\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsPlaybackController_getDownloadUrl",
        "tags": [
          "公共与系统/TrustIVS Playback"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS Playback"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/playback.controller.ts",
            "line": 21,
            "controller": "TrustivsPlaybackController",
            "handler": "getDownloadUrl"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 113,
            "function": "onGetDownloadUrl()",
            "bodyExpression": "{ serial: serial.value, code: code.value, starttime: starttime.value, endtime: endtime.value }"
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS Playback",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815374-run"
      }
    },
    "/gatewayGBS/openApi/getCameraByCompany": {
      "get": {
        "summary": "按公司获取摄像头（内部POST优先，含405回退）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/camera.controller.ts:15；CameraController.getCameraByCompany\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:142；onGetCameraByCompany()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CameraController_getCameraByCompany",
        "tags": [
          "公共与系统/TrustIVS.Camera"
        ],
        "parameters": [
          {
            "name": "pageNum",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS.Camera"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/camera.controller.ts",
            "line": 15,
            "controller": "CameraController",
            "handler": "getCameraByCompany"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 142,
            "function": "onGetCameraByCompany()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS.Camera",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815375-run"
      }
    },
    "/gatewayGBS/openApi/getSnap": {
      "get": {
        "summary": "TrustivsStreamController.getSnap",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/stream.controller.ts:21；TrustivsStreamController.getSnap\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsStreamController_getSnap",
        "tags": [
          "公共与系统/TrustIVS Stream"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS Stream"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/stream.controller.ts",
            "line": 21,
            "controller": "TrustivsStreamController",
            "handler": "getSnap"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/TrustIVS Stream",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815376-run"
      }
    },
    "/gatewayGBS/openApi/getStreamURL": {
      "post": {
        "summary": "TrustivsStreamController.getStreamURL",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/stream.controller.ts:15；TrustivsStreamController.getStreamURL\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:94；onGetStream()；body={ serial: serial.value, code: code.value, type: streamType.value }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsStreamController_getStreamURL",
        "tags": [
          "公共与系统/TrustIVS Stream"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS Stream"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/stream.controller.ts",
            "line": 15,
            "controller": "TrustivsStreamController",
            "handler": "getStreamURL"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 94,
            "function": "onGetStream()",
            "bodyExpression": "{ serial: serial.value, code: code.value, type: streamType.value }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS Stream",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815377-run"
      }
    },
    "/health": {
      "get": {
        "summary": "HealthController.ping",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/health.controller.ts:9；HealthController.ping\n\n### 前端调用证据\n- screen: apps/screen/src/api/index.ts:5；serverTime()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HealthController_ping",
        "tags": [
          "公共与系统/Health"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Health"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/health.controller.ts",
            "line": 9,
            "controller": "HealthController",
            "handler": "ping"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "screen",
            "file": "apps/screen/src/api/index.ts",
            "line": 5,
            "function": "serverTime()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Health",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815378-run"
      }
    },
    "/health/db": {
      "get": {
        "summary": "DbHealthController.health",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/db.controller.ts:11；DbHealthController.health\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DbHealthController_health",
        "tags": [
          "公共与系统/DB"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "DB"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/db.controller.ts",
            "line": 11,
            "controller": "DbHealthController",
            "handler": "health"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/DB",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815379-run"
      }
    },
    "/health/routes": {
      "get": {
        "summary": "RoutesController.list",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/routes.controller.ts:11；RoutesController.list\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RoutesController_list",
        "tags": [
          "公共与系统/Routes"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Routes"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/routes.controller.ts",
            "line": 11,
            "controller": "RoutesController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/Routes",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815380-run"
      }
    },
    "/home/devices": {
      "get": {
        "summary": "HomeController.devices",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/home.controller.ts:31；HomeController.devices\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:237；devices()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HomeController_devices",
        "tags": [
          "公共与系统/Home"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Home"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/home.controller.ts",
            "line": 31,
            "controller": "HomeController",
            "handler": "devices"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 237,
            "function": "devices()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Home",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815381-run"
      }
    },
    "/home/hygiene": {
      "get": {
        "summary": "HomeController.hygiene",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/home.controller.ts:24；HomeController.hygiene\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:236；hygiene()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HomeController_hygiene",
        "tags": [
          "公共与系统/Home"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Home"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/home.controller.ts",
            "line": 24,
            "controller": "HomeController",
            "handler": "hygiene"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 236,
            "function": "hygiene()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Home",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815382-run"
      }
    },
    "/home/inbound": {
      "get": {
        "summary": "HomeController.inbound",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/home.controller.ts:10；HomeController.inbound\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:234；inbound()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HomeController_inbound",
        "tags": [
          "公共与系统/Home"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Home"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/home.controller.ts",
            "line": 10,
            "controller": "HomeController",
            "handler": "inbound"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 234,
            "function": "inbound()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Home",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815383-run"
      }
    },
    "/home/outbound": {
      "get": {
        "summary": "HomeController.outbound",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/home.controller.ts:17；HomeController.outbound\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:235；outbound()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HomeController_outbound",
        "tags": [
          "公共与系统/Home"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Home"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/home.controller.ts",
            "line": 17,
            "controller": "HomeController",
            "handler": "outbound"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 235,
            "function": "outbound()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Home",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815384-run"
      }
    },
    "/home/parent-feedback": {
      "get": {
        "summary": "HomeController.parentFeedback",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/home.controller.ts:38；HomeController.parentFeedback\n\n### 前端调用证据\n- mobile-emergency: apps/mobile-emergency/src/api/index.ts:19；feedback()\n- web-school: apps/web-school/src/services/api.ts:377；feedback()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "HomeController_parentFeedback",
        "tags": [
          "公共与系统/Home"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Home"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/home.controller.ts",
            "line": 38,
            "controller": "HomeController",
            "handler": "parentFeedback"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-emergency",
            "file": "apps/mobile-emergency/src/api/index.ts",
            "line": 19,
            "function": "feedback()",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 377,
            "function": "feedback()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Home",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815385-run"
      }
    },
    "/inspectionRecord/getLastRecord": {
      "get": {
        "summary": "得沃晨检机查询当天最近晨检记录",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:489；DewoLiuyangchengController.dewoMorningLastRecord\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_dewoMorningLastRecord",
        "tags": [
          "公共与系统/Dewo-Liuyangcheng"
        ],
        "parameters": [
          {
            "name": "personId",
            "in": "query",
            "description": "来源：Query(personId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 489,
            "controller": "DewoLiuyangchengController",
            "handler": "dewoMorningLastRecord"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "公共与系统/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815386-run"
      }
    },
    "/reports/school/daily": {
      "get": {
        "summary": "SchoolReportsController.daily",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-reports.controller.ts:7；SchoolReportsController.daily\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolReportsController_daily",
        "tags": [
          "公共与系统/SchoolReports"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-reports.controller.ts",
            "line": 7,
            "controller": "SchoolReportsController",
            "handler": "daily"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/SchoolReports",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815387-run"
      }
    },
    "/sampling/operators": {
      "get": {
        "summary": "留样人员列表（开放别名，无 /school 前缀）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sampling-operators.open.controller.ts:11；SamplingOperatorsOpenController.list\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SamplingOperatorsOpenController_list",
        "tags": [
          "公共与系统/SamplingOperators"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "SamplingOperators"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sampling-operators.open.controller.ts",
            "line": 11,
            "controller": "SamplingOperatorsOpenController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/SamplingOperators",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815388-run"
      }
    },
    "/system/storage/init": {
      "get": {
        "summary": "Initialize storage provider (ensure MinIO bucket exists)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/storage.controller.ts:21；StorageController.init\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "StorageController_init",
        "tags": [
          "公共与系统/System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/storage.controller.ts",
            "line": 21,
            "controller": "StorageController",
            "handler": "init"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "公共与系统/System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815389-run"
      }
    },
    "/system/storage/status": {
      "get": {
        "summary": "Get object storage mode and configuration status",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/storage.controller.ts:9；StorageController.status\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:742；storageStatus()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "StorageController_status",
        "tags": [
          "公共与系统/System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/storage.controller.ts",
            "line": 9,
            "controller": "StorageController",
            "handler": "status"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 742,
            "function": "storageStatus()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "公共与系统/System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815390-run"
      }
    },
    "/trustivs/proxy/hls": {
      "get": {
        "summary": "TrustivsProxyController.proxyHls",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/proxy.controller.ts:26；TrustivsProxyController.proxyHls\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsProxyController_proxyHls",
        "tags": [
          "公共与系统/TrustivsProxy"
        ],
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "https://example.test/apifox-autotest.jpg"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/proxy.controller.ts",
            "line": 26,
            "controller": "TrustivsProxyController",
            "handler": "proxyHls"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/TrustivsProxy",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815391-run"
      }
    },
    "/control/upload/data/uploadData": {
      "post": {
        "summary": "设备数据上报（表单：KEY=JSON）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/pesticide-upload.controller.ts:31；PesticideUploadController.upload\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PesticideUploadController_upload",
        "tags": [
          "公共与系统/DeviceUpload"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "DeviceUpload"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/pesticide-upload.controller.ts",
            "line": 31,
            "controller": "PesticideUploadController",
            "handler": "upload"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "公共与系统/DeviceUpload",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815392-run"
      }
    },
    "/gatewayGBS/openApi/getAIRecordByCompany": {
      "post": {
        "summary": "TrustivsAIController.getAIRecordByCompany",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/ai.controller.ts:15；TrustivsAIController.getAIRecordByCompany\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:161；onGetAIRecords()；body={ pageNum: 1, pageSize: 10, fsocialcreditcode: fsocialcreditcode.value, startTime: aiStart.value, endTime: aiEnd.value }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsAIController_getAIRecordByCompany",
        "tags": [
          "公共与系统/TrustIVS AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/ai.controller.ts",
            "line": 15,
            "controller": "TrustivsAIController",
            "handler": "getAIRecordByCompany"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 161,
            "function": "onGetAIRecords()",
            "bodyExpression": "{ pageNum: 1, pageSize: 10, fsocialcreditcode: fsocialcreditcode.value, startTime: aiStart.value, endTime: aiEnd.value }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815393-run"
      }
    },
    "/gatewayGBS/openApi/getChannelByDevice": {
      "post": {
        "summary": "TrustivsListController.getChannelByDevice",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/list.controller.ts:33；TrustivsListController.getChannelByDevice\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:151；onGetChannelByDevice()；body={ deviceId: deviceId.value }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsListController_getChannelByDevice",
        "tags": [
          "公共与系统/TrustIVS List"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS List"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/list.controller.ts",
            "line": 33,
            "controller": "TrustivsListController",
            "handler": "getChannelByDevice"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 151,
            "function": "onGetChannelByDevice()",
            "bodyExpression": "{ deviceId: deviceId.value }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS List",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815394-run"
      }
    },
    "/gatewayGBS/openApi/getCompanyList": {
      "post": {
        "summary": "TrustivsListController.getCompanyList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/list.controller.ts:19；TrustivsListController.getCompanyList\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:123；onGetCompanyList()；body={ pageNum: 1, pageSize: 10, fsocialcreditcode: fsocialcreditcode.value }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsListController_getCompanyList",
        "tags": [
          "公共与系统/TrustIVS List"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS List"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/list.controller.ts",
            "line": 19,
            "controller": "TrustivsListController",
            "handler": "getCompanyList"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 123,
            "function": "onGetCompanyList()",
            "bodyExpression": "{ pageNum: 1, pageSize: 10, fsocialcreditcode: fsocialcreditcode.value }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS List",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815395-run"
      }
    },
    "/gatewayGBS/openApi/getDeviceListByCompany": {
      "post": {
        "summary": "TrustivsListController.getDeviceListByCompany",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/list.controller.ts:25；TrustivsListController.getDeviceListByCompany\n\n### 前端调用证据\n- web-school: apps/web-school/src/views/TrustivsTest.vue:132；onGetDeviceList()；body={ pageNum: 1, pageSize: 10, fsocialcreditcode: fsocialcreditcode.value }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsListController_getDeviceListByCompany",
        "tags": [
          "公共与系统/TrustIVS List"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS List"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/list.controller.ts",
            "line": 25,
            "controller": "TrustivsListController",
            "handler": "getDeviceListByCompany"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/views/TrustivsTest.vue",
            "line": 132,
            "function": "onGetDeviceList()",
            "bodyExpression": "{ pageNum: 1, pageSize: 10, fsocialcreditcode: fsocialcreditcode.value }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/TrustIVS List",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815396-run"
      }
    },
    "/public/feedback": {
      "post": {
        "summary": "PublicFeedbackController.create",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/public-feedback.controller.ts:15；PublicFeedbackController.create\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/services/api.ts:199；publicFeedback(body: { content: string; contact: string; schoolId?: string|number; canteenId?: string|number; at?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PublicFeedbackController_create",
        "tags": [
          "公共与系统/Public Feedback"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      }
                    ]
                  },
                  "canteenId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      },
                      {}
                    ]
                  },
                  "content": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  },
                  "contact": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "user": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "x-apifox-orders": [
                  "schoolId",
                  "canteenId",
                  "content",
                  "contact",
                  "type",
                  "user"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "canteenId": 1,
                "content": "APIFOX_{{testBatch}} 自动化测试数据",
                "contact": "APIFOX_{{testBatch}}",
                "type": "APIFOX_{{testBatch}}",
                "user": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Public Feedback"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/public-feedback.controller.ts",
            "line": 15,
            "controller": "PublicFeedbackController",
            "handler": "create"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/services/api.ts",
            "line": 199,
            "function": "publicFeedback(body: { content: string; contact: string; schoolId?: string|number; canteenId?: string|number; at?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "公共与系统/Public Feedback",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815397-run"
      }
    },
    "/audit/logs": {
      "get": {
        "summary": "Query audit logs (tenant isolated)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/audit/audit.controller.ts:17；AuditController.list\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuditController_list",
        "tags": [
          "审计日志/Audit"
        ],
        "parameters": [
          {
            "name": "excludeEventTypeLike",
            "in": "query",
            "description": "Comma-separated patterns to exclude, e.g., reg.%",
            "required": false,
            "schema": {}
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {}
          },
          {
            "name": "to",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "objectId",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {}
          },
          {
            "name": "objectType",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {}
          },
          {
            "name": "actor",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {}
          },
          {
            "name": "outcome",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "success",
                "failed",
                "denied",
                "partial"
              ],
              "example": "success"
            }
          },
          {
            "name": "action",
            "in": "query",
            "description": "create/read/update/delete/import/export/login/logout/approve/config_change/access",
            "required": false,
            "schema": {}
          },
          {
            "name": "eventTypeLike",
            "in": "query",
            "description": "Prefix or LIKE pattern, e.g., auth.%",
            "required": false,
            "schema": {}
          },
          {
            "name": "eventType",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {}
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "example": 10
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "example": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paged audit logs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "x-apifox-orders": [],
                        "properties": {},
                        "x-apifox-ignore-properties": []
                      }
                    },
                    "total": {
                      "type": "integer"
                    },
                    "page": {
                      "type": "integer"
                    },
                    "pageSize": {
                      "type": "integer"
                    }
                  },
                  "x-apifox-orders": [
                    "items",
                    "total",
                    "page",
                    "pageSize"
                  ],
                  "x-apifox-ignore-properties": []
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 1
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 2
          }
        },
        "security": [],
        "x-original-tags": [
          "Audit"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/audit/audit.controller.ts",
            "line": 17,
            "controller": "AuditController",
            "handler": "list"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "审计日志/Audit",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815398-run"
      }
    },
    "/audit/logs/{id}": {
      "get": {
        "summary": "Get single audit log by id (tenant isolated)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/audit/audit.controller.ts:70；AuditController.detail\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/audit.ts:47；fetchAuditLogDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuditController_detail",
        "tags": [
          "审计日志/Audit"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "来源：Param(id)；源码类型：string",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/audit/audit.controller.ts",
            "line": 70,
            "controller": "AuditController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/audit.ts",
            "line": 47,
            "function": "fetchAuditLogDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "审计日志/Audit",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815399-run"
      }
    },
    "/audit/logs/export.csv": {
      "get": {
        "summary": "Export audit logs as CSV (tenant isolated)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/audit/audit.controller.ts:52；AuditController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuditController_exportCsv",
        "tags": [
          "审计日志/Audit"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Audit"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/audit/audit.controller.ts",
            "line": 52,
            "controller": "AuditController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "审计日志/Audit",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815400-run"
      }
    },
    "/auth/me": {
      "get": {
        "summary": "AuthController.me",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/auth.controller.ts:215；AuthController.me\n\n### 前端调用证据\n- web-school: apps/web-school/src/stores/auth.ts:106；refreshMe()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuthController_me",
        "tags": [
          "认证与账号/Auth"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Auth"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/auth.controller.ts",
            "line": 215,
            "controller": "AuthController",
            "handler": "me"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/stores/auth.ts",
            "line": 106,
            "function": "refreshMe()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "认证与账号/Auth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815401-run"
      }
    },
    "/auth/change-password": {
      "post": {
        "summary": "Change current user password",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/auth.controller.ts:302；AuthController.changePassword\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:241；changePassword(body: { oldPassword: string; newPassword: string })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuthController_changePassword",
        "tags": [
          "认证与账号/Auth"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "oldPassword": {
                    "type": "string",
                    "example": "Test@123456"
                  },
                  "newPassword": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "oldPassword",
                  "newPassword"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "oldPassword": "Test@123456",
                "newPassword": "Test@123456"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/auth.controller.ts",
            "line": 302,
            "controller": "AuthController",
            "handler": "changePassword"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 241,
            "function": "changePassword(body: { oldPassword: string; newPassword: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "认证与账号/Auth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815402-run"
      }
    },
    "/auth/login": {
      "post": {
        "summary": "User login (JWT)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/auth.controller.ts:33；AuthController.login\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/stores/auth.ts:24；login(username: string, password: string)；body=JSON.stringify({ username, password })\n- web-school: apps/web-school/src/stores/auth.ts:161；login(username: string, password: string)；body=JSON.stringify({ username, password })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuthController_login",
        "tags": [
          "认证与账号/Auth"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string",
                    "example": "apifox_autotest"
                  },
                  "password": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "username",
                  "password"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "username": "apifox_autotest",
                "password": "Test@123456"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Auth"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/auth.controller.ts",
            "line": 33,
            "controller": "AuthController",
            "handler": "login"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/stores/auth.ts",
            "line": 24,
            "function": "login(username: string, password: string)",
            "bodyExpression": "JSON.stringify({ username, password })"
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/stores/auth.ts",
            "line": 161,
            "function": "login(username: string, password: string)",
            "bodyExpression": "JSON.stringify({ username, password })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "认证与账号/Auth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815403-run"
      }
    },
    "/auth/logout": {
      "post": {
        "summary": "User logout (invalidate current token)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/auth.controller.ts:282；AuthController.logout\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/stores/auth.ts:52；logout()\n- web-school: apps/web-school/src/stores/auth.ts:188；logout()\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuthController_logout",
        "tags": [
          "认证与账号/Auth"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Auth"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/auth.controller.ts",
            "line": 282,
            "controller": "AuthController",
            "handler": "logout"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/stores/auth.ts",
            "line": 52,
            "function": "logout()",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/stores/auth.ts",
            "line": 188,
            "function": "logout()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "认证与账号/Auth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815404-run"
      }
    },
    "/auth/refresh": {
      "post": {
        "summary": "AuthController.refresh",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/auth.controller.ts:268；AuthController.refresh\n\n### 前端调用证据\n- web-school: apps/web-school/src/stores/auth.ts:138；refreshToken()\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuthController_refresh",
        "tags": [
          "认证与账号/Auth"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Auth"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/auth.controller.ts",
            "line": 268,
            "controller": "AuthController",
            "handler": "refresh"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/stores/auth.ts",
            "line": 138,
            "function": "refreshToken()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "认证与账号/Auth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815405-run"
      }
    },
    "/auth/zhct-login": {
      "post": {
        "summary": "Proxy ZHCT external login and return token",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/auth.controller.ts:155；AuthController.zhctLogin\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:1846；zhctExternalLogin(username, password)；body=JSON.stringify({ username, password })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AuthController_zhctLogin",
        "tags": [
          "认证与账号/Auth"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string",
                    "example": "apifox_autotest"
                  },
                  "password": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "username",
                  "password"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "username": "apifox_autotest",
                "password": "Test@123456"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/auth.controller.ts",
            "line": 155,
            "controller": "AuthController",
            "handler": "zhctLogin"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 1846,
            "function": "zhctExternalLogin(username, password)",
            "bodyExpression": "JSON.stringify({ username, password })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "认证与账号/Auth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815406-run"
      }
    },
    "/cabinet/findDeviceInfo": {
      "get": {
        "summary": "设备心跳",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:394；DewoLiuyangchengController.heartbeat\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_heartbeat",
        "tags": [
          "AI盒子与设备开放接口/Dewo-Liuyangcheng"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "serialNum",
            "in": "query",
            "description": "来源：Query(serialNum)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 394,
            "controller": "DewoLiuyangchengController",
            "handler": "heartbeat"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815407-run"
      }
    },
    "/deviceIot/serials": {
      "get": {
        "summary": "列出已注册的设备序列号（device_iot_configs.serial_number）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:282；DewoLiuyangchengController.listSerials\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:745；deviceIotSerials()\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_listSerials",
        "tags": [
          "AI盒子与设备开放接口/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 282,
            "controller": "DewoLiuyangchengController",
            "handler": "listSerials"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 745,
            "function": "deviceIotSerials()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "AI盒子与设备开放接口/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815408-run"
      }
    },
    "/system/group/device/active-group": {
      "get": {
        "summary": "得沃晨检机获取当前问卷",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:475；DewoLiuyangchengController.dewoMorningActiveGroup\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_dewoMorningActiveGroup",
        "tags": [
          "AI盒子与设备开放接口/Dewo-Liuyangcheng"
        ],
        "parameters": [
          {
            "name": "deviceSn",
            "in": "query",
            "description": "来源：Query(deviceSn)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 475,
            "controller": "DewoLiuyangchengController",
            "handler": "dewoMorningActiveGroup"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815409-run"
      }
    },
    "/deviceIot/deviceLogin": {
      "post": {
        "summary": "得沃晨检机设备登录",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:450；DewoLiuyangchengController.dewoMorningLogin\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_dewoMorningLogin",
        "tags": [
          "AI盒子与设备开放接口/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "description": "源码类型：DeviceLoginRequestDto",
                    "x-source-type": "DeviceLoginRequestDto",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  {
                    "type": "object",
                    "properties": {
                      "serial_number": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}_001"
                      },
                      "sn": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      }
                    },
                    "x-apifox-orders": [
                      "serial_number",
                      "sn"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                ]
              },
              "example": {
                "serial_number": "APIFOX_{{testBatch}}_001",
                "sn": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 450,
            "controller": "DewoLiuyangchengController",
            "handler": "dewoMorningLogin"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815410-run"
      }
    },
    "/deviceIot/getDeviceIdBySerialNumber": {
      "post": {
        "summary": "获取 MQTT 服务地址",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:292；DewoLiuyangchengController.getMqtt\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:736；dewoBindSerial(serialNumber: string)；body={ serialNumber }\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_getMqtt",
        "tags": [
          "AI盒子与设备开放接口/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "源码类型：GetMqttAddressRequestDto",
                "x-source-type": "GetMqttAddressRequestDto",
                "x-apifox-orders": [],
                "properties": {},
                "x-apifox-ignore-properties": []
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 292,
            "controller": "DewoLiuyangchengController",
            "handler": "getMqtt"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 736,
            "function": "dewoBindSerial(serialNumber: string)",
            "bodyExpression": "{ serialNumber }"
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_FRONTEND",
        "x-apifox-folder": "AI盒子与设备开放接口/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815411-run"
      }
    },
    "/gateway/openApi/aet6control/beepStatus": {
      "get": {
        "summary": "AiboxAet6ControlController.beepStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:17；AiboxAet6ControlController.beepStatus\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_beepStatus",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 17,
            "controller": "AiboxAet6ControlController",
            "handler": "beepStatus"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815412-run"
      }
    },
    "/gateway/openApi/aet6control/getAllConfig": {
      "get": {
        "summary": "AiboxAet6ControlController.getAllConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:25；AiboxAet6ControlController.getAllConfig\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_getAllConfig",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 25,
            "controller": "AiboxAet6ControlController",
            "handler": "getAllConfig"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815413-run"
      }
    },
    "/gateway/openApi/aet6control/ledStatus": {
      "get": {
        "summary": "AiboxAet6ControlController.ledStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:15；AiboxAet6ControlController.ledStatus\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_ledStatus",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 15,
            "controller": "AiboxAet6ControlController",
            "handler": "ledStatus"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815414-run"
      }
    },
    "/gateway/openApi/aet6control/pwrStatus": {
      "get": {
        "summary": "AiboxAet6ControlController.pwrStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:19；AiboxAet6ControlController.pwrStatus\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_pwrStatus",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 19,
            "controller": "AiboxAet6ControlController",
            "handler": "pwrStatus"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815415-run"
      }
    },
    "/gateway/openApi/aet6control/reboot": {
      "get": {
        "summary": "AiboxAet6ControlController.reboot",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:26；AiboxAet6ControlController.reboot\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_reboot",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 26,
            "controller": "AiboxAet6ControlController",
            "handler": "reboot"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815416-run"
      }
    },
    "/gateway/openApi/aet6control/setBeep": {
      "get": {
        "summary": "AiboxAet6ControlController.setBeep",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:16；AiboxAet6ControlController.setBeep\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setBeep",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [
          {
            "name": "beep",
            "in": "query",
            "description": "来源：Query(beep)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 16,
            "controller": "AiboxAet6ControlController",
            "handler": "setBeep"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815417-run"
      }
    },
    "/gateway/openApi/aet6control/setBitStream": {
      "get": {
        "summary": "AiboxAet6ControlController.setBitStream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:21；AiboxAet6ControlController.setBitStream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setBitStream",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 21,
            "controller": "AiboxAet6ControlController",
            "handler": "setBitStream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815418-run"
      }
    },
    "/gateway/openApi/aet6control/setEncodeMode": {
      "get": {
        "summary": "AiboxAet6ControlController.setEncodeMode",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:22；AiboxAet6ControlController.setEncodeMode\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setEncodeMode",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 22,
            "controller": "AiboxAet6ControlController",
            "handler": "setEncodeMode"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815419-run"
      }
    },
    "/gateway/openApi/aet6control/setFrames": {
      "get": {
        "summary": "AiboxAet6ControlController.setFrames",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:23；AiboxAet6ControlController.setFrames\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setFrames",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 23,
            "controller": "AiboxAet6ControlController",
            "handler": "setFrames"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815420-run"
      }
    },
    "/gateway/openApi/aet6control/setled": {
      "get": {
        "summary": "AiboxAet6ControlController.setLed",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:11；AiboxAet6ControlController.setLed\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setLed",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [
          {
            "name": "red",
            "in": "query",
            "description": "来源：Query(red)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "green",
            "in": "query",
            "description": "来源：Query(green)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "blue",
            "in": "query",
            "description": "来源：Query(blue)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 11,
            "controller": "AiboxAet6ControlController",
            "handler": "setLed"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815421-run"
      }
    },
    "/gateway/openApi/aet6control/setPixel": {
      "get": {
        "summary": "AiboxAet6ControlController.setPixel",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:24；AiboxAet6ControlController.setPixel\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setPixel",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 24,
            "controller": "AiboxAet6ControlController",
            "handler": "setPixel"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815422-run"
      }
    },
    "/gateway/openApi/aet6control/setPwr": {
      "get": {
        "summary": "AiboxAet6ControlController.setPwr",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:18；AiboxAet6ControlController.setPwr\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setPwr",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [
          {
            "name": "on",
            "in": "query",
            "description": "来源：Query(on)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 18,
            "controller": "AiboxAet6ControlController",
            "handler": "setPwr"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815423-run"
      }
    },
    "/gateway/openApi/aet6control/setUsbCamera": {
      "get": {
        "summary": "AiboxAet6ControlController.setUsbCamera",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts:20；AiboxAet6ControlController.setUsbCamera\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAet6ControlController_setUsbCamera",
        "tags": [
          "AI盒子与设备开放接口/AiboxAet6Control"
        ],
        "parameters": [
          {
            "name": "enable",
            "in": "query",
            "description": "来源：Query(enable)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts",
            "line": 20,
            "controller": "AiboxAet6ControlController",
            "handler": "setUsbCamera"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAet6Control",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815424-run"
      }
    },
    "/gateway/openApi/AnalysisType/getAnalysistypes": {
      "get": {
        "summary": "AiboxAnalysisTypeController.getAnalysistypes",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-analysis-type.controller.ts:11；AiboxAnalysisTypeController.getAnalysistypes\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAnalysisTypeController_getAnalysistypes",
        "tags": [
          "AI盒子与设备开放接口/AiboxAnalysisType"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-analysis-type.controller.ts",
            "line": 11,
            "controller": "AiboxAnalysisTypeController",
            "handler": "getAnalysistypes"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAnalysisType",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815425-run"
      }
    },
    "/gateway/openApi/AnalysisType/setAnalysistypesStatus": {
      "post": {
        "summary": "AiboxAnalysisTypeController.setAnalysistypesStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-analysis-type.controller.ts:17；AiboxAnalysisTypeController.setAnalysistypesStatus\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAnalysisTypeController_setAnalysistypesStatus",
        "tags": [
          "AI盒子与设备开放接口/AiboxAnalysisType"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "typeStatusList": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "number",
                        "example": 10
                      },
                      "x-apifox-orders": [],
                      "properties": {},
                      "x-apifox-ignore-properties": []
                    }
                  }
                },
                "required": [
                  "typeStatusList"
                ],
                "x-apifox-orders": [
                  "typeStatusList"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "typeStatusList": [
                  {}
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-analysis-type.controller.ts",
            "line": 17,
            "controller": "AiboxAnalysisTypeController",
            "handler": "setAnalysistypesStatus"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAnalysisType",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815426-run"
      }
    },
    "/gateway/openApi/autoinfo/delete": {
      "get": {
        "summary": "AiboxVehicleInfoController.delete",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts:12；AiboxVehicleInfoController.delete\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleInfoController_delete",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleInfo"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "来源：Query(id)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts",
            "line": 12,
            "controller": "AiboxVehicleInfoController",
            "handler": "delete"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815427-run"
      }
    },
    "/gateway/openApi/autoinfo/add": {
      "post": {
        "summary": "AiboxVehicleInfoController.add",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts:10；AiboxVehicleInfoController.add\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleInfoController_add",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts",
            "line": 10,
            "controller": "AiboxVehicleInfoController",
            "handler": "add"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815428-run"
      }
    },
    "/gateway/openApi/autoinfo/get": {
      "post": {
        "summary": "AiboxVehicleInfoController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts:13；AiboxVehicleInfoController.get\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleInfoController_get",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts",
            "line": 13,
            "controller": "AiboxVehicleInfoController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815429-run"
      }
    },
    "/gateway/openApi/autoinfo/update": {
      "post": {
        "summary": "AiboxVehicleInfoController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts:11；AiboxVehicleInfoController.update\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleInfoController_update",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts",
            "line": 11,
            "controller": "AiboxVehicleInfoController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815430-run"
      }
    },
    "/gateway/openApi/autolib/delete": {
      "get": {
        "summary": "AiboxVehicleLibController.delete",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts:12；AiboxVehicleLibController.delete\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleLibController_delete",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleLib"
        ],
        "parameters": [
          {
            "name": "fnumber",
            "in": "query",
            "description": "来源：Query(fnumber)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts",
            "line": 12,
            "controller": "AiboxVehicleLibController",
            "handler": "delete"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815431-run"
      }
    },
    "/gateway/openApi/autolib/disable": {
      "get": {
        "summary": "AiboxVehicleLibController.disable",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts:14；AiboxVehicleLibController.disable\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleLibController_disable",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleLib"
        ],
        "parameters": [
          {
            "name": "fnumber",
            "in": "query",
            "description": "来源：Query(fnumber)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts",
            "line": 14,
            "controller": "AiboxVehicleLibController",
            "handler": "disable"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815432-run"
      }
    },
    "/gateway/openApi/autolib/enable": {
      "get": {
        "summary": "AiboxVehicleLibController.enable",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts:13；AiboxVehicleLibController.enable\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleLibController_enable",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleLib"
        ],
        "parameters": [
          {
            "name": "fnumber",
            "in": "query",
            "description": "来源：Query(fnumber)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts",
            "line": 13,
            "controller": "AiboxVehicleLibController",
            "handler": "enable"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815433-run"
      }
    },
    "/gateway/openApi/autolib/get": {
      "post": {
        "summary": "AiboxVehicleLibController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts:15；AiboxVehicleLibController.get\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleLibController_get",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts",
            "line": 15,
            "controller": "AiboxVehicleLibController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815434-run"
      }
    },
    "/gateway/openApi/autolib/save": {
      "post": {
        "summary": "AiboxVehicleLibController.save",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts:10；AiboxVehicleLibController.save\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleLibController_save",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts",
            "line": 10,
            "controller": "AiboxVehicleLibController",
            "handler": "save"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815435-run"
      }
    },
    "/gateway/openApi/autolib/update": {
      "post": {
        "summary": "AiboxVehicleLibController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts:11；AiboxVehicleLibController.update\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVehicleLibController_update",
        "tags": [
          "AI盒子与设备开放接口/AiboxVehicleLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts",
            "line": 11,
            "controller": "AiboxVehicleLibController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVehicleLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815436-run"
      }
    },
    "/gateway/openApi/faceinfo/delete": {
      "get": {
        "summary": "AiboxFaceInfoController.delete",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:23；AiboxFaceInfoController.delete\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_delete",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [
          {
            "name": "idnum",
            "in": "query",
            "description": "来源：Query(idnum)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 23,
            "controller": "AiboxFaceInfoController",
            "handler": "delete"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815437-run"
      }
    },
    "/gateway/openApi/faceinfo/get": {
      "post": {
        "summary": "AiboxFaceInfoController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:29；AiboxFaceInfoController.get\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_get",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 29,
            "controller": "AiboxFaceInfoController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815438-run"
      }
    },
    "/gateway/openApi/faceinfo/getFeature": {
      "post": {
        "summary": "AiboxFaceInfoController.getFeature",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:35；AiboxFaceInfoController.getFeature\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_getFeature",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "imgBase64": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "imgBase64"
                ],
                "x-apifox-orders": [
                  "imgBase64"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "imgBase64": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 35,
            "controller": "AiboxFaceInfoController",
            "handler": "getFeature"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815439-run"
      }
    },
    "/gateway/openApi/faceinfo/getPeopleByID": {
      "post": {
        "summary": "AiboxFaceInfoController.getPeopleByID",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:53；AiboxFaceInfoController.getPeopleByID\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_getPeopleByID",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 53,
            "controller": "AiboxFaceInfoController",
            "handler": "getPeopleByID"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815440-run"
      }
    },
    "/gateway/openApi/faceinfo/getPeopleByValue": {
      "post": {
        "summary": "AiboxFaceInfoController.getPeopleByValue",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:41；AiboxFaceInfoController.getPeopleByValue\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_getPeopleByValue",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 41,
            "controller": "AiboxFaceInfoController",
            "handler": "getPeopleByValue"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815441-run"
      }
    },
    "/gateway/openApi/faceinfo/getPeopleScore": {
      "post": {
        "summary": "AiboxFaceInfoController.getPeopleScore",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:47；AiboxFaceInfoController.getPeopleScore\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_getPeopleScore",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 47,
            "controller": "AiboxFaceInfoController",
            "handler": "getPeopleScore"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815442-run"
      }
    },
    "/gateway/openApi/faceinfo/save": {
      "post": {
        "summary": "AiboxFaceInfoController.save",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:11；AiboxFaceInfoController.save\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_save",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 11,
            "controller": "AiboxFaceInfoController",
            "handler": "save"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815443-run"
      }
    },
    "/gateway/openApi/faceinfo/update": {
      "post": {
        "summary": "AiboxFaceInfoController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:17；AiboxFaceInfoController.update\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_update",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 17,
            "controller": "AiboxFaceInfoController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815444-run"
      }
    },
    "/gateway/openApi/faceinfo/videoAnalysis/getPeopleFromVideo": {
      "post": {
        "summary": "AiboxFaceInfoController.getPeopleFromVideo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts:59；AiboxFaceInfoController.getPeopleFromVideo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceInfoController_getPeopleFromVideo",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceInfo"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts",
            "line": 59,
            "controller": "AiboxFaceInfoController",
            "handler": "getPeopleFromVideo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815445-run"
      }
    },
    "/gateway/openApi/facelib/delete": {
      "get": {
        "summary": "AiboxFaceLibController.delete",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:13；AiboxFaceLibController.delete\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_delete",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [
          {
            "name": "fnumber",
            "in": "query",
            "description": "来源：Query(fnumber)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 13,
            "controller": "AiboxFaceLibController",
            "handler": "delete"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815446-run"
      }
    },
    "/gateway/openApi/facelib/disable": {
      "post": {
        "summary": "AiboxFaceLibController.disable",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:15；AiboxFaceLibController.disable\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_disable",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 15,
            "controller": "AiboxFaceLibController",
            "handler": "disable"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815447-run"
      }
    },
    "/gateway/openApi/facelib/enable": {
      "post": {
        "summary": "AiboxFaceLibController.enable",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:14；AiboxFaceLibController.enable\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_enable",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 14,
            "controller": "AiboxFaceLibController",
            "handler": "enable"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815448-run"
      }
    },
    "/gateway/openApi/facelib/get": {
      "post": {
        "summary": "AiboxFaceLibController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:16；AiboxFaceLibController.get\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_get",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 16,
            "controller": "AiboxFaceLibController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815449-run"
      }
    },
    "/gateway/openApi/facelib/getFeature": {
      "post": {
        "summary": "AiboxFaceLibController.getFeature",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:18；AiboxFaceLibController.getFeature\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_getFeature",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 18,
            "controller": "AiboxFaceLibController",
            "handler": "getFeature"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815450-run"
      }
    },
    "/gateway/openApi/facelib/save": {
      "post": {
        "summary": "AiboxFaceLibController.save",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:11；AiboxFaceLibController.save\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_save",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 11,
            "controller": "AiboxFaceLibController",
            "handler": "save"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815451-run"
      }
    },
    "/gateway/openApi/facelib/update": {
      "post": {
        "summary": "AiboxFaceLibController.update",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts:12；AiboxFaceLibController.update\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxFaceLibController_update",
        "tags": [
          "AI盒子与设备开放接口/AiboxFaceLib"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts",
            "line": 12,
            "controller": "AiboxFaceLibController",
            "handler": "update"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxFaceLib",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815452-run"
      }
    },
    "/gateway/openApi/setLocalTime": {
      "get": {
        "summary": "AiboxSystemController.setLocalTime",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-system.controller.ts:11；AiboxSystemController.setLocalTime\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxSystemController_setLocalTime",
        "tags": [
          "AI盒子与设备开放接口/AiboxSystem"
        ],
        "parameters": [
          {
            "name": "time",
            "in": "query",
            "description": "来源：Query(time)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-system.controller.ts",
            "line": 11,
            "controller": "AiboxSystemController",
            "handler": "setLocalTime"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxSystem",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815453-run"
      }
    },
    "/openApi/view/getChannelStream": {
      "get": {
        "summary": "AiboxVideoController.getChannelStream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:11；AiboxVideoController.getChannelStream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getChannelStream",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "protocol",
            "in": "query",
            "description": "来源：Query(protocol)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 11,
            "controller": "AiboxVideoController",
            "handler": "getChannelStream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815454-run"
      }
    },
    "/openApi/view/getRecordLiveUrlBySDK": {
      "get": {
        "summary": "AiboxVideoController.getRecordLiveUrlBySDK",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:89；AiboxVideoController.getRecordLiveUrlBySDK\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getRecordLiveUrlBySDK",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "protocol",
            "in": "query",
            "description": "来源：Query(protocol)；源码类型：string | undefined",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "APIFOX_{{testBatch}}"
                }
              ],
              "type": "null"
            }
          },
          {
            "name": "starttime",
            "in": "query",
            "description": "来源：Query(starttime)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "endtime",
            "in": "query",
            "description": "来源：Query(endtime)；源码类型：string | undefined",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "2026-09-24 10:00:00"
                }
              ],
              "type": "null"
            }
          },
          {
            "name": "speed",
            "in": "query",
            "description": "来源：Query(speed)；源码类型：'0.5' | '1' | '2' | '4'",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "0.5",
                "1",
                "2",
                "4"
              ],
              "example": "0.5"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 89,
            "controller": "AiboxVideoController",
            "handler": "getRecordLiveUrlBySDK"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815455-run"
      }
    },
    "/openApi/view/getSDKFileProgress": {
      "get": {
        "summary": "AiboxVideoController.getSDKFileProgress",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:67；AiboxVideoController.getSDKFileProgress\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getSDKFileProgress",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "streamid",
            "in": "query",
            "description": "来源：Query(streamid)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 67,
            "controller": "AiboxVideoController",
            "handler": "getSDKFileProgress"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815456-run"
      }
    },
    "/openApi/view/getSDKRecordList": {
      "get": {
        "summary": "AiboxVideoController.getSDKRecordList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:79；AiboxVideoController.getSDKRecordList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getSDKRecordList",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "starttime",
            "in": "query",
            "description": "来源：Query(starttime)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "endtime",
            "in": "query",
            "description": "来源：Query(endtime)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 79,
            "controller": "AiboxVideoController",
            "handler": "getSDKRecordList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815457-run"
      }
    },
    "/openApi/view/getSnapByChannel": {
      "get": {
        "summary": "AiboxVideoController.getSnapByChannel",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:61；AiboxVideoController.getSnapByChannel\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getSnapByChannel",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 61,
            "controller": "AiboxVideoController",
            "handler": "getSnapByChannel"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815458-run"
      }
    },
    "/openApi/view/getViewRecordAddress": {
      "get": {
        "summary": "AiboxVideoController.getViewRecordAddress",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:44；AiboxVideoController.getViewRecordAddress\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getViewRecordAddress",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "operate",
            "in": "query",
            "description": "来源：Query(operate)；源码类型：'play' | 'download'",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "play",
                "download"
              ],
              "example": "play"
            }
          },
          {
            "name": "starttime",
            "in": "query",
            "description": "来源：Query(starttime)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "endtime",
            "in": "query",
            "description": "来源：Query(endtime)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 44,
            "controller": "AiboxVideoController",
            "handler": "getViewRecordAddress"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815459-run"
      }
    },
    "/openApi/view/getViewRecordAddressBySDK": {
      "get": {
        "summary": "AiboxVideoController.getViewRecordAddressBySDK",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:101；AiboxVideoController.getViewRecordAddressBySDK\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getViewRecordAddressBySDK",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "starttime",
            "in": "query",
            "description": "来源：Query(starttime)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "endtime",
            "in": "query",
            "description": "来源：Query(endtime)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 101,
            "controller": "AiboxVideoController",
            "handler": "getViewRecordAddressBySDK"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815460-run"
      }
    },
    "/openApi/view/getViewRecordDay": {
      "get": {
        "summary": "AiboxVideoController.getViewRecordDay",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:17；AiboxVideoController.getViewRecordDay\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_getViewRecordDay",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "channel",
            "in": "query",
            "description": "来源：Query(channel)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "period",
            "in": "query",
            "description": "来源：Query(period)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 17,
            "controller": "AiboxVideoController",
            "handler": "getViewRecordDay"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815461-run"
      }
    },
    "/openApi/view/setChannelConfig": {
      "get": {
        "summary": "AiboxVideoController.setChannelConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:55；AiboxVideoController.setChannelConfig\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_setChannelConfig",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 55,
            "controller": "AiboxVideoController",
            "handler": "setChannelConfig"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815462-run"
      }
    },
    "/openApi/view/stopRecordBySDK": {
      "get": {
        "summary": "AiboxVideoController.stopRecordBySDK",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts:73；AiboxVideoController.stopRecordBySDK\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoController_stopRecordBySDK",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideo"
        ],
        "parameters": [
          {
            "name": "streamid",
            "in": "query",
            "description": "来源：Query(streamid)；源码类型：string",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts",
            "line": 73,
            "controller": "AiboxVideoController",
            "handler": "stopRecordBySDK"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815463-run"
      }
    },
    "/gateway/openApi/autorecord/get": {
      "post": {
        "summary": "AiboxPlateRecordController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-platerecord.controller.ts:10；AiboxPlateRecordController.get\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPlateRecordController_get",
        "tags": [
          "AI盒子与设备开放接口/AiboxPlateRecord"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-platerecord.controller.ts",
            "line": 10,
            "controller": "AiboxPlateRecordController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPlateRecord",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815464-run"
      }
    },
    "/gateway/openApi/channel/getChannels": {
      "post": {
        "summary": "AiboxChannelController.getChannels",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-channel.controller.ts:11；AiboxChannelController.getChannels\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxChannelController_getChannels",
        "tags": [
          "AI盒子与设备开放接口/AiboxChannel"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-channel.controller.ts",
            "line": 11,
            "controller": "AiboxChannelController",
            "handler": "getChannels"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxChannel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815465-run"
      }
    },
    "/gateway/openApi/channel/updateChannelStatus": {
      "post": {
        "summary": "AiboxChannelController.updateChannelStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-channel.controller.ts:17；AiboxChannelController.updateChannelStatus\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxChannelController_updateChannelStatus",
        "tags": [
          "AI盒子与设备开放接口/AiboxChannel"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Channel": {
                    "type": "number",
                    "example": 10
                  },
                  "enable": {
                    "type": "number",
                    "example": 10
                  }
                },
                "required": [
                  "Channel",
                  "enable"
                ],
                "x-apifox-orders": [
                  "Channel",
                  "enable"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "Channel": 10,
                "enable": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-channel.controller.ts",
            "line": 17,
            "controller": "AiboxChannelController",
            "handler": "updateChannelStatus"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxChannel",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815466-run"
      }
    },
    "/gateway/openApi/token/getThirdPlatToken": {
      "post": {
        "summary": "AiboxAuthController.getThirdPlatToken",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-auth.controller.ts:12；AiboxAuthController.getThirdPlatToken\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxAuthController_getThirdPlatToken",
        "tags": [
          "AI盒子与设备开放接口/AiboxAuth"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fnumber": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_001"
                  },
                  "fpwd": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "x-apifox-orders": [
                  "fnumber",
                  "fpwd"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "fnumber": "APIFOX_{{testBatch}}_001",
                "fpwd": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-auth.controller.ts",
            "line": 12,
            "controller": "AiboxAuthController",
            "handler": "getThirdPlatToken"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxAuth",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815467-run"
      }
    },
    "/gateway/openApi/videoSheet/deleteOpenApi": {
      "post": {
        "summary": "AiboxVideoSheetController.deleteOpenApi",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-videosheet.controller.ts:11；AiboxVideoSheetController.deleteOpenApi\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoSheetController_deleteOpenApi",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideoSheet"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-videosheet.controller.ts",
            "line": 11,
            "controller": "AiboxVideoSheetController",
            "handler": "deleteOpenApi"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideoSheet",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815468-run"
      }
    },
    "/gateway/openApi/videoSheet/saveOrUpdateOpenApi": {
      "post": {
        "summary": "AiboxVideoSheetController.saveOrUpdate",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-videosheet.controller.ts:10；AiboxVideoSheetController.saveOrUpdate\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxVideoSheetController_saveOrUpdate",
        "tags": [
          "AI盒子与设备开放接口/AiboxVideoSheet"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {}
              },
              "example": [
                "APIFOX_{{testBatch}}"
              ]
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-videosheet.controller.ts",
            "line": 10,
            "controller": "AiboxVideoSheetController",
            "handler": "saveOrUpdate"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxVideoSheet",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815469-run"
      }
    },
    "/openApi/aisleInfo/reportAisleInfos": {
      "post": {
        "summary": "AiboxPushController.reportAisleInfos",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:11；AiboxPushController.reportAisleInfos\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPushController_reportAisleInfos",
        "tags": [
          "AI盒子与设备开放接口/AiboxPush"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {}
              },
              "example": [
                "APIFOX_{{testBatch}}"
              ]
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 11,
            "controller": "AiboxPushController",
            "handler": "reportAisleInfos"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPush",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815470-run"
      }
    },
    "/openApi/checkRecord/reportVideo": {
      "post": {
        "summary": "AiboxPushController.reportVideo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:30；AiboxPushController.reportVideo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPushController_reportVideo",
        "tags": [
          "AI盒子与设备开放接口/AiboxPush"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 30,
            "controller": "AiboxPushController",
            "handler": "reportVideo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPush",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815471-run"
      }
    },
    "/openApi/custStatisticRecord/reportCustStatisticRecords": {
      "post": {
        "summary": "AiboxPushController.reportCustStatisticRecords",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:24；AiboxPushController.reportCustStatisticRecords\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPushController_reportCustStatisticRecords",
        "tags": [
          "AI盒子与设备开放接口/AiboxPush"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {}
              },
              "example": [
                "APIFOX_{{testBatch}}"
              ]
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 24,
            "controller": "AiboxPushController",
            "handler": "reportCustStatisticRecords"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPush",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815472-run"
      }
    },
    "/openApi/faceRecord/reportFaceRecords": {
      "post": {
        "summary": "AiboxPushController.reportFaceRecords",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:18；AiboxPushController.reportFaceRecords\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPushController_reportFaceRecords",
        "tags": [
          "AI盒子与设备开放接口/AiboxPush"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {}
              },
              "example": [
                "APIFOX_{{testBatch}}"
              ]
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 18,
            "controller": "AiboxPushController",
            "handler": "reportFaceRecords"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPush",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815473-run"
      }
    },
    "/openApi/humCheckRecord/reportHumCheckRecord": {
      "post": {
        "summary": "AiboxPushController.reportHumCheckRecord",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:27；AiboxPushController.reportHumCheckRecord\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPushController_reportHumCheckRecord",
        "tags": [
          "AI盒子与设备开放接口/AiboxPush"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 27,
            "controller": "AiboxPushController",
            "handler": "reportHumCheckRecord"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPush",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815474-run"
      }
    },
    "/openApi/strangerRecord/reportStrangerRecords": {
      "post": {
        "summary": "AiboxPushController.reportStrangerRecords",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:21；AiboxPushController.reportStrangerRecords\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxPushController_reportStrangerRecords",
        "tags": [
          "AI盒子与设备开放接口/AiboxPush"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {}
              },
              "example": [
                "APIFOX_{{testBatch}}"
              ]
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 21,
            "controller": "AiboxPushController",
            "handler": "reportStrangerRecords"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxPush",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815475-run"
      }
    },
    "/openApi/checkRecord/reportCheckRecords": {
      "post": {
        "summary": "CheckRecordController.reportCheckRecords",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/check-record.controller.ts:17；CheckRecordController.reportCheckRecords\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts:14；AiboxPushController.reportCheckRecords\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "CheckRecordController_reportCheckRecords",
        "tags": [
          "AI盒子与设备开放接口/CheckRecord"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/check-record.controller.ts",
            "line": 17,
            "controller": "CheckRecordController",
            "handler": "reportCheckRecords"
          },
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts",
            "line": 14,
            "controller": "AiboxPushController",
            "handler": "reportCheckRecords"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/CheckRecord",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815476-run"
      }
    },
    "/openApi/info/getAlgAnalysisDetail": {
      "post": {
        "summary": "AiboxInfoController.getAlgAnalysisDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts:12；AiboxInfoController.getAlgAnalysisDetail\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxInfoController_getAlgAnalysisDetail",
        "tags": [
          "AI盒子与设备开放接口/AiboxInfo"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts",
            "line": 12,
            "controller": "AiboxInfoController",
            "handler": "getAlgAnalysisDetail"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815477-run"
      }
    },
    "/openApi/info/getParamList": {
      "post": {
        "summary": "AiboxInfoController.getParamList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts:15；AiboxInfoController.getParamList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxInfoController_getParamList",
        "tags": [
          "AI盒子与设备开放接口/AiboxInfo"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts",
            "line": 15,
            "controller": "AiboxInfoController",
            "handler": "getParamList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815478-run"
      }
    },
    "/openApi/info/getServerConfig": {
      "post": {
        "summary": "AiboxInfoController.getServerConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts:13；AiboxInfoController.getServerConfig\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxInfoController_getServerConfig",
        "tags": [
          "AI盒子与设备开放接口/AiboxInfo"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts",
            "line": 13,
            "controller": "AiboxInfoController",
            "handler": "getServerConfig"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815479-run"
      }
    },
    "/openApi/info/getServerInfo": {
      "post": {
        "summary": "AiboxInfoController.getServerInfo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts:11；AiboxInfoController.getServerInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxInfoController_getServerInfo",
        "tags": [
          "AI盒子与设备开放接口/AiboxInfo"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts",
            "line": 11,
            "controller": "AiboxInfoController",
            "handler": "getServerInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815480-run"
      }
    },
    "/openApi/info/getStream0Config": {
      "post": {
        "summary": "AiboxInfoController.getStream0Config",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts:14；AiboxInfoController.getStream0Config\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AiboxInfoController_getStream0Config",
        "tags": [
          "AI盒子与设备开放接口/AiboxInfo"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts",
            "line": 14,
            "controller": "AiboxInfoController",
            "handler": "getStream0Config"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "AI盒子与设备开放接口/AiboxInfo",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815481-run"
      }
    },
    "/openApi/sendAIRecordByCompany": {
      "post": {
        "summary": "TrustivsAIController.sendAIRecordByCompany",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/trustivs/controller/ai.controller.ts:21；TrustivsAIController.sendAIRecordByCompany\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "TrustivsAIController_sendAIRecordByCompany",
        "tags": [
          "AI盒子与设备开放接口/TrustIVS AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "TrustIVS AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/trustivs/controller/ai.controller.ts",
            "line": 21,
            "controller": "TrustivsAIController",
            "handler": "sendAIRecordByCompany"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "AI盒子与设备开放接口/TrustIVS AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815482-run"
      }
    },
    "/files/view/{name}": {
      "get": {
        "summary": "FilesController.view",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/files.controller.ts:91；FilesController.view\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "FilesController_view",
        "tags": [
          "文件服务/Files"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_测试数据"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "来源：Param(path)；源码类型：string",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Files"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/files.controller.ts",
            "line": 91,
            "controller": "FilesController",
            "handler": "view"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "文件服务/Files",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815483-run"
      }
    },
    "/files/upload": {
      "post": {
        "summary": "Upload image (dataURL/base64/plain), returns view URL",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/files.controller.ts:16；FilesController.upload\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/pages/companion/quick.vue:316；requestUpload(filename: string, dataUrl: string)；body=JSON.stringify({ filename, content: dataUrl })\n- web-regulator: apps/web-regulator/src/services/api.ts:1473；uploadImageBase64(filename: string, content: string)；body=JSON.stringify({ filename, content })\n- web-school: apps/web-school/src/services/api.ts:832；uploadFile(filename: string, content: string)；body={ filename, content }\n\n### 自动化约束\n- 风险：FILE_OR_BULK_WRITE\n- 执行策略：ISOLATED_STORAGE_AND_DB\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "FilesController_upload",
        "tags": [
          "文件服务/Files"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "filename": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "content": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "filename",
                  "content"
                ],
                "x-apifox-orders": [
                  "filename",
                  "content"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "filename": "APIFOX_{{testBatch}}_测试数据",
                "content": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Files"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/files.controller.ts",
            "line": 16,
            "controller": "FilesController",
            "handler": "upload"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/pages/companion/quick.vue",
            "line": 316,
            "function": "requestUpload(filename: string, dataUrl: string)",
            "bodyExpression": "JSON.stringify({ filename, content: dataUrl })"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1473,
            "function": "uploadImageBase64(filename: string, content: string)",
            "bodyExpression": "JSON.stringify({ filename, content })"
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 832,
            "function": "uploadFile(filename: string, content: string)",
            "bodyExpression": "{ filename, content }"
          }
        ],
        "x-test-risk": "FILE_OR_BULK_WRITE",
        "x-test-execution-policy": "ISOLATED_STORAGE_AND_DB",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "文件服务/Files",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815484-run"
      }
    },
    "/static/{path}": {
      "get": {
        "summary": "StaticController.view",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/files.controller.ts:118；StaticController.view\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "StaticController_view",
        "tags": [
          "文件服务/Static"
        ],
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "来源：Param(path)；源码类型：string",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Binary file",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "404": {
            "description": "File not found",
            "headers": {},
            "x-apifox-name": "记录不存在",
            "x-apifox-ordering": 1
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/files.controller.ts",
            "line": 118,
            "controller": "StaticController",
            "handler": "view"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "文件服务/Static",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815485-run"
      }
    },
    "/iot/cameras": {
      "get": {
        "summary": "IotController.cameras",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/iot.controller.ts:13；IotController.cameras\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IotController_cameras",
        "tags": [
          "物联网设备/IoT"
        ],
        "parameters": [
          {
            "name": "company",
            "in": "query",
            "description": "来源：Query(company)；源码类型：string | undefined",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "example": "APIFOX_{{testBatch}}"
                }
              ],
              "type": "null"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "IoT"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/iot.controller.ts",
            "line": 13,
            "controller": "IotController",
            "handler": "cameras"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "物联网设备/IoT",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815486-run"
      }
    },
    "/iot/streams/back": {
      "get": {
        "summary": "IotController.back",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/iot.controller.ts:49；IotController.back\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IotController_back",
        "tags": [
          "物联网设备/IoT"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "IoT"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/iot.controller.ts",
            "line": 49,
            "controller": "IotController",
            "handler": "back"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "物联网设备/IoT",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815487-run"
      }
    },
    "/iot/streams/download": {
      "get": {
        "summary": "IotController.download",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/iot.controller.ts:60；IotController.download\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IotController_download",
        "tags": [
          "物联网设备/IoT"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "IoT"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/iot.controller.ts",
            "line": 60,
            "controller": "IotController",
            "handler": "download"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "物联网设备/IoT",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815488-run"
      }
    },
    "/iot/streams/play": {
      "get": {
        "summary": "IotController.play",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/iot.controller.ts:30；IotController.play\n\n### 前端调用证据\n- web-school: apps/web-school/src/api/streams.ts:37；play(cameraId: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IotController_play",
        "tags": [
          "物联网设备/IoT"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "IoT"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/iot.controller.ts",
            "line": 30,
            "controller": "IotController",
            "handler": "play"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/api/streams.ts",
            "line": 37,
            "function": "play(cameraId: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "物联网设备/IoT",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815489-run"
      }
    },
    "/iot/streams/snapshot": {
      "get": {
        "summary": "IotController.snapshot",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/iot.controller.ts:44；IotController.snapshot\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "IotController_snapshot",
        "tags": [
          "物联网设备/IoT"
        ],
        "parameters": [
          {
            "name": "cameraId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "IoT"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/iot.controller.ts",
            "line": 44,
            "controller": "IotController",
            "handler": "snapshot"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "物联网设备/IoT",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815490-run"
      }
    },
    "/push/foodList": {
      "get": {
        "summary": "查询菜品列表（用于前端选择）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:202；SammeiController.getFoodList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_getFoodList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "返回 Array<{ id, name }>",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 202,
            "controller": "SammeiController",
            "handler": "getFoodList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815491-run"
      },
      "post": {
        "summary": "菜品同步接口",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:175；SammeiController.pushFoodList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushFoodList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "preFoodListJson"
                ],
                "properties": {
                  "preFoodListJson": {
                    "type": "string",
                    "description": "菜品数组转 JSON 字符串（兼容 foodListJson）"
                  },
                  "foodListJson": {
                    "type": "string",
                    "description": "兼容字段：菜品数组转 JSON 字符串"
                  }
                },
                "x-apifox-orders": [
                  "preFoodListJson",
                  "foodListJson"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "preFoodListJson": "APIFOX_{{testBatch}}",
                "foodListJson": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 175,
            "controller": "SammeiController",
            "handler": "pushFoodList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815492-run"
      }
    },
    "/push/hello": {
      "get": {
        "summary": "连通测试（GET 别名）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:35；SammeiController.helloGet\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_helloGet",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: 当前时间 }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 35,
            "controller": "SammeiController",
            "handler": "helloGet"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815493-run"
      },
      "post": {
        "summary": "连通测试",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:27；SammeiController.hello\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_hello",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: 当前时间 }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 27,
            "controller": "SammeiController",
            "handler": "hello"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815494-run"
      }
    },
    "/push/mealTypeList": {
      "get": {
        "summary": "查询餐别列表",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:230；SammeiController.getMealTypeList\n\n### 前端调用证据\n- web-school: apps/web-school/src/services/api.ts:664；mealTypes()\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_getMealTypeList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "返回 Array<{ id, name, ord }>",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 230,
            "controller": "SammeiController",
            "handler": "getMealTypeList"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 664,
            "function": "mealTypes()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815495-run"
      },
      "post": {
        "summary": "餐别同步接口",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:209；SammeiController.pushMealTypeList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushMealTypeList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "mealTypeListJson"
                ],
                "properties": {
                  "mealTypeListJson": {
                    "type": "string",
                    "description": "餐别数组转 JSON 字符串"
                  }
                },
                "x-apifox-orders": [
                  "mealTypeListJson"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "mealTypeListJson": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 209,
            "controller": "SammeiController",
            "handler": "pushMealTypeList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815496-run"
      }
    },
    "/common/empowerOSSAccess": {
      "post": {
        "summary": "上传留样图片-OSS 授权",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:447；SammeiCommonController.empowerOSSAccess\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiCommonController_empowerOSSAccess",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "method",
                  "contentType",
                  "suffix"
                ],
                "properties": {
                  "method": {
                    "type": "string",
                    "description": "OSS 文件上传 method，通常为 PUT",
                    "example": "PUT"
                  },
                  "contentType": {
                    "type": "string",
                    "description": "OSS 文件上传 Content-Type",
                    "example": "image/jpeg"
                  },
                  "rootFileName": {
                    "type": "string",
                    "description": "上传到哪个根目录下（可选）",
                    "example": "sampling"
                  },
                  "fileName": {
                    "type": "string",
                    "description": "上传后的新文件名（可选，不含后缀）",
                    "example": "sample_001"
                  },
                  "suffix": {
                    "type": "string",
                    "description": "文件后缀，不含点",
                    "example": "jpg"
                  }
                },
                "x-apifox-orders": [
                  "method",
                  "contentType",
                  "rootFileName",
                  "fileName",
                  "suffix"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "method": "PUT",
                "contentType": "image/jpeg",
                "rootFileName": "sampling",
                "fileName": "sample_001",
                "suffix": "jpg"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: { ossFileUrl, fileUrl } }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 447,
            "controller": "SammeiCommonController",
            "handler": "empowerOSSAccess"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815497-run"
      }
    },
    "/common/file/upload": {
      "post": {
        "summary": "上传留样图片-服务器",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:482；SammeiCommonController.uploadToServer\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiCommonController_uploadToServer",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "文件",
                    "example": ""
                  },
                  "prefix": {
                    "type": "string",
                    "description": "上传到哪个根目录下（可选）",
                    "example": "20250923"
                  }
                },
                "required": [
                  "file"
                ]
              },
              "example": {
                "file": "",
                "prefix": "20250923"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: { newName } }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 482,
            "controller": "SammeiCommonController",
            "handler": "uploadToServer"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815498-run"
      }
    },
    "/push/deleteList": {
      "post": {
        "summary": "删除记录同步",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:254；SammeiController.pushDeleteList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushDeleteList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "type",
                  "ids"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "user",
                      "mealType",
                      "food",
                      "preFood"
                    ],
                    "description": "删除类型：操作员/餐别/菜品/配餐"
                  },
                  "ids": {
                    "type": "string",
                    "description": "删除记录的ids，英文逗号分隔"
                  }
                },
                "x-apifox-orders": [
                  "type",
                  "ids"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "type": "user",
                "ids": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 254,
            "controller": "SammeiController",
            "handler": "pushDeleteList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815499-run"
      }
    },
    "/push/detailList": {
      "post": {
        "summary": "留样记录同步接口",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:237；SammeiController.pushDetailList\n- services/gateway-service/src/modules/sammei.controller.ts:296；SammeiController.pushDetailList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushDetailList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "sampleListJson"
                ],
                "properties": {
                  "sampleListJson": {
                    "type": "string",
                    "description": "留样记录数组转 JSON 字符串"
                  }
                },
                "x-apifox-orders": [
                  "sampleListJson"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "sampleListJson": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 237,
            "controller": "SammeiController",
            "handler": "pushDetailList"
          },
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 296,
            "controller": "SammeiController",
            "handler": "pushDetailList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815500-run"
      }
    },
    "/push/foodInfo": {
      "post": {
        "summary": "菜品新增、删除、修改",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:40；SammeiController.pushFoodInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushFoodInfo",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "msgType",
                  "msgContent"
                ],
                "properties": {
                  "deviceType": {
                    "type": "string",
                    "description": "设备类型（可选）",
                    "example": "lockLyg"
                  },
                  "msgType": {
                    "type": "string",
                    "description": "消息类型：固定为 foodInfo",
                    "example": "foodInfo"
                  },
                  "deviceId": {
                    "type": "string",
                    "description": "设备ID（可选）",
                    "example": "67f88471cf3b5d04"
                  },
                  "msgContent": {
                    "type": "string",
                    "description": "JSON 字符串：{ msgType, dataStatus, data: [...], timestamp }",
                    "example": "{\"msgType\":\"foodInfo\",\"dataStatus\":\"upd\",\"data\":[{\"id\":\"9e66af9c-163e-443e-a010-20ed6bbc991a\",\"foodName\":\"西红柿\",\"userName\":\"pc-admin\",\"userNo\":\"\"}],\"timestamp\":1752740213511}"
                  }
                },
                "x-apifox-orders": [
                  "deviceType",
                  "msgType",
                  "deviceId",
                  "msgContent"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "deviceType": "lockLyg",
                "msgType": "foodInfo",
                "deviceId": "67f88471cf3b5d04",
                "msgContent": "{\"msgType\":\"foodInfo\",\"dataStatus\":\"upd\",\"data\":[{\"id\":\"9e66af9c-163e-443e-a010-20ed6bbc991a\",\"foodName\":\"西红柿\",\"userName\":\"pc-admin\",\"userNo\":\"\"}],\"timestamp\":1752740213511}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 40,
            "controller": "SammeiController",
            "handler": "pushFoodInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815501-run"
      }
    },
    "/push/foodPlanList": {
      "post": {
        "summary": "配餐同步接口",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:269；SammeiController.pushFoodPlanList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushFoodPlanList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "preFoodListJson": {
                    "type": "string",
                    "description": "配餐数组转 JSON 字符串（优先）"
                  },
                  "foodListJson": {
                    "type": "string",
                    "description": "兼容字段：配餐数组转 JSON 字符串"
                  },
                  "preFoodList": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "x-apifox-orders": [],
                      "properties": {},
                      "x-apifox-ignore-properties": []
                    },
                    "description": "兼容数组字段"
                  },
                  "foodList": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "x-apifox-orders": [],
                      "properties": {},
                      "x-apifox-ignore-properties": []
                    },
                    "description": "兼容数组字段"
                  }
                },
                "x-apifox-orders": [
                  "preFoodListJson",
                  "foodListJson",
                  "preFoodList",
                  "foodList"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "preFoodListJson": "APIFOX_{{testBatch}}",
                "foodListJson": "APIFOX_{{testBatch}}",
                "preFoodList": [
                  {}
                ],
                "foodList": [
                  {}
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 269,
            "controller": "SammeiController",
            "handler": "pushFoodPlanList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815502-run"
      }
    },
    "/push/operateLogList": {
      "post": {
        "summary": "操作日志同步",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:427；SammeiController.pushOperateLogList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushOperateLogList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "operateLogListJson"
                ],
                "properties": {
                  "operateLogListJson": {
                    "type": "string",
                    "description": "操作日志数组转 JSON 字符串"
                  }
                },
                "x-apifox-orders": [
                  "operateLogListJson"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "operateLogListJson": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 427,
            "controller": "SammeiController",
            "handler": "pushOperateLogList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815503-run"
      }
    },
    "/push/operateUserList": {
      "post": {
        "summary": "操作员同步接口",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:404；SammeiController.pushOperateUserList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushOperateUserList",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "userListJson"
                ],
                "properties": {
                  "userListJson": {
                    "type": "string",
                    "description": "操作员数组转 JSON 字符串"
                  }
                },
                "x-apifox-orders": [
                  "userListJson"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "userListJson": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 404,
            "controller": "SammeiController",
            "handler": "pushOperateUserList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815504-run"
      }
    },
    "/push/preFoodInfo": {
      "post": {
        "summary": "配餐新增、删除、修改",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sammei.controller.ts:89；SammeiController.pushPreFoodInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SammeiController_pushPreFoodInfo",
        "tags": [
          "第三方设备数据接入/Sammei"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "msgType",
                  "msgContent"
                ],
                "properties": {
                  "deviceType": {
                    "type": "string",
                    "description": "设备类型（可选）",
                    "example": "lockLyg"
                  },
                  "msgType": {
                    "type": "string",
                    "description": "消息类型：固定为 preFoodInfo",
                    "example": "preFoodInfo"
                  },
                  "deviceId": {
                    "type": "string",
                    "description": "设备ID（可选）",
                    "example": "67f88471cf3b5d04"
                  },
                  "msgContent": {
                    "type": "string",
                    "description": "JSON 字符串：{ msgType, dataStatus, data: [...], timestamp }",
                    "example": "{\"msgType\":\"preFoodInfo\",\"dataStatus\":\"upd\",\"data\":[{\"id\":\"25887c5f-82fb-45fe-99a9-63bebf70664f\",\"foodId\":\"9e66af9c-163e-443e-a010-20ed6bbc991a\",\"foodName\":\"西红柿\",\"mealTypeId\":\"9e66999c-163e-443e-a010-20fffbbc991a\",\"mealTypeName\":\"早餐\",\"date\":\"2025-12-05\",\"userName\":\"pc-admin\",\"userNo\":\"\"}],\"timestamp\":1752740213511}"
                  }
                },
                "x-apifox-orders": [
                  "deviceType",
                  "msgType",
                  "deviceId",
                  "msgContent"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "deviceType": "lockLyg",
                "msgType": "preFoodInfo",
                "deviceId": "67f88471cf3b5d04",
                "msgContent": "{\"msgType\":\"preFoodInfo\",\"dataStatus\":\"upd\",\"data\":[{\"id\":\"25887c5f-82fb-45fe-99a9-63bebf70664f\",\"foodId\":\"9e66af9c-163e-443e-a010-20ed6bbc991a\",\"foodName\":\"西红柿\",\"mealTypeId\":\"9e66999c-163e-443e-a010-20fffbbc991a\",\"mealTypeName\":\"早餐\",\"date\":\"2025-12-05\",\"userName\":\"pc-admin\",\"userNo\":\"\"}],\"timestamp\":1752740213511}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "返回 { status: 0, message: \"成功\", data: \"\" }",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sammei"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sammei.controller.ts",
            "line": 89,
            "controller": "SammeiController",
            "handler": "pushPreFoodInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sammei",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815505-run"
      }
    },
    "/push/ws/online": {
      "get": {
        "summary": "查询设备在线状态（无 deviceId 返回在线列表）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/push-ws.controller.ts:51；PushWsController.online\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PushWsController_online",
        "tags": [
          "第三方设备数据接入/PushWS"
        ],
        "parameters": [
          {
            "name": "deviceId",
            "in": "query",
            "description": "来源：Query(deviceId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/push-ws.controller.ts",
            "line": 51,
            "controller": "PushWsController",
            "handler": "online"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/PushWS",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815506-run"
      }
    },
    "/push/ws/foodInfo": {
      "post": {
        "summary": "通过 WebSocket 下发 foodInfo（外部系统 -> 设备）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/push-ws.controller.ts:31；PushWsController.downFoodInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PushWsController_downFoodInfo",
        "tags": [
          "第三方设备数据接入/PushWS"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/push-ws.controller.ts",
            "line": 31,
            "controller": "PushWsController",
            "handler": "downFoodInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/PushWS",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815507-run"
      }
    },
    "/push/ws/preFoodInfo": {
      "post": {
        "summary": "通过 WebSocket 下发 preFoodInfo（外部系统 -> 设备）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/push-ws.controller.ts:41；PushWsController.downPreFoodInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "PushWsController_downPreFoodInfo",
        "tags": [
          "第三方设备数据接入/PushWS"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/push-ws.controller.ts",
            "line": 41,
            "controller": "PushWsController",
            "handler": "downPreFoodInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/PushWS",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815508-run"
      }
    },
    "/sakura/instrument/canteen": {
      "get": {
        "summary": "获取食堂信息",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:346；SakuraController.instrumentCanteen\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_instrumentCanteen",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "produceCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 346,
            "controller": "SakuraController",
            "handler": "instrumentCanteen"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815509-run"
      }
    },
    "/sakura/instrument/mealType": {
      "get": {
        "summary": "获取餐次信息",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:325；SakuraController.instrumentMealType\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_instrumentMealType",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "produceCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 325,
            "controller": "SakuraController",
            "handler": "instrumentMealType"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815510-run"
      }
    },
    "/sakura/instrument/samples": {
      "get": {
        "summary": "获取留样信息",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:116；SakuraController.instrumentSamples\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_instrumentSamples",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "produceCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 116,
            "controller": "SakuraController",
            "handler": "instrumentSamples"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815511-run"
      }
    },
    "/sakura/instrument/user": {
      "get": {
        "summary": "获取人员信息",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:304；SakuraController.instrumentUser\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_instrumentUser",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "produceCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 304,
            "controller": "SakuraController",
            "handler": "instrumentUser"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815512-run"
      }
    },
    "/sakura/menuTemplate/showMenuTemplate": {
      "get": {
        "summary": "获取菜谱信息",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:387；SakuraController.showMenuTemplate\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_showMenuTemplate",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "produceCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "orgId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 387,
            "controller": "SakuraController",
            "handler": "showMenuTemplate"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815513-run"
      }
    },
    "/sakura/instrument/login": {
      "post": {
        "summary": "仪器登录",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:56；SakuraController.instrumentLogin\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_instrumentLogin",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "userId": {
                    "type": "string",
                    "example": "1"
                  },
                  "password": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "userId",
                  "password"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "userId": "1",
                "password": "Test@123456"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 56,
            "controller": "SakuraController",
            "handler": "instrumentLogin"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815514-run"
      }
    },
    "/sakura/instrument/updateFileImage": {
      "post": {
        "summary": "图片分类上传（单图）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:181；SakuraController.updateFileImage\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_updateFileImage",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "produceCode",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "图片文件",
                    "example": ""
                  },
                  "produceCode": {
                    "type": "string",
                    "description": "仪器编号",
                    "example": ""
                  },
                  "flowId": {
                    "type": "string",
                    "description": "留样菜品服务器唯一ID",
                    "example": ""
                  },
                  "type": {
                    "type": "integer",
                    "enum": [
                      1,
                      2,
                      3
                    ],
                    "description": "图片类型：1放入 2取出 3签名",
                    "example": ""
                  }
                },
                "required": [
                  "file",
                  "produceCode",
                  "flowId",
                  "type"
                ]
              },
              "example": {
                "file": "",
                "produceCode": "",
                "flowId": "",
                "type": ""
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 181,
            "controller": "SakuraController",
            "handler": "updateFileImage"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815515-run"
      }
    },
    "/sakura/instrument/updateSamples": {
      "post": {
        "summary": "更新留样信息（单条）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:245；SakuraController.updateSamples\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_updateSamples",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "header",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 245,
            "controller": "SakuraController",
            "handler": "updateSamples"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815516-run"
      }
    },
    "/sakura/user/login": {
      "post": {
        "summary": "留样人员在线登录",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/sakura.controller.ts:81；SakuraController.userLogin\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SakuraController_userLogin",
        "tags": [
          "第三方设备数据接入/Sakura"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "userId",
                  "password"
                ],
                "properties": {
                  "userId": {
                    "type": "string",
                    "description": "用户名"
                  },
                  "password": {
                    "type": "string",
                    "description": "用户密码"
                  }
                },
                "x-apifox-orders": [
                  "userId",
                  "password"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "userId": "1",
                "password": "Test@123456"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "登录成功",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Sakura"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/sakura.controller.ts",
            "line": 81,
            "controller": "SakuraController",
            "handler": "userLogin"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/Sakura",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815517-run"
      }
    },
    "/sample/sample/selectBySNCode": {
      "get": {
        "summary": "获取菜单数据（直调外部 select/selectAll；带 cookie 与 headers）",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:620；DewoLiuyangchengController.getMenu\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_getMenu",
        "tags": [
          "第三方设备数据接入/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 620,
            "controller": "DewoLiuyangchengController",
            "handler": "getMenu"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815518-run"
      }
    },
    "/common/upload": {
      "post": {
        "summary": "图片保存接口",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:921；DewoLiuyangchengController.upload\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_upload",
        "tags": [
          "第三方设备数据接入/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "example": ""
                  }
                },
                "required": [
                  "file"
                ]
              },
              "example": {
                "file": ""
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 921,
            "controller": "DewoLiuyangchengController",
            "handler": "upload"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815519-run"
      }
    },
    "/dewo/mqtt/person": {
      "post": {
        "summary": "MQTT 下发人员指令",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:1042；DewoLiuyangchengController.sendPersonCommand\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_sendPersonCommand",
        "tags": [
          "第三方设备数据接入/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 1042,
            "controller": "DewoLiuyangchengController",
            "handler": "sendPersonCommand"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815520-run"
      }
    },
    "/sample/sample/saveOrUpdateDishSample": {
      "post": {
        "summary": "保存/更新留样菜单",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:722；DewoLiuyangchengController.saveOrUpdate\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_saveOrUpdate",
        "tags": [
          "第三方设备数据接入/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 722,
            "controller": "DewoLiuyangchengController",
            "handler": "saveOrUpdate"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815521-run"
      }
    },
    "/sample/sample/upload": {
      "post": {
        "summary": "样品模块图片上传",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:956；DewoLiuyangchengController.uploadSampleImage\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_uploadSampleImage",
        "tags": [
          "第三方设备数据接入/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "example": ""
                  }
                },
                "required": [
                  "file"
                ]
              },
              "example": {
                "file": ""
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 956,
            "controller": "DewoLiuyangchengController",
            "handler": "uploadSampleImage"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815522-run"
      }
    },
    "/uploadInspectionRecord": {
      "post": {
        "summary": "得沃晨检机上传晨检记录",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts:527；DewoLiuyangchengController.uploadInspectionRecord\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "DewoLiuyangchengController_uploadInspectionRecord",
        "tags": [
          "第三方设备数据接入/Dewo-Liuyangcheng"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "example": ""
                  }
                },
                "required": [
                  "file"
                ]
              },
              "example": {
                "file": ""
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts",
            "line": 527,
            "controller": "DewoLiuyangchengController",
            "handler": "uploadInspectionRecord"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "第三方设备数据接入/Dewo-Liuyangcheng",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815523-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/GetDepInfo": {
      "post": {
        "summary": "WosController.getDepInfo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:132；WosController.getDepInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_getDepInfo",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "获取单位信息（食堂信息）（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 132,
            "controller": "WosController",
            "handler": "getDepInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815524-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/GetPlatInfo": {
      "post": {
        "summary": "WosController.getPlatInfo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:212；WosController.getPlatInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_getPlatInfo",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "获取平台配置信息（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 212,
            "controller": "WosController",
            "handler": "getPlatInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815525-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/PageStaff": {
      "post": {
        "summary": "WosController.pageStaff",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:699；WosController.pageStaff\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_pageStaff",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "pageIndex",
                  "pageSize"
                ],
                "properties": {
                  "pageIndex": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "pageSize": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "x-apifox-orders": [
                  "pageIndex",
                  "pageSize"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "pageIndex": 10,
                "pageSize": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "工勤人员分页查询（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 699,
            "controller": "WosController",
            "handler": "pageStaff"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815526-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/PushCheckData": {
      "post": {
        "summary": "WosController.pushCheckData",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:230；WosController.pushCheckData\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_pushCheckData",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "data"
                ],
                "properties": {
                  "data": {
                    "type": "object",
                    "properties": {
                      "LicenseKey": {
                        "type": "string"
                      },
                      "UserName": {
                        "type": "string"
                      },
                      "UserPwd": {
                        "type": "string"
                      },
                      "DataList": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ThirdKey": {
                              "type": "string"
                            },
                            "UserName": {
                              "type": "string"
                            },
                            "Temperature": {
                              "type": "number"
                            },
                            "State": {
                              "type": "integer",
                              "enum": [
                                0,
                                1
                              ]
                            },
                            "IsOffline": {
                              "type": "integer",
                              "enum": [
                                0,
                                1
                              ]
                            },
                            "CheckResult": {
                              "type": "integer"
                            },
                            "HeathResult": {
                              "type": "integer",
                              "nullable": true
                            },
                            "CheckDate": {
                              "type": "string"
                            },
                            "IsUrl": {
                              "type": "boolean"
                            },
                            "Picture_Img_Base64": {
                              "type": "string",
                              "nullable": true
                            },
                            "Picture_Img_Url": {
                              "type": "string",
                              "nullable": true
                            },
                            "Face_Img_Base64": {
                              "type": "string",
                              "nullable": true
                            },
                            "Face_Img_Url": {
                              "type": "string",
                              "nullable": true
                            },
                            "Picture_Back_Img_Base64": {
                              "type": "string",
                              "nullable": true
                            },
                            "Picture_Back_Img_Url": {
                              "type": "string",
                              "nullable": true
                            }
                          },
                          "x-apifox-orders": [
                            "ThirdKey",
                            "UserName",
                            "Temperature",
                            "State",
                            "IsOffline",
                            "CheckResult",
                            "HeathResult",
                            "CheckDate",
                            "IsUrl",
                            "Picture_Img_Base64",
                            "Picture_Img_Url",
                            "Face_Img_Base64",
                            "Face_Img_Url",
                            "Picture_Back_Img_Base64",
                            "Picture_Back_Img_Url"
                          ],
                          "x-apifox-ignore-properties": []
                        }
                      }
                    },
                    "required": [
                      "DataList"
                    ],
                    "x-apifox-orders": [
                      "LicenseKey",
                      "UserName",
                      "UserPwd",
                      "DataList"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                },
                "x-apifox-orders": [
                  "data"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "data": {
                  "LicenseKey": "APIFOX_{{testBatch}}",
                  "UserName": "apifox_autotest",
                  "UserPwd": "APIFOX_{{testBatch}}",
                  "DataList": [
                    {
                      "ThirdKey": "APIFOX_{{testBatch}}",
                      "UserName": "apifox_autotest",
                      "Temperature": 10,
                      "State": 0,
                      "IsOffline": 0,
                      "CheckResult": 10,
                      "HeathResult": 10,
                      "CheckDate": "2026-09-24",
                      "IsUrl": true,
                      "Picture_Img_Base64": "APIFOX_{{testBatch}}",
                      "Picture_Img_Url": "https://example.test/apifox-autotest.jpg",
                      "Face_Img_Base64": "APIFOX_{{testBatch}}",
                      "Face_Img_Url": "https://example.test/apifox-autotest.jpg",
                      "Picture_Back_Img_Base64": "APIFOX_{{testBatch}}",
                      "Picture_Back_Img_Url": "https://example.test/apifox-autotest.jpg"
                    }
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "晨检信息上传（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 230,
            "controller": "WosController",
            "handler": "pushCheckData"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815527-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/StaffAdd": {
      "post": {
        "summary": "WosController.staffAdd",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:463；WosController.staffAdd\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_staffAdd",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "personName": {
                    "type": "string",
                    "description": "人员姓名"
                  },
                  "personSex": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2
                    ],
                    "description": "0:男 1:女 2:未知"
                  },
                  "personAge": {
                    "type": "integer",
                    "description": "人员年龄"
                  },
                  "entryDate": {
                    "type": "string",
                    "description": "入职时间 yyyy-MM-dd"
                  },
                  "position": {
                    "type": "string",
                    "description": "职务岗位"
                  },
                  "IDcard": {
                    "type": "string",
                    "description": "身份证号码"
                  },
                  "phone": {
                    "type": "string",
                    "description": "手机号"
                  },
                  "AccessCard": {
                    "type": "string",
                    "description": "门禁卡号(韦根34)"
                  },
                  "hCCode": {
                    "type": "string",
                    "description": "健康证号"
                  },
                  "hCStartTime": {
                    "type": "string",
                    "description": "健康证开始时间 yyyy-MM-dd"
                  },
                  "hCEndTime": {
                    "type": "string",
                    "description": "健康证结束时间 yyyy-MM-dd"
                  },
                  "hCPicBase64": {
                    "type": "string",
                    "description": "健康证图片 base64"
                  },
                  "idCardFacePicBase64": {
                    "type": "string",
                    "description": "身份证正面图片 base64"
                  },
                  "faceToFacePicBase64": {
                    "type": "string",
                    "description": "人脸正视图图片 base64"
                  }
                },
                "required": [
                  "personName",
                  "personSex",
                  "personAge",
                  "entryDate",
                  "position",
                  "IDcard",
                  "phone",
                  "hCCode",
                  "hCStartTime",
                  "hCEndTime",
                  "hCPicBase64"
                ],
                "x-apifox-orders": [
                  "personName",
                  "personSex",
                  "personAge",
                  "entryDate",
                  "position",
                  "IDcard",
                  "phone",
                  "AccessCard",
                  "hCCode",
                  "hCStartTime",
                  "hCEndTime",
                  "hCPicBase64",
                  "idCardFacePicBase64",
                  "faceToFacePicBase64"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "personName": "APIFOX_{{testBatch}}_测试数据",
                "personSex": 0,
                "personAge": 10,
                "entryDate": "2026-09-24",
                "position": "APIFOX_{{testBatch}}",
                "IDcard": "APIFOX_{{testBatch}}",
                "phone": "13800138000",
                "AccessCard": "APIFOX_{{testBatch}}",
                "hCCode": "APIFOX_{{testBatch}}",
                "hCStartTime": "2026-09-24 10:00:00",
                "hCEndTime": "2026-09-24 10:00:00",
                "hCPicBase64": "APIFOX_{{testBatch}}",
                "idCardFacePicBase64": "APIFOX_{{testBatch}}",
                "faceToFacePicBase64": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "工勤人员增加（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 463,
            "controller": "WosController",
            "handler": "staffAdd"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815528-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/StaffById": {
      "post": {
        "summary": "WosController.staffById",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:556；WosController.staffById\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_staffById",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "thirdKey"
                ],
                "properties": {
                  "thirdKey": {
                    "type": "string",
                    "description": "工勤人员编号(Base64)"
                  }
                },
                "x-apifox-orders": [
                  "thirdKey"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "thirdKey": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "工勤人员查询单个详细信息（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 556,
            "controller": "WosController",
            "handler": "staffById"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815529-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/StaffDelete": {
      "post": {
        "summary": "WosController.staffDelete",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:421；WosController.staffDelete\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_staffDelete",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "thirdKey"
                ],
                "properties": {
                  "thirdKey": {
                    "type": "string",
                    "description": "工勤人员编号(Base64)"
                  }
                },
                "x-apifox-orders": [
                  "thirdKey"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "thirdKey": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "工勤人员删除（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 421,
            "controller": "WosController",
            "handler": "staffDelete"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815530-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/StaffUpdate": {
      "post": {
        "summary": "WosController.staffUpdate",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:616；WosController.staffUpdate\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_staffUpdate",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "thirdKey": {
                    "type": "string",
                    "description": "工勤人员编号(Base64)"
                  },
                  "personName": {
                    "type": "string",
                    "description": "人员姓名"
                  },
                  "personSex": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2
                    ],
                    "description": "0:男 1:女 2:未知"
                  },
                  "personAge": {
                    "type": "integer",
                    "description": "人员年龄"
                  },
                  "entryDate": {
                    "type": "string",
                    "description": "入职时间 yyyy-MM-dd"
                  },
                  "position": {
                    "type": "string",
                    "description": "职务岗位"
                  },
                  "IDcard": {
                    "type": "string",
                    "description": "身份证号码"
                  },
                  "phone": {
                    "type": "string",
                    "description": "手机号"
                  },
                  "AccessCard": {
                    "type": "string",
                    "description": "门禁卡号(韦根34)"
                  },
                  "hCCode": {
                    "type": "string",
                    "description": "健康证号"
                  },
                  "hCStartTime": {
                    "type": "string",
                    "description": "健康证开始时间 yyyy-MM-dd"
                  },
                  "hCEndTime": {
                    "type": "string",
                    "description": "健康证结束时间 yyyy-MM-dd"
                  },
                  "hCPicBase64": {
                    "type": "string",
                    "description": "健康证图片 base64"
                  },
                  "idCardFacePicBase64": {
                    "type": "string",
                    "description": "身份证正面图片 base64"
                  },
                  "faceToFacePicBase64": {
                    "type": "string",
                    "description": "人脸正视图图片 base64"
                  }
                },
                "required": [
                  "thirdKey",
                  "personName",
                  "personSex",
                  "personAge",
                  "entryDate",
                  "position",
                  "IDcard",
                  "phone",
                  "hCCode",
                  "hCStartTime",
                  "hCEndTime",
                  "hCPicBase64"
                ],
                "x-apifox-orders": [
                  "thirdKey",
                  "personName",
                  "personSex",
                  "personAge",
                  "entryDate",
                  "position",
                  "IDcard",
                  "phone",
                  "AccessCard",
                  "hCCode",
                  "hCStartTime",
                  "hCEndTime",
                  "hCPicBase64",
                  "idCardFacePicBase64",
                  "faceToFacePicBase64"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "thirdKey": "APIFOX_{{testBatch}}",
                "personName": "APIFOX_{{testBatch}}_测试数据",
                "personSex": 0,
                "personAge": 10,
                "entryDate": "2026-09-24",
                "position": "APIFOX_{{testBatch}}",
                "IDcard": "APIFOX_{{testBatch}}",
                "phone": "13800138000",
                "AccessCard": "APIFOX_{{testBatch}}",
                "hCCode": "APIFOX_{{testBatch}}",
                "hCStartTime": "2026-09-24 10:00:00",
                "hCEndTime": "2026-09-24 10:00:00",
                "hCPicBase64": "APIFOX_{{testBatch}}",
                "idCardFacePicBase64": "APIFOX_{{testBatch}}",
                "faceToFacePicBase64": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "工勤人员修改（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 616,
            "controller": "WosController",
            "handler": "staffUpdate"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815531-run"
      }
    },
    "/wosapi/YGCJRobotOpenApi/UpdateDepInfo": {
      "post": {
        "summary": "WosController.updateDepInfo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/wos.controller.ts:333；WosController.updateDepInfo\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "WosController_updateDepInfo",
        "tags": [
          "第三方设备数据接入/WOS Integration"
        ],
        "parameters": [
          {
            "name": "yg_sn",
            "in": "header",
            "description": "设备唯一序列号",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "data"
                ],
                "properties": {
                  "data": {
                    "type": "object",
                    "required": [
                      "ThirdKey",
                      "DepName",
                      "DepType",
                      "EBusinessType",
                      "Address",
                      "Person",
                      "Phone",
                      "AreaCovered",
                      "StaffCount",
                      "EatPersonCount"
                    ],
                    "properties": {
                      "ThirdKey": {
                        "type": "string",
                        "description": "单位唯一编号(Base64)"
                      },
                      "DepName": {
                        "type": "string"
                      },
                      "DepType": {
                        "type": "integer"
                      },
                      "EBusinessType": {
                        "type": "integer"
                      },
                      "Address": {
                        "type": "string"
                      },
                      "Person": {
                        "type": "string"
                      },
                      "Phone": {
                        "type": "string"
                      },
                      "AreaCovered": {
                        "type": "number"
                      },
                      "StaffCount": {
                        "type": "integer"
                      },
                      "EatPersonCount": {
                        "type": "integer"
                      },
                      "Remark": {
                        "type": "string",
                        "nullable": true
                      },
                      "BssLcsPicUrlBase64": {
                        "type": "string",
                        "nullable": true
                      },
                      "FoodBssLcsPicUrlBase64": {
                        "type": "string",
                        "nullable": true
                      }
                    },
                    "x-apifox-orders": [
                      "ThirdKey",
                      "DepName",
                      "DepType",
                      "EBusinessType",
                      "Address",
                      "Person",
                      "Phone",
                      "AreaCovered",
                      "StaffCount",
                      "EatPersonCount",
                      "Remark",
                      "BssLcsPicUrlBase64",
                      "FoodBssLcsPicUrlBase64"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                },
                "x-apifox-orders": [
                  "data"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "data": {
                  "ThirdKey": "APIFOX_{{testBatch}}",
                  "DepName": "APIFOX_{{testBatch}}_测试数据",
                  "DepType": 10,
                  "EBusinessType": 10,
                  "Address": "APIFOX_{{testBatch}}",
                  "Person": "APIFOX_{{testBatch}}",
                  "Phone": "13800138000",
                  "AreaCovered": 10,
                  "StaffCount": 10,
                  "EatPersonCount": 10,
                  "Remark": "APIFOX_{{testBatch}} 自动化测试数据",
                  "BssLcsPicUrlBase64": "https://example.test/apifox-autotest.jpg",
                  "FoodBssLcsPicUrlBase64": "https://example.test/apifox-autotest.jpg"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "更新单位信息（食堂信息）（成功）",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "WOS Integration"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/wos.controller.ts",
            "line": 333,
            "controller": "WosController",
            "handler": "updateDepInfo"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "第三方设备数据接入/WOS Integration",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815532-run"
      }
    },
    "/reg/ai/broadcast/logs": {
      "get": {
        "summary": "AIController.bcList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:790；AIController.bcList\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:333；aiBroadcastLogs()\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_bcList",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 790,
            "controller": "AIController",
            "handler": "bcList"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 333,
            "function": "aiBroadcastLogs()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815533-run"
      }
    },
    "/reg/ai/events": {
      "get": {
        "summary": "AIController.regEvents",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:620；AIController.regEvents\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:137；aiEvents(params: { schoolId?: string; type?: string; status?: 'OPEN' | 'ACK' | 'CLOSED' | ''; start?: string; end?: string; page?: number; pageSize?: number; })\n- mobile-emergency: apps/mobile-emergency/src/api/index.ts:15；regAiEvents(params: { schoolId?: string; page?: number; pageSize?: number })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_regEvents",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 620,
            "controller": "AIController",
            "handler": "regEvents"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 137,
            "function": "aiEvents(params: { schoolId?: string; type?: string; status?: 'OPEN' | 'ACK' | 'CLOSED' | ''; start?: string; end?: string; page?: number; pageSize?: number; })",
            "bodyExpression": ""
          },
          {
            "app": "mobile-emergency",
            "file": "apps/mobile-emergency/src/api/index.ts",
            "line": 15,
            "function": "regAiEvents(params: { schoolId?: string; page?: number; pageSize?: number })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815534-run"
      }
    },
    "/reg/ai/events/export.csv": {
      "get": {
        "summary": "AIController.regEventsExport",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:666；AIController.regEventsExport\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_regEventsExport",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 666,
            "controller": "AIController",
            "handler": "regEventsExport"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815535-run"
      }
    },
    "/reg/ai/methods": {
      "get": {
        "summary": "AIController.methods",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:73；AIController.methods\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:334；aiMethods()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_methods",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 73,
            "controller": "AIController",
            "handler": "methods"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 334,
            "function": "aiMethods()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815536-run"
      }
    },
    "/reg/ai/schools": {
      "get": {
        "summary": "AIController.aiSchools",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:77；AIController.aiSchools\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:335；aiSchools()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_aiSchools",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 77,
            "controller": "AIController",
            "handler": "aiSchools"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 335,
            "function": "aiSchools()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815537-run"
      }
    },
    "/reg/ai/tasks": {
      "get": {
        "summary": "AIController.regTasks",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:707；AIController.regTasks\n\n### 前端调用证据\n- mobile-emergency: apps/mobile-emergency/src/api/index.ts:23；regAiTasks()\n- web-regulator: apps/web-regulator/src/services/api.ts:311；aiTasks(params: { status?: '待处理' | '进行中' | '已完成' | ''; start?: string; end?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_regTasks",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 707,
            "controller": "AIController",
            "handler": "regTasks"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-emergency",
            "file": "apps/mobile-emergency/src/api/index.ts",
            "line": 23,
            "function": "regAiTasks()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 311,
            "function": "aiTasks(params: { status?: '待处理' | '进行中' | '已完成' | ''; start?: string; end?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815538-run"
      },
      "post": {
        "summary": "AIController.createTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:726；AIController.createTask\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:321；aiTaskCreate(body: { name: string; items: string[]; method: string; period?: { start?: string; end?: string }; schools: string[]; })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_createTask",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "method": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "period": {
                    "type": "object",
                    "properties": {
                      "start": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      },
                      "end": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      }
                    },
                    "x-apifox-orders": [
                      "start",
                      "end"
                    ],
                    "x-apifox-ignore-properties": []
                  },
                  "schools": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "name",
                  "items",
                  "method",
                  "schools"
                ],
                "x-apifox-orders": [
                  "name",
                  "items",
                  "method",
                  "period",
                  "schools"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "items": [
                  "APIFOX_{{testBatch}}"
                ],
                "method": "APIFOX_{{testBatch}}",
                "period": {
                  "start": "2026-09-24 10:00:00",
                  "end": "2026-09-24 10:00:00"
                },
                "schools": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 726,
            "controller": "AIController",
            "handler": "createTask"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 321,
            "function": "aiTaskCreate(body: { name: string; items: string[]; method: string; period?: { start?: string; end?: string }; schools: string[]; })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815539-run"
      }
    },
    "/reg/ai/tasks/{id}": {
      "patch": {
        "summary": "AIController.updateTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:750；AIController.updateTask\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:324；aiTaskUpdate(id: string, patch: any)；body=patch\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_updateTask",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "method": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "period": {
                    "type": "object",
                    "properties": {
                      "start": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      },
                      "end": {
                        "type": "string",
                        "example": "2026-09-24 10:00:00"
                      }
                    },
                    "x-apifox-orders": [
                      "start",
                      "end"
                    ],
                    "x-apifox-ignore-properties": []
                  },
                  "schools": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "待处理",
                      "进行中",
                      "已完成"
                    ],
                    "example": "待处理"
                  }
                },
                "x-apifox-orders": [
                  "name",
                  "items",
                  "method",
                  "period",
                  "schools",
                  "status"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "items": [
                  "APIFOX_{{testBatch}}"
                ],
                "method": "APIFOX_{{testBatch}}",
                "period": {
                  "start": "2026-09-24 10:00:00",
                  "end": "2026-09-24 10:00:00"
                },
                "schools": [
                  "APIFOX_{{testBatch}}"
                ],
                "status": "待处理"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 750,
            "controller": "AIController",
            "handler": "updateTask"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 324,
            "function": "aiTaskUpdate(id: string, patch: any)",
            "bodyExpression": "patch"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815540-run"
      }
    },
    "/reg/ai/tasks/{id}/status": {
      "patch": {
        "summary": "AIController.setTaskStatus",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:768；AIController.setTaskStatus\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:327；aiTaskSetStatus(id: string, status: '待处理' | '进行中' | '已完成')；body={ status }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_setTaskStatus",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "待处理",
                      "进行中",
                      "已完成"
                    ],
                    "example": "待处理"
                  }
                },
                "required": [
                  "status"
                ],
                "x-apifox-orders": [
                  "status"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "status": "待处理"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 768,
            "controller": "AIController",
            "handler": "setTaskStatus"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 327,
            "function": "aiTaskSetStatus(id: string, status: '待处理' | '进行中' | '已完成')",
            "bodyExpression": "{ status }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815541-run"
      }
    },
    "/reg/ai/broadcast": {
      "post": {
        "summary": "AIController.broadcast",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:777；AIController.broadcast\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:331；aiBroadcast(body: { school: string; camera: string; text: string })；body=body\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_broadcast",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "school": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "camera": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "text": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "school",
                  "camera",
                  "text"
                ],
                "x-apifox-orders": [
                  "school",
                  "camera",
                  "text"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "school": "APIFOX_{{testBatch}}",
                "camera": "APIFOX_{{testBatch}}",
                "text": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 777,
            "controller": "AIController",
            "handler": "broadcast"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 331,
            "function": "aiBroadcast(body: { school: string; camera: string; text: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815542-run"
      }
    },
    "/reg/ai/events/ingest": {
      "post": {
        "summary": "AIController.ingest",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/ai.controller.ts:796；AIController.ingest\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "AIController_ingest",
        "tags": [
          "监管端/AI"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "cameraId": {
                    "type": "string",
                    "example": "1"
                  },
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "snapshotUrl": {
                    "type": "string",
                    "example": "https://example.test/apifox-autotest.jpg"
                  },
                  "detectedAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "personName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "schoolId",
                  "type"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "cameraId",
                  "type",
                  "snapshotUrl",
                  "detectedAt",
                  "personName"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": "1",
                "cameraId": "1",
                "type": "APIFOX_{{testBatch}}",
                "snapshotUrl": "https://example.test/apifox-autotest.jpg",
                "detectedAt": "2026-09-24 10:00:00",
                "personName": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "AI"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/ai.controller.ts",
            "line": 796,
            "controller": "AIController",
            "handler": "ingest"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/AI",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815543-run"
      }
    },
    "/reg/alerts/config": {
      "get": {
        "summary": "RegAlertsController.getConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:311；RegAlertsController.getConfig\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1265；alertsConfigGet()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_getConfig",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 311,
            "controller": "RegAlertsController",
            "handler": "getConfig"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1265,
            "function": "alertsConfigGet()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815544-run"
      },
      "post": {
        "summary": "RegAlertsController.setConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:316；RegAlertsController.setConfig\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1272；alertsConfigSave(patch: any)；body=JSON.stringify(patch)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_setConfig",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 316,
            "controller": "RegAlertsController",
            "handler": "setConfig"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1272,
            "function": "alertsConfigSave(patch: any)",
            "bodyExpression": "JSON.stringify(patch)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815545-run"
      }
    },
    "/reg/alerts/events": {
      "get": {
        "summary": "RegAlertsController.events",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:104；RegAlertsController.events\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_events",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 104,
            "controller": "RegAlertsController",
            "handler": "events"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815546-run"
      }
    },
    "/reg/alerts/events/export.csv": {
      "get": {
        "summary": "RegAlertsController.exportCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:284；RegAlertsController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_exportCsv",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 284,
            "controller": "RegAlertsController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815547-run"
      }
    },
    "/reg/alerts/stream": {
      "get": {
        "summary": "RegAlertsController.stream",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:331；RegAlertsController.stream\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_stream",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 331,
            "controller": "RegAlertsController",
            "handler": "stream"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815548-run"
      }
    },
    "/reg/alerts/summary": {
      "get": {
        "summary": "RegAlertsController.summary",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:54；RegAlertsController.summary\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_summary",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 54,
            "controller": "RegAlertsController",
            "handler": "summary"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815549-run"
      }
    },
    "/reg/alerts/notify": {
      "post": {
        "summary": "RegAlertsController.notify",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-alerts.controller.ts:322；RegAlertsController.notify\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1290；alertsNotify(body: { to: string[]; message: string; channel?: 'sms' | 'app' | 'both'; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegAlertsController_notify",
        "tags": [
          "监管端/Regulator Alerts"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "to": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "message": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "channel": {
                    "type": "string",
                    "enum": [
                      "sms",
                      "app",
                      "both"
                    ],
                    "example": "sms"
                  }
                },
                "required": [
                  "to",
                  "message"
                ],
                "x-apifox-orders": [
                  "to",
                  "message",
                  "channel"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "to": [
                  "APIFOX_{{testBatch}}"
                ],
                "message": "APIFOX_{{testBatch}}",
                "channel": "sms"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Alerts"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-alerts.controller.ts",
            "line": 322,
            "controller": "RegAlertsController",
            "handler": "notify"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1290,
            "function": "alertsNotify(body: { to: string[]; message: string; channel?: 'sms' | 'app' | 'both'; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Alerts",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815550-run"
      }
    },
    "/reg/credentials/canteens": {
      "get": {
        "summary": "RegCredentialsController.canteens",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:18；RegCredentialsController.canteens\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:395；getCertOverview()\n- web-regulator: apps/web-regulator/src/services/api.ts:453；getExpiringCertificates(params: { days?: number })\n- web-regulator: apps/web-regulator/src/services/api.ts:876；getCertificateDetail(params: { certificateId: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_canteens",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 18,
            "controller": "RegCredentialsController",
            "handler": "canteens"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 395,
            "function": "getCertOverview()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 453,
            "function": "getExpiringCertificates(params: { days?: number })",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 876,
            "function": "getCertificateDetail(params: { certificateId: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815551-run"
      }
    },
    "/reg/credentials/exceptions": {
      "get": {
        "summary": "RegCredentialsController.exceptions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:99；RegCredentialsController.exceptions\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:433；getCertOverview()\n- web-regulator: apps/web-regulator/src/services/api.ts:373；credExceptions(params: { type?: 'canteen' | 'worker' | 'supplier'; schoolId?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_exceptions",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：EntityType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：EntityType",
              "x-source-type": "EntityType",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 99,
            "controller": "RegCredentialsController",
            "handler": "exceptions"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 433,
            "function": "getCertOverview()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 373,
            "function": "credExceptions(params: { type?: 'canteen' | 'worker' | 'supplier'; schoolId?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815552-run"
      }
    },
    "/reg/credentials/export.csv": {
      "get": {
        "summary": "RegCredentialsController.exportCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:113；RegCredentialsController.exportCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_exportCsv",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "target",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：EntityType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：EntityType",
              "x-source-type": "EntityType",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 113,
            "controller": "RegCredentialsController",
            "handler": "exportCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815553-run"
      }
    },
    "/reg/credentials/overview": {
      "get": {
        "summary": "RegCredentialsController.overview",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:38；RegCredentialsController.overview\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_overview",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 38,
            "controller": "RegCredentialsController",
            "handler": "overview"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815554-run"
      }
    },
    "/reg/credentials/suppliers": {
      "get": {
        "summary": "RegCredentialsController.suppliers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:30；RegCredentialsController.suppliers\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:397；getCertOverview()\n- web-regulator: apps/web-regulator/src/services/api.ts:455；getExpiringCertificates(params: { days?: number })\n- web-regulator: apps/web-regulator/src/services/api.ts:878；getCertificateDetail(params: { certificateId: string })\n- web-regulator: apps/web-regulator/src/services/api.ts:781；getSupplierRecords(params: { supplierId: string; startDate?: string; endDate?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_suppliers",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 30,
            "controller": "RegCredentialsController",
            "handler": "suppliers"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 397,
            "function": "getCertOverview()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 455,
            "function": "getExpiringCertificates(params: { days?: number })",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 878,
            "function": "getCertificateDetail(params: { certificateId: string })",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 781,
            "function": "getSupplierRecords(params: { supplierId: string; startDate?: string; endDate?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815555-run"
      }
    },
    "/reg/credentials/workers": {
      "get": {
        "summary": "RegCredentialsController.workers",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:24；RegCredentialsController.workers\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:396；getCertOverview()\n- web-regulator: apps/web-regulator/src/services/api.ts:454；getExpiringCertificates(params: { days?: number })\n- web-regulator: apps/web-regulator/src/services/api.ts:877；getCertificateDetail(params: { certificateId: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_workers",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 24,
            "controller": "RegCredentialsController",
            "handler": "workers"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 396,
            "function": "getCertOverview()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 454,
            "function": "getExpiringCertificates(params: { days?: number })",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 877,
            "function": "getCertificateDetail(params: { certificateId: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815556-run"
      }
    },
    "/reg/credentials/exceptions/measure": {
      "patch": {
        "summary": "RegCredentialsController.setMeasure",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-credentials.controller.ts:108；RegCredentialsController.setMeasure\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:377；credSetMeasure(id: string, measure: string)；body={ measure }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegCredentialsController_setMeasure",
        "tags": [
          "监管端/Regulator Credentials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "measure": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  }
                },
                "required": [
                  "measure"
                ],
                "x-apifox-orders": [
                  "measure"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "measure": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Credentials"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-credentials.controller.ts",
            "line": 108,
            "controller": "RegCredentialsController",
            "handler": "setMeasure"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 377,
            "function": "credSetMeasure(id: string, measure: string)",
            "bodyExpression": "{ measure }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Credentials",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815557-run"
      }
    },
    "/reg/food-waste/ranking": {
      "get": {
        "summary": "Food-waste school ranking",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-food-waste.controller.ts:20；RegFoodWasteController.ranking\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1120；foodWasteRanking(params: { start?: string; end?: string; metric?: 'weight' | 'amount' })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegFoodWasteController_ranking",
        "tags": [
          "监管端/FoodWaste"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "metric",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "FoodWaste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-food-waste.controller.ts",
            "line": 20,
            "controller": "RegFoodWasteController",
            "handler": "ranking"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1120,
            "function": "foodWasteRanking(params: { start?: string; end?: string; metric?: 'weight' | 'amount' })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/FoodWaste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815558-run"
      }
    },
    "/reg/food-waste/trend": {
      "get": {
        "summary": "Food-waste trend by period",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-food-waste.controller.ts:45；RegFoodWasteController.trend\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1162；foodWasteTrend(params: { schoolId?: string; start?: string; end?: string; bucket?: 'day' | 'week' | 'month'; })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegFoodWasteController_trend",
        "tags": [
          "监管端/FoodWaste"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "bucket",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "FoodWaste"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-food-waste.controller.ts",
            "line": 45,
            "controller": "RegFoodWasteController",
            "handler": "trend"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1162,
            "function": "foodWasteTrend(params: { schoolId?: string; start?: string; end?: string; bucket?: 'day' | 'week' | 'month'; })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/FoodWaste",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815559-run"
      }
    },
    "/reg/inspections/config": {
      "get": {
        "summary": "RegInspectionsController.getConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:302；RegInspectionsController.getConfig\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:295；regTemplates()\n- web-regulator: apps/web-regulator/src/services/api.ts:1483；inspConfigGet()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_getConfig",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 302,
            "controller": "RegInspectionsController",
            "handler": "getConfig"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 295,
            "function": "regTemplates()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1483,
            "function": "inspConfigGet()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815560-run"
      }
    },
    "/reg/inspections/inspectors": {
      "get": {
        "summary": "List inspectors",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:276；RegInspectionsController.listInspectors\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_listInspectors",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "x-apifox-ignore-properties": [],
                    "x-apifox-orders": []
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 276,
            "controller": "RegInspectionsController",
            "handler": "listInspectors"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815561-run"
      },
      "post": {
        "summary": "RegInspectionsController.createInspector",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:283；RegInspectionsController.createInspector\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_createInspector",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "region": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "mobile": {
                    "type": "string",
                    "example": "13800138000"
                  },
                  "grids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name",
                  "region",
                  "mobile",
                  "grids"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "region": "APIFOX_{{testBatch}}",
                "mobile": "13800138000",
                "grids": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 283,
            "controller": "RegInspectionsController",
            "handler": "createInspector"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815562-run"
      }
    },
    "/reg/inspections/tasks": {
      "get": {
        "summary": "RegInspectionsController.listTasks",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:34；RegInspectionsController.listTasks\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:287；regPlans(params: { status?: string; type?: string; start?: string; end?: string; owner?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_listTasks",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "assignee",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：InspectStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：InspectStatus",
              "x-source-type": "InspectStatus",
              "x-apifox-orders": []
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedRegulatorTasks"
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 34,
            "controller": "RegInspectionsController",
            "handler": "listTasks"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 287,
            "function": "regPlans(params: { status?: string; type?: string; start?: string; end?: string; owner?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815563-run"
      },
      "post": {
        "summary": "RegInspectionsController.createTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:87；RegInspectionsController.createTask\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:259；regTaskCreate(body: any)；body={ ...payloadBase, schoolId: sid, assignee: firstAssignee }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_createTask",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "object",
                    "description": "源码类型：InspectType",
                    "x-source-type": "InspectType",
                    "x-apifox-orders": [],
                    "properties": {},
                    "x-apifox-ignore-properties": []
                  },
                  "schoolId": {
                    "type": "string",
                    "example": "1"
                  },
                  "assignee": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "grid": {
                    "type": "string",
                    "example": "1"
                  },
                  "content": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  },
                  "planAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  }
                },
                "required": [
                  "type",
                  "schoolId",
                  "content"
                ],
                "x-apifox-orders": [
                  "type",
                  "schoolId",
                  "assignee",
                  "grid",
                  "content",
                  "planAt"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "type": {},
                "schoolId": "1",
                "assignee": "APIFOX_{{testBatch}}",
                "grid": "1",
                "content": "APIFOX_{{testBatch}} 自动化测试数据",
                "planAt": "2026-09-24 10:00:00"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 87,
            "controller": "RegInspectionsController",
            "handler": "createTask"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 259,
            "function": "regTaskCreate(body: any)",
            "bodyExpression": "{ ...payloadBase, schoolId: sid, assignee: firstAssignee }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815564-run"
      }
    },
    "/reg/inspections/tasks/{id}": {
      "get": {
        "summary": "Get task detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:148；RegInspectionsController.detail\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:284；regTaskDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_detail",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 148,
            "controller": "RegInspectionsController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 284,
            "function": "regTaskDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815565-run"
      },
      "patch": {
        "summary": "RegInspectionsController.updateTask",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:172；RegInspectionsController.updateTask\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:266；regTaskUpdate(id: string, patch: any)；body=patch\n- web-regulator: apps/web-regulator/src/services/api.ts:268；regTaskStart(id: string)；body={ status: '进行中' }\n- web-regulator: apps/web-regulator/src/services/api.ts:269；regTaskContinue(id: string)；body={ status: '进行中' }\n- web-regulator: apps/web-regulator/src/services/api.ts:282；regTaskReassign(id: string, body: { to: string })；body={ assignee: body.to }\n- web-regulator: apps/web-regulator/src/services/api.ts:283；regTaskDelay(id: string, body: { planAt: string })；body={ content: `【延期至】${body.planAt}`, planAt: body.planAt }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_updateTask",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 172,
            "controller": "RegInspectionsController",
            "handler": "updateTask"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 266,
            "function": "regTaskUpdate(id: string, patch: any)",
            "bodyExpression": "patch"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 268,
            "function": "regTaskStart(id: string)",
            "bodyExpression": "{ status: '进行中' }"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 269,
            "function": "regTaskContinue(id: string)",
            "bodyExpression": "{ status: '进行中' }"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 282,
            "function": "regTaskReassign(id: string, body: { to: string })",
            "bodyExpression": "{ assignee: body.to }"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 283,
            "function": "regTaskDelay(id: string, body: { planAt: string })",
            "bodyExpression": "{ content: `【延期至】${body.planAt}`, planAt: body.planAt }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815566-run"
      }
    },
    "/reg/inspections/tasks/export.csv": {
      "get": {
        "summary": "RegInspectionsController.exportTasksCsv",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:230；RegInspectionsController.exportTasksCsv\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_exportTasksCsv",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "assignee",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：InspectType",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：InspectType",
              "x-source-type": "InspectType",
              "x-apifox-orders": []
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：InspectStatus",
            "required": false,
            "schema": {
              "type": "object",
              "description": "源码类型：InspectStatus",
              "x-source-type": "InspectStatus",
              "x-apifox-orders": []
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 230,
            "controller": "RegInspectionsController",
            "handler": "exportTasksCsv"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815567-run"
      }
    },
    "/reg/inspections/inspectors/{id}": {
      "patch": {
        "summary": "RegInspectionsController.updateInspector",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:290；RegInspectionsController.updateInspector\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_updateInspector",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 290,
            "controller": "RegInspectionsController",
            "handler": "updateInspector"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815568-run"
      }
    },
    "/reg/inspections/config/items": {
      "post": {
        "summary": "RegInspectionsController.addItem",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:307；RegInspectionsController.addItem\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1484；inspConfigAddItem(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_addItem",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 307,
            "controller": "RegInspectionsController",
            "handler": "addItem"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1484,
            "function": "inspConfigAddItem(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815569-run"
      }
    },
    "/reg/inspections/config/items/remove": {
      "post": {
        "summary": "RegInspectionsController.removeItem",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:322；RegInspectionsController.removeItem\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1485；inspConfigRemoveItem(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_removeItem",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 322,
            "controller": "RegInspectionsController",
            "handler": "removeItem"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1485,
            "function": "inspConfigRemoveItem(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815570-run"
      }
    },
    "/reg/inspections/config/penalties": {
      "post": {
        "summary": "RegInspectionsController.addPenalty",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:312；RegInspectionsController.addPenalty\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1486；inspConfigAddPenalty(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_addPenalty",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 312,
            "controller": "RegInspectionsController",
            "handler": "addPenalty"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1486,
            "function": "inspConfigAddPenalty(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815571-run"
      }
    },
    "/reg/inspections/config/penalties/remove": {
      "post": {
        "summary": "RegInspectionsController.removePenalty",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:327；RegInspectionsController.removePenalty\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1487；inspConfigRemovePenalty(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_removePenalty",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 327,
            "controller": "RegInspectionsController",
            "handler": "removePenalty"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1487,
            "function": "inspConfigRemovePenalty(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815572-run"
      }
    },
    "/reg/inspections/config/publications": {
      "post": {
        "summary": "RegInspectionsController.addPublication",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:317；RegInspectionsController.addPublication\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1488；inspConfigAddPublication(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_addPublication",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 317,
            "controller": "RegInspectionsController",
            "handler": "addPublication"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1488,
            "function": "inspConfigAddPublication(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815573-run"
      }
    },
    "/reg/inspections/config/publications/remove": {
      "post": {
        "summary": "RegInspectionsController.removePublication",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:332；RegInspectionsController.removePublication\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1489；inspConfigRemovePublication(name: string)；body={ name }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_removePublication",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 332,
            "controller": "RegInspectionsController",
            "handler": "removePublication"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1489,
            "function": "inspConfigRemovePublication(name: string)",
            "bodyExpression": "{ name }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815574-run"
      }
    },
    "/reg/inspections/inspectors/{id}/delete": {
      "post": {
        "summary": "RegInspectionsController.deleteInspector",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:295；RegInspectionsController.deleteInspector\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_deleteInspector",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 295,
            "controller": "RegInspectionsController",
            "handler": "deleteInspector"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815575-run"
      }
    },
    "/reg/inspections/tasks/{id}/submit": {
      "post": {
        "summary": "RegInspectionsController.submit",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:178；RegInspectionsController.submit\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:279；regTaskSubmitReport(id: string, body: any)；body={ passed, items: mapped, summary: body?.record?.text || '', images: imgs }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_submit",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "passed": {
                    "type": "boolean",
                    "example": true
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "item": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        },
                        "ok": {
                          "type": "boolean",
                          "example": true
                        },
                        "remark": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}} 自动化测试数据"
                        },
                        "penaltyType": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        },
                        "extra": {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        }
                      },
                      "required": [
                        "item",
                        "ok"
                      ],
                      "x-apifox-orders": [
                        "item",
                        "ok",
                        "remark",
                        "penaltyType",
                        "extra"
                      ],
                      "x-apifox-ignore-properties": []
                    }
                  },
                  "summary": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "passed",
                  "items"
                ],
                "x-apifox-orders": [
                  "passed",
                  "items",
                  "summary",
                  "images"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "passed": true,
                "items": [
                  {
                    "item": "APIFOX_{{testBatch}}",
                    "ok": true,
                    "remark": "APIFOX_{{testBatch}} 自动化测试数据",
                    "penaltyType": "APIFOX_{{testBatch}}",
                    "extra": "APIFOX_{{testBatch}}"
                  }
                ],
                "summary": "APIFOX_{{testBatch}}",
                "images": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 178,
            "controller": "RegInspectionsController",
            "handler": "submit"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 279,
            "function": "regTaskSubmitReport(id: string, body: any)",
            "bodyExpression": "{ passed, items: mapped, summary: body?.record?.text || '', images: imgs }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815576-run"
      }
    },
    "/reg/inspections/tasks/bulk": {
      "post": {
        "summary": "RegInspectionsController.createTasksBulk",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:105；RegInspectionsController.createTasksBulk\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:246；regTaskCreate(body: any)；body={ type: payloadBase.type, schools, assignees, grid: undefined, content, planAt, perAssignee: true, }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_createTasksBulk",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "schools": {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "example": "APIFOX_{{testBatch}}"
                        },
                        {
                          "type": "number",
                          "example": 10
                        }
                      ]
                    }
                  },
                  "assignees": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "grid": {
                    "type": "string",
                    "example": "1"
                  },
                  "content": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  },
                  "planAt": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "perAssignee": {
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "schools",
                  "content"
                ],
                "x-apifox-orders": [
                  "type",
                  "schools",
                  "assignees",
                  "grid",
                  "content",
                  "planAt",
                  "perAssignee"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "type": "APIFOX_{{testBatch}}",
                "schools": [
                  "APIFOX_{{testBatch}}"
                ],
                "assignees": [
                  "APIFOX_{{testBatch}}"
                ],
                "grid": "1",
                "content": "APIFOX_{{testBatch}} 自动化测试数据",
                "planAt": "2026-09-24 10:00:00",
                "perAssignee": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 105,
            "controller": "RegInspectionsController",
            "handler": "createTasksBulk"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 246,
            "function": "regTaskCreate(body: any)",
            "bodyExpression": "{ type: payloadBase.type, schools, assignees, grid: undefined, content, planAt, perAssignee: true, }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815577-run"
      }
    },
    "/reg/inspections/tasks/clear": {
      "post": {
        "summary": "Clear all inspection tasks",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:214；RegInspectionsController.clearAll\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_clearAll",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 214,
            "controller": "RegInspectionsController",
            "handler": "clearAll"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815578-run"
      }
    },
    "/reg/inspections/tasks/clear-mem": {
      "post": {
        "summary": "Clear in-memory tasks only (keep DB data)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:222；RegInspectionsController.clearMem\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_clearMem",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 222,
            "controller": "RegInspectionsController",
            "handler": "clearMem"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815579-run"
      }
    },
    "/reg/inspections/tasks/random": {
      "post": {
        "summary": "RegInspectionsController.random",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-inspections.controller.ts:193；RegInspectionsController.random\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegInspectionsController_random",
        "tags": [
          "监管端/Regulator Inspections"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "item": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}"
                  },
                  "inspectorCount": {
                    "type": "number",
                    "example": 10
                  },
                  "schoolIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "schoolCount": {
                    "type": "number",
                    "example": 10
                  }
                },
                "required": [
                  "item"
                ],
                "x-apifox-orders": [
                  "item",
                  "inspectorCount",
                  "schoolIds",
                  "schoolCount"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "item": "APIFOX_{{testBatch}}",
                "inspectorCount": 10,
                "schoolIds": [
                  "APIFOX_{{testBatch}}"
                ],
                "schoolCount": 10
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Inspections"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-inspections.controller.ts",
            "line": 193,
            "controller": "RegInspectionsController",
            "handler": "random"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator Inspections",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815580-run"
      }
    },
    "/reg/ledgers/data-stats": {
      "get": {
        "summary": "RegLedgersController.dataStats",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:805；RegLedgersController.dataStats\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_dataStats",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "metric",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "modules",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "noBySchool",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 805,
            "controller": "RegLedgersController",
            "handler": "dataStats"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815581-run"
      }
    },
    "/reg/ledgers/detail": {
      "get": {
        "summary": "RegLedgersController.detail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:496；RegLedgersController.detail\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1030；ledgerDetail(type: 'sampling' | 'disinfection' | 'dine' | 'waste', id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_detail",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 496,
            "controller": "RegLedgersController",
            "handler": "detail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1030,
            "function": "ledgerDetail(type: 'sampling' | 'disinfection' | 'dine' | 'waste', id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815582-run"
      }
    },
    "/reg/ledgers/dine": {
      "get": {
        "summary": "RegLedgersController.dineList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:627；RegLedgersController.dineList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_dineList",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "meal",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 627,
            "controller": "RegLedgersController",
            "handler": "dineList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815583-run"
      }
    },
    "/reg/ledgers/disinfection": {
      "get": {
        "summary": "RegLedgersController.disinfectionList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:578；RegLedgersController.disinfectionList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_disinfectionList",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "method",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 578,
            "controller": "RegLedgersController",
            "handler": "disinfectionList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815584-run"
      }
    },
    "/reg/ledgers/pesticide": {
      "get": {
        "summary": "RegLedgersController.pesticideList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:756；RegLedgersController.pesticideList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_pesticideList",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "result",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 756,
            "controller": "RegLedgersController",
            "handler": "pesticideList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815585-run"
      }
    },
    "/reg/ledgers/sampling": {
      "get": {
        "summary": "RegLedgersController.samplingList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:531；RegLedgersController.samplingList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_samplingList",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 531,
            "controller": "RegLedgersController",
            "handler": "samplingList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815586-run"
      }
    },
    "/reg/ledgers/search": {
      "get": {
        "summary": "RegLedgersController.search",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:61；RegLedgersController.search\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_search",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "modules",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "noBySchool",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}_001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 61,
            "controller": "RegLedgersController",
            "handler": "search"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815587-run"
      }
    },
    "/reg/ledgers/stats": {
      "get": {
        "summary": "RegLedgersController.stats",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:444；RegLedgersController.stats\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_stats",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 444,
            "controller": "RegLedgersController",
            "handler": "stats"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815588-run"
      }
    },
    "/reg/ledgers/submit-stats": {
      "get": {
        "summary": "RegLedgersController.submitStats",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:271；RegLedgersController.submitStats\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_submitStats",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 271,
            "controller": "RegLedgersController",
            "handler": "submitStats"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815589-run"
      }
    },
    "/reg/ledgers/waste": {
      "get": {
        "summary": "RegLedgersController.wasteList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-ledgers.controller.ts:691；RegLedgersController.wasteList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegLedgersController_wasteList",
        "tags": [
          "监管端/RegLedgers"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "schoolIds",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-ledgers.controller.ts",
            "line": 691,
            "controller": "RegLedgersController",
            "handler": "wasteList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegLedgers",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815590-run"
      }
    },
    "/reg/overview": {
      "get": {
        "summary": "RegOverviewController.overview",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:63；RegOverviewController.overview\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:96；overview()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_overview",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 63,
            "controller": "RegOverviewController",
            "handler": "overview"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 96,
            "function": "overview()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815591-run"
      }
    },
    "/reg/schools": {
      "get": {
        "summary": "RegOverviewController.schools",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:198；RegOverviewController.schools\n\n### 前端调用证据\n- mobile-device: apps/mobile-device/src/api/modules/school.ts:6；fetchRegSchools()；body=true\n- mobile-device: apps/mobile-device/src/services/api.ts:132；regSchools()\n- mobile-emergency: apps/mobile-emergency/src/api/index.ts:4；regSchools()\n- screen: apps/screen/src/api/index.ts:6；regSchools()\n- web-school: apps/web-school/src/services/api.ts:239；regSchools()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_schools",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 198,
            "controller": "RegOverviewController",
            "handler": "schools"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/api/modules/school.ts",
            "line": 6,
            "function": "fetchRegSchools()",
            "bodyExpression": "true"
          },
          {
            "app": "mobile-device",
            "file": "apps/mobile-device/src/services/api.ts",
            "line": 132,
            "function": "regSchools()",
            "bodyExpression": ""
          },
          {
            "app": "mobile-emergency",
            "file": "apps/mobile-emergency/src/api/index.ts",
            "line": 4,
            "function": "regSchools()",
            "bodyExpression": ""
          },
          {
            "app": "screen",
            "file": "apps/screen/src/api/index.ts",
            "line": 6,
            "function": "regSchools()",
            "bodyExpression": ""
          },
          {
            "app": "web-school",
            "file": "apps/web-school/src/services/api.ts",
            "line": 239,
            "function": "regSchools()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815592-run"
      }
    },
    "/reg/schools/{id}/cameras": {
      "get": {
        "summary": "RegOverviewController.camsAny",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:327；RegOverviewController.camsAny\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_camsAny",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "example": "",
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 327,
            "controller": "RegOverviewController",
            "handler": "camsAny"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815593-run"
      }
    },
    "/reg/schools/1/cameras": {
      "get": {
        "summary": "RegOverviewController.cams1",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:315；RegOverviewController.cams1\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_cams1",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 315,
            "controller": "RegOverviewController",
            "handler": "cams1"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815594-run"
      }
    },
    "/reg/schools/2/cameras": {
      "get": {
        "summary": "RegOverviewController.cams2",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:317；RegOverviewController.cams2\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_cams2",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 317,
            "controller": "RegOverviewController",
            "handler": "cams2"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815595-run"
      }
    },
    "/reg/schools/3/cameras": {
      "get": {
        "summary": "RegOverviewController.cams3",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:319；RegOverviewController.cams3\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_cams3",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 319,
            "controller": "RegOverviewController",
            "handler": "cams3"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815596-run"
      }
    },
    "/reg/schools/4/cameras": {
      "get": {
        "summary": "RegOverviewController.cams4",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:321；RegOverviewController.cams4\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_cams4",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 321,
            "controller": "RegOverviewController",
            "handler": "cams4"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815597-run"
      }
    },
    "/reg/schools/5/cameras": {
      "get": {
        "summary": "RegOverviewController.cams5",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:323；RegOverviewController.cams5\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_cams5",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 323,
            "controller": "RegOverviewController",
            "handler": "cams5"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815598-run"
      }
    },
    "/reg/schools/config": {
      "get": {
        "summary": "RegOverviewController.schoolsConfig",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:218；RegOverviewController.schoolsConfig\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_schoolsConfig",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "enabled",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 218,
            "controller": "RegOverviewController",
            "handler": "schoolsConfig"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815599-run"
      },
      "patch": {
        "summary": "RegOverviewController.updateSchool",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:262；RegOverviewController.updateSchool\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:103；sysSchoolUpdate(id: number, body: { name?: string; enabled?: boolean; defaultUsername?: string; defaultPassword?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_updateSchool",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "number",
              "example": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "defaultUsername": {
                    "type": "string",
                    "example": "apifox_autotest"
                  },
                  "defaultPassword": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "x-apifox-orders": [
                  "name",
                  "enabled",
                  "defaultUsername",
                  "defaultPassword"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "enabled": true,
                "defaultUsername": "apifox_autotest",
                "defaultPassword": "Test@123456"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 262,
            "controller": "RegOverviewController",
            "handler": "updateSchool"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 103,
            "function": "sysSchoolUpdate(id: number, body: { name?: string; enabled?: boolean; defaultUsername?: string; defaultPassword?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815600-run"
      },
      "post": {
        "summary": "RegOverviewController.createSchool",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:226；RegOverviewController.createSchool\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:102；sysSchoolCreate(body: { name: string; enabled?: boolean; defaultUsername?: string; defaultPassword?: string })；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_createSchool",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "defaultUsername": {
                    "type": "string",
                    "example": "apifox_autotest"
                  },
                  "defaultPassword": {
                    "type": "string",
                    "example": "Test@123456"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name",
                  "enabled",
                  "defaultUsername",
                  "defaultPassword"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "enabled": true,
                "defaultUsername": "apifox_autotest",
                "defaultPassword": "Test@123456"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 226,
            "controller": "RegOverviewController",
            "handler": "createSchool"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 102,
            "function": "sysSchoolCreate(body: { name: string; enabled?: boolean; defaultUsername?: string; defaultPassword?: string })",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815601-run"
      }
    },
    "/reg/schools/stats": {
      "get": {
        "summary": "RegOverviewController.schoolStats",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:304；RegOverviewController.schoolStats\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:97；schools()\n- web-regulator: apps/web-regulator/src/services/api.ts:1191；<anonymous>()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_schoolStats",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 304,
            "controller": "RegOverviewController",
            "handler": "schoolStats"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 97,
            "function": "schools()",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1191,
            "function": "<anonymous>()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815602-run"
      }
    },
    "/reg/schools/config/delete": {
      "post": {
        "summary": "RegOverviewController.deleteSchool",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-overview.controller.ts:295；RegOverviewController.deleteSchool\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:104；sysSchoolDelete(id: number)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegOverviewController_deleteSchool",
        "tags": [
          "监管端/RegOverview"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-overview.controller.ts",
            "line": 295,
            "controller": "RegOverviewController",
            "handler": "deleteSchool"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 104,
            "function": "sysSchoolDelete(id: number)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/RegOverview",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815603-run"
      }
    },
    "/reg/reports/daily": {
      "get": {
        "summary": "ReportsController.daily",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reports.controller.ts:121；ReportsController.daily\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ReportsController_daily",
        "tags": [
          "监管端/Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Reports"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reports.controller.ts",
            "line": 121,
            "controller": "ReportsController",
            "handler": "daily"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Reports",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815604-run"
      }
    },
    "/reg/reports/export": {
      "get": {
        "summary": "Export daily report (CSV/PDF)",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reports.controller.ts:130；ReportsController.export\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1100；dailyReportExportCsv(params: { start: string; end: string; schoolId?: string })\n- web-regulator: apps/web-regulator/src/services/api.ts:1113；dailyReportExportPdf(params: { start: string; end: string; schoolId?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ReportsController_export",
        "tags": [
          "监管端/Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "来源：Query(format)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Reports"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reports.controller.ts",
            "line": 130,
            "controller": "ReportsController",
            "handler": "export"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1100,
            "function": "dailyReportExportCsv(params: { start: string; end: string; schoolId?: string })",
            "bodyExpression": ""
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1113,
            "function": "dailyReportExportPdf(params: { start: string; end: string; schoolId?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Reports",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815605-run"
      }
    },
    "/reg/system/info": {
      "get": {
        "summary": "RegSystemController.info",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:131；RegSystemController.info\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1450；sysInfoGet()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_info",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 131,
            "controller": "RegSystemController",
            "handler": "info"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1450,
            "function": "sysInfoGet()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815606-run"
      },
      "post": {
        "summary": "RegSystemController.saveInfo",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:136；RegSystemController.saveInfo\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1452；sysInfoSave(body: any)；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_saveInfo",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 136,
            "controller": "RegSystemController",
            "handler": "saveInfo"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1452,
            "function": "sysInfoSave(body: any)",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815607-run"
      }
    },
    "/reg/system/permissions": {
      "get": {
        "summary": "RegSystemController.permissions",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:115；RegSystemController.permissions\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1431；sysPermissions()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_permissions",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 115,
            "controller": "RegSystemController",
            "handler": "permissions"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1431,
            "function": "sysPermissions()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815608-run"
      }
    },
    "/reg/system/roles": {
      "get": {
        "summary": "RegSystemController.roles",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:100；RegSystemController.roles\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1403；sysRoles()\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_roles",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 100,
            "controller": "RegSystemController",
            "handler": "roles"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1403,
            "function": "sysRoles()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815609-run"
      },
      "patch": {
        "summary": "RegSystemController.updateRole",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:107；RegSystemController.updateRole\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1414；sysRoleUpdate(body: { id: number; patch: { name?: string; remark?: string } })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_updateRole",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  },
                  "patch": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}_测试数据"
                      },
                      "remark": {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}} 自动化测试数据"
                      }
                    },
                    "x-apifox-orders": [
                      "name",
                      "remark"
                    ],
                    "x-apifox-ignore-properties": []
                  }
                },
                "required": [
                  "id",
                  "patch"
                ],
                "x-apifox-orders": [
                  "id",
                  "patch"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1,
                "patch": {
                  "name": "APIFOX_{{testBatch}}_测试数据",
                  "remark": "APIFOX_{{testBatch}} 自动化测试数据"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 107,
            "controller": "RegSystemController",
            "handler": "updateRole"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1414,
            "function": "sysRoleUpdate(body: { id: number; patch: { name?: string; remark?: string } })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815610-run"
      },
      "post": {
        "summary": "RegSystemController.createRole",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:103；RegSystemController.createRole\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1405；sysRoleCreate(body: { name: string; remark?: string })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_createRole",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "remark": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}} 自动化测试数据"
                  }
                },
                "required": [
                  "name"
                ],
                "x-apifox-orders": [
                  "name",
                  "remark"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "remark": "APIFOX_{{testBatch}} 自动化测试数据"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 103,
            "controller": "RegSystemController",
            "handler": "createRole"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1405,
            "function": "sysRoleCreate(body: { name: string; remark?: string })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815611-run"
      }
    },
    "/reg/system/units": {
      "get": {
        "summary": "RegSystemController.listUnits",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:143；RegSystemController.listUnits\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:108；regUnits(params: { page?: number; pageSize?: number; q?: string })\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_listUnits",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 143,
            "controller": "RegSystemController",
            "handler": "listUnits"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 108,
            "function": "regUnits(params: { page?: number; pageSize?: number; q?: string })",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815612-run"
      },
      "patch": {
        "summary": "RegSystemController.updateUnit",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:155；RegSystemController.updateUnit\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:112；regUnitUpdate(id: string, body: any)；body=body\n- web-regulator: apps/web-regulator/src/services/api.ts:113；regUnitToggle(id: string, enabled: boolean)；body={ enabled }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_updateUnit",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 155,
            "controller": "RegSystemController",
            "handler": "updateUnit"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 112,
            "function": "regUnitUpdate(id: string, body: any)",
            "bodyExpression": "body"
          },
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 113,
            "function": "regUnitToggle(id: string, enabled: boolean)",
            "bodyExpression": "{ enabled }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815613-run"
      },
      "post": {
        "summary": "RegSystemController.createUnit",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:150；RegSystemController.createUnit\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:111；regUnitCreate(body: any)；body=body\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_createUnit",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 150,
            "controller": "RegSystemController",
            "handler": "createUnit"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 111,
            "function": "regUnitCreate(body: any)",
            "bodyExpression": "body"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815614-run"
      }
    },
    "/reg/system/users": {
      "get": {
        "summary": "RegSystemController.users",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:29；RegSystemController.users\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_users",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [
          {
            "name": "unitId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 29,
            "controller": "RegSystemController",
            "handler": "users"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815615-run"
      },
      "patch": {
        "summary": "RegSystemController.updateUser",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:81；RegSystemController.updateUser\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1386；sysUserUpdate(id: string, patch: any)；body=JSON.stringify(patch)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_updateUser",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {},
              "example": "APIFOX_{{testBatch}}"
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 81,
            "controller": "RegSystemController",
            "handler": "updateUser"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1386,
            "function": "sysUserUpdate(id: string, patch: any)",
            "bodyExpression": "JSON.stringify(patch)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815616-run"
      },
      "post": {
        "summary": "RegSystemController.createUser",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:60；RegSystemController.createUser\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1377；sysUserCreate(body: { username: string; displayName: string; roles?: string[]; enabled?: boolean; unitId?: number; })；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_createUser",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string",
                    "example": "apifox_autotest"
                  },
                  "displayName": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  },
                  "enabled": {
                    "type": "boolean",
                    "example": true
                  },
                  "unitId": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "username",
                  "displayName"
                ],
                "x-apifox-orders": [
                  "username",
                  "displayName",
                  "roles",
                  "enabled",
                  "unitId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "username": "apifox_autotest",
                "displayName": "APIFOX_{{testBatch}}_测试数据",
                "roles": [
                  "APIFOX_{{testBatch}}"
                ],
                "enabled": true,
                "unitId": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 60,
            "controller": "RegSystemController",
            "handler": "createUser"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1377,
            "function": "sysUserCreate(body: { username: string; displayName: string; roles?: string[]; enabled?: boolean; unitId?: number; })",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815617-run"
      }
    },
    "/reg/system/users/detail": {
      "get": {
        "summary": "RegSystemController.userDetail",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:46；RegSystemController.userDetail\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1369；sysUserDetail(id: string)\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_userDetail",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 46,
            "controller": "RegSystemController",
            "handler": "userDetail"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1369,
            "function": "sysUserDetail(id: string)",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815618-run"
      }
    },
    "/reg/system/roles/delete": {
      "post": {
        "summary": "RegSystemController.deleteRole",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:111；RegSystemController.deleteRole\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1423；sysRoleDelete(id: number)；body=JSON.stringify({ id })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_deleteRole",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "example": 1
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": 1
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 111,
            "controller": "RegSystemController",
            "handler": "deleteRole"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1423,
            "function": "sysRoleDelete(id: number)",
            "bodyExpression": "JSON.stringify({ id })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815619-run"
      }
    },
    "/reg/system/roles/permissions": {
      "post": {
        "summary": "RegSystemController.setRolePerms",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:124；RegSystemController.setRolePerms\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1442；sysSetRolePerms(name: string, permissions: string[])；body=JSON.stringify({ name, permissions })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_setRolePerms",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "permissions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "name",
                  "permissions"
                ],
                "x-apifox-orders": [
                  "name",
                  "permissions"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "name": "APIFOX_{{testBatch}}_测试数据",
                "permissions": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 124,
            "controller": "RegSystemController",
            "handler": "setRolePerms"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1442,
            "function": "sysSetRolePerms(name: string, permissions: string[])",
            "bodyExpression": "JSON.stringify({ name, permissions })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815620-run"
      }
    },
    "/reg/system/units/clear": {
      "post": {
        "summary": "RegSystemController.clearUnits",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:165；RegSystemController.clearUnits\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:115；regUnitsClear()\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_clearUnits",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 165,
            "controller": "RegSystemController",
            "handler": "clearUnits"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 115,
            "function": "regUnitsClear()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815621-run"
      }
    },
    "/reg/system/units/delete": {
      "post": {
        "summary": "RegSystemController.deleteUnit",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:160；RegSystemController.deleteUnit\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:114；regUnitDelete(id: string)；body={ id }\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_deleteUnit",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 160,
            "controller": "RegSystemController",
            "handler": "deleteUnit"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 114,
            "function": "regUnitDelete(id: string)",
            "bodyExpression": "{ id }"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815622-run"
      }
    },
    "/reg/system/users/delete": {
      "post": {
        "summary": "RegSystemController.deleteUser",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:93；RegSystemController.deleteUser\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1395；sysUserDelete(id: string)；body=JSON.stringify({ id })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_deleteUser",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "id"
                ],
                "x-apifox-orders": [
                  "id"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 93,
            "controller": "RegSystemController",
            "handler": "deleteUser"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1395,
            "function": "sysUserDelete(id: string)",
            "bodyExpression": "JSON.stringify({ id })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815623-run"
      }
    },
    "/reg/system/users/roles": {
      "post": {
        "summary": "RegSystemController.setUserRoles",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-system.controller.ts:120；RegSystemController.setUserRoles\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1433；sysSetUserRoles(id: string, roles: string[])；body=JSON.stringify({ id, roles })\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSystemController_setUserRoles",
        "tags": [
          "监管端/Regulator System"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "1"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "APIFOX_{{testBatch}}"
                    }
                  }
                },
                "required": [
                  "id",
                  "roles"
                ],
                "x-apifox-orders": [
                  "id",
                  "roles"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "id": "1",
                "roles": [
                  "APIFOX_{{testBatch}}"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator System"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-system.controller.ts",
            "line": 120,
            "controller": "RegSystemController",
            "handler": "setUserRoles"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1433,
            "function": "sysSetUserRoles(id: string, roles: string[])",
            "bodyExpression": "JSON.stringify({ id, roles })"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator System",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815624-run"
      }
    },
    "/reg/system/settings": {
      "get": {
        "summary": "RegSettingsController.get",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-settings.controller.ts:15；RegSettingsController.get\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1461；sysSettingsGet()\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSettingsController_get",
        "tags": [
          "监管端/Regulator Settings"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Settings"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-settings.controller.ts",
            "line": 15,
            "controller": "RegSettingsController",
            "handler": "get"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1461,
            "function": "sysSettingsGet()",
            "bodyExpression": ""
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Settings",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815625-run"
      },
      "post": {
        "summary": "RegSettingsController.save",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/reg-settings.controller.ts:28；RegSettingsController.save\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1463；sysSettingsSave(body: any)；body=JSON.stringify(body)\n\n### 自动化约束\n- 风险：DATABASE_WRITE\n- 执行策略：ISOLATED_DB_WITH_VERIFY_AND_CLEANUP\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RegSettingsController_save",
        "tags": [
          "监管端/Regulator Settings"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "basic": {},
                  "business": {},
                  "maintenance": {},
                  "alerts": {}
                },
                "x-apifox-orders": [
                  "basic",
                  "business",
                  "maintenance",
                  "alerts"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "basic": "APIFOX_{{testBatch}}",
                "business": "APIFOX_{{testBatch}}",
                "maintenance": "APIFOX_{{testBatch}}",
                "alerts": "APIFOX_{{testBatch}}"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Regulator Settings"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/reg-settings.controller.ts",
            "line": 28,
            "controller": "RegSettingsController",
            "handler": "save"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1463,
            "function": "sysSettingsSave(body: any)",
            "bodyExpression": "JSON.stringify(body)"
          }
        ],
        "x-test-risk": "DATABASE_WRITE",
        "x-test-execution-policy": "ISOLATED_DB_WITH_VERIFY_AND_CLEANUP",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/Regulator Settings",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815626-run"
      }
    },
    "/reg/alerts/notify-rectify": {
      "post": {
        "summary": "SchoolMessagesController.regNotifyRectify",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/school-messages.controller.ts:15；SchoolMessagesController.regNotifyRectify\n\n### 前端调用证据\n- web-regulator: apps/web-regulator/src/services/api.ts:1302；alertsNotifyRectify(payload: { schoolId: string | number; title: string; detail?: string; refId?: string })；body=JSON.stringify(payload)\n\n### 自动化约束\n- 风险：EXTERNAL_SIDE_EFFECT\n- 执行策略：SANDBOX_OR_STUB_ONLY\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "SchoolMessagesController_regNotifyRectify",
        "tags": [
          "监管端/School Messages"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "schoolId": {
                    "oneOf": [
                      {
                        "type": "number",
                        "example": 1
                      },
                      {
                        "type": "string",
                        "example": "1"
                      }
                    ]
                  },
                  "title": {
                    "type": "string",
                    "example": "APIFOX_{{testBatch}}_测试数据"
                  },
                  "detail": {
                    "oneOf": [
                      {
                        "type": "string",
                        "example": "APIFOX_{{testBatch}}"
                      },
                      {}
                    ]
                  },
                  "at": {
                    "type": "string",
                    "example": "2026-09-24 10:00:00"
                  },
                  "refId": {
                    "type": "string",
                    "example": "1"
                  }
                },
                "required": [
                  "schoolId",
                  "title"
                ],
                "x-apifox-orders": [
                  "schoolId",
                  "title",
                  "detail",
                  "at",
                  "refId"
                ],
                "x-apifox-ignore-properties": []
              },
              "example": {
                "schoolId": 1,
                "title": "APIFOX_{{testBatch}}_测试数据",
                "detail": "APIFOX_{{testBatch}}",
                "at": "2026-09-24 10:00:00",
                "refId": "1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "School Messages"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/school-messages.controller.ts",
            "line": 15,
            "controller": "SchoolMessagesController",
            "handler": "regNotifyRectify"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "web-regulator",
            "file": "apps/web-regulator/src/services/api.ts",
            "line": 1302,
            "function": "alertsNotifyRectify(payload: { schoolId: string | number; title: string; detail?: string; refId?: string })",
            "bodyExpression": "JSON.stringify(payload)"
          }
        ],
        "x-test-risk": "EXTERNAL_SIDE_EFFECT",
        "x-test-execution-policy": "SANDBOX_OR_STUB_ONLY",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "监管端/School Messages",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815627-run"
      }
    },
    "/screen/analytics/ai/events": {
      "get": {
        "summary": "ScreenAnalyticsController.aiEvents",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:254；ScreenAnalyticsController.aiEvents\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_aiEvents",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "来源：Query(page)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "来源：Query(pageSize)；源码类型：未声明",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 254,
            "controller": "ScreenAnalyticsController",
            "handler": "aiEvents"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815628-run"
      }
    },
    "/screen/analytics/ai/pie": {
      "get": {
        "summary": "ScreenAnalyticsController.aiTypesPie",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:155；ScreenAnalyticsController.aiTypesPie\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_aiTypesPie",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "来源：Query(start)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "来源：Query(end)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 155,
            "controller": "ScreenAnalyticsController",
            "handler": "aiTypesPie"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815629-run"
      }
    },
    "/screen/analytics/cameras": {
      "get": {
        "summary": "ScreenAnalyticsController.cameras",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:324；ScreenAnalyticsController.cameras\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_cameras",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "来源：Query(canteenId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 324,
            "controller": "ScreenAnalyticsController",
            "handler": "cameras"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815630-run"
      }
    },
    "/screen/analytics/devices": {
      "get": {
        "summary": "ScreenAnalyticsController.devicesList",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:306；ScreenAnalyticsController.devicesList\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_devicesList",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "来源：Query(schoolId)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "来源：Query(type)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "来源：Query(status)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "ACTIVE"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "来源：Query(q)；源码类型：string",
            "required": false,
            "schema": {
              "type": "string",
              "example": "APIFOX_{{testBatch}}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 306,
            "controller": "ScreenAnalyticsController",
            "handler": "devicesList"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815631-run"
      }
    },
    "/screen/analytics/devices/statuses": {
      "get": {
        "summary": "ScreenAnalyticsController.deviceStatuses",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:319；ScreenAnalyticsController.deviceStatuses\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_deviceStatuses",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 319,
            "controller": "ScreenAnalyticsController",
            "handler": "deviceStatuses"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815632-run"
      }
    },
    "/screen/analytics/devices/types": {
      "get": {
        "summary": "ScreenAnalyticsController.deviceTypes",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:316；ScreenAnalyticsController.deviceTypes\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_deviceTypes",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "业务成功响应；实际 envelope 以接口实现为准",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "x-apifox-orders": [],
                  "properties": {},
                  "x-apifox-ignore-properties": [],
                  "example": {
                    "ok": true,
                    "data": {}
                  }
                }
              }
            },
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          },
          "400": {
            "description": "请求参数错误",
            "headers": {},
            "x-apifox-name": "请求有误",
            "x-apifox-ordering": 1
          },
          "401": {
            "description": "未登录或令牌失效",
            "headers": {},
            "x-apifox-name": "没有权限",
            "x-apifox-ordering": 2
          },
          "403": {
            "description": "无权限",
            "headers": {},
            "x-apifox-name": "禁止访问",
            "x-apifox-ordering": 3
          },
          "500": {
            "description": "服务端错误",
            "headers": {},
            "x-apifox-name": "服务器错误",
            "x-apifox-ordering": 4
          }
        },
        "security": [],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 316,
            "controller": "ScreenAnalyticsController",
            "handler": "deviceTypes"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_ONLY",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815633-run"
      }
    },
    "/screen/analytics/personnel-health": {
      "get": {
        "summary": "ScreenAnalyticsController.personnelHealth",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/screen-analytics.controller.ts:98；ScreenAnalyticsController.personnelHealth\n\n### 前端调用证据\n- 未发现可静态匹配的前端调用；不代表接口未使用。\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "ScreenAnalyticsController_personnelHealth",
        "tags": [
          "大屏端/Screen Analytics"
        ],
        "parameters": [
          {
            "name": "schoolId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "canteenId",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          },
          {
            "name": "end",
            "in": "query",
            "description": "",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-09-24 10:00:00"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Screen Analytics"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/screen-analytics.controller.ts",
            "line": 98,
            "controller": "ScreenAnalyticsController",
            "handler": "personnelHealth"
          }
        ],
        "x-frontend-evidence": [],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI",
        "x-apifox-folder": "大屏端/Screen Analytics",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815634-run"
      }
    },
    "/": {
      "get": {
        "summary": "RootController.index",
        "deprecated": false,
        "description": "### 源码证据\n- services/gateway-service/src/modules/root.controller.ts:9；RootController.index\n\n### 前端调用证据\n- stream-tester: apps/stream-tester/server.js:123；frontend-helper；body=(_req, res) => { res.setHeader('Cache-Control', 'no-store'); res.sendFile(path.join(pub, 'index.html')); }\n\n### 自动化约束\n- 风险：READ_ONLY\n- 执行策略：AUTO_AFTER_AUTH\n- 测试数据批次：`APIFOX_{{testBatch}}`；真实写库前必须绑定隔离环境、测试账号、租户/学校和回读/清理策略。",
        "operationId": "RootController_index",
        "tags": [
          "公共与系统/Root"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {},
            "x-apifox-name": "成功",
            "x-apifox-ordering": 0
          }
        },
        "security": [],
        "x-original-tags": [
          "Root"
        ],
        "x-source-evidence": [
          {
            "file": "services/gateway-service/src/modules/root.controller.ts",
            "line": 9,
            "controller": "RootController",
            "handler": "index"
          }
        ],
        "x-frontend-evidence": [
          {
            "app": "stream-tester",
            "file": "apps/stream-tester/server.js",
            "line": 123,
            "function": "",
            "bodyExpression": "(_req, res) => { res.setHeader('Cache-Control', 'no-store'); res.sendFile(path.join(pub, 'index.html')); }"
          }
        ],
        "x-test-risk": "READ_ONLY",
        "x-test-execution-policy": "AUTO_AFTER_AUTH",
        "x-test-data-prefix": "APIFOX_{{testBatch}}",
        "x-contract-evidence-level": "SOURCE_OPENAPI_FRONTEND",
        "x-apifox-folder": "",
        "x-apifox-status": "released",
        "x-run-in-apifox": "https://app.apifox.com/web/project/8881630/apis/api-519815355-run"
      }
    }
  },
  "components": {
    "schemas": {
      "PagedSamplingRecords": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "ErrorEnvelope": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedPesticideRecords": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedDisinfectionRecords": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedHygieneInspections": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedWasteRecords": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PublicConfigDTO": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedPersonnel": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedDeviceSafetyRecords": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "UpdateDeviceSafetyBodyDTO": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedRegulatorTasks": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedMorningChecks": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedDineRecords": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      },
      "PagedSuppliers": {
        "type": "object",
        "properties": {},
        "x-apifox-orders": [],
        "x-apifox-ignore-properties": [],
        "x-apifox-folder": ""
      }
    },
    "responses": {},
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http",
        "x-apifox-folder": "SecurityScheme"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "x-apifox-folder": "SecurityScheme"
      }
    }
  },
  "servers": [],
  "security": []
}