Files
nxxmdata/backend/swagger-simple.js
2025-09-22 19:09:45 +08:00

521 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 简化版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;