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.alibaba.fastjson2.annotation.JSONField;
import java.util.Date;
import java.util.List;

/**
 * 项目流程节点DTO
 * 用于创建和更新流程节点
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "项目流程节点DTO")
public class ProcessNodeDTO extends BaseDTO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "流程节点ID（更新时需要）")
    private String processId;
    
    @Schema(description = "所属项目ID")
    private String projectId;
    
    @Schema(description = "节点名称")
    private String nodeName;
    
    @Schema(description = "节点类型：collection-文件收集/analysis-需求分析/preparation-文件准备/review-内部审核/submission-投标提交/opening-开标/result-结果通知")
    private String nodeType;
    
    @Schema(description = "节点顺序")
    private Integer nodeOrder;
    
    @Schema(description = "节点状态：pending-待处理/in_progress-进行中/completed-已完成/skipped-已跳过")
    private String nodeStatus;
    
    @Schema(description = "计划开始时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date plannedStartTime;
    
    @Schema(description = "计划结束时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date plannedEndTime;
    
    @Schema(description = "实际开始时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date actualStartTime;
    
    @Schema(description = "实际结束时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date actualEndTime;
    
    @Schema(description = "负责人")
    private String responsibleUser;
    
    @Schema(description = "参与人员")
    private List<String> participants;
    
    @Schema(description = "节点备注")
    private String notes;
    
    @Schema(description = "附件ID数组")
    private List<String> attachments;
}
