119 lines
2.7 KiB
JavaScript
119 lines
2.7 KiB
JavaScript
/**
|
||
* 服务管理器
|
||
* 统一管理所有服务实例
|
||
*
|
||
* 注意:此文件主要用于统一导出服务,实际调度系统使用 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
|
||
};
|