/** * 测试Swagger规范生成 */ import swaggerJsdoc from 'swagger-jsdoc'; import fs from 'fs'; const options = { definition: { openapi: '3.0.0', info: { title: 'ERPTurbo_Poster API', version: '1.0.0', description: '海报和PDF生成服务API文档', }, servers: [ { url: 'http://localhost:3000', description: '开发服务器' } ] }, apis: ['./server.mjs', './lib/routes.js'], // 包含API注释的文件 }; try { const specs = swaggerJsdoc(options); console.log('✅ Swagger规范生成成功!'); console.log(`📊 发现 ${specs.paths ? Object.keys(specs.paths).length : 0} 个API端点`); // 保存生成的规范到文件,以便查看 fs.writeFileSync('./swagger.json', JSON.stringify(specs, null, 2)); console.log('📄 Swagger规范已保存到 swagger.json'); // 验证关键端点是否存在 const paths = specs.paths; if (paths['/api/v1/poster'] && paths['/api/v1/poster'].post) { console.log('✅ 海报API端点文档已生成'); } else { console.log('❌ 海报API端点文档未找到'); } if (paths['/api/v1/pdf'] && paths['/api/v1/pdf'].post) { console.log('✅ PDF API端点文档已生成'); } else { console.log('❌ PDF API端点文档未找到'); } if (paths['/status'] && paths['/status'].get) { console.log('✅ 健康检查API端点文档已生成'); } else { console.log('❌ 健康检查API端点文档未找到'); } } catch (error) { console.error('❌ Swagger规范生成失败:', error.message); }