Files
autoAiWorkSys/api/services/index.js
张成 d14f89e008 1
2025-12-30 14:51:33 +08:00

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