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