"""WebSocket 事件类型定义""" from enum import Enum from pydantic import BaseModel from datetime import datetime class EventType(str, Enum): # 客户端 -> 服务端 CHAT_SEND = "chat.send" CHAT_TYPING = "chat.typing" CHAT_READ = "chat.read" PRESENCE_UPDATE = "presence.update" # 服务端 -> 客户端 CHAT_MESSAGE = "chat.message" CHAT_TYPING_INDICATOR = "chat.typing" CHAT_READ_RECEIPT = "chat.read" CHAT_MESSAGE_DELETED = "chat.message_deleted" CONVERSATION_UPDATED = "conversation.updated" CONVERSATION_MEMBER_ADDED = "conversation.member_added" CONVERSATION_MEMBER_REMOVED = "conversation.member_removed" FRIEND_REQUEST = "friend.request" FRIEND_ACCEPTED = "friend.accepted" PRESENCE_ONLINE = "presence.online" PRESENCE_OFFLINE = "presence.offline" ECHO_SEND = "echo.send" HEARTBEAT_SYNC = "heartbeat.sync" FLASH_SPAWN = "flash.spawn" FLASH_PROGRESS = "flash.progress" FLASH_RESULT = "flash.result" ERROR = "error" class WSEvent(BaseModel): """WebSocket 事件信封""" type: str data: dict timestamp: str | None = None class ChatSendData(BaseModel): """发送消息数据""" conversation_id: str content: str type: str = "text" reply_to_id: str | None = None class ChatTypingData(BaseModel): """输入中数据""" conversation_id: str class ChatReadData(BaseModel): """已读数据""" conversation_id: str message_id: str class PresenceUpdateData(BaseModel): """在线状态更新""" status: str # online / offline / away