521 lines
13 KiB
JavaScript
521 lines
13 KiB
JavaScript
|
|
/**
|
|||
|
|
* 简化版Swagger配置
|
|||
|
|
* @file swagger-simple.js
|
|||
|
|
* @description 简化的Swagger配置,确保API路径正确显示
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
const swaggerJSDoc = require('swagger-jsdoc');
|
|||
|
|
|
|||
|
|
const options = {
|
|||
|
|
definition: {
|
|||
|
|
openapi: '3.0.0',
|
|||
|
|
info: {
|
|||
|
|
title: '智能预警系统 API',
|
|||
|
|
version: '1.0.0',
|
|||
|
|
description: '智能耳标预警和智能项圈预警系统API文档',
|
|||
|
|
contact: {
|
|||
|
|
name: '开发团队',
|
|||
|
|
email: 'dev@example.com'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
servers: [
|
|||
|
|
{
|
|||
|
|
url: 'http://localhost:5350/api',
|
|||
|
|
description: '开发环境'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
tags: [
|
|||
|
|
{
|
|||
|
|
name: '智能耳标预警',
|
|||
|
|
description: '智能耳标预警相关接口'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: '智能项圈预警',
|
|||
|
|
description: '智能项圈预警相关接口'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
apis: ['./routes/smart-alerts.js']
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const specs = swaggerJSDoc(options);
|
|||
|
|
|
|||
|
|
// 手动添加API路径,确保它们出现在文档中
|
|||
|
|
if (!specs.paths) {
|
|||
|
|
specs.paths = {};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 智能耳标预警API路径
|
|||
|
|
specs.paths['/smart-alerts/public/eartag/stats'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能耳标预警'],
|
|||
|
|
summary: '获取智能耳标预警统计',
|
|||
|
|
description: '获取智能耳标预警的统计数据,包括各类预警的数量和设备总数',
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '获取统计成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/eartag'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能耳标预警'],
|
|||
|
|
summary: '获取智能耳标预警列表',
|
|||
|
|
description: '获取智能耳标预警列表,支持分页、搜索和筛选',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'page',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'integer', default: 1 },
|
|||
|
|
description: '页码'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: 'limit',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'integer', default: 10 },
|
|||
|
|
description: '每页数量'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: 'search',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'string' },
|
|||
|
|
description: '搜索关键词'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: 'alertType',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'string', enum: ['battery', 'offline', 'temperature', 'movement'] },
|
|||
|
|
description: '预警类型筛选'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '获取列表成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'array', items: { type: 'object' } },
|
|||
|
|
total: { type: 'integer' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/eartag/{id}'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能耳标预警'],
|
|||
|
|
summary: '获取单个智能耳标预警详情',
|
|||
|
|
description: '获取指定ID的智能耳标预警详细信息',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'id',
|
|||
|
|
in: 'path',
|
|||
|
|
required: true,
|
|||
|
|
schema: { type: 'string' },
|
|||
|
|
description: '预警ID'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '获取详情成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/eartag/{id}/handle'] = {
|
|||
|
|
post: {
|
|||
|
|
tags: ['智能耳标预警'],
|
|||
|
|
summary: '处理智能耳标预警',
|
|||
|
|
description: '处理指定的智能耳标预警',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'id',
|
|||
|
|
in: 'path',
|
|||
|
|
required: true,
|
|||
|
|
schema: { type: 'string' },
|
|||
|
|
description: '预警ID'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
requestBody: {
|
|||
|
|
required: true,
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
action: { type: 'string', description: '处理动作' },
|
|||
|
|
notes: { type: 'string', description: '处理备注' },
|
|||
|
|
handler: { type: 'string', description: '处理人' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '处理成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/eartag/batch-handle'] = {
|
|||
|
|
post: {
|
|||
|
|
tags: ['智能耳标预警'],
|
|||
|
|
summary: '批量处理智能耳标预警',
|
|||
|
|
description: '批量处理多个智能耳标预警',
|
|||
|
|
requestBody: {
|
|||
|
|
required: true,
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
required: ['alertIds'],
|
|||
|
|
properties: {
|
|||
|
|
alertIds: { type: 'array', items: { type: 'string' }, description: '预警ID列表' },
|
|||
|
|
action: { type: 'string', description: '处理动作' },
|
|||
|
|
notes: { type: 'string', description: '处理备注' },
|
|||
|
|
handler: { type: 'string', description: '处理人' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '批量处理成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/eartag/export'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能耳标预警'],
|
|||
|
|
summary: '导出智能耳标预警数据',
|
|||
|
|
description: '导出智能耳标预警数据,支持JSON和CSV格式',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'format',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'string', enum: ['json', 'csv'], default: 'json' },
|
|||
|
|
description: '导出格式'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '导出成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'array', items: { type: 'object' } },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 智能项圈预警API路径
|
|||
|
|
specs.paths['/smart-alerts/public/collar/stats'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能项圈预警'],
|
|||
|
|
summary: '获取智能项圈预警统计',
|
|||
|
|
description: '获取智能项圈预警的统计数据,包括各类预警的数量和设备总数',
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '获取统计成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/collar'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能项圈预警'],
|
|||
|
|
summary: '获取智能项圈预警列表',
|
|||
|
|
description: '获取智能项圈预警列表,支持分页、搜索和筛选',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'page',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'integer', default: 1 },
|
|||
|
|
description: '页码'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: 'limit',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'integer', default: 10 },
|
|||
|
|
description: '每页数量'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: 'search',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'string' },
|
|||
|
|
description: '搜索关键词'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: 'alertType',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'string', enum: ['battery', 'offline', 'temperature', 'movement', 'wear'] },
|
|||
|
|
description: '预警类型筛选'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '获取列表成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'array', items: { type: 'object' } },
|
|||
|
|
total: { type: 'integer' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/collar/{id}'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能项圈预警'],
|
|||
|
|
summary: '获取单个智能项圈预警详情',
|
|||
|
|
description: '获取指定ID的智能项圈预警详细信息',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'id',
|
|||
|
|
in: 'path',
|
|||
|
|
required: true,
|
|||
|
|
schema: { type: 'string' },
|
|||
|
|
description: '预警ID'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '获取详情成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/collar/{id}/handle'] = {
|
|||
|
|
post: {
|
|||
|
|
tags: ['智能项圈预警'],
|
|||
|
|
summary: '处理智能项圈预警',
|
|||
|
|
description: '处理指定的智能项圈预警',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'id',
|
|||
|
|
in: 'path',
|
|||
|
|
required: true,
|
|||
|
|
schema: { type: 'string' },
|
|||
|
|
description: '预警ID'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
requestBody: {
|
|||
|
|
required: true,
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
action: { type: 'string', description: '处理动作' },
|
|||
|
|
notes: { type: 'string', description: '处理备注' },
|
|||
|
|
handler: { type: 'string', description: '处理人' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '处理成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/collar/batch-handle'] = {
|
|||
|
|
post: {
|
|||
|
|
tags: ['智能项圈预警'],
|
|||
|
|
summary: '批量处理智能项圈预警',
|
|||
|
|
description: '批量处理多个智能项圈预警',
|
|||
|
|
requestBody: {
|
|||
|
|
required: true,
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
required: ['alertIds'],
|
|||
|
|
properties: {
|
|||
|
|
alertIds: { type: 'array', items: { type: 'string' }, description: '预警ID列表' },
|
|||
|
|
action: { type: 'string', description: '处理动作' },
|
|||
|
|
notes: { type: 'string', description: '处理备注' },
|
|||
|
|
handler: { type: 'string', description: '处理人' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '批量处理成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'object' },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
specs.paths['/smart-alerts/public/collar/export'] = {
|
|||
|
|
get: {
|
|||
|
|
tags: ['智能项圈预警'],
|
|||
|
|
summary: '导出智能项圈预警数据',
|
|||
|
|
description: '导出智能项圈预警数据,支持JSON和CSV格式',
|
|||
|
|
parameters: [
|
|||
|
|
{
|
|||
|
|
name: 'format',
|
|||
|
|
in: 'query',
|
|||
|
|
schema: { type: 'string', enum: ['json', 'csv'], default: 'json' },
|
|||
|
|
description: '导出格式'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
responses: {
|
|||
|
|
'200': {
|
|||
|
|
description: '导出成功',
|
|||
|
|
content: {
|
|||
|
|
'application/json': {
|
|||
|
|
schema: {
|
|||
|
|
type: 'object',
|
|||
|
|
properties: {
|
|||
|
|
success: { type: 'boolean' },
|
|||
|
|
data: { type: 'array', items: { type: 'object' } },
|
|||
|
|
message: { type: 'string' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
module.exports = specs;
|