package com.common.entity;

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

import java.time.LocalDateTime;
import java.util.UUID;

/**
 * 分析规则实体类
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalysisAnalysisRule {
    
    /**
     * 规则唯一标识（UUID）
     */
    private String  ruleId;
    
    /**
     * 创建用户账号
     */
    private String createUser;
    
    /**
     * 规则名称（界面显示用）
     */
    private String ruleName;
    
    /**
     * 分析方式：高级版/基础版
     */
    private String analysisMethod;
    
    /**
     * 运行模式：realtime-实时流式/offline-离线批处理
     */
    private String runMode;
    
    /**
     * 规则输出类型：risk_alarm-风险告警/statistics-统计报表
     */
    private String ruleOutput;
    
    /**
     * 所属组织机构编码
     */
    private String organization;
    
    /**
     * 任务状态：running-正在执行/stopped-已停止/waiting-等待中
     */
    private String taskStatus;
    
    /**
     * 创建部门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
     */
    private String tenantId;
    
    /**
     * 规则详细描述
     */
    private String ruleDesc;
    
    /**
     * 规则分类编码（预留扩展用）
     */
    private Integer ruleType;
    
    /**
     * 规则启用状态（0-禁用/1-启用等）
     */
    private Integer ruleStatus;
    
    /**
     * 规则配置内容（JSON或结构化文本）
     */
    private String ruleContent;
    
    /**
     * 规则计算表达式（如SQL片段或自定义脚本）
     */
    private String ruleExpression;
    
    /**
     * 规则执行优先级（数值越大优先级越高）
     */
    private Long priority;
    
    /**
     * 规则标签，多个标签用逗号分隔
     */
    private String tags;
    
    /**
     * 规则版本号，用于版本管理
     */
    private Integer version;
    
    /**
     * 分组ID
     */
    private Integer subsetId;
}
