package com.yupi.project.service;

import com.yupi.project.model.enums.CommandTypeEnum;

/**
 * MQTT 消息发布服务接口。
 */
public interface MqttService {

    /**
     * 向指定的机器人发送指令。
     *
     * @param robotId       机器人ID
     * @param commandType   指令类型
     * @param payloadJson   指令的参数内容 (JSON格式字符串)。对于无参数指令，可以为 null 或空字符串。
     * @param sessionId     关联的充电会话ID (可选, 主要用于充电相关指令)
     * @param associatedTaskId (可选) 如果此指令关联到一个已由调用方创建的RobotTask，则传入其ID。
     *                         如果为null，MqttService内部可能会尝试创建新任务（取决于实现策略，但当前策略是外部创建）。
     * @return 如果指令成功进入发送流程（任务已创建并尝试发布），返回 true；
     *         如果机器人正忙或创建任务失败等原因导致无法发送，返回 false。
     * @throws Exception 如果MQTT发布过程中发生异常 (例如 MqttException)
     */
    boolean sendCommand(String robotId, CommandTypeEnum commandType, String payloadJson, Long sessionId, Long associatedTaskId) throws Exception;

} 