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;

import java.util.List;

/**
 * 算法响应 raw_result 对象.
 * <p>
 * [FHZG-RECON-MULTI] 结构变更: raw_result 现含共享标量(group_id/group_sid/group_name/
 * st_area_id/status/algo/computeResult/detalDesc) + reconfiguration_schemes.list (多方案)。
 * 原 SwitchOp / switchSeq / feederResult / volResult / switchResult / finalCheck / metrics
 * 已下移到每个 scheme, 详见 {@link ReconfigurationSchemeDTO}。
 * 主表 fhzg_recon_result 由单条变为多条(每方案一条)。
 * 顶层 objective(共享排序配置) 不入库, 由 @JsonIgnoreProperties 忽略。
 */
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class RawResultDTO {

    @JsonProperty("group_id")
    private String groupId;

    @JsonProperty("group_sid")
    private String groupSid;

    @JsonProperty("group_name")
    private String groupName;

    @JsonProperty("st_area_id")
    private Integer stAreaId;

    private String status;

    private String algo;

    @JsonProperty("computeResult")
    private String computeResult;

    @JsonProperty("detalDesc")
    private String detalDesc;

    /** [FHZG-RECON-MULTI] 多方案容器 */
    @JsonProperty("reconfiguration_schemes")
    private ReconfigurationSchemesDTO reconfigurationSchemes;

    /**
     * reconfiguration_schemes 容器.
     * count / sort_by / order / lower_is_better / errors 均不入库; 仅取 list。
     * errors 非空时不影响入库(忽略); 缺子节点的方案跳过对应子表。
     */
    @Data
    @NoArgsConstructor
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class ReconfigurationSchemesDTO {

        private Integer count;

        /** 算法侧错误信息, 仅忽略, 不入库不阻断。 */
        private JsonNode errors;

        @JsonProperty("list")
        private List<ReconfigurationSchemeDTO> list;
    }
}
