package com.hdkj.lt.modle.dto.recon;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 单个重构方案 (reconfiguration_schemes.list[] 一项).
 * <p>
 * [FHZG-RECON-MULTI] 新结构: 原 raw_result 顶层的 SwitchOp / switchSeq / feederResult /
 * volResult / switchResult / finalCheck / metrics 全部下移到每个 scheme 内;
 * 另含方案标识 rank / scheme_id / scheme_name 与 objective.
 * metric_new 不入库, 由 @JsonIgnoreProperties 忽略.
 */
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ReconfigurationSchemeDTO {

    private Integer rank;

    @JsonProperty("scheme_id")
    private String schemeId;

    @JsonProperty("scheme_name")
    private String schemeName;

    /** 方案 objective (含 value / improvement_vs_initial); 入主表 objective JSON 列。顶层共享 objective 不入库。 */
    private JsonNode objective;

    /** 开关操作(简化版), 源 JSON 为 PascalCase "SwitchOp" */
    @JsonProperty("SwitchOp")
    private SwitchOpDTO switchOp;

    @JsonProperty("switchSeq")
    private SwitchSeqDTO switchSeq;

    @JsonProperty("feederResult")
    private FeederResultDTO feederResult;

    @JsonProperty("volResult")
    private VolResultDTO volResult;

    @JsonProperty("switchResult")
    private SwitchResultDTO switchResult;

    @JsonProperty("finalCheck")
    private FinalCheckDTO finalCheck;

    @JsonProperty("metrics")
    private MetricsDTO metrics;
}
