package org.xyzh.api.workcase.constant;

/**
 * @description    工单模块常量类
 * @filename    WorkcaseConstant.java
 * @author    cascade
 * @copyright xyzh
 * @since 2025-12-22
 */
public class WorkcaseConstant {

    private WorkcaseConstant() {
    }

    // ========================= Redis Key 前缀 ==========================

    /**
     * 聊天室Redis key前缀
     */
    public static final String REDIS_CHAT_PREFIX = "chat:room:";

    /**
     * 聊天室在线用户 chat:room:online:{roomId}
     */
    public static final String REDIS_CHAT_ONLINE = REDIS_CHAT_PREFIX + "online:";

    /**
     * 聊天室消息锁 chat:room:lock:{roomId}
     */
    public static final String REDIS_CHAT_LOCK = REDIS_CHAT_PREFIX + "lock:";

    /**
     * 聊天室最后消息时间 chat:room:lasttime:{roomId}
     */
    public static final String REDIS_CHAT_LASTTIME = REDIS_CHAT_PREFIX + "lasttime:";

    /**
     * 聊天室列表更新通知频道
     */
    public static final String REDIS_CHAT_LIST_UPDATE = "chat:list:update";

    /**
     * 会议Redis key前缀
     */
    public static final String REDIS_MEET_PREFIX = "meet:";

    // ========================= 用户类型 ==========================

    /**
     * 用户类型：来客
     */
    public static final String USER_TYPE_GUEST = "guest";

    /**
     * 用户类型：客服
     */
    public static final String USER_TYPE_STAFF = "staff";

    /**
     * 用户类型：AI助手
     */
    public static final String USER_TYPE_AI = "ai";

    // ========================= 状态常量 ==========================

    /**
     * 聊天室状态：活跃
     */
    public static final String ROOM_STATUS_ACTIVE = "active";

    /**
     * 聊天室状态：已关闭
     */
    public static final String ROOM_STATUS_CLOSED = "closed";

    /**
     * 成员状态：活跃
     */
    public static final String MEMBER_STATUS_ACTIVE = "active";

    /**
     * 成员状态：已离开
     */
    public static final String MEMBER_STATUS_LEFT = "left";

    /**
     * 成员状态：被移除
     */
    public static final String MEMBER_STATUS_REMOVED = "removed";

    /**
     * 消息状态：已发送
     */
    public static final String MESSAGE_STATUS_SENT = "sent";

    /**
     * 消息状态：已撤回
     */
    public static final String MESSAGE_STATUS_RECALLED = "recalled";

    // ========================= 会议状态 ==========================

    /**
     * 会议状态：已计划
     */
    public static final String MEETING_STATUS_SCHEDULED = "scheduled";

    /**
     * 会议状态：进行中
     */
    public static final String MEETING_STATUS_ONGOING = "ongoing";

    /**
     * 会议状态：已结束
     */
    public static final String MEETING_STATUS_ENDED = "ended";

    // ========================= 客服状态 ==========================

    /**
     * 客服状态：在线
     */
    public static final String SERVICE_STATUS_ONLINE = "online";

    /**
     * 客服状态：离线
     */
    public static final String SERVICE_STATUS_OFFLINE = "offline";

    /**
     * 客服状态：忙碌
     */
    public static final String SERVICE_STATUS_BUSY = "busy";
}
