const BaseHandler = require('./baseHandler'); const ConfigManager = require('../services/configManager'); const command = require('../core/command'); const config = require('../infrastructure/config'); /** * 自动沟通处理器 * 负责自动回复HR消息 */ class ChatHandler extends BaseHandler { /** * 处理自动沟通任务 * @param {object} task - 任务对象 * @returns {Promise} 执行结果 */ async handle(task) { return await this.execute(task, async () => { return await this.doChat(task); }, { checkAuth: true, checkOnline: true, recordDeviceMetrics: true }); } /** * 执行沟通逻辑 */ async doChat(task) { const { sn_code, taskParams } = task; const { platform = 'boss' } = taskParams; console.log(`[自动沟通] 开始 - 设备: ${sn_code}`); // 1. 获取账户配置 const accountConfig = await this.getAccountConfig(sn_code, ['platform_type', 'chat_strategy']); if (!accountConfig) { return { chatCount: 0, message: '未找到账户配置' }; } // 2. 解析沟通策略配置 const chatStrategy = ConfigManager.parseChatStrategy(accountConfig.chat_strategy); // 3. 检查沟通时间范围 const timeRange = ConfigManager.getTimeRange(chatStrategy); if (timeRange) { const timeRangeValidator = require('../services/timeRangeValidator'); const timeCheck = timeRangeValidator.checkTimeRange(timeRange); if (!timeCheck.allowed) { return { chatCount: 0, message: timeCheck.reason }; } } // 4. 创建自动沟通 AI 指令(内部会先获取列表,再获取详情并自动回复) const chatCommand = { command_type: 'auto_chat_ai', command_name: 'auto_chat_ai', command_params: { platform: platform || accountConfig.platform_type || 'boss', pageCount: chatStrategy.page_count || 3 }, priority: config.getTaskPriority('auto_chat') || 6 }; // 5. 执行指令(任务队列会保证该设备内串行执行,不并发下发指令) const exec_result = await command.executeCommands(task.id, [chatCommand], this.mqttClient); const first = exec_result && Array.isArray(exec_result.results) && exec_result.results[0] ? exec_result.results[0].result || {} : {}; console.log(`[自动沟通] 完成 - 设备: ${sn_code}`); return { chatCount: first.replied_count || 0, message: first.message || '自动沟通完成', detail: first }; } } module.exports = ChatHandler;