/**
 * @ProjectName: 智慧评标-主观分助手
 * @Package: com.zhpb.gdyd_zhpb_zgf.dto
 * @ClassName: ProjectFilesResponse
 * @Description: 项目文件列表查询响应DTO
 * @Author: 张志锋
 * @Date: 2025-11-03
 * @Version: 1.0
 * @Copyright: © 2025 智慧评标-主观分助手
 */
package com.zhpb.gdyd_zhpb_zgf.dto;

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

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

/**
 * 项目文件列表查询响应DTO
 */
@Data
@Schema(description = "项目文件列表查询响应")
public class ProjectFilesResponse {

    @Schema(description = "响应状态码，0表示成功", example = "0")
    private Integer code;

    @Schema(description = "响应消息", example = "查询成功")
    private String message;

    @Schema(description = "响应数据")
    private ProjectFilesData data;

    @Data
    @Schema(description = "项目文件数据")
    public static class ProjectFilesData {

        @Schema(description = "项目ID", example = "7654")
        private String projectId;

        @Schema(description = "文件总数", example = "6")
        private Integer totalFiles;

        @Schema(description = "文件列表")
        private List<FileInfo> files;

        @Schema(description = "按公司分组的文件列表")
        private Map<String, List<String>> companyFiles;
    }

    @Data
    @Schema(description = "文件信息")
    public static class FileInfo {

        @Schema(description = "文件ID", example = "1a0a5bdd-b073-4249-be61-e925be42e87f")
        private String fileId;

        @Schema(description = "公司名称", example = "xx科技有限公司")
        private String companyName;

        @Schema(description = "文件名", example = "1 技术规范文件应答.docx")
        private String fileName;

        @Schema(description = "文件大小（字节）", example = "58680")
        private Long fileSize;

        @Schema(description = "文件类型", example = "docx")
        private String fileType;

        @Schema(description = "相对路径", example = "test_files\\xx科技有限公司\\技术文件-2502071344\\1 技术规范文件应答.docx")
        private String relativePath;

        @Schema(description = "上传时间", example = "2025-11-03T15:42:35.372798")
        private LocalDateTime uploadTime;

        @Schema(description = "向量化状态", example = "processing", allowableValues = {"not_started", "processing", "completed", "failed"})
        private String vectorizationStatus;
    }
}
