{
  "input": "{\"openapi\": \"3.0.1\", \"info\": {\"title\": \"食品安全接口\", \"description\": \"\", \"version\": \"1.0.0\"}, \"tags\": [{\"name\": \"人工智能盒子开放接口/人员信息\"}, {\"name\": \"人工智能盒子开放接口/人脸库\"}, {\"name\": \"人工智能盒子开放接口/算法类型\"}, {\"name\": \"人工智能盒子开放接口/系统管理\"}, {\"name\": \"人工智能盒子开放接口/视频任务\"}, {\"name\": \"人工智能盒子开放接口/视频查看\"}, {\"name\": \"人工智能盒子开放接口/认证\"}, {\"name\": \"人工智能盒子开放接口/设备上报\"}, {\"name\": \"人工智能盒子开放接口/设备信息\"}, {\"name\": \"人工智能盒子开放接口/设备控制\"}, {\"name\": \"人工智能盒子开放接口/车辆信息\"}, {\"name\": \"人工智能盒子开放接口/车辆库\"}, {\"name\": \"人工智能盒子开放接口/车辆记录\"}, {\"name\": \"人工智能盒子开放接口/通道管理\"}, {\"name\": \"公共与系统/健康检查\"}, {\"name\": \"公共与系统/公众反馈\"}, {\"name\": \"公共与系统/存储配置\"}, {\"name\": \"公共与系统/根接口\"}, {\"name\": \"公共与系统/留样人员\"}, {\"name\": \"公共与系统/统计报告\"}, {\"name\": \"公共与系统/首页数据\"}, {\"name\": \"大屏端/数据分析\"}, {\"name\": \"学校端/人员管理\"}, {\"name\": \"学校端/人工智能事件\"}, {\"name\": \"学校端/供餐分类\"}, {\"name\": \"学校端/公示与公众反馈\"}, {\"name\": \"学校端/其他接口\"}, {\"name\": \"学校端/农残检测\"}, {\"name\": \"学校端/卫生与资产巡检\"}, {\"name\": \"学校端/学校消息\"}, {\"name\": \"学校端/学校首页\"}, {\"name\": \"学校端/就餐管理\"}, {\"name\": \"学校端/库存与进销存\"}, {\"name\": \"学校端/应急管理\"}, {\"name\": \"学校端/数据分析\"}, {\"name\": \"学校端/晨检管理\"}, {\"name\": \"学校端/消毒管理\"}, {\"name\": \"学校端/物联网设备配置\"}, {\"name\": \"学校端/系统管理\"}, {\"name\": \"学校端/菜品管理\"}, {\"name\": \"学校端/设备安全\"}, {\"name\": \"学校端/设备管理\"}, {\"name\": \"学校端/证件管理\"}, {\"name\": \"学校端/资质证照管理\"}, {\"name\": \"学校端/配餐计划\"}, {\"name\": \"学校端/陪餐管理\"}, {\"name\": \"学校端/风险管理\"}, {\"name\": \"学校端/食品留样\"}, {\"name\": \"学校端/餐厨废弃物\"}, {\"name\": \"审计日志\"}, {\"name\": \"文件服务\"}, {\"name\": \"明厨亮灶/本地视频管理\"}, {\"name\": \"明厨亮灶/视频监管\"}, {\"name\": \"物联网设备/视频设备\"}, {\"name\": \"登录认证\"}, {\"name\": \"监管端/人工智能事件\"}, {\"name\": \"监管端/台账监管\"}, {\"name\": \"监管端/学校管理\"}, {\"name\": \"监管端/检查任务\"}, {\"name\": \"监管端/系统管理\"}, {\"name\": \"监管端/统计报告\"}, {\"name\": \"监管端/资质证照监管\"}, {\"name\": \"监管端/预警管理\"}, {\"name\": \"监管端/餐厨废弃物监管\"}, {\"name\": \"监管端/首页总览\"}, {\"name\": \"第三方设备数据接入/晨检设备\"}, {\"name\": \"第三方设备数据接入/留样仪器\"}, {\"name\": \"第三方设备数据接入/监管数据\"}, {\"name\": \"第三方设备数据接入/视频平台\"}, {\"name\": \"第三方设备数据接入/视频平台代理\"}, {\"name\": \"第三方设备数据接入/设备上报\"}, {\"name\": \"第三方设备数据接入/设备同步\"}, {\"name\": \"第三方设备数据接入/设备心跳\"}, {\"name\": \"第三方设备数据接入/通用集成\"}], \"paths\": {\"/bright-local/aibox-boxes\": {\"delete\": {\"summary\": \"删除本地智能分析盒\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815056-run\"}, \"get\": {\"summary\": \"查询本地智能分析盒列表\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815057-run\"}, \"patch\": {\"summary\": \"更新本地智能分析盒\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815058-run\"}, \"post\": {\"summary\": \"新增本地智能分析盒\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815059-run\"}}, \"/bright-local/channels\": {\"delete\": {\"summary\": \"删除本地视频通道\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815060-run\"}, \"get\": {\"summary\": \"查询本地视频通道列表\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815061-run\"}, \"patch\": {\"summary\": \"更新本地视频通道\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815062-run\"}, \"post\": {\"summary\": \"新增本地视频通道\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"查询本地人工智能事件列表\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"查询本地人工智能事件详情\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"导出本地人工智能事件文件\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"查询本地智能分析盒列表\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815067-run\"}}, \"/bright-local/playback\": {\"get\": {\"summary\": \"查询本地视频回放\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815068-run\"}}, \"/bright-local/strangers\": {\"get\": {\"summary\": \"查询本地陌生人记录列表\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"导出本地陌生人记录文件\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"处理本地人工智能事件\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"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\": \"批量处理本地人工智能事件\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815072-run\"}}, \"/bright-local/refresh\": {\"post\": {\"summary\": \"刷新本地视频数据\", \"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\": [\"明厨亮灶/本地视频管理\"], \"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\": \"明厨亮灶/本地视频管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815073-run\"}}, \"/bright/channels\": {\"get\": {\"summary\": \"查询明厨亮灶通道列表\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815074-run\"}}, \"/bright/reg/cameras\": {\"get\": {\"summary\": \"查询监管视频列表\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815075-run\"}}, \"/bright/reg/download\": {\"get\": {\"summary\": \"获取监管视频下载地址\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815076-run\"}}, \"/bright/reg/playback\": {\"get\": {\"summary\": \"查询监管视频回放\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815077-run\"}}, \"/bright/reg/snapshots\": {\"get\": {\"summary\": \"查询监管视频抓拍\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815078-run\"}, \"post\": {\"summary\": \"新增监管视频抓拍\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815079-run\"}}, \"/bright/school/cameras\": {\"get\": {\"summary\": \"查询学校视频列表\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815080-run\"}}, \"/bright/school/download\": {\"get\": {\"summary\": \"获取学校视频下载地址\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815081-run\"}}, \"/bright/school/playback\": {\"get\": {\"summary\": \"查询学校视频回放\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815082-run\"}}, \"/bright/school/snapshots\": {\"get\": {\"summary\": \"查询学校视频抓拍\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815083-run\"}, \"post\": {\"summary\": \"新增学校视频抓拍\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"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\": \"查询学校视频摄像头选项列表\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"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\": \"查询学校视频摄像头列表\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"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\": \"查询明厨亮灶视频流列表\", \"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\": [\"明厨亮灶/视频监管\"], \"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\": \"明厨亮灶/视频监管\", \"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\": \"删除陪餐记录\", \"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\": [\"学校端/陪餐管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/陪餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815088-run\"}, \"get\": {\"summary\": \"查询陪餐记录详情\", \"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\": [\"学校端/陪餐管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/陪餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815089-run\"}, \"patch\": {\"summary\": \"更新陪餐记录\", \"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\": [\"学校端/陪餐管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/陪餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815090-run\"}}, \"/school/companion-meals\": {\"get\": {\"summary\": \"查询陪餐记录列表\", \"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\": [\"学校端/陪餐管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/陪餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815091-run\"}, \"post\": {\"summary\": \"新增陪餐记录\", \"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\": [\"学校端/陪餐管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": []}, \"example\": {}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/陪餐管理\", \"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\": [\"学校端/物联网设备配置\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"来源：Query(id)；源码类型：string\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/物联网设备配置\", \"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\": [\"学校端/物联网设备配置\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/物联网设备配置\", \"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\": [\"学校端/物联网设备配置\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/物联网设备配置\", \"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\": [\"学校端/物联网设备配置\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {}, \"example\": \"APIFOX_{{testBatch}}\"}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/物联网设备配置\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"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\": \"导出学校菜品文件\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"返回 { csv }\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815102-run\"}}, \"/school/foods/import\": {\"post\": {\"summary\": \"导入学校菜品\", \"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\": [\"学校端/菜品管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/菜品管理\", \"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\": [\"学校端/配餐计划\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": [\"学校端/配餐计划\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": [\"学校端/配餐计划\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": [\"学校端/配餐计划\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": \"导出配餐计划文件\", \"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\": [\"学校端/配餐计划\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"返回 CSV 文本\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": [\"学校端/配餐计划\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": \"导入配餐计划\", \"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\": [\"学校端/配餐计划\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/配餐计划\", \"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\": \"删除晨检记录\", \"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\": [\"学校端/晨检管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815111-run\"}}, \"/school/morning-checks\": {\"post\": {\"summary\": \"新增晨检记录\", \"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\": [\"学校端/晨检管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815112-run\"}, \"get\": {\"summary\": \"查询晨检记录列表\", \"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\": [\"学校端/晨检管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedMorningChecks\"}}}, \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"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\": \"导出晨检记录文件\", \"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\": [\"学校端/晨检管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"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\": \"查询晨检记录\", \"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\": [\"学校端/晨检管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"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\": \"查询晨检记录\", \"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\": [\"学校端/晨检管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"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\": \"处理晨检记录\", \"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\": [\"学校端/晨检管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"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\": \"处理晨检记录\", \"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\": [\"学校端/晨检管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"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\": \"接收晨检记录\", \"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\": [\"学校端/晨检管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815118-run\"}}, \"/school/morning-checks/stream\": {\"get\": {\"summary\": \"查询晨检记录实时数据\", \"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\": [\"学校端/晨检管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/晨检管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815286-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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": [\"学校端/食品留样\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"来源：Query(id)；源码类型：string\", \"required\": false, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"删除留样人员\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"新增留样人员\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": [\"学校端/食品留样\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {}, \"example\": \"APIFOX_{{testBatch}}\"}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"删除餐厨废弃物分类\", \"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\": [\"学校端/餐厨废弃物\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"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\": \"删除餐厨废弃物记录\", \"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\": [\"学校端/餐厨废弃物\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815127-run\"}, \"get\": {\"summary\": \"查询餐厨废弃物记录详情\", \"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\": [\"学校端/餐厨废弃物\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815128-run\"}}, \"/school/waste/categories\": {\"get\": {\"summary\": \"查询餐厨废弃物分类列表\", \"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\": [\"学校端/餐厨废弃物\"], \"parameters\": [{\"name\": \"enabled\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"APIFOX_{{testBatch}}\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815129-run\"}, \"post\": {\"summary\": \"新增餐厨废弃物分类\", \"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\": [\"学校端/餐厨废弃物\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815130-run\"}}, \"/school/waste/records\": {\"get\": {\"summary\": \"查询餐厨废弃物记录列表\", \"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\": [\"学校端/餐厨废弃物\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedWasteRecords\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815131-run\"}, \"post\": {\"summary\": \"新增餐厨废弃物记录\", \"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\": [\"学校端/餐厨废弃物\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"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\": \"导出餐厨废弃物记录文件\", \"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\": [\"学校端/餐厨废弃物\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"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\": \"启用餐厨废弃物分类\", \"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\": [\"学校端/餐厨废弃物\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/餐厨废弃物\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815134-run\"}}, \"/school/ai/events\": {\"get\": {\"summary\": \"查询人工智能事件列表\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"查询人工智能事件详情\", \"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\": [\"学校端/人工智能事件\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"导出人工智能事件文件\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"查询人工智能事件汇总\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"导出人工智能事件汇总文件\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"查询首页人工智能事件汇总\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"查询首页人工智能事件汇总\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815141-run\"}}, \"/school/ai/strangers\": {\"get\": {\"summary\": \"查询陌生人事件列表\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"查询人工智能事件分类统计\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815143-run\"}}, \"/school/ai/types\": {\"get\": {\"summary\": \"查询人工智能事件类型\", \"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\": [\"学校端/人工智能事件\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"设置人工智能事件\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"处理人工智能事件\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"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\": \"新增人工智能事件\", \"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\": [\"学校端/人工智能事件\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815147-run\"}}, \"/school/analytics/alerts\": {\"get\": {\"summary\": \"查询预警分析列表\", \"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\": [\"学校端/数据分析\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815148-run\"}}, \"/school/analytics/dashboard\": {\"get\": {\"summary\": \"查询数据分析看板列表\", \"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\": [\"学校端/数据分析\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815149-run\"}}, \"/school/analytics/health\": {\"get\": {\"summary\": \"查询健康数据分析列表\", \"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\": [\"学校端/数据分析\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/数据分析\", \"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\": \"查询人员健康分析列表\", \"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\": [\"学校端/数据分析\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815151-run\"}}, \"/school/analytics/stream\": {\"get\": {\"summary\": \"查询数据分析实时流实时数据\", \"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\": [\"学校端/数据分析\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/数据分析\", \"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\": \"处理预警分析\", \"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\": [\"学校端/数据分析\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815153-run\"}}, \"/school/assets/maintenance\": {\"get\": {\"summary\": \"查询资产维护记录列表\", \"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\": [\"学校端/卫生与资产巡检\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/卫生与资产巡检\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815154-run\"}, \"post\": {\"summary\": \"新增资产维护记录\", \"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\": [\"学校端/卫生与资产巡检\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/卫生与资产巡检\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815155-run\"}}, \"/school/hygiene/inspections\": {\"get\": {\"summary\": \"查询卫生检查记录列表\", \"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\": [\"学校端/卫生与资产巡检\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedHygieneInspections\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/卫生与资产巡检\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815156-run\"}, \"post\": {\"summary\": \"新增卫生检查记录\", \"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\": [\"学校端/卫生与资产巡检\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/卫生与资产巡检\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815157-run\"}}, \"/school/hygiene/stream\": {\"get\": {\"summary\": \"查询卫生检查实时流实时数据\", \"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\": [\"学校端/卫生与资产巡检\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/卫生与资产巡检\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815158-run\"}}, \"/school/canteen-detail\": {\"get\": {\"summary\": \"查询食堂详情列表\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815159-run\"}, \"patch\": {\"summary\": \"更新食堂详情\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815160-run\"}}, \"/school/canteen-licenses\": {\"get\": {\"summary\": \"查询食堂证照列表\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815161-run\"}, \"patch\": {\"summary\": \"更新食堂证照\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815162-run\"}, \"post\": {\"summary\": \"新增食堂证照\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815163-run\"}}, \"/school/canteens\": {\"get\": {\"summary\": \"查询食堂列表\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815164-run\"}, \"patch\": {\"summary\": \"更新食堂\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815165-run\"}, \"post\": {\"summary\": \"新增食堂\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815166-run\"}}, \"/school/canteens/summary\": {\"get\": {\"summary\": \"查询食堂汇总\", \"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\": [\"学校端/其他接口\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"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\": \"删除食堂详情\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"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\": \"删除食堂证照\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815169-run\"}}, \"/school/canteens/delete\": {\"post\": {\"summary\": \"删除食堂\", \"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\": [\"学校端/其他接口\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/其他接口\", \"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\": [\"学校端/供餐分类\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/供餐分类\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815171-run\"}}, \"/school/cater/select\": {\"get\": {\"summary\": \"查询外部供餐数据\", \"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\": [\"学校端/供餐分类\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/供餐分类\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815172-run\"}}, \"/school/certificates\": {\"get\": {\"summary\": \"查询学校证件列表\", \"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\": [\"学校端/证件管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/证件管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815173-run\"}, \"patch\": {\"summary\": \"更新学校证件\", \"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\": [\"学校端/证件管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/证件管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815174-run\"}, \"post\": {\"summary\": \"新增学校证件\", \"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\": [\"学校端/证件管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/证件管理\", \"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\": \"导出学校证件文件\", \"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\": [\"学校端/证件管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/证件管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815176-run\"}}, \"/school/certificates/delete\": {\"post\": {\"summary\": \"删除学校证件\", \"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\": [\"学校端/证件管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/证件管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815177-run\"}}, \"/school/credentials/canteens\": {\"get\": {\"summary\": \"查询食堂资质列表\", \"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\": [\"学校端/资质证照管理\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"来源：Query(schoolId)；源码类型：string\", \"required\": false, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815178-run\"}, \"post\": {\"summary\": \"新增食堂资质\", \"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\": [\"学校端/资质证照管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815179-run\"}}, \"/school/credentials/exceptions\": {\"get\": {\"summary\": \"查询资质异常列表\", \"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\": [\"学校端/资质证照管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815180-run\"}}, \"/school/credentials/stream\": {\"get\": {\"summary\": \"查询资质异常实时流实时数据\", \"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\": [\"学校端/资质证照管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"Server-Sent Events stream\", \"content\": {\"text/event-stream\": {\"schema\": {\"type\": \"string\"}}}, \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815181-run\"}}, \"/school/credentials/suppliers\": {\"get\": {\"summary\": \"查询供应商资质列表\", \"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\": [\"学校端/资质证照管理\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"来源：Query(schoolId)；源码类型：string\", \"required\": false, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815182-run\"}, \"post\": {\"summary\": \"新增供应商资质\", \"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\": [\"学校端/资质证照管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815183-run\"}}, \"/school/credentials/workers\": {\"get\": {\"summary\": \"查询从业人员资质列表\", \"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\": [\"学校端/资质证照管理\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"来源：Query(schoolId)；源码类型：string\", \"required\": false, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815184-run\"}, \"post\": {\"summary\": \"新增从业人员资质\", \"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\": [\"学校端/资质证照管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"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\": \"处理资质异常\", \"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\": [\"学校端/资质证照管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/资质证照管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815186-run\"}}, \"/school/device-safety\": {\"get\": {\"summary\": \"查询设备安全记录列表\", \"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\": [\"学校端/设备安全\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedDeviceSafetyRecords\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/设备安全\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815187-run\"}, \"post\": {\"summary\": \"新增设备安全记录\", \"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\": [\"学校端/设备安全\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/设备安全\", \"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\": \"查询设备安全记录详情\", \"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\": [\"学校端/设备安全\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/设备安全\", \"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\": \"更新设备安全记录\", \"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\": [\"学校端/设备安全\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/设备安全\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815190-run\"}}, \"/school/devices\": {\"get\": {\"summary\": \"查询学校设备列表\", \"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\": [\"学校端/设备管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/设备管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815191-run\"}}, \"/school/devices/statuses\": {\"get\": {\"summary\": \"查询设备状态\", \"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\": [\"学校端/设备管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/设备管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815192-run\"}}, \"/school/devices/types\": {\"get\": {\"summary\": \"查询设备类型\", \"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\": [\"学校端/设备管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/设备管理\", \"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\": \"查询餐别选项列表\", \"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\": [\"学校端/就餐管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815194-run\"}}, \"/school/dine/meals\": {\"get\": {\"summary\": \"查询就餐汇总列表\", \"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\": [\"学校端/就餐管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815195-run\"}}, \"/school/dine/records\": {\"post\": {\"summary\": \"新增就餐记录\", \"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\": [\"学校端/就餐管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815196-run\"}, \"get\": {\"summary\": \"查询就餐记录列表\", \"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\": [\"学校端/就餐管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedDineRecords\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"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\": \"处理就餐记录\", \"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\": [\"学校端/就餐管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"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\": \"接收就餐摄像头数据\", \"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\": [\"学校端/就餐管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"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\": \"新增就餐二维码\", \"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\": [\"学校端/就餐管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"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\": \"提交就餐二维码\", \"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\": [\"学校端/就餐管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815200-run\"}}, \"/school/dine/stream\": {\"get\": {\"summary\": \"查询就餐实时流实时数据\", \"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\": [\"学校端/就餐管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/就餐管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815202-run\"}}, \"/school/disinfection/records\": {\"get\": {\"summary\": \"查询消毒记录列表\", \"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\": [\"学校端/消毒管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedDisinfectionRecords\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815203-run\"}, \"post\": {\"summary\": \"新增消毒记录\", \"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\": [\"学校端/消毒管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"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\": \"查询消毒记录详情\", \"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\": [\"学校端/消毒管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815205-run\"}}, \"/school/disinfection/stream\": {\"get\": {\"summary\": \"查询消毒实时流实时数据\", \"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\": [\"学校端/消毒管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"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\": \"处理消毒记录\", \"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\": [\"学校端/消毒管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"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\": \"接收消毒设备数据\", \"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\": [\"学校端/消毒管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"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\": \"导入消毒记录\", \"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\": [\"学校端/消毒管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {}, \"example\": \"APIFOX_{{testBatch}}\"}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/消毒管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815209-run\"}}, \"/school/emergency/cameras\": {\"get\": {\"summary\": \"查询应急摄像头列表\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815210-run\"}}, \"/school/emergency/duty\": {\"get\": {\"summary\": \"查询应急值班列表\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815211-run\"}, \"post\": {\"summary\": \"新增应急值班\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"导出应急值班文件\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815213-run\"}}, \"/school/emergency/events\": {\"get\": {\"summary\": \"查询应急事件列表\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"导出应急事件文件\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815215-run\"}}, \"/school/emergency/meetings\": {\"get\": {\"summary\": \"查询应急会议列表\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815216-run\"}, \"post\": {\"summary\": \"新增应急会议\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815217-run\"}}, \"/school/emergency/overview\": {\"get\": {\"summary\": \"查询应急总览\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815218-run\"}}, \"/school/emergency/plans\": {\"get\": {\"summary\": \"查询应急预案列表\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815219-run\"}, \"post\": {\"summary\": \"新增应急预案\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"导出应急预案文件\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815221-run\"}}, \"/school/emergency/resources\": {\"get\": {\"summary\": \"查询应急资源列表\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815222-run\"}}, \"/school/emergency/stream\": {\"get\": {\"summary\": \"查询应急实时流实时数据\", \"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\": [\"学校端/应急管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815223-run\"}}, \"/school/emergency/tasks\": {\"get\": {\"summary\": \"查询应急任务列表\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815224-run\"}, \"post\": {\"summary\": \"新增应急任务\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"导出应急任务文件\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"更新应急会议\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"设置应急任务\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"新增应急告警\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"处理应急事件\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"删除应急事件\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"启动应急事件\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"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\": \"邀请应急会议\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815233-run\"}}, \"/school/emergency/notify\": {\"post\": {\"summary\": \"发送应急通知\", \"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\": [\"学校端/应急管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/应急管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815234-run\"}}, \"/school/home/overview\": {\"get\": {\"summary\": \"查询学校首页总览\", \"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\": [\"学校端/学校首页\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/学校首页\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815235-run\"}}, \"/school/inventory/additives\": {\"get\": {\"summary\": \"查询食品添加剂列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815236-run\"}, \"post\": {\"summary\": \"新增食品添加剂\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815237-run\"}}, \"/school/inventory/categories\": {\"get\": {\"summary\": \"查询库存分类列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815238-run\"}, \"post\": {\"summary\": \"新增库存分类\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815239-run\"}}, \"/school/inventory/inbound\": {\"get\": {\"summary\": \"查询入库记录列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815240-run\"}, \"post\": {\"summary\": \"新增入库记录\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"查询入库单据列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"docNo\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"APIFOX_{{testBatch}}_001\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815242-run\"}, \"patch\": {\"summary\": \"更新入库单据\", \"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\": [\"学校端/库存与进销存\"], \"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-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815243-run\"}, \"post\": {\"summary\": \"新增入库单据\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"查询入库记录列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导出入库记录文件\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815246-run\"}}, \"/school/inventory/outbound\": {\"get\": {\"summary\": \"查询出库记录列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815247-run\"}, \"post\": {\"summary\": \"新增出库记录\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"查询出库批次列表\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导出出库记录文件\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815250-run\"}}, \"/school/inventory/products\": {\"get\": {\"summary\": \"查询库存商品列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815251-run\"}, \"patch\": {\"summary\": \"更新库存商品\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815252-run\"}, \"post\": {\"summary\": \"新增库存商品\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815253-run\"}}, \"/school/inventory/stock\": {\"get\": {\"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"查询库存列表\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导出库存文件\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815256-run\"}}, \"/school/inventory/stream\": {\"get\": {\"summary\": \"查询库存实时流实时数据\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815257-run\"}}, \"/school/inventory/suppliers\": {\"get\": {\"summary\": \"查询供应商列表\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedSuppliers\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815258-run\"}, \"patch\": {\"summary\": \"更新供应商\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815259-run\"}, \"post\": {\"summary\": \"新增供应商\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导出供应商文件\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"查询供应商详情\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导出供应商文件\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"查询供应商\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815264-run\"}}, \"/school/inventory/tickets\": {\"get\": {\"summary\": \"查询采购票据列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"number\", \"example\": 1}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}}, \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815265-run\"}, \"post\": {\"summary\": \"新增采购票据\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815266-run\"}}, \"/school/inventory/warehouses\": {\"get\": {\"summary\": \"查询仓库列表\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815267-run\"}, \"patch\": {\"summary\": \"更新仓库\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815268-run\"}, \"post\": {\"summary\": \"新增仓库\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"新增入库记录\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"删除出库记录\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"新增出库记录\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"删除库存商品\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导入库存商品\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导入库存商品\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"盘点库存\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"盘点库存\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"新增供应商\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导入供应商\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"删除供应商\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"批量设置供应商\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"导入供应商\", \"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\": [\"学校端/库存与进销存\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {}, \"example\": \"APIFOX_{{testBatch}}\"}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"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\": \"删除仓库\", \"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\": [\"学校端/库存与进销存\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/库存与进销存\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815283-run\"}}, \"/school/messages/rectify\": {\"get\": {\"summary\": \"查询学校整改消息列表\", \"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\": [\"学校端/学校消息\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/学校消息\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815284-run\"}}, \"/school/personnel\": {\"get\": {\"summary\": \"查询学校人员列表\", \"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\": [\"学校端/人员管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedPersonnel\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/人员管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815287-run\"}, \"patch\": {\"summary\": \"更新学校人员\", \"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\": [\"学校端/人员管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人员管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815288-run\"}, \"post\": {\"summary\": \"新增学校人员\", \"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\": [\"学校端/人员管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人员管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815289-run\"}}, \"/school/personnel/detail\": {\"get\": {\"summary\": \"查询学校人员详情\", \"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\": [\"学校端/人员管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人员管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815290-run\"}}, \"/school/personnel/delete\": {\"post\": {\"summary\": \"删除学校人员\", \"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\": [\"学校端/人员管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/人员管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815291-run\"}}, \"/school/pesticide/records\": {\"get\": {\"summary\": \"查询农残检测记录列表\", \"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\": [\"学校端/农残检测\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedPesticideRecords\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/农残检测\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815292-run\"}, \"post\": {\"summary\": \"新增农残检测记录\", \"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\": [\"学校端/农残检测\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/农残检测\", \"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\": \"导出农残检测记录文件\", \"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\": [\"学校端/农残检测\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/农残检测\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815294-run\"}}, \"/school/pesticide/stream\": {\"get\": {\"summary\": \"查询农残检测实时流实时数据\", \"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\": [\"学校端/农残检测\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/农残检测\", \"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\": \"处理农残检测记录\", \"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\": [\"学校端/农残检测\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/农残检测\", \"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\": \"接收农残检测设备数据\", \"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\": [\"学校端/农残检测\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/农残检测\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815297-run\"}}, \"/school/public/config\": {\"get\": {\"summary\": \"查询公示配置\", \"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\": [\"学校端/公示与公众反馈\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PublicConfigDTO\"}}}, \"headers\": {}}}, \"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\": \"学校端/公示与公众反馈\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815298-run\"}, \"post\": {\"summary\": \"新增公示配置\", \"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\": [\"学校端/公示与公众反馈\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/公示与公众反馈\", \"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\": \"查询公示配置审计记录\", \"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\": [\"学校端/公示与公众反馈\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/公示与公众反馈\", \"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\": \"查询公众反馈二维码\", \"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\": [\"学校端/公示与公众反馈\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"Feedback QR for mobile Sunshine page\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": []}}}, \"headers\": {}}}, \"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\": \"学校端/公示与公众反馈\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815301-run\"}}, \"/school/public/feedback\": {\"get\": {\"summary\": \"查询公众反馈列表\", \"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\": [\"学校端/公示与公众反馈\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/公示与公众反馈\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815302-run\"}}, \"/school/risk/catalog\": {\"get\": {\"summary\": \"查询风险目录列表\", \"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\": [\"学校端/风险管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815303-run\"}, \"patch\": {\"summary\": \"更新风险目录\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815304-run\"}, \"post\": {\"summary\": \"新增风险目录\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"导出风险目录文件\", \"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\": [\"学校端/风险管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815306-run\"}}, \"/school/risk/reports\": {\"get\": {\"summary\": \"查询风险报告列表\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815307-run\"}, \"post\": {\"summary\": \"新增风险报告\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"查询风险报告详情\", \"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\": [\"学校端/风险管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"导出风险报告文件\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815310-run\"}}, \"/school/risk/tasks\": {\"get\": {\"summary\": \"查询风险任务列表\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815311-run\"}, \"post\": {\"summary\": \"新增风险任务\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"查询风险任务详情\", \"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\": [\"学校端/风险管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"导出风险任务文件\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"设置风险报告\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"设置风险任务\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"删除风险目录\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"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\": \"提交风险任务\", \"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\": [\"学校端/风险管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/风险管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815318-run\"}}, \"/school/sampling/records\": {\"get\": {\"summary\": \"查询食品留样记录列表\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/PagedSamplingRecords\"}}}, \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 1, \"description\": \"Unauthorized\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 2, \"description\": \"Forbidden\", \"content\": {\"application/json\": {\"schema\": {\"$ref\": \"#/components/schemas/ErrorEnvelope\"}}}, \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815319-run\"}, \"post\": {\"summary\": \"新增食品留样记录\", \"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\": [\"学校端/食品留样\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"导出食品留样记录文件\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815321-run\"}}, \"/school/sampling/stream\": {\"get\": {\"summary\": \"查询食品留样实时流实时数据\", \"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\": [\"学校端/食品留样\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"处理食品留样记录\", \"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\": [\"学校端/食品留样\"], \"parameters\": [{\"name\": \"id\", \"in\": \"path\", \"description\": \"\", \"required\": true, \"example\": \"\", \"schema\": {\"type\": \"number\", \"example\": 1}}], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"properties\": {}, \"x-apifox-orders\": [], \"x-apifox-ignore-properties\": []}}}, \"required\": true}, \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"设置食品留样记录\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"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\": \"接收留样设备数据\", \"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\": [\"学校端/食品留样\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/食品留样\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815325-run\"}}, \"/school/system/announcements\": {\"get\": {\"summary\": \"查询系统公告列表\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815326-run\"}, \"post\": {\"summary\": \"新增系统公告\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"查询系统公告详情\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815328-run\"}}, \"/school/system/apps\": {\"get\": {\"summary\": \"查询学校应用列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815329-run\"}}, \"/school/system/canteen\": {\"get\": {\"summary\": \"查询学校食堂配置列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815330-run\"}, \"post\": {\"summary\": \"新增学校食堂配置\", \"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\": [\"学校端/系统管理\"], \"parameters\": [], \"requestBody\": {\"content\": {\"application/json\": {\"schema\": {}, \"example\": \"APIFOX_{{testBatch}}\"}}, \"required\": true}, \"responses\": {\"201\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815331-run\"}}, \"/school/system/linkage\": {\"get\": {\"summary\": \"查询学校联动申请列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [{\"name\": \"status\", \"in\": \"query\", \"description\": \"来源：Query(status)；源码类型：any\", \"required\": false, \"schema\": {}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815332-run\"}}, \"/school/system/meals\": {\"get\": {\"summary\": \"查询学校餐别配置列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815333-run\"}, \"post\": {\"summary\": \"新增学校餐别配置\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815334-run\"}}, \"/school/system/news\": {\"get\": {\"summary\": \"查询学校新闻列表\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"查询学校新闻详情\", \"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\": [\"学校端/系统管理\"], \"parameters\": [{\"name\": \"id\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"查询学校机构类型列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [{\"name\": \"schoolId\", \"in\": \"query\", \"description\": \"来源：Query(schoolId)；源码类型：string\", \"required\": false, \"schema\": {\"type\": \"string\", \"example\": \"1\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815337-run\"}, \"post\": {\"summary\": \"新增学校机构类型\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"业务成功响应；实际 envelope 以接口实现为准\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"object\", \"additionalProperties\": true, \"x-apifox-orders\": [], \"properties\": {}, \"x-apifox-ignore-properties\": [], \"example\": {\"ok\": true, \"data\": {}}}}}, \"headers\": {}}, \"400\": {\"x-apifox-name\": \"请求有误\", \"x-apifox-ordering\": 1, \"description\": \"请求参数错误\", \"headers\": {}}, \"401\": {\"x-apifox-name\": \"没有权限\", \"x-apifox-ordering\": 2, \"description\": \"未登录或令牌失效\", \"headers\": {}}, \"403\": {\"x-apifox-name\": \"禁止访问\", \"x-apifox-ordering\": 3, \"description\": \"无权限\", \"headers\": {}}, \"500\": {\"x-apifox-name\": \"服务器错误\", \"x-apifox-ordering\": 4, \"description\": \"服务端错误\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815338-run\"}}, \"/school/system/permissions\": {\"get\": {\"summary\": \"查询学校权限列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815339-run\"}}, \"/school/system/roles\": {\"get\": {\"summary\": \"查询学校角色列表\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815340-run\"}, \"patch\": {\"summary\": \"更新学校角色\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815341-run\"}, \"post\": {\"summary\": \"新增学校角色\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"查询学校角色列表\", \"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\": [\"学校端/系统管理\"], \"parameters\": [{\"name\": \"name\", \"in\": \"query\", \"description\": \"\", \"required\": true, \"schema\": {\"type\": \"string\", \"example\": \"APIFOX_{{testBatch}}_测试数据\"}}], \"responses\": {\"200\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815343-run\"}, \"post\": {\"summary\": \"新增学校角色\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815344-run\"}}, \"/school/system/users\": {\"get\": {\"summary\": \"查询学校用户列表\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815345-run\"}, \"patch\": {\"summary\": \"更新学校用户\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815346-run\"}, \"post\": {\"summary\": \"新增学校用户\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"处理学校联动申请\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"新增系统公告\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"新增学校联动申请\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"删除学校角色\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"删除学校用户\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"设置学校用户\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"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\": \"新增学校用户\", \"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\": [\"学校端/系统管理\"], \"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\": {\"x-apifox-name\": \"成功\", \"x-apifox-ordering\": 0, \"description\": \"\", \"headers\": {}}}, \"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\": \"学校端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815354-run\"}}, \"/device/morningChecker/employeeList\": {\"get\": {\"summary\": \"查询人员\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815363-run\"}}, \"/device/morningChecker/heartBeatInfo\": {\"post\": {\"summary\": \"新增晨检设备\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815364-run\"}}, \"/api/devices\": {\"get\": {\"summary\": \"查询集成设备列表\", \"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\": [\"第三方设备数据接入/通用集成\"], \"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\": \"第三方设备数据接入/通用集成\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815365-run\"}}, \"/api/employees\": {\"get\": {\"summary\": \"查询集成人员列表\", \"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\": [\"第三方设备数据接入/通用集成\"], \"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\": \"第三方设备数据接入/通用集成\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815366-run\"}}, \"/api/morning-checks\": {\"get\": {\"summary\": \"查询集成晨检记录列表\", \"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\": [\"第三方设备数据接入/通用集成\"], \"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\": \"第三方设备数据接入/通用集成\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815367-run\"}}, \"/regulator/morning-checks\": {\"get\": {\"summary\": \"查询监管数据列表\", \"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\": [\"第三方设备数据接入/监管数据\"], \"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\": \"第三方设备数据接入/监管数据\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815368-run\"}}, \"/api/devices/discover\": {\"post\": {\"summary\": \"发现集成设备\", \"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\": [\"第三方设备数据接入/通用集成\"], \"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\": \"第三方设备数据接入/通用集成\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815369-run\"}}, \"/api/employees/refresh\": {\"post\": {\"summary\": \"刷新集成人员\", \"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\": [\"第三方设备数据接入/通用集成\"], \"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\": \"第三方设备数据接入/通用集成\", \"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\": \"新增晨检数据接入\", \"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\": [\"第三方设备数据接入/通用集成\"], \"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\": \"第三方设备数据接入/通用集成\", \"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\": \"推送监管数据\", \"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\": [\"第三方设备数据接入/监管数据\"], \"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\": \"第三方设备数据接入/监管数据\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815372-run\"}}, \"/gatewayGBS/openApi/getBackUrl\": {\"get\": {\"summary\": \"查询回放地址\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815373-run\"}}, \"/gatewayGBS/openApi/getDownloadUrl\": {\"get\": {\"summary\": \"查询或获取地址\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815374-run\"}}, \"/gatewayGBS/openApi/getCameraByCompany\": {\"get\": {\"summary\": \"查询摄像头单位\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815375-run\"}}, \"/gatewayGBS/openApi/getSnap\": {\"get\": {\"summary\": \"查询抓拍\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815376-run\"}}, \"/gatewayGBS/openApi/getStreamURL\": {\"post\": {\"summary\": \"查询视频流地址\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815377-run\"}}, \"/health\": {\"get\": {\"summary\": \"查询系统健康状态列表\", \"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\": [\"公共与系统/健康检查\"], \"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\": \"公共与系统/健康检查\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815378-run\"}}, \"/health/db\": {\"get\": {\"summary\": \"查询数据库健康状态列表\", \"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\": [\"公共与系统/健康检查\"], \"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\": \"公共与系统/健康检查\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815379-run\"}}, \"/health/routes\": {\"get\": {\"summary\": \"查询系统路由列表\", \"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\": [\"公共与系统/健康检查\"], \"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\": \"公共与系统/健康检查\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815380-run\"}}, \"/home/devices\": {\"get\": {\"summary\": \"查询首页设备数据列表\", \"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\": [\"公共与系统/首页数据\"], \"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\": \"公共与系统/首页数据\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815381-run\"}}, \"/home/hygiene\": {\"get\": {\"summary\": \"查询首页卫生数据列表\", \"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\": [\"公共与系统/首页数据\"], \"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\": \"公共与系统/首页数据\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815382-run\"}}, \"/home/inbound\": {\"get\": {\"summary\": \"查询首页入库数据列表\", \"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\": [\"公共与系统/首页数据\"], \"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\": \"公共与系统/首页数据\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815383-run\"}}, \"/home/outbound\": {\"get\": {\"summary\": \"查询首页出库数据列表\", \"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\": [\"公共与系统/首页数据\"], \"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\": \"公共与系统/首页数据\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815384-run\"}}, \"/home/parent-feedback\": {\"get\": {\"summary\": \"查询首页家长反馈列表\", \"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\": [\"公共与系统/首页数据\"], \"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\": \"公共与系统/首页数据\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815386-run\"}}, \"/reports/school/daily\": {\"get\": {\"summary\": \"查询统计报告列表\", \"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\": [\"公共与系统/统计报告\"], \"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\": \"公共与系统/统计报告\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815387-run\"}}, \"/sampling/operators\": {\"get\": {\"summary\": \"查询留样人员列表\", \"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\": [\"公共与系统/留样人员\"], \"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\": \"公共与系统/留样人员\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815388-run\"}}, \"/system/storage/init\": {\"get\": {\"summary\": \"初始化存储配置\", \"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\": [\"公共与系统/存储配置\"], \"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\": \"公共与系统/存储配置\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815389-run\"}}, \"/system/storage/status\": {\"get\": {\"summary\": \"查询存储配置\", \"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\": [\"公共与系统/存储配置\"], \"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\": \"公共与系统/存储配置\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815390-run\"}}, \"/trustivs/proxy/hls\": {\"get\": {\"summary\": \"查询视频平台代理列表\", \"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\": [\"第三方设备数据接入/视频平台代理\"], \"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\": \"第三方设备数据接入/视频平台代理\", \"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\": \"上传数据\", \"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\": [\"第三方设备数据接入/设备上报\"], \"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\": \"第三方设备数据接入/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815392-run\"}}, \"/gatewayGBS/openApi/getAIRecordByCompany\": {\"post\": {\"summary\": \"查询人工智能记录单位\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815393-run\"}}, \"/gatewayGBS/openApi/getChannelByDevice\": {\"post\": {\"summary\": \"查询通道设备\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815394-run\"}}, \"/gatewayGBS/openApi/getCompanyList\": {\"post\": {\"summary\": \"查询单位\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815395-run\"}}, \"/gatewayGBS/openApi/getDeviceListByCompany\": {\"post\": {\"summary\": \"查询设备单位\", \"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\": [\"第三方设备数据接入/视频平台\"], \"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\": \"第三方设备数据接入/视频平台\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815396-run\"}}, \"/public/feedback\": {\"post\": {\"summary\": \"新增公众反馈\", \"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\": [\"公共与系统/公众反馈\"], \"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\": \"公共与系统/公众反馈\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815397-run\"}}, \"/audit/logs\": {\"get\": {\"summary\": \"查询审计日志\", \"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\": [\"审计日志\"], \"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\": \"审计日志\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815398-run\"}}, \"/audit/logs/{id}\": {\"get\": {\"summary\": \"查询审计日志详情\", \"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\": [\"审计日志\"], \"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\": \"审计日志\", \"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\": \"导出审计日志文件\", \"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\": [\"审计日志\"], \"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\": \"审计日志\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815400-run\"}}, \"/auth/me\": {\"get\": {\"summary\": \"查询当前用户信息\", \"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\": [\"登录认证\"], \"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\": \"登录认证\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815401-run\"}}, \"/auth/change-password\": {\"post\": {\"summary\": \"修改当前用户密码\", \"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\": [\"登录认证\"], \"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\": \"登录认证\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815402-run\"}}, \"/auth/login\": {\"post\": {\"summary\": \"用户登录\", \"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\": [\"登录认证\"], \"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\": \"登录认证\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815403-run\"}}, \"/auth/logout\": {\"post\": {\"summary\": \"用户退出登录\", \"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\": [\"登录认证\"], \"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\": \"登录认证\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815404-run\"}}, \"/auth/refresh\": {\"post\": {\"summary\": \"刷新登录令牌\", \"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\": [\"登录认证\"], \"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\": \"登录认证\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815405-run\"}}, \"/auth/zhct-login\": {\"post\": {\"summary\": \"新增智慧食安外部登录\", \"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\": [\"登录认证\"], \"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\": \"登录认证\", \"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\": [\"第三方设备数据接入/设备心跳\"], \"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\": \"第三方设备数据接入/设备心跳\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815407-run\"}}, \"/deviceIot/serials\": {\"get\": {\"summary\": \"查询晨检设备列表\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815410-run\"}}, \"/deviceIot/getDeviceIdBySerialNumber\": {\"post\": {\"summary\": \"根据序列号查询设备编号\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"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\": \"查询设备控制\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"查询全部配置\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"查询设备控制\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"查询设备控制\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"重启设备控制\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置蜂鸣器\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置码视频流\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置编码模式\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置帧率\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"查询设备控制列表\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置分辨率\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置电源\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"设置外接摄像头\", \"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\": [\"人工智能盒子开放接口/设备控制\"], \"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\": \"人工智能盒子开放接口/设备控制\", \"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\": \"查询算法类型\", \"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\": [\"人工智能盒子开放接口/算法类型\"], \"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\": \"人工智能盒子开放接口/算法类型\", \"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\": \"设置算法类型状态\", \"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\": [\"人工智能盒子开放接口/算法类型\"], \"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\": \"人工智能盒子开放接口/算法类型\", \"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\": \"删除车辆信息\", \"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\": [\"人工智能盒子开放接口/车辆信息\"], \"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\": \"人工智能盒子开放接口/车辆信息\", \"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\": \"新增车辆信息\", \"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\": [\"人工智能盒子开放接口/车辆信息\"], \"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\": \"人工智能盒子开放接口/车辆信息\", \"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\": \"查询车辆信息\", \"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\": [\"人工智能盒子开放接口/车辆信息\"], \"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\": \"人工智能盒子开放接口/车辆信息\", \"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\": \"更新车辆信息\", \"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\": [\"人工智能盒子开放接口/车辆信息\"], \"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\": \"人工智能盒子开放接口/车辆信息\", \"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\": \"删除车辆库\", \"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\": [\"人工智能盒子开放接口/车辆库\"], \"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\": \"人工智能盒子开放接口/车辆库\", \"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\": \"停用车辆库\", \"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\": [\"人工智能盒子开放接口/车辆库\"], \"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\": \"人工智能盒子开放接口/车辆库\", \"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\": \"启用车辆库\", \"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\": [\"人工智能盒子开放接口/车辆库\"], \"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\": \"人工智能盒子开放接口/车辆库\", \"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\": \"查询车辆库\", \"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\": [\"人工智能盒子开放接口/车辆库\"], \"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\": \"人工智能盒子开放接口/车辆库\", \"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\": \"保存车辆库\", \"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\": [\"人工智能盒子开放接口/车辆库\"], \"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\": \"人工智能盒子开放接口/车辆库\", \"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\": \"更新车辆库\", \"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\": [\"人工智能盒子开放接口/车辆库\"], \"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\": \"人工智能盒子开放接口/车辆库\", \"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\": \"删除人员信息\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"查询人员信息\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"查询特征\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"查询人员编号\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"查询人员条件\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"查询人员相似度\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"保存人员信息\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"更新人员信息\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"查询人员来源视频\", \"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\": [\"人工智能盒子开放接口/人员信息\"], \"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\": \"人工智能盒子开放接口/人员信息\", \"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\": \"删除人脸库\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"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\": \"停用人脸库\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"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\": \"启用人脸库\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"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\": \"查询人脸库\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"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\": \"查询特征\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"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\": \"保存人脸库\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"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\": \"更新人脸库\", \"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\": [\"人工智能盒子开放接口/人脸库\"], \"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\": \"人工智能盒子开放接口/人脸库\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815452-run\"}}, \"/gateway/openApi/setLocalTime\": {\"get\": {\"summary\": \"设置本地时间\", \"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\": [\"人工智能盒子开放接口/系统管理\"], \"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\": \"人工智能盒子开放接口/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815453-run\"}}, \"/openApi/view/getChannelStream\": {\"get\": {\"summary\": \"查询通道视频流\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815454-run\"}}, \"/openApi/view/getRecordLiveUrlBySDK\": {\"get\": {\"summary\": \"查询记录实时地址设备开发包\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815455-run\"}}, \"/openApi/view/getSDKFileProgress\": {\"get\": {\"summary\": \"查询设备开发包文件进度\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815456-run\"}}, \"/openApi/view/getSDKRecordList\": {\"get\": {\"summary\": \"查询设备开发包记录\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815457-run\"}}, \"/openApi/view/getSnapByChannel\": {\"get\": {\"summary\": \"查询抓拍通道\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815458-run\"}}, \"/openApi/view/getViewRecordAddress\": {\"get\": {\"summary\": \"查询视频查看列表\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815459-run\"}}, \"/openApi/view/getViewRecordAddressBySDK\": {\"get\": {\"summary\": \"查询视频查看列表\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815460-run\"}}, \"/openApi/view/getViewRecordDay\": {\"get\": {\"summary\": \"查询视频查看列表\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815461-run\"}}, \"/openApi/view/setChannelConfig\": {\"get\": {\"summary\": \"设置通道配置\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815462-run\"}}, \"/openApi/view/stopRecordBySDK\": {\"get\": {\"summary\": \"停止记录设备开发包\", \"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\": [\"人工智能盒子开放接口/视频查看\"], \"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\": \"人工智能盒子开放接口/视频查看\", \"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\": \"查询车辆记录\", \"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\": [\"人工智能盒子开放接口/车辆记录\"], \"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\": \"人工智能盒子开放接口/车辆记录\", \"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\": \"查询通道\", \"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\": [\"人工智能盒子开放接口/通道管理\"], \"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\": \"人工智能盒子开放接口/通道管理\", \"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\": \"更新通道状态\", \"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\": [\"人工智能盒子开放接口/通道管理\"], \"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\": \"人工智能盒子开放接口/通道管理\", \"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\": \"查询第三方平台令牌\", \"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\": [\"人工智能盒子开放接口/认证\"], \"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\": \"人工智能盒子开放接口/认证\", \"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\": \"删除开放开放接口\", \"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\": [\"人工智能盒子开放接口/视频任务\"], \"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\": \"人工智能盒子开放接口/视频任务\", \"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\": \"保存或更新视频任务\", \"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\": [\"人工智能盒子开放接口/视频任务\"], \"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\": \"人工智能盒子开放接口/视频任务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815469-run\"}}, \"/openApi/aisleInfo/reportAisleInfos\": {\"post\": {\"summary\": \"上报通道信息\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815470-run\"}}, \"/openApi/checkRecord/reportVideo\": {\"post\": {\"summary\": \"上报视频\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815471-run\"}}, \"/openApi/custStatisticRecord/reportCustStatisticRecords\": {\"post\": {\"summary\": \"上报客流统计记录\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815472-run\"}}, \"/openApi/faceRecord/reportFaceRecords\": {\"post\": {\"summary\": \"上报人脸记录\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815473-run\"}}, \"/openApi/humCheckRecord/reportHumCheckRecord\": {\"post\": {\"summary\": \"上报人体晨检记录\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815474-run\"}}, \"/openApi/strangerRecord/reportStrangerRecords\": {\"post\": {\"summary\": \"上报陌生人记录\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815475-run\"}}, \"/openApi/checkRecord/reportCheckRecords\": {\"post\": {\"summary\": \"上报晨检记录\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815476-run\"}}, \"/openApi/info/getAlgAnalysisDetail\": {\"post\": {\"summary\": \"查询算法分析详情\", \"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\": [\"人工智能盒子开放接口/设备信息\"], \"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\": \"人工智能盒子开放接口/设备信息\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815477-run\"}}, \"/openApi/info/getParamList\": {\"post\": {\"summary\": \"查询参数\", \"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\": [\"人工智能盒子开放接口/设备信息\"], \"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\": \"人工智能盒子开放接口/设备信息\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815478-run\"}}, \"/openApi/info/getServerConfig\": {\"post\": {\"summary\": \"查询服务器配置\", \"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\": [\"人工智能盒子开放接口/设备信息\"], \"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\": \"人工智能盒子开放接口/设备信息\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815479-run\"}}, \"/openApi/info/getServerInfo\": {\"post\": {\"summary\": \"查询服务器信息\", \"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\": [\"人工智能盒子开放接口/设备信息\"], \"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\": \"人工智能盒子开放接口/设备信息\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815480-run\"}}, \"/openApi/info/getStream0Config\": {\"post\": {\"summary\": \"查询主码流配置\", \"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\": [\"人工智能盒子开放接口/设备信息\"], \"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\": \"人工智能盒子开放接口/设备信息\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815481-run\"}}, \"/openApi/sendAIRecordByCompany\": {\"post\": {\"summary\": \"发送人工智能记录单位\", \"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\": [\"人工智能盒子开放接口/设备上报\"], \"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\": \"人工智能盒子开放接口/设备上报\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815482-run\"}}, \"/files/view/{name}\": {\"get\": {\"summary\": \"查询文件列表\", \"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\": [\"文件服务\"], \"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\": \"文件服务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815483-run\"}}, \"/files/upload\": {\"post\": {\"summary\": \"上传文件\", \"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\": [\"文件服务\"], \"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\": \"文件服务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815484-run\"}}, \"/static/{path}\": {\"get\": {\"summary\": \"查询静态文件列表\", \"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\": [\"文件服务\"], \"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\": \"文件服务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815485-run\"}}, \"/iot/cameras\": {\"get\": {\"summary\": \"查询物联网视频列表\", \"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\": [\"物联网设备/视频设备\"], \"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\": \"物联网设备/视频设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815486-run\"}}, \"/iot/streams/back\": {\"get\": {\"summary\": \"查询物联网视频列表\", \"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\": [\"物联网设备/视频设备\"], \"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\": \"物联网设备/视频设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815487-run\"}}, \"/iot/streams/download\": {\"get\": {\"summary\": \"获取物联网视频\", \"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\": [\"物联网设备/视频设备\"], \"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\": \"物联网设备/视频设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815488-run\"}}, \"/iot/streams/play\": {\"get\": {\"summary\": \"查询物联网视频列表\", \"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\": [\"物联网设备/视频设备\"], \"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\": \"物联网设备/视频设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815489-run\"}}, \"/iot/streams/snapshot\": {\"get\": {\"summary\": \"查询物联网视频\", \"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\": [\"物联网设备/视频设备\"], \"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\": \"物联网设备/视频设备\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815492-run\"}}, \"/push/hello\": {\"get\": {\"summary\": \"查询设备同步列表\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815496-run\"}}, \"/common/empowerOSSAccess\": {\"post\": {\"summary\": \"新增文件服务\", \"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\": [\"文件服务\"], \"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\": \"文件服务\", \"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\": [\"文件服务\"], \"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\": \"文件服务\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815505-run\"}}, \"/push/ws/online\": {\"get\": {\"summary\": \"查询设备同步列表\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815506-run\"}}, \"/push/ws/foodInfo\": {\"post\": {\"summary\": \"同步设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815507-run\"}}, \"/push/ws/preFoodInfo\": {\"post\": {\"summary\": \"同步设备同步\", \"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\": [\"第三方设备数据接入/设备同步\"], \"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\": \"第三方设备数据接入/设备同步\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815517-run\"}}, \"/sample/sample/selectBySNCode\": {\"get\": {\"summary\": \"查询留样仪器列表\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"文件服务\"], \"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\": \"文件服务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815519-run\"}}, \"/dewo/mqtt/person\": {\"post\": {\"summary\": \"新增晨检设备\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/留样仪器\"], \"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\": \"第三方设备数据接入/留样仪器\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815523-run\"}}, \"/wosapi/YGCJRobotOpenApi/GetDepInfo\": {\"post\": {\"summary\": \"查询部门信息\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815524-run\"}}, \"/wosapi/YGCJRobotOpenApi/GetPlatInfo\": {\"post\": {\"summary\": \"查询平台信息\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815525-run\"}}, \"/wosapi/YGCJRobotOpenApi/PageStaff\": {\"post\": {\"summary\": \"分页查询人员\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815526-run\"}}, \"/wosapi/YGCJRobotOpenApi/PushCheckData\": {\"post\": {\"summary\": \"推送晨检数据\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815527-run\"}}, \"/wosapi/YGCJRobotOpenApi/StaffAdd\": {\"post\": {\"summary\": \"新增人员\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815528-run\"}}, \"/wosapi/YGCJRobotOpenApi/StaffById\": {\"post\": {\"summary\": \"新增晨检设备\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815529-run\"}}, \"/wosapi/YGCJRobotOpenApi/StaffDelete\": {\"post\": {\"summary\": \"删除人员\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815530-run\"}}, \"/wosapi/YGCJRobotOpenApi/StaffUpdate\": {\"post\": {\"summary\": \"更新人员\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815531-run\"}}, \"/wosapi/YGCJRobotOpenApi/UpdateDepInfo\": {\"post\": {\"summary\": \"更新部门信息\", \"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\": [\"第三方设备数据接入/晨检设备\"], \"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\": \"第三方设备数据接入/晨检设备\", \"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\": \"查询人工智能事件播报列表\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815533-run\"}}, \"/reg/ai/events\": {\"get\": {\"summary\": \"查询监管人工智能事件列表\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"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\": \"导出监管人工智能事件文件\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815535-run\"}}, \"/reg/ai/methods\": {\"get\": {\"summary\": \"查询人工智能处置方式列表\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815536-run\"}}, \"/reg/ai/schools\": {\"get\": {\"summary\": \"查询人工智能监管学校列表\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815537-run\"}}, \"/reg/ai/tasks\": {\"get\": {\"summary\": \"查询人工智能监管任务列表\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815538-run\"}, \"post\": {\"summary\": \"新增人工智能监管任务\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"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\": \"更新人工智能监管任务\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"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\": \"设置人工智能监管任务\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815541-run\"}}, \"/reg/ai/broadcast\": {\"post\": {\"summary\": \"发送人工智能事件播报\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"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\": \"提交监管人工智能事件\", \"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\": [\"监管端/人工智能事件\"], \"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\": \"监管端/人工智能事件\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815543-run\"}}, \"/reg/alerts/config\": {\"get\": {\"summary\": \"查询预警配置\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815544-run\"}, \"post\": {\"summary\": \"新增预警配置\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815545-run\"}}, \"/reg/alerts/events\": {\"get\": {\"summary\": \"查询预警事件列表\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"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\": \"导出预警事件文件\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815547-run\"}}, \"/reg/alerts/stream\": {\"get\": {\"summary\": \"查询预警实时流实时数据\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815548-run\"}}, \"/reg/alerts/summary\": {\"get\": {\"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815549-run\"}}, \"/reg/alerts/notify\": {\"post\": {\"summary\": \"发送预警通知\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815550-run\"}}, \"/reg/credentials/canteens\": {\"get\": {\"summary\": \"查询食堂资质监管列表\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815551-run\"}}, \"/reg/credentials/exceptions\": {\"get\": {\"summary\": \"查询资质异常监管列表\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"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\": \"导出资质证照监管文件\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815553-run\"}}, \"/reg/credentials/overview\": {\"get\": {\"summary\": \"查询资质监管总览\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815554-run\"}}, \"/reg/credentials/suppliers\": {\"get\": {\"summary\": \"查询供应商资质监管列表\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815555-run\"}}, \"/reg/credentials/workers\": {\"get\": {\"summary\": \"查询从业人员资质监管列表\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"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\": \"处理资质异常监管\", \"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\": [\"监管端/资质证照监管\"], \"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\": \"监管端/资质证照监管\", \"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\": \"查询餐厨废弃物学校排名列表\", \"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\": [\"监管端/餐厨废弃物监管\"], \"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\": \"监管端/餐厨废弃物监管\", \"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\": \"查询餐厨废弃物趋势列表\", \"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\": [\"监管端/餐厨废弃物监管\"], \"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\": \"监管端/餐厨废弃物监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815559-run\"}}, \"/reg/inspections/config\": {\"get\": {\"summary\": \"查询检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815560-run\"}}, \"/reg/inspections/inspectors\": {\"get\": {\"summary\": \"查询检查人员列表\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815561-run\"}, \"post\": {\"summary\": \"新增检查人员\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815562-run\"}}, \"/reg/inspections/tasks\": {\"get\": {\"summary\": \"查询检查任务列表\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815563-run\"}, \"post\": {\"summary\": \"新增检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"查询检查任务详情\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815565-run\"}, \"patch\": {\"summary\": \"更新检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"导出检查任务文件\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"更新检查人员\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"新增检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"删除检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"新增检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"删除检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"新增检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"删除检查任务配置\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"删除检查人员\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"提交检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"新增检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"删除检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"删除检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"新增检查任务\", \"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\": [\"监管端/检查任务\"], \"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\": \"监管端/检查任务\", \"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\": \"查询台账数据统计列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815581-run\"}}, \"/reg/ledgers/detail\": {\"get\": {\"summary\": \"查询台账详情详情\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815582-run\"}}, \"/reg/ledgers/dine\": {\"get\": {\"summary\": \"查询就餐台账列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815583-run\"}}, \"/reg/ledgers/disinfection\": {\"get\": {\"summary\": \"查询消毒台账列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815584-run\"}}, \"/reg/ledgers/pesticide\": {\"get\": {\"summary\": \"查询农残台账列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815585-run\"}}, \"/reg/ledgers/sampling\": {\"get\": {\"summary\": \"查询留样台账列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815586-run\"}}, \"/reg/ledgers/search\": {\"get\": {\"summary\": \"查询台账综合查询列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815587-run\"}}, \"/reg/ledgers/stats\": {\"get\": {\"summary\": \"查询台账统计列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"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\": \"查询台账上报统计列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815589-run\"}}, \"/reg/ledgers/waste\": {\"get\": {\"summary\": \"查询废弃物台账列表\", \"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\": [\"监管端/台账监管\"], \"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\": \"监管端/台账监管\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815590-run\"}}, \"/reg/overview\": {\"get\": {\"summary\": \"查询监管首页总览\", \"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\": [\"监管端/首页总览\"], \"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\": \"监管端/首页总览\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815591-run\"}}, \"/reg/schools\": {\"get\": {\"summary\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"查询监管学校详情\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815598-run\"}}, \"/reg/schools/config\": {\"get\": {\"summary\": \"查询监管学校\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815599-run\"}, \"patch\": {\"summary\": \"更新监管学校\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815600-run\"}, \"post\": {\"summary\": \"新增监管学校\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815601-run\"}}, \"/reg/schools/stats\": {\"get\": {\"summary\": \"查询监管学校列表\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"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\": \"删除监管学校\", \"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\": [\"监管端/学校管理\"], \"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\": \"监管端/学校管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815603-run\"}}, \"/reg/reports/daily\": {\"get\": {\"summary\": \"查询监管统计报告列表\", \"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\": [\"监管端/统计报告\"], \"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\": \"监管端/统计报告\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815604-run\"}}, \"/reg/reports/export\": {\"get\": {\"summary\": \"导出监管统计报告文件\", \"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\": [\"监管端/统计报告\"], \"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\": \"监管端/统计报告\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815605-run\"}}, \"/reg/system/info\": {\"get\": {\"summary\": \"查询监管系统信息列表\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815606-run\"}, \"post\": {\"summary\": \"新增监管系统信息\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815607-run\"}}, \"/reg/system/permissions\": {\"get\": {\"summary\": \"查询监管权限列表\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815608-run\"}}, \"/reg/system/roles\": {\"get\": {\"summary\": \"查询监管角色列表\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815609-run\"}, \"patch\": {\"summary\": \"更新监管角色\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815610-run\"}, \"post\": {\"summary\": \"新增监管角色\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815611-run\"}}, \"/reg/system/units\": {\"get\": {\"summary\": \"查询监管单位列表\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815612-run\"}, \"patch\": {\"summary\": \"更新监管单位\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815613-run\"}, \"post\": {\"summary\": \"新增监管单位\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815614-run\"}}, \"/reg/system/users\": {\"get\": {\"summary\": \"查询监管用户列表\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815615-run\"}, \"patch\": {\"summary\": \"更新监管用户\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815616-run\"}, \"post\": {\"summary\": \"新增监管用户\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"查询监管用户详情\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"删除监管角色\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"新增监管角色\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"删除监管单位\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"删除监管单位\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"删除监管用户\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"新增监管用户\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815624-run\"}}, \"/reg/system/settings\": {\"get\": {\"summary\": \"查询监管系统设置列表\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815625-run\"}, \"post\": {\"summary\": \"新增监管系统设置\", \"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\": [\"监管端/系统管理\"], \"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\": \"监管端/系统管理\", \"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\": \"发送预警管理\", \"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\": [\"监管端/预警管理\"], \"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\": \"监管端/预警管理\", \"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\": \"查询大屏人工智能事件列表\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"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\": \"查询大屏人工智能事件分类统计列表\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815629-run\"}}, \"/screen/analytics/cameras\": {\"get\": {\"summary\": \"查询大屏摄像头列表\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815630-run\"}}, \"/screen/analytics/devices\": {\"get\": {\"summary\": \"查询大屏设备列表\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"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\": \"查询大屏设备状态\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"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\": \"查询大屏设备类型\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"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\": \"查询大屏人员健康数据列表\", \"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\": [\"大屏端/数据分析\"], \"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\": \"大屏端/数据分析\", \"x-apifox-status\": \"released\", \"x-run-in-apifox\": \"https://app.apifox.com/web/project/8881630/apis/api-519815634-run\"}}, \"/\": {\"get\": {\"summary\": \"查询系统根接口列表\", \"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\": [\"公共与系统/根接口\"], \"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/SecurityScheme\"}, \"bearerAuth\": {\"type\": \"http\", \"scheme\": \"bearer\", \"bearerFormat\": \"JWT\", \"x-apifox-folder\": \"SecurityScheme/SecurityScheme\"}}}, \"servers\": [], \"security\": []}",
  "options": {
    "targetEndpointFolderId": 0,
    "targetSchemaFolderId": 0,
    "endpointOverwriteBehavior": "OVERWRITE_EXISTING",
    "schemaOverwriteBehavior": "KEEP_EXISTING",
    "updateFolderOfChangedEndpoint": true,
    "prependBasePath": false
  }
}