package com.lesingle.creation.vo.contest;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 竞赛列表 VO
 */
@Data
@Schema(description = "竞赛列表响应")
public class ContestListVO {

    @Schema(description = "竞赛 ID")
    private Long id;

    @Schema(description = "竞赛名称")
    private String contestName;

    @Schema(description = "竞赛类型：individual/team")
    private String contestType;

    @Schema(description = "竞赛状态：unpublished/published")
    private String contestState;

    @Schema(description = "进度状态：ongoing/finished")
    private String status;

    @Schema(description = "当前阶段：unpublished/registering/submitting/reviewing/finished")
    private String stage;

    @Schema(description = "竞赛开始时间")
    private LocalDateTime startTime;

    @Schema(description = "竞赛结束时间")
    private LocalDateTime endTime;

    @Schema(description = "封面 URL")
    private String coverUrl;

    @Schema(description = "海报 URL")
    private String posterUrl;

    @Schema(description = "主办单位")
    private String organizers;

    @Schema(description = "可见范围：public/designated/internal")
    private String visibility;

    @Schema(description = "报名开始时间")
    private LocalDateTime registerStartTime;

    @Schema(description = "报名结束时间")
    private LocalDateTime registerEndTime;

    @Schema(description = "作品提交开始时间")
    private LocalDateTime submitStartTime;

    @Schema(description = "作品提交结束时间")
    private LocalDateTime submitEndTime;

    @Schema(description = "评审开始时间")
    private LocalDateTime reviewStartTime;

    @Schema(description = "评审结束时间")
    private LocalDateTime reviewEndTime;

    @Schema(description = "有效状态：1-有效，2-失效")
    private Integer validState;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "报名人数")
    private Integer registrationCount;

    @Schema(description = "作品数量")
    private Integer worksCount;

    @Schema(description = "团队数量")
    private Integer teamsCount;

    @Schema(description = "评委数量")
    private Integer judgesCount;

    @Schema(description = "总作品数")
    private Integer totalWorksCount;

    @Schema(description = "已完成评审作品数")
    private Integer reviewedCount;

    @Schema(description = "附件列表（前 5 个）")
    private List<ContestAttachmentVO> attachments;
}
