package org.xyzh.api.bidding.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.dto.BaseDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import com.fasterxml.jackson.databind.JsonNode;
import java.math.BigDecimal;

/**
 * 招标要素DTO
 * 用于创建和更新招标要素
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "招标要素DTO")
public class BiddingRequirementDTO extends BaseDTO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "要素ID（更新时需要）")
    private String reqId;
    
    @Schema(description = "所属项目ID")
    private String projectId;
    
    @Schema(description = "来源文档ID")
    private String docId;
    
    @Schema(description = "要素类别：commercial-商务要素/technical-技术参数/veto-否决项/qualification-资质要求/delivery-交付要求/payment-付款条件/scoring-评分标准")
    private String reqCategory;
    
    @Schema(description = "要素名称")
    private String reqName;
    
    @Schema(description = "要素内容")
    private String reqContent;
    
    @Schema(description = "要素值")
    private String reqValue;
    
    @Schema(description = "是否必填", defaultValue = "false")
    private Boolean isMandatory;
    
    @Schema(description = "是否为否决项", defaultValue = "false")
    private Boolean isVeto;
    
    @Schema(description = "优先级")
    private Integer priority;
    
    @Schema(description = "提取方式：ai-AI提取/manual-人工录入")
    private String extractionMethod;
    
    @Schema(description = "置信度分数")
    private BigDecimal confidenceScore;
    
    @Schema(description = "来源位置")
    private JsonNode sourceLocation;
    
    @Schema(description = "合规状态：compliant-符合/non_compliant-不符合/pending-待确认")
    private String complianceStatus;
    
    @Schema(description = "响应内容")
    private String responseContent;
    
    @Schema(description = "备注")
    private String notes;
}
