1
This commit is contained in:
118
api/services/index.js
Normal file
118
api/services/index.js
Normal file
@@ -0,0 +1,118 @@
|
||||
/**
|
||||
* 服务管理器
|
||||
* 统一管理所有服务实例
|
||||
*
|
||||
* 注意:此文件主要用于统一导出服务,实际调度系统使用 middleware/schedule/
|
||||
*/
|
||||
|
||||
const AIService = require('./ai_service');
|
||||
const PlaAccountService = require('./pla_account_service');
|
||||
// TaskScheduler 已废弃,实际使用 middleware/schedule/ 中的调度系统
|
||||
// MQTTHandler 文件不存在,实际使用 middleware/mqtt/mqttManager.js
|
||||
// JobService 已合并到 middleware/job/jobManager.js1
|
||||
|
||||
class ServiceManager {
|
||||
constructor(config = {}) {
|
||||
this.config = config;
|
||||
this.services = {};
|
||||
this.initialized = false;
|
||||
this.logger = config.logger || console;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化所有服务
|
||||
*/
|
||||
async initialize() {
|
||||
if (this.initialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.logger.info('初始化服务管理器...');
|
||||
|
||||
try {
|
||||
// 初始化AI服务
|
||||
if (this.config.ai?.enabled !== false) {
|
||||
this.services.ai = AIService.getInstance(this.config.ai);
|
||||
this.logger.info('✓ AI服务已初始化');
|
||||
}
|
||||
|
||||
// 注意:任务调度器实际使用 middleware/schedule/ 中的 ScheduleManager
|
||||
// 注意:MQTT处理器实际使用 middleware/mqtt/mqttManager.js
|
||||
|
||||
this.initialized = true;
|
||||
this.logger.info('服务管理器初始化完成');
|
||||
} catch (error) {
|
||||
this.logger.error('服务管理器初始化失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取AI服务
|
||||
* @returns {AIService}
|
||||
*/
|
||||
getAI() {
|
||||
return this.services.ai;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查服务健康状态
|
||||
* @returns {Object}
|
||||
*/
|
||||
getHealthStatus() {
|
||||
return {
|
||||
initialized: this.initialized,
|
||||
services: {
|
||||
ai: !!this.services.ai
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭所有服务
|
||||
*/
|
||||
async shutdown() {
|
||||
this.logger.info('关闭服务管理器...');
|
||||
|
||||
try {
|
||||
this.initialized = false;
|
||||
this.logger.info('服务管理器已关闭');
|
||||
} catch (error) {
|
||||
this.logger.error('关闭服务管理器失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 导出单例
|
||||
let instance = null;
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* 获取服务管理器实例
|
||||
* @param {Object} config - 配置选项
|
||||
* @returns {ServiceManager}
|
||||
*/
|
||||
getInstance(config) {
|
||||
if (!instance) {
|
||||
instance = new ServiceManager(config);
|
||||
}
|
||||
return instance;
|
||||
},
|
||||
|
||||
/**
|
||||
* 创建新的服务管理器实例
|
||||
* @param {Object} config - 配置选项
|
||||
* @returns {ServiceManager}
|
||||
*/
|
||||
createInstance(config) {
|
||||
return new ServiceManager(config);
|
||||
},
|
||||
|
||||
// 导出各个服务类
|
||||
AIService,
|
||||
PlaAccountService
|
||||
// TaskScheduler 已废弃
|
||||
// MQTTHandler 文件不存在
|
||||
// JobService 已合并到 middleware/job/jobManager.js
|
||||
};
|
||||
Reference in New Issue
Block a user