package com.usky.eg.service.vo;

import lombok.Data;

import java.util.List;

/**
 * MQTT 远程升级请求体：向 Broker 发布下行 JSON（终端 {@code onCommand} 接收后自行下载安装）。
 * <p>
 * {@code fileUrl} 必填（http/https）。须指定 {@code deviceId} 或与终端序列号一致的 {@code deviceCode}，用于主题
 * {@code eg.mqtt.command-topic-template} 中的占位符 {@code {deviceId}}。
 * {@code deviceIp}、{@code devicePort} 可选，会一并写入下行 JSON 供终端展示或日志。
 * <p>
 * 批量：当 {@code items} 非空时，与本对象同级的 {@code fileUrl}、{@code launchPackage} 对所有设备共用；
 * 忽略顶层 {@code deviceCode}、{@code deviceIp}、{@code devicePort}。{@code items} 每项见 {@link EgDeviceAdbRemoteUpgradeBatchItemVO}。
 */
@Data
public class EgDeviceAdbRemoteUpgradeVO {

    /** 非空且非空列表时启用批量模式 */
    private List<EgDeviceAdbRemoteUpgradeBatchItemVO> items;

    /**
     * 与终端 {@code connectWithDevice({ deviceId: getSerial() })} 一致；
     * 未传时与 {@link #deviceCode} 等价（二选一至少填一个）。
     */
    private String deviceId;

    private String deviceCode;
    private String deviceIp;
    /** 可选，写入下行 JSON */
    private String devicePort;
    private String fileUrl;
    /** 可选，写入下行 JSON，终端安装成功后自行拉起 */
    private String launchPackage;
}
