package org.xyzh.api.bidding.vo;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.databind.JsonNode;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 招标要素VO
 * 用于前端展示招标要素信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "招标要素VO")
public class BiddingRequirementVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "要素ID")
    private String reqId;
    
    @Schema(description = "所属项目ID")
    private String projectId;
    
    @Schema(description = "项目名称")
    private String projectName;
    
    @Schema(description = "来源文档ID")
    private String docId;
    
    @Schema(description = "来源文档名称")
    private String docName;
    
    @Schema(description = "要素类别")
    private String reqCategory;
    
    @Schema(description = "要素类别名称（中文）")
    private String reqCategoryName;
    
    @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 = "优先级标签（高/中/低）")
    private String priorityLabel;
    
    @Schema(description = "提取方式")
    private String extractionMethod;
    
    @Schema(description = "提取方式名称")
    private String extractionMethodName;
    
    @Schema(description = "置信度分数")
    private BigDecimal confidenceScore;
    
    @Schema(description = "置信度百分比")
    private Integer confidencePercentage;
    
    @Schema(description = "来源位置")
    private JsonNode sourceLocation;
    
    @Schema(description = "来源位置描述")
    private String sourceLocationDesc;
    
    @Schema(description = "合规状态")
    private String complianceStatus;
    
    @Schema(description = "合规状态名称")
    private String complianceStatusName;
    
    @Schema(description = "合规状态标签颜色")
    private String complianceStatusColor;
    
    @Schema(description = "响应内容")
    private String responseContent;
    
    @Schema(description = "是否已响应", defaultValue = "false")
    private Boolean hasResponse;
    
    @Schema(description = "备注")
    private String notes;
    
    @Schema(description = "创建者姓名")
    private String creatorName;
}
