package org.xyzh.api.workcase.dto;

import java.util.Date;
import java.util.List;

import com.alibaba.fastjson2.JSONObject;
import org.xyzh.common.dto.BaseDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @description    聊天消息表数据对象DTO
 * @filename    TbChatMessageDTO.java
 * @author    cascade
 * @copyright xyzh
 * @since 2025-12-20
 */
@Data
@Schema(description = "聊天消息表对象")
public class TbChatRoomMessageDTO extends BaseDTO {
    private static final long serialVersionUID = 1L;

    @Schema(description = "消息ID")
    private String messageId;

    @Schema(description = "聊天室ID")
    private String roomId;

    @Schema(description = "发送者ID")
    private String senderId;

    @Schema(description = "发送者类型：guest-来客 agent-客服 ai-AI助手 system-系统消息")
    private String senderType;

    @Schema(description = "发送者名称")
    private String senderName;

    @Schema(description = "消息类型：text-文本 image-图片 file-文件 voice-语音 video-视频 system-系统消息 meeting-会议通知")
    private String messageType;

    @Schema(description = "消息内容")
    private String content;

    @Schema(description = "附件文件ID数组")
    private List<String> files;

    @Schema(description = "扩展内容（会议链接、引用信息等）")
    private JSONObject contentExtra;

    @Schema(description = "回复的消息ID")
    private String replyToMsgId;

    @Schema(description = "是否AI消息")
    private Boolean isAiMessage;

    @Schema(description = "AI原始消息ID")
    private String aiMessageId;

    @Schema(description = "状态：sending-发送中 sent-已发送 delivered-已送达 read-已读 failed-失败 recalled-已撤回")
    private String status;

    @Schema(description = "已读人数")
    private Integer readCount;

    @Schema(description = "发送时间")
    private Date sendTime;
}
