package com.wok.supportbot.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.wok.supportbot.handler.PostgresJsonTypeHandler; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.Map; /** * 看板快照实体 * 每日凌晨汇总前一天的运营指标数据 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor @TableName(value = "dashboard_snapshot", autoResultMap = true) public class DashboardSnapshot implements Serializable { @Serial @TableField(exist = false) private static final long serialVersionUID = 1L; /** 主键ID(雪花算法) */ @TableId(value = "id", type = IdType.ASSIGN_ID) @JsonSerialize(using = ToStringSerializer.class) private Long id; /** 快照日期(唯一) */ @TableField("snapshot_date") private Date snapshotDate; /** 对话数 */ @TableField("conversation_count") private Integer conversationCount; /** 消息数 */ @TableField("message_count") private Integer messageCount; /** 满意率(0~1) */ @TableField("satisfaction_rate") private Double satisfactionRate; /** 点赞数 */ @TableField("thumbs_up_count") private Integer thumbsUpCount; /** 点踩数 */ @TableField("thumbs_down_count") private Integer thumbsDownCount; /** RAG 命中数 */ @TableField("rag_hit_count") private Integer ragHitCount; /** RAG 未命中数 */ @TableField("rag_miss_count") private Integer ragMissCount; /** 平均响应时间(毫秒) */ @TableField("avg_response_time") private Double avgResponseTime; /** 热门问题 TOP 列表(JSONB) */ @TableField(value = "top_questions", typeHandler = PostgresJsonTypeHandler.class) private Map topQuestions; /** 命中文档 TOP 列表(JSONB) */ @TableField(value = "top_hit_documents", typeHandler = PostgresJsonTypeHandler.class) private Map topHitDocuments; /** 未命中问题列表(JSONB) */ @TableField(value = "miss_questions", typeHandler = PostgresJsonTypeHandler.class) private Map missQuestions; /** 创建时间 */ @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; /** 更新时间 */ @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) private Date updateTime; }