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 java.util.Date;

/**
 * 聊天室VO
 * 用于前端展示聊天室信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "聊天室VO")
public class ChatRoomVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "聊天室ID")
    private String roomId;
    
    @Schema(description = "关联工单ID")
    private String workcaseId;
    
    @Schema(description = "聊天室名称")
    private String roomName;
    
    @Schema(description = "聊天室类型：workcase-工单客服")
    private String roomType;
    
    @Schema(description = "状态：active-活跃 closed-已关闭 archived-已归档")
    private String status;
    
    @Schema(description = "来客ID（创建者）")
    private String guestId;
    
    @Schema(description = "来客姓名")
    private String guestName;
    
    @Schema(description = "AI对话会话ID")
    private String aiSessionId;
    
    @Schema(description = "当前负责客服ID")
    private String currentAgentId;
    
    @Schema(description = "当前负责客服名称")
    private String currentAgentName;
    
    @Schema(description = "已加入的客服人数")
    private Integer agentCount;
    
    @Schema(description = "消息总数")
    private Integer messageCount;
    
    @Schema(description = "未读消息数（客服端）")
    private Integer unreadCount;
    
    @Schema(description = "最后消息时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date lastMessageTime;
    
    @Schema(description = "最后一条消息内容")
    private String lastMessage;

    @Schema(description = "服务评分（1-5星）")
    private Integer commentLevel;

    @Schema(description = "设备代码")
    private String deviceCode;

    @Schema(description = "关闭人")
    private String closedBy;
    
    @Schema(description = "关闭人姓名")
    private String closedByName;
    
    @Schema(description = "关闭时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date closedTime;
}
