package com.common.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 分析字段配置实体类
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalysisField {

    /**
     * 主键ID，自增序列
     */
    private Integer id;

    /**
     * 关联的规则配置UUID
     */
    private String ruleId;

    /**
     * 字段类型（如维度/指标/计算字段等）
     */
    private String type;

    /**
     * 数据源名称，如数据库连接名或数据流标识
     */
    private String dataSource;

    /**
     * 数据库名称
     */
    private String database;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 表别名，用于SQL语句中的表引用
     */
    private String tableAlias;

    /**
     * 字段名
     */
    private String columnName;

    /**
     * 字段描述
     */
    private String columnDesc;

    /**
     * 字段数据类型（如int/varchar/decimal等）
     */
    private String dataType;

    /**
     * 计算函数名（如SUM/COUNT/自定义函数，NULL表示原始字段）
     */
    private String fn;

    /**
     * 函数参数列表，JSON数组格式（即使无参数也保留空数组）
     */
    private String arguments;

    /**
     * 字段显示占位符（用于前端展示的默认文本）
     */
    private String placeholder;

    /**
     * 基础类型编码（预留分类扩展用）
     */
    private Integer baseType;

    /**
     * 字段分类ID
     */
    private Integer categoryId;

    /**
     * 创建部门ID
     */
    private Long createDept;

    /**
     * 删除标志（0-未删除/1-已删除）
     */
    private String delFlag;

    /**
     * 记录创建时间
     */
    private LocalDateTime createTime;

    /**
     * 记录更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 创建人ID
     */
    private Long createBy;

    /**
     * 更新人ID
     */
    private Long updateBy;

    /**
     * 备注说明
     */
    private String remark;

    /**
     * 租户ID，默认000000表示系统级配置
     */
    private String tenantId;

    /**
     * 告警字段名（别名）
     */
    private String alarmColumnName;

    /**
     * 告警字段描述
     */
    private String alarmColumnDesc;
}

