package org.xyzh.api.workcase.vo;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.Date;
import java.util.List;

/**
 * 会话VO
 * 用于前端展示会话信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "会话VO")
public class ConversationVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "会话ID")
    private String conversationId;
    
    @Schema(description = "客户ID")
    private String customerId;
    
    @Schema(description = "客户姓名")
    private String customerName;
    
    @Schema(description = "客户头像")
    private String customerAvatar;
    
    @Schema(description = "会话类型")
    private String conversationType;
    
    @Schema(description = "会话类型名称")
    private String conversationTypeName;
    
    @Schema(description = "渠道")
    private String channel;
    
    @Schema(description = "渠道名称")
    private String channelName;
    
    @Schema(description = "智能体ID或客服人员ID")
    private String agentId;
    
    @Schema(description = "座席名称")
    private String agentName;
    
    @Schema(description = "座席类型")
    private String agentType;
    
    @Schema(description = "座席类型名称")
    private String agentTypeName;
    
    @Schema(description = "会话开始时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date sessionStartTime;
    
    @Schema(description = "会话结束时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date sessionEndTime;
    
    @Schema(description = "会话时长（秒）")
    private Integer durationSeconds;
    
    @Schema(description = "会话时长格式化显示")
    private String durationFormatted;
    
    @Schema(description = "消息数量")
    private Integer messageCount;
    
    @Schema(description = "会话状态")
    private String conversationStatus;
    
    @Schema(description = "会话状态名称")
    private String conversationStatusName;
    
    @Schema(description = "会话状态颜色")
    private String statusColor;
    
    @Schema(description = "满意度评分（1-5星）")
    private Integer satisfactionRating;
    
    @Schema(description = "满意度反馈")
    private String satisfactionFeedback;
    
    @Schema(description = "会话摘要")
    private String summary;
    
    @Schema(description = "会话标签")
    private List<String> tags;
    
    @Schema(description = "会话元数据")
    private JsonNode metadata;
    
    @Schema(description = "最后一条消息内容")
    private String lastMessageContent;
    
    @Schema(description = "最后一条消息时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date lastMessageTime;
    
    @Schema(description = "创建者姓名")
    private String creatorName;
}
