/** * 消息系统类型定义 - 严格遵循UTS Android要求 * 基于 message_system.sql 数据库设计 */ // 基础类型定义 export type MessageSenderType = 'user' | 'device' | 'system' export type MessageReceiverType = 'user' | 'group' | 'broadcast' | 'class' export type MessageContentType = 'text' | 'html' | 'markdown' | 'json' export type MessageStatus = 'draft' | 'sent' | 'delivered' | 'failed' export type RecipientStatus = 'pending' | 'sent' | 'delivered' | 'read' | 'failed' export type DeliveryMethod = 'push' | 'email' | 'sms' | 'websocket' export type GroupType = 'normal' | 'class' | 'team' | 'system' | 'temporary' export type MemberRole = 'owner' | 'admin' | 'moderator' | 'member' export type MemberStatus = 'active' | 'muted' | 'banned' | 'left' // 消息类型信息 export type MessageType = { id: string code: string name: string description: string | null icon: string | null color: string | null priority: number is_system: boolean is_active: boolean auto_read_timeout: number | null retention_days: number created_at: string updated_at: string } // 消息主体 export type Message = { id: string message_type_id: string sender_type: MessageSenderType sender_id: string | null sender_name: string | null receiver_type: MessageReceiverType receiver_id: string | null title: string | null content: string | null content_type: MessageContentType attachments: UTSJSONObject | null media_urls: UTSJSONObject | null metadata: UTSJSONObject | null device_data: UTSJSONObject | null location_data: UTSJSONObject | null priority: number expires_at: string | null is_broadcast: boolean is_urgent: boolean conversation_id: string | null parent_message_id: string | null thread_count: number status: MessageStatus total_recipients: number delivered_count: number read_count: number reply_count: number delivery_options: UTSJSONObject | null push_notification: boolean email_notification: boolean sms_notification: boolean created_at: string updated_at: string scheduled_at: string | null delivered_at: string | null } // 消息接收记录 export type MessageRecipient = { id: string message_id: string recipient_type: MessageSenderType recipient_id: string recipient_name: string | null status: RecipientStatus delivery_method: DeliveryMethod | null sent_at: string | null delivered_at: string | null read_at: string | null replied_at: string | null delivery_attempts: number last_attempt_at: string | null failure_reason: string | null device_token: string | null is_starred: boolean is_archived: boolean is_deleted: boolean deleted_at: string | null read_duration_sec: number | null interaction_data: UTSJSONObject | null created_at: string updated_at: string } // 消息群组 export type MessageGroup = { id: string name: string description: string | null group_type: GroupType owner_id: string | null avatar_url: string | null is_active: boolean is_public: boolean member_limit: number message_limit_per_day: number file_size_limit_mb: number settings: UTSJSONObject permissions: UTSJSONObject auto_archive_days: number auto_delete_days: number related_class_id: string | null related_school_id: string | null created_at: string updated_at: string } // 群组成员 export type GroupMember = { id: string group_id: string user_id: string role: MemberRole permissions: UTSJSONObject status: MemberStatus nickname: string | null is_muted: boolean muted_until: string | null muted_by: string | null mute_reason: string | null last_read_message_id: string | null last_read_at: string | null unread_count: number notification_enabled: boolean mention_only: boolean message_count: number join_count: number joined_at: string left_at: string | null created_at: string updated_at: string } // 消息统计信息 export type MessageStats = { total_messages: number unread_messages: number sent_messages: number received_messages: number urgent_messages: number draft_messages: number } // 查询参数类型 export type MessageListParams = { limit?: number offset?: number message_type?: string sender_type?: MessageSenderType sender_id?: string receiver_type?: MessageReceiverType receiver_id?: string status?: MessageStatus is_urgent?: boolean start_date?: string end_date?: string search?: string } // 发送消息参数 export type SendMessageParams = { message_type_id: string receiver_type: MessageReceiverType receiver_id?: string receivers?: string[] // 新增,支持批量接收人 title?: string content: string content_type?: MessageContentType priority?: number is_urgent?: boolean push_notification?: boolean email_notification?: boolean sms_notification?: boolean scheduled_at?: string expires_at?: string attachments?: UTSJSONObject media_urls?: UTSJSONObject // 新增,兼容服务端参数 metadata?: UTSJSONObject // 新增,兼容服务端参数 sender_type?: MessageSenderType sender_id?: string sender_name?: string } // 用户选项类型 export type UserOption = { id: string username: string nickname: string avatar: string | null } // 扩展的Message类型,包含接收者信息用于UI显示 export type MessageWithRecipient = { // 从Message类型复制的所有字段 id: string message_type_id: string sender_type: MessageSenderType sender_id: string | null sender_name: string | null receiver_type: MessageReceiverType receiver_id: string | null title: string | null content: string | null content_type: MessageContentType attachments: UTSJSONObject | null media_urls: UTSJSONObject | null metadata: UTSJSONObject | null device_data: UTSJSONObject | null location_data: UTSJSONObject | null priority: number expires_at: string | null is_broadcast: boolean is_urgent: boolean conversation_id: string | null parent_message_id: string | null thread_count: number status: MessageStatus total_recipients: number delivered_count: number read_count: number reply_count: number delivery_options: UTSJSONObject | null push_notification: boolean email_notification: boolean sms_notification: boolean created_at: string updated_at: string scheduled_at: string | null delivered_at: string | null // 从MessageRecipient中添加的字段 is_read?: boolean is_starred?: boolean is_archived?: boolean is_deleted?: boolean read_at?: string | null replied_at?: string | null // 扩展字段 message_type?: string // 消息类型代码,用于兼容 recipients?: Array // 接收者列表 }