package com.qqchen.deploy.backend.framework.ssh.websocket.response;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.qqchen.deploy.backend.framework.enums.SSHMessageType;
import lombok.Data;

/**
 * SSH WebSocket响应基类（Framework层）
 * 
 * 所有后端发送到前端的响应消息都应该继承此类
 * 使用Jackson的@JsonTypeInfo和@JsonSubTypes实现多态序列化
 */
@Data
@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    property = "type",
    visible = true
)
@JsonSubTypes({
    @JsonSubTypes.Type(value = SSHOutputResponse.class, name = "output"),
    @JsonSubTypes.Type(value = SSHStatusResponse.class, name = "status"),
    @JsonSubTypes.Type(value = SSHErrorResponse.class, name = "error")
})
public abstract class SSHBaseResponse {
    /**
     * 响应类型（使用枚举保证类型安全）
     */
    private SSHMessageType type;
    
    /**
     * 响应数据（统一字段）
     * - OUTPUT: 终端输出内容
     * - STATUS: 状态值（connected/disconnected等）
     * - ERROR: 错误消息
     */
    private String data;
}
