method	path	controller	handler	tags	summary	auth	parameters	file	line
GET	/	RootController	index	Root	\N	unspecified	[]	services/gateway-service/src/modules/root.controller.ts	9
GET	/api/devices	IntegrationController	listDevices	Integration	\N	unspecified	[]	services/gateway-service/src/modules/integration.controller.ts	50
POST	/api/devices/discover	IntegrationController	discover	Integration	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/integration.controller.ts	58
GET	/api/employees	IntegrationController	listEmployees	Integration	\N	unspecified	[]	services/gateway-service/src/modules/integration.controller.ts	20
POST	/api/employees/refresh	IntegrationController	refreshEmployees	Integration	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/integration.controller.ts	24
POST	/api/integrations/morning-checks/mego	IntegrationController	megoIngest	Integration	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"UploadedFiles","binding":"","name":"files","type":"{ faceFile?: Express.Multer.File[]; palmFile?: Express.Multer.File[]; backOfHandFile?: Express.Multer.File[] }","optional":true}]	services/gateway-service/src/modules/integration.controller.ts	83
GET	/api/morning-checks	IntegrationController	listMorningChecks	Integration	\N	unspecified	[]	services/gateway-service/src/modules/integration.controller.ts	194
GET	/api/regulator/morning-checks	IntegrationController	listReg	Integration	\N	unspecified	[]	services/gateway-service/src/modules/integration.controller.ts	224
POST	/api/regulator/morning-checks/push	IntegrationController	pushReg	Integration	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/integration.controller.ts	214
GET	/api/school/dine/records	DineApiAdapterController	list	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"meal","name":"meal","type":"string","optional":true},{"source":"Query","binding":"exception","name":"exception","type":"'true' | 'false'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/school-dine.adapter.controller.ts	23
GET	/api/school/dine/stream	DineApiAdapterController	stream	\N	\N	unspecified	[]	services/gateway-service/src/modules/school-dine.adapter.controller.ts	39
GET	/api/school/morning-checks	MorningCheckApiAdapterController	list	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"staff","name":"staff","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"MCResult","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/school-mc.adapter.controller.ts	11
GET	/api/school/morning-checks/stream	MorningCheckApiAdapterController	sse	\N	\N	unspecified	[]	services/gateway-service/src/modules/school-mc.adapter.controller.ts	25
GET	/audit/logs	AuditController	list	Audit	Query audit logs (tenant isolated)	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"","name":"q","type":"any","optional":false}]	services/gateway-service/src/modules/audit/audit.controller.ts	17
GET	/audit/logs/:id	AuditController	detail	Audit	Get single audit log by id (tenant isolated)	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Query","binding":"","name":"q","type":"any","optional":false}]	services/gateway-service/src/modules/audit/audit.controller.ts	70
GET	/audit/logs/export.csv	AuditController	exportCsv	Audit	Export audit logs as CSV (tenant isolated)	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"","name":"q","type":"any","optional":false}]	services/gateway-service/src/modules/audit/audit.controller.ts	52
POST	/auth/change-password	AuthController	changePassword	Auth	Change current user password	guarded	[{"source":"Req","binding":"","name":"req","type":"Request","optional":false},{"source":"Body","binding":"","name":"body","type":"{ oldPassword?: string; newPassword?: string }","optional":true}]	services/gateway-service/src/modules/auth.controller.ts	302
POST	/auth/login	AuthController	login	Auth	User login (JWT)	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ username?: string; password?: string }","optional":true}]	services/gateway-service/src/modules/auth.controller.ts	33
POST	/auth/logout	AuthController	logout	Auth	User logout (invalidate current token)	unspecified	[{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/auth.controller.ts	282
GET	/auth/me	AuthController	me	Auth	\N	unspecified	[{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/auth.controller.ts	215
POST	/auth/refresh	AuthController	refresh	Auth	\N	unspecified	[{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/auth.controller.ts	268
POST	/auth/zhct-login	AuthController	zhctLogin	Auth	Proxy ZHCT external login and return token	guarded	[{"source":"Body","binding":"","name":"body","type":"{ username?: string; password?: string }","optional":true}]	services/gateway-service/src/modules/auth.controller.ts	155
GET	/bright-local/ai/events	BrightLocalController	aiEvents	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'OPEN' | 'CLOSED' | 'FALSE'","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	556
GET	/bright-local/ai/events/detail	BrightLocalController	detail	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	673
GET	/bright-local/ai/events/export.csv	BrightLocalController	exportCsv	Bright Kitchen - Local	Export local AI events (CSV)	guarded	[{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'OPEN' | 'CLOSED' | 'FALSE'","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	595
POST	/bright-local/ai/events/handle	BrightLocalController	handleLocal	Bright Kitchen - Local	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"{ eventId: string; decision?: '已现场纠正' | '误报' | '其他'; note?: string; evidence?: string[]; handledBy?: string }","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	631
POST	/bright-local/ai/events/handle/batch	BrightLocalController	handleBatch	Bright Kitchen - Local	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"Array<{ eventId: string; decision?: '误报' | '已现场纠正' }> | { items: Array<{ eventId: string; decision?: '误报' | '已现场纠正' }>; handledBy?: string }","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	658
DELETE	/bright-local/aibox-boxes	BrightLocalController	deleteAiboxBox	Bright Kitchen - Local	Delete AIBox box	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	461
GET	/bright-local/aibox-boxes	BrightLocalController	listAiboxBoxes	Bright Kitchen - Local	List AIBox boxes (id/name)	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	326
PATCH	/bright-local/aibox-boxes	BrightLocalController	updateAiboxBox	Bright Kitchen - Local	Update AIBox box	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number | string; canteenId?: number | string | null; aiboxName?: string; aiboxBaseurl?: string; aiboxAccount?: string; aiboxPassword?: string }","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	427
POST	/bright-local/aibox-boxes	BrightLocalController	createAiboxBox	Bright Kitchen - Local	Create AIBox box	guarded	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number | string; canteenId?: number | string | null; aiboxName?: string; aiboxBaseurl?: string; aiboxAccount?: string; aiboxPassword?: string }","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	403
GET	/bright-local/aibox-boxes/full	BrightLocalController	listAiboxBoxesFull	Bright Kitchen - Local	List AIBox boxes for management	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	376
DELETE	/bright-local/channels	BrightLocalController	remove	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	305
GET	/bright-local/channels	BrightLocalController	list	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true},{"source":"Query","binding":"channelId","name":"channelId","type":"string","optional":true},{"source":"Query","binding":"channelName","name":"channelName","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	203
PATCH	/bright-local/channels	BrightLocalController	update	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"{ 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 }","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	274
POST	/bright-local/channels	BrightLocalController	create	Bright Kitchen - Local	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"{ schoolId: number; 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 }","optional":false}]	services/gateway-service/src/modules/aibox-local.controller.ts	244
GET	/bright-local/playback	BrightLocalController	playback	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":false},{"source":"Query","binding":"channelId","name":"channelId","type":"string","optional":true},{"source":"Query","binding":"date","name":"date","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	477
POST	/bright-local/refresh	BrightLocalController	refresh	Bright Kitchen - Local	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":false},{"source":"Query","binding":"channelId","name":"channelId","type":"string","optional":true},{"source":"Query","binding":"date","name":"date","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	530
GET	/bright-local/strangers	BrightLocalController	strangers	Bright Kitchen - Local	List local strangers (paged)	guarded	[{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	102
GET	/bright-local/strangers/export.csv	BrightLocalController	strangersExport	Bright Kitchen - Local	Export local strangers (CSV)	guarded	[{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/aibox-local.controller.ts	160
GET	/bright/channels	BrightController	channels	Bright Kitchen	\N	unspecified	[]	services/gateway-service/src/modules/bright.controller.ts	61
GET	/bright/reg/cameras	BrightController	regCameras	Bright Kitchen	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	85
GET	/bright/reg/download	BrightController	regDownload	Bright Kitchen	\N	unspecified	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":false},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	319
GET	/bright/reg/playback	BrightController	playback	Bright Kitchen	\N	unspecified	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":false},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	177
GET	/bright/reg/snapshots	BrightController	listSnaps	Bright Kitchen	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	269
POST	/bright/reg/snapshots	BrightController	createSnap	Bright Kitchen	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ schoolId: string; cameraId: string; at?: string; url?: string }","optional":false}]	services/gateway-service/src/modules/bright.controller.ts	298
GET	/bright/school/cameras	BrightController	schoolCameras	Bright Kitchen	\N	public	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	118
GET	/bright/school/download	BrightController	schoolDownload	Bright Kitchen	\N	guarded	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	331
GET	/bright/school/playback	BrightController	schoolPlayback	Bright Kitchen	\N	guarded	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	198
GET	/bright/school/snapshots	BrightController	schoolSnaps	Bright Kitchen	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	286
POST	/bright/school/snapshots	BrightController	createSchoolSnap	Bright Kitchen	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string; cameraId: string; at?: string; url?: string }","optional":false}]	services/gateway-service/src/modules/bright.controller.ts	312
GET	/bright/school/trustivs-camera-options	BrightController	schoolTrustivsCameraOptions	Bright Kitchen	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	248
GET	/bright/school/trustivs-cameras	BrightController	schoolTrustivsCameras	Bright Kitchen	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/bright.controller.ts	212
GET	/bright/start/:schoolId/:cameraId	BrightController	start	Bright Kitchen	\N	public	[{"source":"Param","binding":"schoolId","name":"schoolId","type":"string","optional":false},{"source":"Param","binding":"cameraId","name":"cameraId","type":"string","optional":false}]	services/gateway-service/src/modules/bright.controller.ts	71
GET	/cabinet/findDeviceInfo	DewoLiuyangchengController	heartbeat	Dewo-Liuyangcheng	设备心跳	unspecified	[{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"serialNum","name":"serialNum","type":"string","optional":true},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	394
POST	/common/empowerOSSAccess	SammeiCommonController	empowerOSSAccess	Sammei	上传留样图片-OSS 授权	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ method?: string; contentType?: string; rootFileName?: string; fileName?: string; suffix?: string }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	447
POST	/common/file/upload	SammeiCommonController	uploadToServer	Sammei	上传留样图片-服务器	unspecified	[{"source":"UploadedFile","binding":"","name":"file","type":"Express.Multer.File","optional":false},{"source":"Body","binding":"prefix","name":"prefix","type":"string","optional":true}]	services/gateway-service/src/modules/sammei.controller.ts	482
POST	/common/upload	DewoLiuyangchengController	upload	Dewo-Liuyangcheng	图片保存接口	unspecified	[{"source":"UploadedFile","binding":"","name":"file","type":"Express.Multer.File","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	921
POST	/control/upload/data/uploadData	PesticideUploadController	upload	DeviceUpload	设备数据上报（表单：KEY=JSON）	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"argument","binding":"","name":"res","type":"Response","optional":false}]	services/gateway-service/src/modules/pesticide-upload.controller.ts	31
GET	/device/morningChecker/employeeList	DeviceController	employeeList	Device	\N	guarded	[{"source":"Query","binding":"equipmentCode","name":"equipmentCode","type":"string","optional":true}]	services/gateway-service/src/modules/device.controller.ts	14
POST	/device/morningChecker/heartBeatInfo	DeviceMockController	heartBeat	Device	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/device-mock.controller.ts	15
POST	/deviceIot/deviceLogin	DewoLiuyangchengController	dewoMorningLogin	Dewo-Liuyangcheng	得沃晨检机设备登录	unspecified	[{"source":"Body","binding":"","name":"body","type":"DeviceLoginRequestDto & { serial_number?: string; sn?: string }","optional":false}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	450
POST	/deviceIot/getDeviceIdBySerialNumber	DewoLiuyangchengController	getMqtt	Dewo-Liuyangcheng	获取 MQTT 服务地址	unspecified	[{"source":"Body","binding":"","name":"body","type":"GetMqttAddressRequestDto","optional":false},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	292
GET	/deviceIot/serials	DewoLiuyangchengController	listSerials	Dewo-Liuyangcheng	列出已注册的设备序列号（device_iot_configs.serial_number）	unspecified	[]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	282
POST	/dewo/mqtt/person	DewoLiuyangchengController	sendPersonCommand	Dewo-Liuyangcheng	MQTT 下发人员指令	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	1042
POST	/files/upload	FilesController	upload	Files	Upload image (dataURL/base64/plain), returns view URL	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ filename: string; content: string }","optional":false}]	services/gateway-service/src/modules/files.controller.ts	16
GET	/files/view/:path(*)	FilesController	view	Files	\N	unspecified	[{"source":"Param","binding":"path","name":"pathParam","type":"string","optional":false},{"source":"argument","binding":"","name":"res","type":"Response","optional":false}]	services/gateway-service/src/modules/files.controller.ts	91
GET	/gateway/openApi/aet6control/beepStatus	AiboxAet6ControlController	beepStatus	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	17
GET	/gateway/openApi/aet6control/getAllConfig	AiboxAet6ControlController	getAllConfig	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	25
GET	/gateway/openApi/aet6control/ledStatus	AiboxAet6ControlController	ledStatus	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	15
GET	/gateway/openApi/aet6control/pwrStatus	AiboxAet6ControlController	pwrStatus	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	19
GET	/gateway/openApi/aet6control/reboot	AiboxAet6ControlController	reboot	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	26
GET	/gateway/openApi/aet6control/setBeep	AiboxAet6ControlController	setBeep	\N	\N	unspecified	[{"source":"Query","binding":"beep","name":"beep","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	16
GET	/gateway/openApi/aet6control/setBitStream	AiboxAet6ControlController	setBitStream	\N	\N	unspecified	[{"source":"Query","binding":"","name":"q","type":"Record<string, any>","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	21
GET	/gateway/openApi/aet6control/setEncodeMode	AiboxAet6ControlController	setEncodeMode	\N	\N	unspecified	[{"source":"Query","binding":"","name":"q","type":"Record<string, any>","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	22
GET	/gateway/openApi/aet6control/setFrames	AiboxAet6ControlController	setFrames	\N	\N	unspecified	[{"source":"Query","binding":"","name":"q","type":"Record<string, any>","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	23
GET	/gateway/openApi/aet6control/setled	AiboxAet6ControlController	setLed	\N	\N	unspecified	[{"source":"Query","binding":"red","name":"red","type":"string","optional":false},{"source":"Query","binding":"green","name":"green","type":"string","optional":false},{"source":"Query","binding":"blue","name":"blue","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	11
GET	/gateway/openApi/aet6control/setPixel	AiboxAet6ControlController	setPixel	\N	\N	unspecified	[{"source":"Query","binding":"","name":"q","type":"Record<string, any>","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	24
GET	/gateway/openApi/aet6control/setPwr	AiboxAet6ControlController	setPwr	\N	\N	unspecified	[{"source":"Query","binding":"on","name":"on","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	18
GET	/gateway/openApi/aet6control/setUsbCamera	AiboxAet6ControlController	setUsbCamera	\N	\N	unspecified	[{"source":"Query","binding":"enable","name":"enable","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-aet6control.controller.ts	20
GET	/gateway/openApi/AnalysisType/getAnalysistypes	AiboxAnalysisTypeController	getAnalysistypes	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-analysis-type.controller.ts	11
POST	/gateway/openApi/AnalysisType/setAnalysistypesStatus	AiboxAnalysisTypeController	setAnalysistypesStatus	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ typeStatusList: Array<Record<string, number>> }","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-analysis-type.controller.ts	17
POST	/gateway/openApi/autoinfo/add	AiboxVehicleInfoController	add	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts	10
GET	/gateway/openApi/autoinfo/delete	AiboxVehicleInfoController	delete	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts	12
POST	/gateway/openApi/autoinfo/get	AiboxVehicleInfoController	get	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts	13
POST	/gateway/openApi/autoinfo/update	AiboxVehicleInfoController	update	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehicleinfo.controller.ts	11
GET	/gateway/openApi/autolib/delete	AiboxVehicleLibController	delete	\N	\N	unspecified	[{"source":"Query","binding":"fnumber","name":"fnumber","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts	12
GET	/gateway/openApi/autolib/disable	AiboxVehicleLibController	disable	\N	\N	unspecified	[{"source":"Query","binding":"fnumber","name":"fnumber","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts	14
GET	/gateway/openApi/autolib/enable	AiboxVehicleLibController	enable	\N	\N	unspecified	[{"source":"Query","binding":"fnumber","name":"fnumber","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts	13
POST	/gateway/openApi/autolib/get	AiboxVehicleLibController	get	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts	15
POST	/gateway/openApi/autolib/save	AiboxVehicleLibController	save	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts	10
POST	/gateway/openApi/autolib/update	AiboxVehicleLibController	update	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-vehiclelib.controller.ts	11
POST	/gateway/openApi/autorecord/get	AiboxPlateRecordController	get	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-platerecord.controller.ts	10
POST	/gateway/openApi/channel/getChannels	AiboxChannelController	getChannels	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-channel.controller.ts	11
POST	/gateway/openApi/channel/updateChannelStatus	AiboxChannelController	updateChannelStatus	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ Channel: number; enable: number }","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-channel.controller.ts	17
GET	/gateway/openApi/faceinfo/delete	AiboxFaceInfoController	delete	\N	\N	unspecified	[{"source":"Query","binding":"idnum","name":"idnum","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	23
POST	/gateway/openApi/faceinfo/get	AiboxFaceInfoController	get	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	29
POST	/gateway/openApi/faceinfo/getFeature	AiboxFaceInfoController	getFeature	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ imgBase64: string }","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	35
POST	/gateway/openApi/faceinfo/getPeopleByID	AiboxFaceInfoController	getPeopleByID	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	53
POST	/gateway/openApi/faceinfo/getPeopleByValue	AiboxFaceInfoController	getPeopleByValue	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	41
POST	/gateway/openApi/faceinfo/getPeopleScore	AiboxFaceInfoController	getPeopleScore	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	47
POST	/gateway/openApi/faceinfo/save	AiboxFaceInfoController	save	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	11
POST	/gateway/openApi/faceinfo/update	AiboxFaceInfoController	update	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	17
POST	/gateway/openApi/faceinfo/videoAnalysis/getPeopleFromVideo	AiboxFaceInfoController	getPeopleFromVideo	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-faceinfo.controller.ts	59
GET	/gateway/openApi/facelib/delete	AiboxFaceLibController	delete	\N	\N	unspecified	[{"source":"Query","binding":"fnumber","name":"fnumber","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	13
POST	/gateway/openApi/facelib/disable	AiboxFaceLibController	disable	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	15
POST	/gateway/openApi/facelib/enable	AiboxFaceLibController	enable	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	14
POST	/gateway/openApi/facelib/get	AiboxFaceLibController	get	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	16
POST	/gateway/openApi/facelib/getFeature	AiboxFaceLibController	getFeature	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	18
POST	/gateway/openApi/facelib/save	AiboxFaceLibController	save	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	11
POST	/gateway/openApi/facelib/update	AiboxFaceLibController	update	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-facelib.controller.ts	12
GET	/gateway/openApi/setLocalTime	AiboxSystemController	setLocalTime	\N	\N	unspecified	[{"source":"Query","binding":"time","name":"time","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-system.controller.ts	11
POST	/gateway/openApi/token/getThirdPlatToken	AiboxAuthController	getThirdPlatToken	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ fnumber?: string; fpwd?: string }","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-auth.controller.ts	12
POST	/gateway/openApi/videoSheet/deleteOpenApi	AiboxVideoSheetController	deleteOpenApi	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-videosheet.controller.ts	11
POST	/gateway/openApi/videoSheet/saveOrUpdateOpenApi	AiboxVideoSheetController	saveOrUpdate	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any[]","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-videosheet.controller.ts	10
POST	/gatewayGBS/openApi/getAIRecordByCompany	TrustivsAIController	getAIRecordByCompany	TrustIVS AI	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/ai.controller.ts	15
GET	/gatewayGBS/openApi/getBackUrl	TrustivsPlaybackController	getBackUrl	TrustIVS Playback	\N	guarded	[{"source":"Query","binding":"","name":"q","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/playback.controller.ts	15
GET	/gatewayGBS/openApi/getCameraByCompany	CameraController	getCameraByCompany	TrustIVS.Camera	按公司获取摄像头（内部POST优先，含405回退）	guarded	[{"source":"Query","binding":"pageNum","name":"pageNum","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Headers","binding":"","name":"_headers","type":"Record<string, string>","optional":true}]	services/gateway-service/src/modules/trustivs/camera.controller.ts	15
POST	/gatewayGBS/openApi/getChannelByDevice	TrustivsListController	getChannelByDevice	TrustIVS List	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/list.controller.ts	33
POST	/gatewayGBS/openApi/getCompanyList	TrustivsListController	getCompanyList	TrustIVS List	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/list.controller.ts	19
POST	/gatewayGBS/openApi/getDeviceListByCompany	TrustivsListController	getDeviceListByCompany	TrustIVS List	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/list.controller.ts	25
GET	/gatewayGBS/openApi/getDownloadUrl	TrustivsPlaybackController	getDownloadUrl	TrustIVS Playback	\N	guarded	[{"source":"Query","binding":"","name":"q","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/playback.controller.ts	21
GET	/gatewayGBS/openApi/getSnap	TrustivsStreamController	getSnap	TrustIVS Stream	\N	guarded	[{"source":"Query","binding":"","name":"q","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/stream.controller.ts	21
POST	/gatewayGBS/openApi/getStreamURL	TrustivsStreamController	getStreamURL	TrustIVS Stream	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/stream.controller.ts	15
GET	/health	HealthController	ping	Health	\N	unspecified	[]	services/gateway-service/src/modules/health.controller.ts	9
GET	/health/db	DbHealthController	health	DB	\N	unspecified	[]	services/gateway-service/src/modules/db.controller.ts	11
GET	/health/routes	RoutesController	list	Routes	\N	unspecified	[]	services/gateway-service/src/modules/routes.controller.ts	11
GET	/home/devices	HomeController	devices	Home	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/home.controller.ts	31
GET	/home/hygiene	HomeController	hygiene	Home	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/home.controller.ts	24
GET	/home/inbound	HomeController	inbound	Home	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/home.controller.ts	10
GET	/home/outbound	HomeController	outbound	Home	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/home.controller.ts	17
GET	/home/parent-feedback	HomeController	parentFeedback	Home	\N	unspecified	[]	services/gateway-service/src/modules/home.controller.ts	38
GET	/inspectionRecord/getLastRecord	DewoLiuyangchengController	dewoMorningLastRecord	Dewo-Liuyangcheng	得沃晨检机查询当天最近晨检记录	unspecified	[{"source":"Query","binding":"personId","name":"personId","type":"string","optional":true},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	489
GET	/iot/cameras	IotController	cameras	IoT	\N	unspecified	[{"source":"Query","binding":"company","name":"company","type":"string | undefined","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/iot.controller.ts	13
GET	/iot/streams/back	IotController	back	IoT	\N	unspecified	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Query","binding":"start","name":"start","type":"string","optional":false},{"source":"Query","binding":"end","name":"end","type":"string","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/iot.controller.ts	49
GET	/iot/streams/download	IotController	download	IoT	\N	unspecified	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Query","binding":"start","name":"start","type":"string","optional":false},{"source":"Query","binding":"end","name":"end","type":"string","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/iot.controller.ts	60
GET	/iot/streams/play	IotController	play	IoT	\N	unspecified	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/iot.controller.ts	30
GET	/iot/streams/snapshot	IotController	snapshot	IoT	\N	unspecified	[{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":false}]	services/gateway-service/src/modules/iot.controller.ts	44
POST	/openApi/aisleInfo/reportAisleInfos	AiboxPushController	reportAisleInfos	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any[]","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	11
POST	/openApi/checkRecord/reportCheckRecords	CheckRecordController	reportCheckRecords	CheckRecord	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/check-record.controller.ts	17
POST	/openApi/checkRecord/reportCheckRecords	AiboxPushController	reportCheckRecords	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any[]","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	14
POST	/openApi/checkRecord/reportVideo	AiboxPushController	reportVideo	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	30
POST	/openApi/custStatisticRecord/reportCustStatisticRecords	AiboxPushController	reportCustStatisticRecords	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any[]","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	24
POST	/openApi/faceRecord/reportFaceRecords	AiboxPushController	reportFaceRecords	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any[]","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	18
POST	/openApi/humCheckRecord/reportHumCheckRecord	AiboxPushController	reportHumCheckRecord	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	27
POST	/openApi/info/getAlgAnalysisDetail	AiboxInfoController	getAlgAnalysisDetail	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts	12
POST	/openApi/info/getParamList	AiboxInfoController	getParamList	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts	15
POST	/openApi/info/getServerConfig	AiboxInfoController	getServerConfig	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts	13
POST	/openApi/info/getServerInfo	AiboxInfoController	getServerInfo	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts	11
POST	/openApi/info/getStream0Config	AiboxInfoController	getStream0Config	\N	\N	unspecified	[]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-info.controller.ts	14
POST	/openApi/sendAIRecordByCompany	TrustivsAIController	sendAIRecordByCompany	TrustIVS AI	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Headers","binding":"","name":"headers","type":"Record<string, string>","optional":false}]	services/gateway-service/src/modules/trustivs/controller/ai.controller.ts	21
POST	/openApi/strangerRecord/reportStrangerRecords	AiboxPushController	reportStrangerRecords	\N	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any[]","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-push.controller.ts	21
GET	/openApi/view/getChannelStream	AiboxVideoController	getChannelStream	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false},{"source":"Query","binding":"protocol","name":"protocol","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	11
GET	/openApi/view/getRecordLiveUrlBySDK	AiboxVideoController	getRecordLiveUrlBySDK	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false},{"source":"Query","binding":"protocol","name":"protocol","type":"string | undefined","optional":false},{"source":"Query","binding":"starttime","name":"starttime","type":"string","optional":false},{"source":"Query","binding":"endtime","name":"endtime","type":"string | undefined","optional":false},{"source":"Query","binding":"speed","name":"speed","type":"'0.5' | '1' | '2' | '4'","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	89
GET	/openApi/view/getSDKFileProgress	AiboxVideoController	getSDKFileProgress	\N	\N	unspecified	[{"source":"Query","binding":"streamid","name":"streamid","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	67
GET	/openApi/view/getSDKRecordList	AiboxVideoController	getSDKRecordList	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false},{"source":"Query","binding":"starttime","name":"starttime","type":"string","optional":false},{"source":"Query","binding":"endtime","name":"endtime","type":"string","optional":true}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	79
GET	/openApi/view/getSnapByChannel	AiboxVideoController	getSnapByChannel	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	61
GET	/openApi/view/getViewRecordAddress	AiboxVideoController	getViewRecordAddress	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false},{"source":"Query","binding":"operate","name":"operate","type":"'play' | 'download'","optional":false},{"source":"Query","binding":"starttime","name":"starttime","type":"string","optional":false},{"source":"Query","binding":"endtime","name":"endtime","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	44
GET	/openApi/view/getViewRecordAddressBySDK	AiboxVideoController	getViewRecordAddressBySDK	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false},{"source":"Query","binding":"starttime","name":"starttime","type":"string","optional":false},{"source":"Query","binding":"endtime","name":"endtime","type":"string","optional":true}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	101
GET	/openApi/view/getViewRecordDay	AiboxVideoController	getViewRecordDay	\N	\N	unspecified	[{"source":"Query","binding":"channel","name":"channel","type":"string","optional":false},{"source":"Query","binding":"period","name":"period","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	17
GET	/openApi/view/setChannelConfig	AiboxVideoController	setChannelConfig	\N	\N	unspecified	[{"source":"Query","binding":"","name":"query","type":"Record<string, any>","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	55
GET	/openApi/view/stopRecordBySDK	AiboxVideoController	stopRecordBySDK	\N	\N	unspecified	[{"source":"Query","binding":"streamid","name":"streamid","type":"string","optional":false}]	services/gateway-service/src/modules/trustivs_aibox/controller/aibox-video.controller.ts	73
POST	/public/feedback	PublicFeedbackController	create	Public Feedback	\N	public	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number | string; canteenId?: number | string | null; content?: string; contact?: string; type?: string; user?: string; }","optional":false}]	services/gateway-service/src/modules/public-feedback.controller.ts	15
POST	/push/deleteList	SammeiController	pushDeleteList	Sammei	删除记录同步	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ type?: string; ids?: string }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	254
POST	/push/detailList	SammeiController	pushDetailList	Sammei	留样记录同步接口	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ sampleListJson?: string }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	237
POST	/push/detailList	SammeiController	pushDetailList	Sammei	留样记录同步（写入设备留样表并入库学校留样记录）	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ sampleListJson?: any; sampleList?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	296
POST	/push/foodInfo	SammeiController	pushFoodInfo	Sammei	菜品新增、删除、修改	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ deviceType?: string; msgType?: string; deviceId?: string; msgContent?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	40
GET	/push/foodList	SammeiController	getFoodList	Sammei	查询菜品列表（用于前端选择）	unspecified	[{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/sammei.controller.ts	202
POST	/push/foodList	SammeiController	pushFoodList	Sammei	菜品同步接口	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ preFoodListJson?: any; foodListJson?: any; preFoodList?: any; foodList?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	175
POST	/push/foodPlanList	SammeiController	pushFoodPlanList	Sammei	配餐同步接口	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ preFoodListJson?: any; foodListJson?: any; preFoodList?: any; foodList?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	269
GET	/push/hello	SammeiController	helloGet	Sammei	连通测试（GET 别名）	unspecified	[]	services/gateway-service/src/modules/sammei.controller.ts	35
POST	/push/hello	SammeiController	hello	Sammei	连通测试	unspecified	[]	services/gateway-service/src/modules/sammei.controller.ts	27
GET	/push/mealTypeList	SammeiController	getMealTypeList	Sammei	查询餐别列表	unspecified	[]	services/gateway-service/src/modules/sammei.controller.ts	230
POST	/push/mealTypeList	SammeiController	pushMealTypeList	Sammei	餐别同步接口	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ mealTypeListJson?: any; mealTypeList?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	209
POST	/push/operateLogList	SammeiController	pushOperateLogList	Sammei	操作日志同步	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ operateLogListJson?: string }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	427
POST	/push/operateUserList	SammeiController	pushOperateUserList	Sammei	操作员同步接口	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ userListJson?: any; userList?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	404
POST	/push/preFoodInfo	SammeiController	pushPreFoodInfo	Sammei	配餐新增、删除、修改	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ deviceType?: string; msgType?: string; deviceId?: string; msgContent?: any }","optional":false}]	services/gateway-service/src/modules/sammei.controller.ts	89
POST	/push/ws/foodInfo	PushWsController	downFoodInfo	PushWS	通过 WebSocket 下发 foodInfo（外部系统 -> 设备）	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/push-ws.controller.ts	31
GET	/push/ws/online	PushWsController	online	PushWS	查询设备在线状态（无 deviceId 返回在线列表）	unspecified	[{"source":"Query","binding":"deviceId","name":"deviceId","type":"string","optional":true}]	services/gateway-service/src/modules/push-ws.controller.ts	51
POST	/push/ws/preFoodInfo	PushWsController	downPreFoodInfo	PushWS	通过 WebSocket 下发 preFoodInfo（外部系统 -> 设备）	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/push-ws.controller.ts	41
POST	/reg/ai/broadcast	AIController	broadcast	AI	\N	unspecified	[{"source":"Body","binding":"","name":"dto","type":"{ school: string; camera: string; text: string }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	777
GET	/reg/ai/broadcast/logs	AIController	bcList	AI	\N	unspecified	[]	services/gateway-service/src/modules/ai.controller.ts	790
GET	/reg/ai/events	AIController	regEvents	AI	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'OPEN' | 'ACK' | 'CLOSED'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	620
GET	/reg/ai/events/export.csv	AIController	regEventsExport	AI	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'OPEN' | 'ACK' | 'CLOSED'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	666
POST	/reg/ai/events/ingest	AIController	ingest	AI	\N	unspecified	[{"source":"Body","binding":"","name":"ev","type":"{ schoolId: string; cameraId?: string; type: string; snapshotUrl?: string; detectedAt?: string; personName?: string; }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	796
GET	/reg/ai/methods	AIController	methods	AI	\N	unspecified	[]	services/gateway-service/src/modules/ai.controller.ts	73
GET	/reg/ai/schools	AIController	aiSchools	AI	\N	unspecified	[]	services/gateway-service/src/modules/ai.controller.ts	77
GET	/reg/ai/tasks	AIController	regTasks	AI	\N	unspecified	[{"source":"Query","binding":"status","name":"status","type":"'待处理' | '进行中' | '已完成'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	707
POST	/reg/ai/tasks	AIController	createTask	AI	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ name: string; items: string[]; method: string; period?: { start?: string; end?: string }; schools: string[]; }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	726
PATCH	/reg/ai/tasks/:id	AIController	updateTask	AI	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"Partial<{ name: string; items: string[]; method: string; period: { start?: string; end?: string }; schools: string[]; status: '待处理' | '进行中' | '已完成'; }>","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	750
PATCH	/reg/ai/tasks/:id/status	AIController	setTaskStatus	AI	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ status: '待处理' | '进行中' | '已完成' }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	768
GET	/reg/alerts/config	RegAlertsController	getConfig	Regulator Alerts	\N	guarded	[]	services/gateway-service/src/modules/reg-alerts.controller.ts	311
POST	/reg/alerts/config	RegAlertsController	setConfig	Regulator Alerts	\N	guarded	[{"source":"Body","binding":"","name":"patch","type":"any","optional":false}]	services/gateway-service/src/modules/reg-alerts.controller.ts	316
GET	/reg/alerts/events	RegAlertsController	events	Regulator Alerts	\N	guarded	[{"source":"Query","binding":"type","name":"type","type":"AlertType","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-alerts.controller.ts	104
GET	/reg/alerts/events/export.csv	RegAlertsController	exportCsv	Regulator Alerts	\N	guarded	[{"source":"Query","binding":"type","name":"type","type":"AlertType","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/reg-alerts.controller.ts	284
POST	/reg/alerts/notify	RegAlertsController	notify	Regulator Alerts	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ to: string[]; message: string; channel?: 'sms' | 'app' | 'both' }","optional":false}]	services/gateway-service/src/modules/reg-alerts.controller.ts	322
POST	/reg/alerts/notify-rectify	SchoolMessagesController	regNotifyRectify	School Messages	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId: number | string; title: string; detail?: string | null; at?: string; refId?: string; // optional: reference alert id for marking DOING on regulator }","optional":false}]	services/gateway-service/src/modules/school-messages.controller.ts	15
GET	/reg/alerts/stream	RegAlertsController	stream	Regulator Alerts	\N	guarded	[]	services/gateway-service/src/modules/reg-alerts.controller.ts	331
GET	/reg/alerts/summary	RegAlertsController	summary	Regulator Alerts	\N	guarded	[{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/reg-alerts.controller.ts	54
GET	/reg/credentials/canteens	RegCredentialsController	canteens	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-credentials.controller.ts	18
GET	/reg/credentials/exceptions	RegCredentialsController	exceptions	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"type","name":"type","type":"EntityType","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-credentials.controller.ts	99
PATCH	/reg/credentials/exceptions/measure	RegCredentialsController	setMeasure	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/reg-credentials.controller.ts	108
GET	/reg/credentials/export.csv	RegCredentialsController	exportCsv	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"target","name":"target","type":"'canteens' | 'workers' | 'suppliers' | 'exceptions'","optional":true},{"source":"Query","binding":"type","name":"type","type":"EntityType","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-credentials.controller.ts	113
GET	/reg/credentials/overview	RegCredentialsController	overview	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"days","name":"days","type":"string","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-credentials.controller.ts	38
GET	/reg/credentials/suppliers	RegCredentialsController	suppliers	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-credentials.controller.ts	30
GET	/reg/credentials/workers	RegCredentialsController	workers	Regulator Credentials	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-credentials.controller.ts	24
GET	/reg/food-waste/ranking	RegFoodWasteController	ranking	FoodWaste	Food-waste school ranking	guarded	[{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"metric","name":"metric","type":"'weight' | 'amount'","optional":true}]	services/gateway-service/src/modules/reg-food-waste.controller.ts	20
GET	/reg/food-waste/trend	RegFoodWasteController	trend	FoodWaste	Food-waste trend by period	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"bucket","name":"bucket","type":"'day' | 'week' | 'month'","optional":true}]	services/gateway-service/src/modules/reg-food-waste.controller.ts	45
GET	/reg/inspections/config	RegInspectionsController	getConfig	Regulator Inspections	\N	guarded	[]	services/gateway-service/src/modules/reg-inspections.controller.ts	302
POST	/reg/inspections/config/items	RegInspectionsController	addItem	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	307
POST	/reg/inspections/config/items/remove	RegInspectionsController	removeItem	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	322
POST	/reg/inspections/config/penalties	RegInspectionsController	addPenalty	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	312
POST	/reg/inspections/config/penalties/remove	RegInspectionsController	removePenalty	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	327
POST	/reg/inspections/config/publications	RegInspectionsController	addPublication	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	317
POST	/reg/inspections/config/publications/remove	RegInspectionsController	removePublication	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	332
GET	/reg/inspections/inspectors	RegInspectionsController	listInspectors	Regulator Inspections	List inspectors	guarded	[]	services/gateway-service/src/modules/reg-inspections.controller.ts	276
POST	/reg/inspections/inspectors	RegInspectionsController	createInspector	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string; region?: string; mobile?: string; grids?: string[] }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	283
PATCH	/reg/inspections/inspectors/:id	RegInspectionsController	updateInspector	Regulator Inspections	\N	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"patch","type":"any","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	290
POST	/reg/inspections/inspectors/:id/delete	RegInspectionsController	deleteInspector	Regulator Inspections	\N	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	295
GET	/reg/inspections/tasks	RegInspectionsController	listTasks	Regulator Inspections	\N	guarded	[{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"InspectStatus","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"assignee","name":"assignee","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-inspections.controller.ts	34
POST	/reg/inspections/tasks	RegInspectionsController	createTask	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ type: InspectType; schoolId: string; assignee?: string; grid?: string; content: string; planAt?: string; }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	87
GET	/reg/inspections/tasks/:id	RegInspectionsController	detail	Regulator Inspections	Get task detail	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	148
PATCH	/reg/inspections/tasks/:id	RegInspectionsController	updateTask	Regulator Inspections	\N	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"patch","type":"any","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	172
POST	/reg/inspections/tasks/:id/submit	RegInspectionsController	submit	Regulator Inspections	\N	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"{ passed: boolean; items: Array<{ item: string; ok: boolean; remark?: string; penaltyType?: string; extra?: string }>; summary?: string; images?: string[]; }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	178
POST	/reg/inspections/tasks/bulk	RegInspectionsController	createTasksBulk	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ type?: string; schools: Array<string|number>; assignees?: string[]; grid?: string; content: string; planAt?: string; perAssignee?: boolean; }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	105
POST	/reg/inspections/tasks/clear	RegInspectionsController	clearAll	Regulator Inspections	Clear all inspection tasks	guarded	[]	services/gateway-service/src/modules/reg-inspections.controller.ts	214
POST	/reg/inspections/tasks/clear-mem	RegInspectionsController	clearMem	Regulator Inspections	Clear in-memory tasks only (keep DB data)	guarded	[]	services/gateway-service/src/modules/reg-inspections.controller.ts	222
GET	/reg/inspections/tasks/export.csv	RegInspectionsController	exportTasksCsv	Regulator Inspections	\N	guarded	[{"source":"Query","binding":"type","name":"type","type":"InspectType","optional":true},{"source":"Query","binding":"status","name":"status","type":"InspectStatus","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"assignee","name":"assignee","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/reg-inspections.controller.ts	230
POST	/reg/inspections/tasks/random	RegInspectionsController	random	Regulator Inspections	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ item: string; inspectorCount?: number; schoolIds?: string[]; schoolCount?: number; }","optional":false}]	services/gateway-service/src/modules/reg-inspections.controller.ts	193
GET	/reg/ledgers/data-stats	RegLedgersController	dataStats	\N	\N	guarded	[{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"date","name":"date","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"metric","name":"metric","type":"'quality' | 'submission'","optional":true},{"source":"Query","binding":"modules","name":"modules","type":"string","optional":true},{"source":"Query","binding":"noBySchool","name":"noBySchool","type":"string","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	805
GET	/reg/ledgers/detail	RegLedgersController	detail	\N	\N	guarded	[{"source":"Query","binding":"type","name":"type","type":"'sampling' | 'disinfection' | 'dine' | 'waste'","optional":false},{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	496
GET	/reg/ledgers/dine	RegLedgersController	dineList	\N	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'草稿' | '已提交'","optional":true},{"source":"Query","binding":"meal","name":"meal","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	627
GET	/reg/ledgers/disinfection	RegLedgersController	disinfectionList	\N	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"method","name":"method","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	578
GET	/reg/ledgers/pesticide	RegLedgersController	pesticideList	\N	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"'合格' | '不合格'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	756
GET	/reg/ledgers/sampling	RegLedgersController	samplingList	\N	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	531
GET	/reg/ledgers/search	RegLedgersController	search	\N	\N	guarded	[{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"'morning'|'sampling'|'disinfection'|'pesticide'|'waste'|'dine'|''","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true},{"source":"Query","binding":"modules","name":"modules","type":"string","optional":true},{"source":"Query","binding":"noBySchool","name":"noBySchool","type":"string","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	61
GET	/reg/ledgers/stats	RegLedgersController	stats	\N	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	444
GET	/reg/ledgers/submit-stats	RegLedgersController	submitStats	\N	\N	guarded	[{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	271
GET	/reg/ledgers/waste	RegLedgersController	wasteList	\N	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"category","name":"category","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/reg-ledgers.controller.ts	691
GET	/reg/overview	RegOverviewController	overview	\N	\N	guarded	[]	services/gateway-service/src/modules/reg-overview.controller.ts	63
GET	/reg/reports/daily	ReportsController	daily	Reports	\N	guarded	[{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/reports.controller.ts	121
GET	/reg/reports/export	ReportsController	export	Reports	Export daily report (CSV/PDF)	guarded	[{"source":"Query","binding":"format","name":"format","type":"","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"argument","binding":"","name":"res","type":"{ setHeader: (k: string, v: string) => void; send: (b: unknown) => unknown }","optional":true},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/reports.controller.ts	130
GET	/reg/schools	RegOverviewController	schools	\N	\N	public	[]	services/gateway-service/src/modules/reg-overview.controller.ts	198
GET	/reg/schools/:id/cameras	RegOverviewController	camsAny	\N	\N	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/reg-overview.controller.ts	327
GET	/reg/schools/1/cameras	RegOverviewController	cams1	\N	\N	guarded	[]	services/gateway-service/src/modules/reg-overview.controller.ts	315
GET	/reg/schools/2/cameras	RegOverviewController	cams2	\N	\N	guarded	[]	services/gateway-service/src/modules/reg-overview.controller.ts	317
GET	/reg/schools/3/cameras	RegOverviewController	cams3	\N	\N	guarded	[]	services/gateway-service/src/modules/reg-overview.controller.ts	319
GET	/reg/schools/4/cameras	RegOverviewController	cams4	\N	\N	guarded	[]	services/gateway-service/src/modules/reg-overview.controller.ts	321
GET	/reg/schools/5/cameras	RegOverviewController	cams5	\N	\N	guarded	[]	services/gateway-service/src/modules/reg-overview.controller.ts	323
GET	/reg/schools/config	RegOverviewController	schoolsConfig	\N	\N	guarded	[{"source":"Query","binding":"q","name":"q","type":"string","optional":true},{"source":"Query","binding":"enabled","name":"enabled","type":"string","optional":true}]	services/gateway-service/src/modules/reg-overview.controller.ts	218
PATCH	/reg/schools/config	RegOverviewController	updateSchool	\N	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"b","type":"{ name?: string; enabled?: boolean; defaultUsername?: string; defaultPassword?: string }","optional":false}]	services/gateway-service/src/modules/reg-overview.controller.ts	262
POST	/reg/schools/config	RegOverviewController	createSchool	\N	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string; enabled?: boolean; defaultUsername?: string; defaultPassword?: string }","optional":false}]	services/gateway-service/src/modules/reg-overview.controller.ts	226
POST	/reg/schools/config/delete	RegOverviewController	deleteSchool	\N	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"{ id: number }","optional":false}]	services/gateway-service/src/modules/reg-overview.controller.ts	295
GET	/reg/schools/stats	RegOverviewController	schoolStats	\N	\N	public	[]	services/gateway-service/src/modules/reg-overview.controller.ts	304
GET	/reg/system/info	RegSystemController	info	Regulator System	\N	guarded	[]	services/gateway-service/src/modules/reg-system.controller.ts	131
POST	/reg/system/info	RegSystemController	saveInfo	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	136
GET	/reg/system/permissions	RegSystemController	permissions	Regulator System	\N	guarded	[]	services/gateway-service/src/modules/reg-system.controller.ts	115
GET	/reg/system/roles	RegSystemController	roles	Regulator System	\N	guarded	[]	services/gateway-service/src/modules/reg-system.controller.ts	100
PATCH	/reg/system/roles	RegSystemController	updateRole	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: number; patch: { name?: string; remark?: string } }","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	107
POST	/reg/system/roles	RegSystemController	createRole	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string; remark?: string }","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	103
POST	/reg/system/roles/delete	RegSystemController	deleteRole	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: number }","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	111
POST	/reg/system/roles/permissions	RegSystemController	setRolePerms	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string; permissions: string[] }","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	124
GET	/reg/system/settings	RegSettingsController	get	Regulator Settings	\N	guarded	[]	services/gateway-service/src/modules/reg-settings.controller.ts	15
POST	/reg/system/settings	RegSettingsController	save	Regulator Settings	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ basic?: any; business?: any; maintenance?: any; alerts?: any }","optional":false}]	services/gateway-service/src/modules/reg-settings.controller.ts	28
GET	/reg/system/units	RegSystemController	listUnits	Regulator System	\N	guarded	[{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/reg-system.controller.ts	143
PATCH	/reg/system/units	RegSystemController	updateUnit	Regulator System	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	155
POST	/reg/system/units	RegSystemController	createUnit	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	150
POST	/reg/system/units/clear	RegSystemController	clearUnits	Regulator System	\N	guarded	[]	services/gateway-service/src/modules/reg-system.controller.ts	165
POST	/reg/system/units/delete	RegSystemController	deleteUnit	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	160
GET	/reg/system/users	RegSystemController	users	Regulator System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"Request","optional":false},{"source":"Query","binding":"unitId","name":"unitId","type":"string","optional":true}]	services/gateway-service/src/modules/reg-system.controller.ts	29
PATCH	/reg/system/users	RegSystemController	updateUser	Regulator System	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	81
POST	/reg/system/users	RegSystemController	createUser	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ username: string; displayName: string; roles?: string[]; enabled?: boolean; unitId?: number }","optional":false},{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	60
POST	/reg/system/users/delete	RegSystemController	deleteUser	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false},{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	93
GET	/reg/system/users/detail	RegSystemController	userDetail	Regulator System	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	46
POST	/reg/system/users/roles	RegSystemController	setUserRoles	Regulator System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: string; roles: string[] }","optional":false}]	services/gateway-service/src/modules/reg-system.controller.ts	120
GET	/regulator/morning-checks	RegulatorMorningChecksController	list	Regulator	\N	guarded	[]	services/gateway-service/src/modules/regulator-morning-checks.controller.ts	20
POST	/regulator/morning-checks/push	RegulatorMorningChecksController	push	Regulator	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/regulator-morning-checks.controller.ts	27
GET	/reports/school/daily	SchoolReportsController	daily	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/school-reports.controller.ts	7
GET	/sakura/instrument/canteen	SakuraController	instrumentCanteen	Sakura	获取食堂信息	unspecified	[{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Query","binding":"produceCode","name":"produceCode","type":"string","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	346
POST	/sakura/instrument/login	SakuraController	instrumentLogin	Sakura	仪器登录	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ userId?: string; password?: string }","optional":false}]	services/gateway-service/src/modules/sakura.controller.ts	56
GET	/sakura/instrument/mealType	SakuraController	instrumentMealType	Sakura	获取餐次信息	unspecified	[{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Query","binding":"produceCode","name":"produceCode","type":"string","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	325
GET	/sakura/instrument/samples	SakuraController	instrumentSamples	Sakura	获取留样信息	unspecified	[{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Query","binding":"produceCode","name":"produceCode","type":"string","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	116
POST	/sakura/instrument/updateFileImage	SakuraController	updateFileImage	Sakura	图片分类上传（单图）	unspecified	[{"source":"UploadedFile","binding":"","name":"file","type":"Express.Multer.File","optional":false},{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Query","binding":"produceCode","name":"produceCodeQuery","type":"string","optional":true},{"source":"Body","binding":"produceCode","name":"produceCodeBody","type":"string","optional":true},{"source":"Body","binding":"flowId","name":"flowId","type":"string","optional":true},{"source":"Body","binding":"type","name":"typeParam","type":"string | number","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	181
POST	/sakura/instrument/updateSamples	SakuraController	updateSamples	Sakura	更新留样信息（单条）	unspecified	[{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Body","binding":"","name":"body","type":"any","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	245
GET	/sakura/instrument/user	SakuraController	instrumentUser	Sakura	获取人员信息	unspecified	[{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Query","binding":"produceCode","name":"produceCode","type":"string","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	304
GET	/sakura/menuTemplate/showMenuTemplate	SakuraController	showMenuTemplate	Sakura	获取菜谱信息	unspecified	[{"source":"Headers","binding":"token","name":"token","type":"string","optional":true},{"source":"Query","binding":"produceCode","name":"produceCode","type":"string","optional":true},{"source":"Query","binding":"orgId","name":"orgIdParam","type":"string","optional":true}]	services/gateway-service/src/modules/sakura.controller.ts	387
POST	/sakura/user/login	SakuraController	userLogin	Sakura	留样人员在线登录	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ userId?: string; password?: string }","optional":false}]	services/gateway-service/src/modules/sakura.controller.ts	81
POST	/sample/sample/saveOrUpdateDishSample	DewoLiuyangchengController	saveOrUpdate	Dewo-Liuyangcheng	保存/更新留样菜单	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	722
GET	/sample/sample/selectBySNCode	DewoLiuyangchengController	getMenu	Dewo-Liuyangcheng	获取菜单数据（直调外部 select/selectAll；带 cookie 与 headers）	unspecified	[{"source":"Query","binding":"","name":"q","type":"any","optional":false},{"source":"Req","binding":"","name":"req","type":"any","optional":false}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	620
POST	/sample/sample/upload	DewoLiuyangchengController	uploadSampleImage	Dewo-Liuyangcheng	样品模块图片上传	unspecified	[{"source":"UploadedFile","binding":"","name":"file","type":"Express.Multer.File","optional":true},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	956
GET	/sampling/operators	SamplingOperatorsOpenController	list	SamplingOperators	留样人员列表（开放别名，无 /school 前缀）	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/sampling-operators.open.controller.ts	11
GET	/school/ai/events	AIController	schoolEvents	AI	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'","optional":true},{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	205
GET	/school/ai/events/detail	AIController	schoolEventDetail	AI	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	480
GET	/school/ai/events/export.csv	AIController	schoolEventsExport	AI	Export AI events list (CSV)	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'","optional":true},{"source":"Query","binding":"cameraId","name":"cameraId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	310
POST	/school/ai/events/handle	AIController	handleSchool	AI	\N	guarded	[{"source":"Body","binding":"","name":"dto","type":"{ eventId: string; decision?: '已现场纠正' | '误报' | '其他'; measure?: string; // 向后兼容 note?: string; evidence?: string[]; handledBy?: string; }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	439
POST	/school/ai/events/mock	AIController	mockSchoolEvents	AI	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; // 默认 '1' count?: number; // 默认 50 start?: string; // ISO，默认 7 天前 end?: string; // ISO，默认现在 cameraIds?: string[]; // 指定通道编码；未指定将自动从 trustivs_cameras 取 fnationcode handledRatio?: number; // 0~1，默认 0.6（已处理比例） falseRatio?: number; // 0~1，默认 0.1（误报比例，相对全部） perCameraCount?: number; // 若提供，则为每个摄像头生成固定条数，忽略 count }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	494
PATCH	/school/ai/events/status	AIController	setStatus	AI	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ status: 'OPEN' | 'ACK' | 'CLOSED' | 'FALSE'; note?: string; handledBy?: string }","optional":false}]	services/gateway-service/src/modules/ai.controller.ts	466
GET	/school/ai/events/summary	AIController	schoolEventsSummary	AI	Get AI events summary for school	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"dim","name":"dim","type":"'day' | 'week' | 'month'","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	249
GET	/school/ai/events/summary/export.csv	AIController	schoolEventsSummaryExport	AI	Export AI events summary (CSV)	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"dim","name":"dim","type":"'day' | 'week' | 'month'","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	386
GET	/school/ai/home/summary/local	AIController	homeAiSummaryLocal	AI	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string | number","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	123
GET	/school/ai/home/summary/network	AIController	homeAiSummaryNetwork	AI	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	98
GET	/school/ai/strangers	AIController	schoolStrangers	AI	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	159
GET	/school/ai/summary/pie	AIController	schoolAiSummaryPie	AI	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/ai.controller.ts	356
GET	/school/ai/types	AIController	listTypes	AI	\N	guarded	[]	services/gateway-service/src/modules/ai.controller.ts	90
GET	/school/analytics/alerts	AnalyticsController	alerts	Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'未处理' | '已处理'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"regView","name":"regView","type":"string","optional":true}]	services/gateway-service/src/modules/analytics.controller.ts	257
POST	/school/analytics/alerts/handle	AnalyticsController	handleAlert	Analytics	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string; type: string; measure?: string; status?: '未处理' | '已处理' }","optional":false}]	services/gateway-service/src/modules/analytics.controller.ts	271
GET	/school/analytics/dashboard	AnalyticsController	dashboard	Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/analytics.controller.ts	20
GET	/school/analytics/health	AnalyticsController	health	Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/analytics.controller.ts	47
GET	/school/analytics/personnel-health	AnalyticsController	personnelHealth	Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/analytics.controller.ts	113
GET	/school/analytics/stream	AnalyticsController	stream	Analytics	\N	unspecified	[]	services/gateway-service/src/modules/analytics.controller.ts	277
GET	/school/assets/maintenance	HygieneController	listAssets	Hygiene	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"asset","name":"asset","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/hygiene.controller.ts	46
POST	/school/assets/maintenance	HygieneController	createAsset	Hygiene	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; asset: string; date?: string; action: string; by: string }","optional":false}]	services/gateway-service/src/modules/hygiene.controller.ts	61
GET	/school/canteen-detail	CanteensController	canteenDetail	Canteens	\N	public	[{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/canteens.controller.ts	258
PATCH	/school/canteen-detail	CanteensController	updateCanteenDetail	Canteens	\N	guarded	[{"source":"Body","binding":"","name":"body","type":"{ 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 }; }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	290
POST	/school/canteen-detail/delete	CanteensController	deleteCanteenDetail	Canteens	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ canteenId: number }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	365
GET	/school/canteen-licenses	CanteensController	listLicenses	Canteens	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/canteens.controller.ts	186
PATCH	/school/canteen-licenses	CanteensController	updateLicense	Canteens	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"patch","type":"Partial<{ number: string; authority: string; permitItems: string; issueAt: string; expireAt: string; imageUrl: string; type: string }>","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	231
POST	/school/canteen-licenses	CanteensController	createLicense	Canteens	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ canteenId: number; type: string; number?: string; authority?: string; permitItems?: string; issueAt?: string; expireAt?: string; imageUrl?: string }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	214
POST	/school/canteen-licenses/delete	CanteensController	deleteLicense	Canteens	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: number }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	245
GET	/school/canteens	CanteensController	listCanteens	Canteens	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"enabled","name":"enabled","type":"'true'|'false'|'all'","optional":true},{"source":"Req","binding":"","name":"req","type":"Request","optional":true},{"source":"argument","binding":"","name":"res","type":"Response","optional":true}]	services/gateway-service/src/modules/canteens.controller.ts	24
PATCH	/school/canteens	CanteensController	updateCanteen	Canteens	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"patch","type":"{ name?: string; code?: string; address?: string; manager?: string; phone?: string; enabled?: boolean; ygSn?: string | null; instrument?: string | null }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	102
POST	/school/canteens	CanteensController	createCanteen	Canteens	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; name: string; code?: string; address?: string; manager?: string; phone?: string; enabled?: boolean; ygSn?: string | null; instrument?: string | null }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	90
POST	/school/canteens/delete	CanteensController	deleteCanteen	Canteens	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: number }","optional":false}]	services/gateway-service/src/modules/canteens.controller.ts	169
GET	/school/canteens/summary	CanteensController	listCanteenSummary	Canteens	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/canteens.controller.ts	44
GET	/school/cater/categories	CaterProxyController	categories	CaterProxy	外部菜品分类映射（静态）	guarded	[]	services/gateway-service/src/modules/cater-proxy.controller.ts	13
GET	/school/cater/select	CaterProxyController	select	CaterProxy	代理外部接口：仅分页 /p/cater/select（带 cookie 与 headers）	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"","name":"query","type":"Record<string, any>","optional":false}]	services/gateway-service/src/modules/cater-proxy.controller.ts	27
GET	/school/certificates	SchoolCertificatesController	list	Certificates	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"owner","name":"owner","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'有效' | '过期'","optional":true}]	services/gateway-service/src/modules/school-certificates.controller.ts	14
PATCH	/school/certificates	SchoolCertificatesController	update	Certificates	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":true},{"source":"Body","binding":"","name":"b","type":"{ owner?: string; type?: string; number?: string; expireAt?: string }","optional":true}]	services/gateway-service/src/modules/school-certificates.controller.ts	38
POST	/school/certificates	SchoolCertificatesController	create	Certificates	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number | string; owner: string; type: string; number: string; expireAt: string }","optional":false}]	services/gateway-service/src/modules/school-certificates.controller.ts	27
POST	/school/certificates/delete	SchoolCertificatesController	remove	Certificates	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ id?: number | string }","optional":false}]	services/gateway-service/src/modules/school-certificates.controller.ts	51
GET	/school/certificates/export.csv	SchoolCertificatesController	exportCsv	Certificates	Export certificates CSV	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"owner","name":"owner","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'有效' | '过期'","optional":true}]	services/gateway-service/src/modules/school-certificates.controller.ts	57
GET	/school/companion-meals	CompanionMealController	list	Companion Meals	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenIds","name":"canteenIds","type":"string","optional":true},{"source":"Query","binding":"person","name":"person","type":"string","optional":true},{"source":"Query","binding":"ratingFilter","name":"ratingFilter","type":"'all' | 'good' | 'normal' | 'bad'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/companion-meal.controller.ts	11
POST	/school/companion-meals	CompanionMealController	create	Companion Meals	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/companion-meal.controller.ts	27
DELETE	/school/companion-meals/:id	CompanionMealController	remove	Companion Meals	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/companion-meal.controller.ts	50
GET	/school/companion-meals/:id	CompanionMealController	detail	Companion Meals	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/companion-meal.controller.ts	37
PATCH	/school/companion-meals/:id	CompanionMealController	update	Companion Meals	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/companion-meal.controller.ts	43
GET	/school/credentials/canteens	CredentialsController	listCanteens	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/credentials.controller.ts	21
POST	/school/credentials/canteens	CredentialsController	createCanteen	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ name: string; address?: string; licenseExpireAt: string }","optional":false}]	services/gateway-service/src/modules/credentials.controller.ts	26
GET	/school/credentials/exceptions	CredentialsController	listExceptions	\N	\N	unspecified	[{"source":"Query","binding":"type","name":"type","type":"EntityType","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/credentials.controller.ts	63
PATCH	/school/credentials/exceptions/:id/measure	CredentialsController	setMeasure	\N	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/credentials.controller.ts	71
GET	/school/credentials/stream	CredentialsController	stream	\N	\N	unspecified	[]	services/gateway-service/src/modules/credentials.controller.ts	80
GET	/school/credentials/suppliers	CredentialsController	listSuppliers	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/credentials.controller.ts	49
POST	/school/credentials/suppliers	CredentialsController	createSupplier	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ name: string; phone?: string; licenseExpireAt: string }","optional":false}]	services/gateway-service/src/modules/credentials.controller.ts	54
GET	/school/credentials/workers	CredentialsController	listWorkers	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/credentials.controller.ts	35
POST	/school/credentials/workers	CredentialsController	createWorker	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ name: string; role?: string; healthCertExpireAt: string }","optional":false}]	services/gateway-service/src/modules/credentials.controller.ts	40
DELETE	/school/device-iot	DeviceIotConfigsController	remove	DeviceIotConfig	删除设备接入配置	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/device-iot-configs.controller.ts	78
GET	/school/device-iot	DeviceIotConfigsController	list	DeviceIotConfig	设备接入配置列表	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"deviceKind","name":"deviceKind","type":"string","optional":true},{"source":"Query","binding":"vendor","name":"vendor","type":"string","optional":true},{"source":"Query","binding":"enabled","name":"enabled","type":"'true' | 'false' | 'all'","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/device-iot-configs.controller.ts	19
PATCH	/school/device-iot	DeviceIotConfigsController	update	DeviceIotConfig	更新设备接入配置	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/device-iot-configs.controller.ts	54
POST	/school/device-iot	DeviceIotConfigsController	create	DeviceIotConfig	新增设备接入配置	guarded	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/device-iot-configs.controller.ts	43
GET	/school/device-safety	DeviceSafetyController	list	Device Safety	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/device-safety.controller.ts	12
POST	/school/device-safety	DeviceSafetyController	create	Device Safety	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number | string; canteenId?: number | string; deviceName: string; items: string[]; result: '正常' | '异常'; description?: string; measures?: string; handler?: string; imageUrl?: string; signatureData?: string; checkDate: string; }","optional":false}]	services/gateway-service/src/modules/device-safety.controller.ts	28
PATCH	/school/device-safety/:id	DeviceSafetyController	update	Device Safety	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"UpdateDeviceSafetyBodyDTO","optional":false}]	services/gateway-service/src/modules/device-safety.controller.ts	56
GET	/school/device-safety/detail	DeviceSafetyController	detail	Device Safety	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/device-safety.controller.ts	50
GET	/school/devices	DevicesController	list	Devices	List devices (school scope)	public	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/devices.controller.ts	14
GET	/school/devices/statuses	DevicesController	statuses	Devices	\N	guarded	[]	services/gateway-service/src/modules/devices.controller.ts	29
GET	/school/devices/types	DevicesController	types	Devices	\N	guarded	[]	services/gateway-service/src/modules/devices.controller.ts	26
POST	/school/dine/camera/callback	DineController	camera	Dine	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; meal?: Meal; mealCode?: number; mealKey?: string; people: string[]; imageUrl: string; comment?: string; }","optional":false}]	services/gateway-service/src/modules/dine.controller.ts	101
GET	/school/dine/meal-options	DineController	mealOptions	Dine	\N	unspecified	[]	services/gateway-service/src/modules/dine.controller.ts	70
GET	/school/dine/meals	DineController	meals	Dine	\N	unspecified	[]	services/gateway-service/src/modules/dine.controller.ts	64
POST	/school/dine/qr/create	DineController	createQr	Dine	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; meal?: Meal; mealCode?: number; mealKey?: string }","optional":false}]	services/gateway-service/src/modules/dine.controller.ts	129
POST	/school/dine/qr/submit	DineController	submitQr	Dine	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ token: string; people: string[]; imageUrl?: string; comment?: string }","optional":false}]	services/gateway-service/src/modules/dine.controller.ts	136
GET	/school/dine/records	DineController	list	Dine	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"meal","name":"meal","type":"Meal","optional":true},{"source":"Query","binding":"mealCode","name":"mealCode","type":"string","optional":true},{"source":"Query","binding":"mealKey","name":"mealKey","type":"string","optional":true},{"source":"Query","binding":"exception","name":"exception","type":"'true' | 'false'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/dine.controller.ts	44
POST	/school/dine/records	DineController	create	Dine	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; meal?: Meal; mealCode?: number; mealKey?: string; people: string[]; imageUrl?: string; comment?: string; }","optional":false}]	services/gateway-service/src/modules/dine.controller.ts	82
PATCH	/school/dine/records/:id/measure	DineController	setMeasure	Dine	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/dine.controller.ts	118
GET	/school/dine/stream	DineController	stream	Dine	\N	unspecified	[]	services/gateway-service/src/modules/dine.controller.ts	142
POST	/school/disinfection/device/callback	DisinfectionController	device	Disinfection	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; canteenId?: number; method: DisinfectionMethod; duration: number; items: string; temperature?: number; responsible?: string; imageUrl?: string; }","optional":false}]	services/gateway-service/src/modules/disinfection.controller.ts	62
GET	/school/disinfection/records	DisinfectionController	list	Disinfection	List disinfection records	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"method","name":"method","type":"DisinfectionMethod","optional":true},{"source":"Query","binding":"exception","name":"exception","type":"'true' | 'false'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/disinfection.controller.ts	23
POST	/school/disinfection/records	DisinfectionController	create	Disinfection	Create disinfection record	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; canteenId?: number; method: DisinfectionMethod; duration: number; items: string; temperature?: number; responsible?: string; imageUrl?: string; at: string; }","optional":false}]	services/gateway-service/src/modules/disinfection.controller.ts	41
GET	/school/disinfection/records/:id	DisinfectionController	detail	Disinfection	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/disinfection.controller.ts	92
PATCH	/school/disinfection/records/:id/measure	DisinfectionController	setMeasure	Disinfection	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/disinfection.controller.ts	80
POST	/school/disinfection/records/import	DisinfectionController	import	Disinfection	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/disinfection.controller.ts	97
GET	/school/disinfection/stream	DisinfectionController	stream	Disinfection	\N	unspecified	[]	services/gateway-service/src/modules/disinfection.controller.ts	117
POST	/school/emergency/alerts/raise	EmergencyController	raise	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ type: AlertType; title: string; level?: any }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	18
GET	/school/emergency/cameras	EmergencyController	cameras	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	79
GET	/school/emergency/duty	EmergencyController	duty	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	40
POST	/school/emergency/duty	EmergencyController	saveDuty	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id?: string; name: string; members: string[]; oncall: string }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	43
GET	/school/emergency/duty/export.csv	EmergencyController	exportDutyCsv	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	129
GET	/school/emergency/events	EmergencyController	listEvents	\N	\N	unspecified	[{"source":"Query","binding":"type","name":"type","type":"AlertType","optional":true},{"source":"Query","binding":"status","name":"status","type":"any","optional":true}]	services/gateway-service/src/modules/emergency.controller.ts	15
POST	/school/emergency/events/accept	EmergencyController	accept	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	21
POST	/school/emergency/events/clear	EmergencyController	clear	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	24
GET	/school/emergency/events/export.csv	EmergencyController	exportEventsCsv	\N	\N	unspecified	[{"source":"Query","binding":"type","name":"type","type":"AlertType","optional":true},{"source":"Query","binding":"status","name":"status","type":"any","optional":true}]	services/gateway-service/src/modules/emergency.controller.ts	97
POST	/school/emergency/events/start-plan	EmergencyController	startPlan	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string; planId: string }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	27
GET	/school/emergency/meetings	EmergencyController	meetings	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	49
POST	/school/emergency/meetings	EmergencyController	createMeeting	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ scene: AlertType; title: string; micOn?: boolean; camOn?: boolean }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	52
POST	/school/emergency/meetings/invite	EmergencyController	invite	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string; who: string }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	63
PATCH	/school/emergency/meetings/state	EmergencyController	setMeetingState	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ micOn?: boolean; camOn?: boolean; sharing?: boolean }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	57
POST	/school/emergency/notify	EmergencyController	notify	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ scene: AlertType; to: string; via: 'sms' | 'voice' | 'app'; content: string }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	86
GET	/school/emergency/overview	EmergencyController	overview	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	11
GET	/school/emergency/plans	EmergencyController	plans	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	31
POST	/school/emergency/plans	EmergencyController	createPlan	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ title: string; flow: string; law?: string; actions?: string[] }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	34
GET	/school/emergency/plans/export.csv	EmergencyController	exportPlansCsv	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	111
GET	/school/emergency/resources	EmergencyController	resources	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	82
GET	/school/emergency/stream	EmergencyController	stream	\N	\N	unspecified	[]	services/gateway-service/src/modules/emergency.controller.ts	92
GET	/school/emergency/tasks	EmergencyController	tasks	\N	\N	unspecified	[{"source":"Query","binding":"scene","name":"scene","type":"AlertType","optional":true}]	services/gateway-service/src/modules/emergency.controller.ts	66
POST	/school/emergency/tasks	EmergencyController	createTask	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ scene: AlertType; title: string; assignees: string[] }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	69
GET	/school/emergency/tasks/export.csv	EmergencyController	exportTasksCsv	\N	\N	unspecified	[{"source":"Query","binding":"scene","name":"scene","type":"AlertType","optional":true}]	services/gateway-service/src/modules/emergency.controller.ts	141
PATCH	/school/emergency/tasks/status	EmergencyController	setTaskStatus	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ status: '待办' | '进行中' | '已完成' }","optional":false}]	services/gateway-service/src/modules/emergency.controller.ts	72
GET	/school/foods	SchoolFoodsController	list	SchoolFoods	菜品库列表	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"q","name":"q","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'enabled'|'disabled'|'all'","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/school-foods.controller.ts	17
POST	/school/foods	SchoolFoodsController	create	SchoolFoods	新增菜品（并同步设备端）	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/school-foods.controller.ts	93
DELETE	/school/foods/:id	SchoolFoodsController	remove	SchoolFoods	删除菜品（并同步设备端删除）	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Query","binding":"code","name":"code","type":"string","optional":true}]	services/gateway-service/src/modules/school-foods.controller.ts	189
PATCH	/school/foods/:id	SchoolFoodsController	update	SchoolFoods	更新菜品（并同步设备端）	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"patch","type":"any","optional":false}]	services/gateway-service/src/modules/school-foods.controller.ts	155
GET	/school/foods/exists	SchoolFoodsController	exists	SchoolFoods	检查菜品名称是否已存在	guarded	[{"source":"Query","binding":"name","name":"name","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/school-foods.controller.ts	83
GET	/school/foods/export.csv	SchoolFoodsController	exportCsv	SchoolFoods	导出菜品 CSV	guarded	[{"source":"Query","binding":"q","name":"q","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"'enabled'|'disabled'|'all'","optional":true}]	services/gateway-service/src/modules/school-foods.controller.ts	235
POST	/school/foods/import	SchoolFoodsController	import	SchoolFoods	批量导入（CSV/JSON）	guarded	[{"source":"Body","binding":"","name":"body","type":"{ items?: any[]; csv?: string; overwrite?: boolean; by?: string }","optional":false}]	services/gateway-service/src/modules/school-foods.controller.ts	198
GET	/school/home/overview	SchoolHomeController	overview	School Home	Aggregated home overview (single API)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"aiPeriod","name":"aiPeriod","type":"'week' | '7d'","optional":true}]	services/gateway-service/src/modules/school-home.controller.ts	46
GET	/school/hygiene/inspections	HygieneController	listInspections	Hygiene	List hygiene inspections	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"InspectResult","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/hygiene.controller.ts	14
POST	/school/hygiene/inspections	HygieneController	createInspection	Hygiene	Create hygiene inspection	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: string; date?: string; result: InspectResult; by: string; remark?: string; }","optional":false}]	services/gateway-service/src/modules/hygiene.controller.ts	30
GET	/school/hygiene/stream	HygieneController	stream	Hygiene	\N	unspecified	[]	services/gateway-service/src/modules/hygiene.controller.ts	69
GET	/school/inventory/additives	InventoryController	listAdditives	Inventory	List food additives	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	664
POST	/school/inventory/additives	InventoryController	createAdditive	Inventory	Create food additive record	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; name: string; amount: number; dish?: string; by?: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	669
GET	/school/inventory/categories	InventoryController	listCategories	Inventory	List categories	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	20
POST	/school/inventory/categories	InventoryController	createCategory	Inventory	Create category	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string; name: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	25
GET	/school/inventory/inbound	InventoryController	listInbound	Inventory	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	283
POST	/school/inventory/inbound	InventoryController	createInbound	Inventory	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; productId: string; qty: number; supplierId?: string; warehouseId?: string; imageUrl?: string; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	358
GET	/school/inventory/inbound/doc	InventoryController	inboundDocDetail	Inventory	\N	unspecified	[{"source":"Query","binding":"docNo","name":"docNo","type":"string","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	390
PATCH	/school/inventory/inbound/doc	InventoryController	updateInboundDoc	Inventory	Update inbound document	unspecified	[{"source":"Query","binding":"docNo","name":"docNo","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number | string; canteenId?: number; supplierId?: number | string; date: string; operator?: string; items: Array<{ productId: string; qty: number; unitPrice?: number; prodDate?: string; shelfLifeDays?: number }>; tickets: Array<{ type: 'ticket_quarantine'|'ticket_invoice'|'ticket_receipt'; imageUrl: string }>; images?: string[]; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	396
POST	/school/inventory/inbound/doc	InventoryController	createInboundDoc	Inventory	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; canteenId?: number; supplierId?: number | string; date: string; operator?: string; items: Array<{ productId: string; qty: number; unitPrice?: number; prodDate?: string; shelfLifeDays?: number }>; tickets: Array<{ type: 'ticket_quarantine'|'ticket_invoice'|'ticket_receipt'; imageUrl: string }>; images?: string[]; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	374
GET	/school/inventory/inbound/docs	InventoryController	listInboundDocs	Inventory	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	290
GET	/school/inventory/inbound/export.csv	InventoryController	exportInboundCsv	Inventory	Export inbound document summary (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	296
POST	/school/inventory/inbound/scale	InventoryController	scaleInbound	Inventory	Scale inbound (+/- quantity)	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; productId: string; weight: number; supplierId?: string; warehouseId?: string; imageUrl?: string; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	421
GET	/school/inventory/outbound	InventoryController	listOutbound	Inventory	List outbound records	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	438
POST	/school/inventory/outbound	InventoryController	createOutbound	Inventory	Create outbound record	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; productId: string; qty: number; purpose?: string; by?: string; // 出库人 receiver?: string; // 领用人（可选） canteenId?: number; // 食堂 date?: string; // 出库日期 YYYY-MM-DD warehouseId?: string; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	498
GET	/school/inventory/outbound/batches	InventoryController	outboundBatches	Inventory	List outbound batches (recent)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string | number","optional":true},{"source":"Query","binding":"productId","name":"productId","type":"string | number","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string | number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	552
POST	/school/inventory/outbound/clear	InventoryController	clearOutbound	Inventory	Clear outbound batch	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	538
GET	/school/inventory/outbound/export.csv	InventoryController	exportOutboundCsv	Inventory	Export outbound records (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	446
POST	/school/inventory/outbound/scale	InventoryController	scaleOutbound	Inventory	Scale outbound (+/- quantity)	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; productId: string; weight: number; purpose?: string; by?: string; receiver?: string; canteenId?: number; warehouseId?: string; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	518
GET	/school/inventory/products	InventoryController	listProductsV2	Inventory	List products	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	33
PATCH	/school/inventory/products	InventoryController	updateProductV2	Inventory	Update product	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	44
POST	/school/inventory/products	InventoryController	createProductV2	Inventory	Create product	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string; name: string; unit: string; category?: string; spec?: string; lastPrice?: number }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	38
POST	/school/inventory/products/delete	InventoryController	deleteProductV2	Inventory	Delete product	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: number }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	62
POST	/school/inventory/products/import/cloud	InventoryController	importCloudV2	Inventory	\N	unspecified	[]	services/gateway-service/src/inventory/inventory.controller.ts	53
POST	/school/inventory/products/import/template	InventoryController	importTemplateV2	Inventory	Import products from template	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number | string; items: Array<{ name: string; unit: string; category?: string; spec?: string; lastPrice?: number }> }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	56
GET	/school/inventory/stock	InventoryController	stock	Inventory	Stock summary	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	564
GET	/school/inventory/stock/batches	InventoryController	stockBatches	Inventory	List stock batches by product	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number | string","optional":true},{"source":"Query","binding":"near","name":"near","type":"'true' | 'false'","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	575
GET	/school/inventory/stock/export.csv	InventoryController	exportStockCsv	Inventory	Export stock batches (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number | string","optional":true},{"source":"Query","binding":"near","name":"near","type":"'true' | 'false'","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	585
POST	/school/inventory/stock/stocktake	InventoryController	stocktake	Inventory	Stocktake one product	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; productId: string; qty: number }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	569
POST	/school/inventory/stock/stocktake-batch	InventoryController	stocktakeBatch	Inventory	Batch stocktake multiple products	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; inboundId: number; actualQty: number; operator?: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	640
GET	/school/inventory/stream	InventoryController	stream	Inventory	\N	unspecified	[]	services/gateway-service/src/inventory/inventory.controller.ts	678
GET	/school/inventory/suppliers	InventoryController	listSuppliers	Inventory	List suppliers (paged, filterable)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true},{"source":"Query","binding":"enabled","name":"enabled","type":"'true' | 'false'","optional":true},{"source":"Query","binding":"expired","name":"expired","type":"'true' | 'false'","optional":true},{"source":"Query","binding":"expireStart","name":"expireStart","type":"string","optional":true},{"source":"Query","binding":"expireEnd","name":"expireEnd","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	73
PATCH	/school/inventory/suppliers	InventoryController	updateSupplier	Inventory	Update supplier	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	114
POST	/school/inventory/suppliers	InventoryController	createSupplier	Inventory	Create supplier	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string; name: string; phone?: string; license?: string; address?: string; contact?: string; email?: string; enabled?: boolean; }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	95
POST	/school/inventory/suppliers/:id/certificates	InventoryController	addCert	Inventory	Add supplier certificate	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ type: string; number?: string; authority?: string; expireAt?: string; imageUrl?: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	141
GET	/school/inventory/suppliers/:id/certificates/export.csv	InventoryController	exportSupplierCerts	Inventory	Export supplier certificates CSV	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	148
POST	/school/inventory/suppliers/:id/certificates/import	InventoryController	importSupplierCerts	Inventory	Import supplier certificates	unspecified	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	162
POST	/school/inventory/suppliers/delete	InventoryController	deleteSupplier	Inventory	Delete supplier	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	123
GET	/school/inventory/suppliers/detail	InventoryController	getSupplier	Inventory	Supplier detail	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	90
POST	/school/inventory/suppliers/enable/batch	InventoryController	batchEnable	Inventory	Batch enable/disable suppliers	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ ids: string[]; enabled: boolean }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	132
GET	/school/inventory/suppliers/export.csv	InventoryController	exportCsv	Inventory	Export suppliers CSV	unspecified	[]	services/gateway-service/src/inventory/inventory.controller.ts	173
POST	/school/inventory/suppliers/import	InventoryController	importSuppliers	Inventory	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	210
GET	/school/inventory/suppliers/summary	InventoryController	summary	Inventory	Supplier summary	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	168
GET	/school/inventory/tickets	InventoryController	listTickets	Inventory	List purchase tickets	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"number","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	650
POST	/school/inventory/tickets	InventoryController	createTicket	Inventory	Create purchase ticket	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; productId: string; type: string; imageUrl?: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	656
GET	/school/inventory/warehouses	InventoryController	listWarehouses	Inventory	List warehouses	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/inventory/inventory.controller.ts	245
PATCH	/school/inventory/warehouses	InventoryController	updateWarehouse	Inventory	Update warehouse	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ name?: string; location?: string; capacity?: number }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	258
POST	/school/inventory/warehouses	InventoryController	createWarehouse	Inventory	Create warehouse	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string; name: string; location?: string; capacity?: number }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	250
POST	/school/inventory/warehouses/delete	InventoryController	deleteWarehouse	Inventory	Delete warehouse	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false}]	services/gateway-service/src/inventory/inventory.controller.ts	272
GET	/school/meal-plans	MealPlansController	list	MealPlans	列表查询配餐	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"meal","name":"meal","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/meal-plans.controller.ts	55
POST	/school/meal-plans	MealPlansController	create	MealPlans	新增/覆盖配餐	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"body","type":"{ schoolId: number; canteenId?: number; date: string; meal: string; foods: string[]; remark?: string; by?: string }","optional":false}]	services/gateway-service/src/modules/meal-plans.controller.ts	81
DELETE	/school/meal-plans/:id	MealPlansController	remove	MealPlans	删除配餐	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/meal-plans.controller.ts	158
PATCH	/school/meal-plans/:id	MealPlansController	update	MealPlans	更新配餐	guarded	[{"source":"Param","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"patch","type":"any","optional":false},{"source":"Req","binding":"","name":"req","type":"any","optional":false}]	services/gateway-service/src/modules/meal-plans.controller.ts	117
POST	/school/meal-plans/copy-week	MealPlansController	copyWeek	MealPlans	复制上一周配餐到本周	guarded	[{"source":"Body","binding":"","name":"body","type":"{ schoolId: number; canteenId?: number; from: string; to: string; overwrite?: boolean }","optional":false}]	services/gateway-service/src/modules/meal-plans.controller.ts	282
GET	/school/meal-plans/export.csv	MealPlansController	exportCsv	MealPlans	导出CSV	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/meal-plans.controller.ts	269
POST	/school/meal-plans/import	MealPlansController	import	MealPlans	批量导入（CSV/JSON）	guarded	[{"source":"Body","binding":"","name":"body","type":"{ items?: any[]; overwrite?: boolean }","optional":false}]	services/gateway-service/src/modules/meal-plans.controller.ts	192
GET	/school/messages/rectify	SchoolMessagesController	schoolRectifyList	School Messages	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/school-messages.controller.ts	38
GET	/school/morning-checks	MorningCheckController	list	Morning Checks	List morning checks (paged, filterable)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"schoolIds","name":"schoolIds","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"staff","name":"staff","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"MCResult","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/morning-check.controller.ts	47
POST	/school/morning-checks	MorningCheckController	create	Morning Checks	Create morning check record	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; staff: string; temp: number; at?: string; source?: 'manual' | 'device'; hygiene?: '正常' | '异常'; photoUrl?: string; // Optional third-party-compatible fields (passthrough) 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; }","optional":false}]	services/gateway-service/src/modules/morning-check.controller.ts	231
DELETE	/school/morning-checks/:id	MorningCheckController	remove	Morning Checks	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false}]	services/gateway-service/src/modules/morning-check.controller.ts	287
PATCH	/school/morning-checks/:id/handle	MorningCheckController	setHandle	Morning Checks	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"body","type":"{ decision: 'allow'|'suspend'; note: string; by?: string }","optional":false}]	services/gateway-service/src/modules/morning-check.controller.ts	277
PATCH	/school/morning-checks/:id/measure	MorningCheckController	setMeasure	Morning Checks	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"body","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/morning-check.controller.ts	267
POST	/school/morning-checks/device/callback	MorningCheckController	deviceCallback	Morning Checks	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; staff: string; temp: number }","optional":false}]	services/gateway-service/src/modules/morning-check.controller.ts	261
GET	/school/morning-checks/export.csv	MorningCheckController	exportCsv	Morning Checks	Export morning checks (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"staff","name":"staff","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"MCResult","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/morning-check.controller.ts	301
GET	/school/morning-checks/history	MorningCheckController	history	Morning Checks	List all morning checks for a staff on a date	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"staff","name":"staff","type":"string","optional":true},{"source":"Query","binding":"date","name":"date","type":"string","optional":true}]	services/gateway-service/src/modules/morning-check.controller.ts	216
GET	/school/morning-checks/overview	MorningCheckController	overview	Morning Checks	Daily overview by canteen	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"date","name":"date","type":"string","optional":true}]	services/gateway-service/src/modules/morning-check.controller.ts	140
GET	/school/morning-checks/stream	MorningCheckController	sse	Morning Checks	\N	unspecified	[]	services/gateway-service/src/modules/morning-check.controller.ts	296
GET	/school/personnel	PersonnelController	list	Personnel	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"name","name":"name","type":"string","optional":true},{"source":"Query","binding":"phone","name":"phone","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/personnel.controller.ts	70
PATCH	/school/personnel	PersonnelController	update	Personnel	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":true},{"source":"Body","binding":"","name":"b","type":"Partial<{ canteenId?: number; name?: string; gender?: '男'|'女'; phone?: string; jobTitle?: string; healthCertNo?: string; healthCertAuthority?: string; healthCertIssueAt?: string; healthCertExpireAt?: string; healthCertFrontUrl?: string; healthCertBackUrl?: string; enabled?: boolean; // 与设备端对齐的扩展字段 idCardNumber?: string; accessCard?: string; entryDate?: string; age?: number; idCardFrontUrl?: string; facePhotoUrl?: string; }>","optional":true}]	services/gateway-service/src/modules/personnel.controller.ts	225
POST	/school/personnel	PersonnelController	create	Personnel	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; canteenId?: number; name: string; gender?: '男'|'女'; phone?: string; jobTitle?: string; healthCertNo?: string; healthCertAuthority?: string; healthCertIssueAt?: string; healthCertExpireAt?: string; healthCertFrontUrl?: string; healthCertBackUrl?: string; enabled?: boolean; idCardNumber?: string; accessCard?: string; idCardFrontUrl?: string; facePhotoUrl?: string; }","optional":false}]	services/gateway-service/src/modules/personnel.controller.ts	136
POST	/school/personnel/delete	PersonnelController	remove	Personnel	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ id?: number }","optional":false}]	services/gateway-service/src/modules/personnel.controller.ts	285
GET	/school/personnel/detail	PersonnelController	detail	Personnel	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":true}]	services/gateway-service/src/modules/personnel.controller.ts	296
POST	/school/pesticide/device/callback	PesticideController	device	Pesticide	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; sample: string; device: string; result: PesticideResult; imageUrl?: string; remark?: string; }","optional":false}]	services/gateway-service/src/modules/pesticide.controller.ts	120
GET	/school/pesticide/records	PesticideController	list	Pesticide	List pesticide test records	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"PesticideResult","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"sort","name":"sort","type":"'at' | 'created'","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/pesticide.controller.ts	25
POST	/school/pesticide/records	PesticideController	create	Pesticide	Create pesticide test record	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; canteenId?: number; sample: string; device: string; tester?: string; jiancedidian?: string; lianxidianhua?: string; value?: number | string; result: PesticideResult; imageUrl?: string; remark?: string; at?: string; // 检测时间（可选） }","optional":false}]	services/gateway-service/src/modules/pesticide.controller.ts	96
PATCH	/school/pesticide/records/:id/measure	PesticideController	setMeasure	Pesticide	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"body","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/pesticide.controller.ts	136
GET	/school/pesticide/records/export.csv	PesticideController	exportCsv	Pesticide	Export pesticide rapid-test records (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true},{"source":"Query","binding":"result","name":"result","type":"PesticideResult","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/pesticide.controller.ts	44
GET	/school/pesticide/stream	PesticideController	stream	Pesticide	\N	unspecified	[]	services/gateway-service/src/modules/pesticide.controller.ts	146
GET	/school/public/config	PublicConfigController	get	Public Config	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/public-config.controller.ts	12
POST	/school/public/config	PublicConfigController	update	Public Config	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"Partial<{ live: boolean; rating: boolean; orgCert: boolean; staffCert: boolean; level: boolean; trace: boolean; menu: boolean; }> & { updatedBy?: string; schoolId?: string | number }","optional":false}]	services/gateway-service/src/modules/public-config.controller.ts	18
GET	/school/public/config/audit	PublicConfigController	audit	Public Config	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/public-config.controller.ts	37
GET	/school/public/config/feedback/qr	PublicConfigController	feedbackQr	Public Config	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/public-config.controller.ts	43
GET	/school/public/feedback	PublicFeedbackController	list	Public Feedback	\N	guarded	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/public-feedback.controller.ts	40
GET	/school/risk/catalog	RiskController	catalog	\N	\N	unspecified	[]	services/gateway-service/src/modules/risk.controller.ts	27
PATCH	/school/risk/catalog	RiskController	updateCatalog	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	35
POST	/school/risk/catalog	RiskController	createCatalog	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ category?: string; title: string; level: any; desc?: string }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	30
POST	/school/risk/catalog/delete	RiskController	deleteCatalog	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	38
GET	/school/risk/catalog/export.csv	RiskController	catalogExportCsv	\N	\N	unspecified	[]	services/gateway-service/src/modules/risk.controller.ts	42
GET	/school/risk/reports	RiskController	reports	\N	\N	unspecified	[{"source":"Query","binding":"status","name":"status","type":"ReportStatus","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"location","name":"location","type":"string","optional":true},{"source":"Query","binding":"object","name":"object","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/risk.controller.ts	55
POST	/school/risk/reports	RiskController	createReport	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string; location: string; object: string; desc: string; images?: string[]; riskId?: string; }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	66
GET	/school/risk/reports/detail	RiskController	reportDetail	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	79
GET	/school/risk/reports/export.csv	RiskController	reportsExport	\N	\N	unspecified	[{"source":"Query","binding":"status","name":"status","type":"ReportStatus","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"location","name":"location","type":"string","optional":true},{"source":"Query","binding":"object","name":"object","type":"string","optional":true}]	services/gateway-service/src/modules/risk.controller.ts	89
PATCH	/school/risk/reports/status	RiskController	setReportStatus	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ status: ReportStatus; measures?: string; rectifiedBy?: string }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	82
GET	/school/risk/tasks	RiskController	tasks	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"assignee","name":"assignee","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"TaskStatus","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/risk.controller.ts	137
POST	/school/risk/tasks	RiskController	createTask	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ schoolId?: string | number; assignee: string; location: string; object: string; riskId?: string; dueAt?: string; note?: string; }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	147
GET	/school/risk/tasks/detail	RiskController	taskDetail	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	161
GET	/school/risk/tasks/export.csv	RiskController	tasksExport	\N	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"assignee","name":"assignee","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"TaskStatus","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/risk.controller.ts	171
PATCH	/school/risk/tasks/status	RiskController	setTaskStatus	\N	\N	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ status: TaskStatus }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	164
POST	/school/risk/tasks/submit	RiskController	submitTask	\N	\N	unspecified	[{"source":"Body","binding":"","name":"b","type":"{ id: string; result: string; images?: string[] }","optional":false}]	services/gateway-service/src/modules/risk.controller.ts	167
POST	/school/sampling/device/callback	SamplingController	deviceCallback	Sampling	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; sample: string; weight: number; imageUrl?: string; duration: number; by: string; cabinet?: string; }","optional":false}]	services/gateway-service/src/modules/sampling.controller.ts	81
DELETE	/school/sampling/operators	SamplingOperatorsController	remove	SamplingOperators	批量移除留样人员（删除 sammei_users）	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ ids?: Array<number | string>; serialNumber?: string } | undefined","optional":false},{"source":"Query","binding":"ids","name":"idsQuery","type":"string","optional":true},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true}]	services/gateway-service/src/modules/sampling-operators.controller.ts	377
GET	/school/sampling/operators	SamplingOperatorsController	list	SamplingOperators	留样人员列表（字段与 /push/operateUserList 保持一致）	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true},{"source":"Query","binding":"canteenId","name":"canteenIdQuery","type":"string","optional":true}]	services/gateway-service/src/modules/sampling-operators.controller.ts	196
POST	/school/sampling/operators	SamplingOperatorsController	add	SamplingOperators	添加留样人员（写入 sammei_users）	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; canteenId?: number; personnelIds: number[]; serialNumber?: string; password?: string; faceOssUrl?: string; faceFilePath?: string }","optional":false}]	services/gateway-service/src/modules/sampling-operators.controller.ts	276
GET	/school/sampling/operators/detail	SamplingOperatorsController	detail	SamplingOperators	获取留样人员详情（含密码，仅用于编辑回显）	unspecified	[{"source":"Query","binding":"id","name":"id","type":"string","optional":true}]	services/gateway-service/src/modules/sampling-operators.controller.ts	465
POST	/school/sampling/operators/remove	SamplingOperatorsController	removeByPost	SamplingOperators	批量移除留样人员（POST 兼容，删除 sammei_users）	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ ids?: Array<number | string>; schoolId?: number; serialNumber?: string }","optional":false}]	services/gateway-service/src/modules/sampling-operators.controller.ts	416
POST	/school/sampling/operators/sync	SamplingOperatorsController	sync	SamplingOperators	向设备同步留样人员（OperateUserList）	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number }","optional":false}]	services/gateway-service/src/modules/sampling-operators.controller.ts	443
POST	/school/sampling/operators/upsert	SamplingOperatorsController	upsert	SamplingOperators	新增/更新单个留样人员（含人脸与时间等扩展字段）	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/sampling-operators.controller.ts	308
GET	/school/sampling/records	SamplingController	listRecords	Sampling	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"sample","name":"sample","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"SampleStatus","optional":true},{"source":"Query","binding":"exception","name":"exception","type":"'true' | 'false'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/sampling.controller.ts	28
POST	/school/sampling/records	SamplingController	createRecord	Sampling	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; canteenId?: number; sample: string; weight: number; imageUrl?: string; duration: number; by: string; cabinet?: string; cookTime?: string; at?: string; // 留样时间（可选，未传则为当前） endTime?: string; // 需取样时间（可选） takeTime?: string; // 实际取样时间（可选） status?: 'ACTIVE' | 'CLEARED'; // 留样状态（可选） quyangUserName?: string; // 取样员（可选） }","optional":false}]	services/gateway-service/src/modules/sampling.controller.ts	56
PATCH	/school/sampling/records/:id/measure	SamplingController	setMeasure	Sampling	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"body","type":"{ measure: string }","optional":false}]	services/gateway-service/src/modules/sampling.controller.ts	98
PATCH	/school/sampling/records/:id/status	SamplingController	setStatus	Sampling	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"body","type":"{ status?: 'ACTIVE' | 'CLEARED'; quyangUserName?: string; takeTime?: string }","optional":false}]	services/gateway-service/src/modules/sampling.controller.ts	108
GET	/school/sampling/records/export.csv	SamplingController	exportCsv	Sampling	Export sampling records (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"sample","name":"sample","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"SampleStatus","optional":true},{"source":"Query","binding":"exception","name":"exception","type":"'true'|'false'","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/sampling.controller.ts	128
GET	/school/sampling/stream	SamplingController	stream	Sampling	\N	unspecified	[]	services/gateway-service/src/modules/sampling.controller.ts	182
GET	/school/system/announcements	SystemController	listAnnouncements	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true},{"source":"Query","binding":"schoolId","name":"qSchoolId","type":"string","optional":true}]	services/gateway-service/src/modules/system.controller.ts	24
POST	/school/system/announcements	SystemController	createAnnouncement	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ title: string; content: string }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	36
POST	/school/system/announcements/attach	SystemController	attach	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ id: string; name: string; url: string; schoolId?: number }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	49
GET	/school/system/announcements/detail	SystemController	announcementDetail	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Query","binding":"schoolId","name":"qSchoolId","type":"string","optional":true}]	services/gateway-service/src/modules/system.controller.ts	42
GET	/school/system/apps	SystemController	apps	School System	\N	guarded	[]	services/gateway-service/src/modules/system.controller.ts	85
GET	/school/system/canteen	SystemController	canteen	School System	\N	guarded	[]	services/gateway-service/src/modules/system.controller.ts	57
POST	/school/system/canteen	SystemController	saveCanteen	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"any","optional":false}]	services/gateway-service/src/modules/system.controller.ts	60
GET	/school/system/linkage	SystemController	linkageList	School System	\N	guarded	[{"source":"Query","binding":"status","name":"status","type":"any","optional":true}]	services/gateway-service/src/modules/system.controller.ts	69
POST	/school/system/linkage/apply	SystemController	applyLinkage	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ org: string; contact?: string; remark?: string }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	72
PATCH	/school/system/linkage/review	SystemController	reviewLinkage	School System	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false},{"source":"Body","binding":"","name":"b","type":"{ status: any; comment?: string }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	77
GET	/school/system/meals	SystemController	meals	School System	\N	guarded	[]	services/gateway-service/src/modules/system.controller.ts	113
POST	/school/system/meals	SystemController	saveMeals	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ items: any[] }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	116
GET	/school/system/news	SystemController	schoolNews	School System	\N	guarded	[{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true},{"source":"Query","binding":"enabled","name":"enabled","type":"'true' | 'false'","optional":true}]	services/gateway-service/src/modules/system.controller.ts	283
GET	/school/system/news/detail	SystemController	schoolNewsDetail	School System	\N	guarded	[{"source":"Query","binding":"id","name":"id","type":"string","optional":false}]	services/gateway-service/src/modules/system.controller.ts	290
GET	/school/system/org-type	SystemController	getOrgType	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"schoolId","name":"qSchoolId","type":"string","optional":true}]	services/gateway-service/src/modules/system.controller.ts	90
POST	/school/system/org-type	SystemController	saveOrgType	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; orgType: 'school'|'enterprise' }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	101
GET	/school/system/permissions	SystemController	permissions	School System	\N	guarded	[]	services/gateway-service/src/modules/system.controller.ts	259
GET	/school/system/roles	SystemController	roles	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/system.controller.ts	162
PATCH	/school/system/roles	SystemController	updateRole	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ id: number; patch: { name?: string; remark?: string } }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	184
POST	/school/system/roles	SystemController	createRole	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ schoolId?: number; name: string; remark?: string }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	174
POST	/school/system/roles/delete	SystemController	deleteRole	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ id: number }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	196
GET	/school/system/roles/permissions	SystemController	rolePermissions	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"name","name":"name","type":"string","optional":false}]	services/gateway-service/src/modules/system.controller.ts	262
POST	/school/system/roles/permissions	SystemController	setRolePerms	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Body","binding":"","name":"b","type":"{ name: string; permissions: string[] }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	268
GET	/school/system/users	SystemController	users	School System	\N	guarded	[{"source":"Req","binding":"","name":"req","type":"any","optional":false},{"source":"Query","binding":"schoolId","name":"qSchoolId","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/system.controller.ts	125
PATCH	/school/system/users	SystemController	updateUser	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"| { id: number; patch?: { name?: string; phone?: string; remark?: string; enabled?: boolean; password?: string } } | { id: number; name?: string; phone?: string; remark?: string; enabled?: boolean; password?: string }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	217
POST	/school/system/users	SystemController	createUser	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ name: string; phone?: string; roles?: string[]; remark?: string; enabled?: boolean; password?: string; schoolId?: number }","optional":false},{"source":"Req","binding":"","name":"req","type":"any","optional":false}]	services/gateway-service/src/modules/system.controller.ts	137
POST	/school/system/users/delete	SystemController	removeUser	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: number }","optional":false},{"source":"Req","binding":"","name":"req","type":"any","optional":false}]	services/gateway-service/src/modules/system.controller.ts	249
POST	/school/system/users/enabled	SystemController	setUserEnabled	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: number; enabled: boolean }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	240
POST	/school/system/users/roles	SystemController	setUserRoles	School System	\N	guarded	[{"source":"Body","binding":"","name":"b","type":"{ id: string; roles: string[] }","optional":false}]	services/gateway-service/src/modules/system.controller.ts	209
GET	/school/waste/categories	WasteController	categories	Waste	\N	unspecified	[{"source":"Query","binding":"enabled","name":"enabled","type":"'all' | 'true' | 'false'","optional":true}]	services/gateway-service/src/modules/waste.controller.ts	19
POST	/school/waste/categories	WasteController	createCategory	Waste	\N	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ name: string }","optional":false}]	services/gateway-service/src/modules/waste.controller.ts	25
DELETE	/school/waste/categories/:id	WasteController	delete	Waste	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false}]	services/gateway-service/src/modules/waste.controller.ts	40
PATCH	/school/waste/categories/:id/enable	WasteController	setEnabled	Waste	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false},{"source":"Body","binding":"","name":"body","type":"{ enabled: boolean }","optional":false}]	services/gateway-service/src/modules/waste.controller.ts	31
GET	/school/waste/records	WasteController	list	Waste	List waste records (paged)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"category","name":"category","type":"WasteCategory","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"string","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"string","optional":true}]	services/gateway-service/src/modules/waste.controller.ts	49
POST	/school/waste/records	WasteController	create	Waste	Create waste record	unspecified	[{"source":"Body","binding":"","name":"body","type":"{ schoolId?: number; canteenId?: number; date?: string; category: WasteCategory; amount: number; buyer: string; person: string; }","optional":false}]	services/gateway-service/src/modules/waste.controller.ts	152
DELETE	/school/waste/records/:id	WasteController	deleteOne	Waste	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false}]	services/gateway-service/src/modules/waste.controller.ts	176
GET	/school/waste/records/:id	WasteController	getOne	Waste	\N	unspecified	[{"source":"Param","binding":"id","name":"id","type":"number","optional":false}]	services/gateway-service/src/modules/waste.controller.ts	171
GET	/school/waste/records/export.csv	WasteController	exportCsv	Waste	Export waste records (CSV)	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"category","name":"category","type":"WasteCategory","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/waste.controller.ts	74
GET	/screen/analytics/ai/events	ScreenAnalyticsController	aiEvents	Screen Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true},{"source":"Query","binding":"page","name":"page","type":"","optional":true},{"source":"Query","binding":"pageSize","name":"pageSize","type":"","optional":true}]	services/gateway-service/src/modules/screen-analytics.controller.ts	254
GET	/screen/analytics/ai/pie	ScreenAnalyticsController	aiTypesPie	Screen Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/screen-analytics.controller.ts	155
GET	/screen/analytics/cameras	ScreenAnalyticsController	cameras	Screen Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true}]	services/gateway-service/src/modules/screen-analytics.controller.ts	324
GET	/screen/analytics/devices	ScreenAnalyticsController	devicesList	Screen Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"type","name":"type","type":"string","optional":true},{"source":"Query","binding":"status","name":"status","type":"string","optional":true},{"source":"Query","binding":"q","name":"q","type":"string","optional":true}]	services/gateway-service/src/modules/screen-analytics.controller.ts	306
GET	/screen/analytics/devices/statuses	ScreenAnalyticsController	deviceStatuses	Screen Analytics	\N	unspecified	[]	services/gateway-service/src/modules/screen-analytics.controller.ts	319
GET	/screen/analytics/devices/types	ScreenAnalyticsController	deviceTypes	Screen Analytics	\N	unspecified	[]	services/gateway-service/src/modules/screen-analytics.controller.ts	316
GET	/screen/analytics/personnel-health	ScreenAnalyticsController	personnelHealth	Screen Analytics	\N	unspecified	[{"source":"Query","binding":"schoolId","name":"schoolId","type":"string","optional":true},{"source":"Query","binding":"canteenId","name":"canteenId","type":"string","optional":true},{"source":"Query","binding":"start","name":"start","type":"string","optional":true},{"source":"Query","binding":"end","name":"end","type":"string","optional":true}]	services/gateway-service/src/modules/screen-analytics.controller.ts	98
GET	/static/:path(*)	StaticController	view	\N	\N	unspecified	[{"source":"Param","binding":"path","name":"pathParam","type":"string","optional":false},{"source":"argument","binding":"","name":"res","type":"Response","optional":false}]	services/gateway-service/src/modules/files.controller.ts	118
GET	/system/group/device/active-group	DewoLiuyangchengController	dewoMorningActiveGroup	Dewo-Liuyangcheng	得沃晨检机获取当前问卷	unspecified	[{"source":"Query","binding":"deviceSn","name":"deviceSn","type":"string","optional":true},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	475
GET	/system/storage/init	StorageController	init	System	Initialize storage provider (ensure MinIO bucket exists)	unspecified	[]	services/gateway-service/src/modules/storage.controller.ts	21
GET	/system/storage/status	StorageController	status	System	Get object storage mode and configuration status	unspecified	[]	services/gateway-service/src/modules/storage.controller.ts	9
GET	/trustivs/proxy/hls	TrustivsProxyController	proxyHls	\N	\N	unspecified	[{"source":"Query","binding":"url","name":"url","type":"string","optional":false},{"source":"argument","binding":"","name":"res","type":"Response","optional":false}]	services/gateway-service/src/modules/trustivs/controller/proxy.controller.ts	26
POST	/uploadInspectionRecord	DewoLiuyangchengController	uploadInspectionRecord	Dewo-Liuyangcheng	得沃晨检机上传晨检记录	unspecified	[{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"UploadedFiles","binding":"","name":"files","type":"Express.Multer.File[]","optional":true},{"source":"Req","binding":"","name":"req","type":"any","optional":true}]	services/gateway-service/src/modules/dewo-liuyangcheng.controller.ts	527
POST	/wosapi/YGCJRobotOpenApi/GetDepInfo	WosController	getDepInfo	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	132
POST	/wosapi/YGCJRobotOpenApi/GetPlatInfo	WosController	getPlatInfo	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	212
POST	/wosapi/YGCJRobotOpenApi/PageStaff	WosController	pageStaff	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	699
POST	/wosapi/YGCJRobotOpenApi/PushCheckData	WosController	pushCheckData	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	230
POST	/wosapi/YGCJRobotOpenApi/StaffAdd	WosController	staffAdd	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	463
POST	/wosapi/YGCJRobotOpenApi/StaffById	WosController	staffById	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false},{"source":"Req","binding":"","name":"req","type":"Request","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	556
POST	/wosapi/YGCJRobotOpenApi/StaffDelete	WosController	staffDelete	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	421
POST	/wosapi/YGCJRobotOpenApi/StaffUpdate	WosController	staffUpdate	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	616
POST	/wosapi/YGCJRobotOpenApi/UpdateDepInfo	WosController	updateDepInfo	WOS Integration	\N	unspecified	[{"source":"Headers","binding":"yg_sn","name":"ygSn","type":"string","optional":false},{"source":"Body","binding":"","name":"body","type":"any","optional":false}]	services/gateway-service/src/modules/wos.controller.ts	333
