package com.yhy.module.core.controller.admin.workbench.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalDateTime;
import java.util.Map;
import lombok.Data;

/**
 * 单位工程信息 Response VO
 */
@Schema(description = "工作台 - 单位工程信息 Response VO")
@Data
public class WbUnitInfoRespVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long id;

    @Schema(description = "编制树节点ID（单位工程节点）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long compileTreeId;

    @Schema(description = "工程编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "UNIT-001")
    private String unitCode;

    @Schema(description = "工程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1号楼")
    private String unitName;

    @Schema(description = "专业类别（字典：wb_specialty_type）", example = "architecture")
    private String specialtyType;

    @Schema(description = "库类别（字典：wb_library_type）", example = "boq_pricing")
    private String libraryType;

    @Schema(description = "清单数据库（清单目录树ID）", example = "100")
    private Long boqCatalogItemId;

    @Schema(description = "清单数据库名称", example = "广东建筑工程清单")
    private String boqCatalogItemName;

    @Schema(description = "定额数据库（定额专业树ID）", example = "200")
    private Long quotaCatalogItemId;

    @Schema(description = "定额数据库名称", example = "广东建筑工程定额")
    private String quotaCatalogItemName;

    @Schema(description = "执行费率文件（费率模式节点ID）", example = "300")
    private Long rateModeId;

    @Schema(description = "执行费率文件名称", example = "一般计税模式")
    private String rateModeName;

    @Schema(description = "建设规模（字典：wb_construction_scale）", example = "large")
    private String constructionScale;

    @Schema(description = "配置快照（预留）")
    private Map<String, Object> configSnapshot;

    @Schema(description = "扩展属性")
    private Map<String, Object> attributes;

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

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
}
