Files
autoAiWorkSys/_doc/指令和任务模式适配检查报告.md
张成 e27c0dc41a 1
2025-11-26 15:00:14 +08:00

4.1 KiB
Raw Blame History

指令和任务模式适配检查报告

📋 检查范围

检查 api/middleware 目录下的代码是否适用于新的指令和任务模式。

已适配的部分

1. 任务处理器 (taskHandlers.js)

  • 正确使用 command.executeCommands() 执行指令
  • handleAutoDeliverTask 中创建指令并执行
  • 指令类型使用驼峰命名(getOnlineResume, getJobList, applyJob

2. 指令管理器 (command.js)

  • 已重构完成,统一封装指令执行
  • 统一处理成功、失败、超时
  • 统一记录数据库
  • 支持驼峰转下划线的命名转换

3. 任务队列 (taskQueue.js)

  • 正确使用任务处理器
  • 通过 taskHandlers 执行任务

⚠️ 需要修复的问题

1. 方法命名不一致

问题描述

  • 指令类型使用驼峰命名:getOnlineResume, getJobList, applyJob
  • 大部分方法使用下划线命名:get_online_resume, get_job_list
  • applyJob 方法名是驼峰命名,与指令类型一致

当前转换逻辑

// command.js 中的转换
const to_snake_case = (str) => {
    if (str.includes('_')) return str;
    return str.replace(/([A-Z])/g, '_$1').toLowerCase().replace(/^_/, '');
};

// getOnlineResume -> get_online_resume ✓
// getJobList -> get_job_list ✓
// applyJob -> apply_job ✗ (但实际方法名是 applyJob)

解决方案

  1. 方案1推荐:统一使用下划线命名,将 applyJob 改为 apply_job
  2. 方案2:保持现状,command.js 中已支持两种命名方式(先尝试下划线,再尝试原名称)

当前状态方案2已实现代码可以正常工作但命名不统一。

2. sendChatMessage 方法

问题描述

  • chatManager.js 中的方法是 sendChatMessage(驼峰命名)
  • 如果指令类型是 sendChatMessage,转换后会变成 send_chat_message,但实际方法名是 sendChatMessage

当前状态command.js 中已支持回退机制,如果下划线命名找不到,会尝试原名称,所以可以正常工作。

📊 方法命名对照表

指令类型 (command_type) 转换后方法名 实际方法名 状态
getOnlineResume get_online_resume get_online_resume 匹配
getJobList get_job_list get_job_list 匹配
applyJob apply_job applyJob ⚠️ 不匹配(但可工作)
sendChatMessage send_chat_message sendChatMessage ⚠️ 不匹配(但可工作)

🔧 建议修复

方案1统一使用下划线命名推荐

修改文件

  1. api/middleware/job/jobManager.js:将 applyJob 改为 apply_job
  2. api/middleware/job/chatManager.js:将 sendChatMessage 改为 send_chat_message
  3. api/middleware/schedule/taskHandlers.js:将指令类型改为下划线命名

优点

  • 命名统一,符合项目规范
  • 代码更清晰,减少混淆

缺点

  • 需要修改多个文件
  • 可能影响其他调用方

方案2保持现状当前方案

优点

  • 不需要修改现有代码
  • command.js 已支持两种命名方式

缺点

  • 命名不统一,容易混淆
  • 代码可读性稍差

📝 其他检查项

1. deviceManager.js

  • 不直接涉及指令和任务,主要用于设备状态管理
  • 与任务系统配合良好

2. job/index.js

  • 正确导出所有方法
  • 支持下划线命名规范

3. MQTT 相关

  • 通过 mqttClient.publishAndWait 发送指令
  • 与指令系统配合良好

总结

整体适配情况良好

  1. 核心功能已正确适配新的指令和任务模式
  2. 指令执行统一封装,处理逻辑完善
  3. ⚠️ 存在命名不一致问题,但不影响功能(有回退机制)
  4. 💡 建议统一命名规范,提高代码可维护性

🎯 下一步行动

  1. 可选:统一方法命名规范(下划线命名)
  2. 可选:添加单元测试验证指令执行流程
  3. 可选:完善错误处理和日志记录