package com.emotion.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 对话实体
 *
 * @author huazhongmin
 * @date 2025-07-23
 */
@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_conversation")
public class Conversation extends BaseEntity {

    /**
     * 用户ID (关联user.id)
     */
    @TableField("user_id")
    private String userId;

    /**
     * 用户类型: registered-注册用户, guest-访客用户
     */
    @TableField("user_type")
    private String userType;

    /**
     * 对话标题
     */
    @TableField("title")
    private String title;

    /**
     * 对话类型
     */
    @TableField("type")
    private String type;

    /**
     * 状态: active-活跃, ended-结束, archived-归档
     */
    @TableField("status")
    private String conversationStatus;

    /**
     * Coze对话ID
     */
    @TableField("coze_conversation_id")
    private String cozeConversationId;

    /**
     * 使用的Bot ID
     */
    @TableField("bot_id")
    private String botId;

    /**
     * 使用的Workflow ID
     */
    @TableField("workflow_id")
    private String workflowId;

    /**
     * 初始消息
     */
    @TableField("initial_message")
    private String initialMessage;

    /**
     * 上下文信息
     */
    @TableField("context")
    private String context;

    /**
     * 主要情绪
     */
    @TableField("primary_emotion")
    private String primaryEmotion;

    /**
     * 情绪强度
     */
    @TableField("emotion_intensity")
    private BigDecimal emotionIntensity;

    /**
     * 情绪趋势
     */
    @TableField("emotion_trend")
    private String emotionTrend;

    /**
     * 关键词
     */
    @TableField("keywords")
    private String keywords;

    /**
     * AI洞察
     */
    @TableField("ai_insights")
    private String aiInsights;

    /**
     * 分析置信度
     */
    @TableField("confidence")
    private BigDecimal confidence;

    /**
     * 开始时间
     */
    @TableField("start_time")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @TableField("end_time")
    private LocalDateTime endTime;

    /**
     * 最后活跃时间
     */
    @TableField("last_active_time")
    private LocalDateTime lastActiveTime;

    /**
     * 消息数量
     */
    @TableField("message_count")
    private Integer messageCount;

    /**
     * 总Token使用量
     */
    @TableField("total_tokens")
    private Integer totalTokens;

    /**
     * 总费用
     */
    @TableField("total_cost")
    private BigDecimal totalCost;

    /**
     * 客户端IP地址 (支持IPv6)
     */
    @TableField("client_ip")
    private String clientIp;

    /**
     * 用户代理信息
     */
    @TableField("user_agent")
    private String userAgent;

    /**
     * 对话摘要
     */
    @TableField("summary")
    private String summary;

    /**
     * 标签
     */
    @TableField("tags")
    private String tags;

    /**
     * 扩展元数据
     */
    @TableField("metadata")
    private String metadata;
}
