From 57dabd61d4bdaf0652a5658d732a6028b36b44ba Mon Sep 17 00:00:00 2001 From: i548450 Date: Tue, 9 Jun 2026 22:18:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor(chat-core):=20MessageActorType=20?= =?UTF-8?q?=E6=8B=86=E5=88=86=E4=B8=BA=20MessageSenderType=20+=20MessageRe?= =?UTF-8?q?ceiverType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端早已是两个独立枚举(MessageSenderType / MessageReceiverType), 前端跟着拆。字面值集合相同,但语义独立 — sender/receiver 各自的 type 列分别用对应类型,符合多态关联的模型(spec 02-data-model §5.1)。 --- src/chat-core/types/message.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/chat-core/types/message.ts b/src/chat-core/types/message.ts index 66a6569a..8f1e3da8 100644 --- a/src/chat-core/types/message.ts +++ b/src/chat-core/types/message.ts @@ -7,7 +7,19 @@ export type MessageDirection = 'INBOUND' | 'OUTBOUND'; export type MessageType = 'TEXT' | 'IMAGE' | 'VIDEO' | 'SYSTEM' | 'UNKNOWN'; -export type MessageActorType = 'MEDIA_USER' | 'MEDIA_ACCOUNT' | 'SYSTEM'; +/** + * Message sender type — polymorphic discriminator for (senderType, senderId). + * INBOUND → MEDIA_USER, OUTBOUND → MEDIA_ACCOUNT, SYSTEM → SYSTEM (id is null). + * Agent never appears here; the operator is tracked via operatorAgentId. + */ +export type MessageSenderType = 'MEDIA_USER' | 'MEDIA_ACCOUNT' | 'SYSTEM'; + +/** + * Message receiver type — polymorphic discriminator for (receiverType, receiverId). + * Mirror of sender side: INBOUND → MEDIA_ACCOUNT, OUTBOUND → MEDIA_USER, + * SYSTEM → SYSTEM (id is null). + */ +export type MessageReceiverType = 'MEDIA_USER' | 'MEDIA_ACCOUNT' | 'SYSTEM'; export type SendStatus = 'PENDING' | 'SENDING' | 'SENT' | 'FAILED' | 'STUCK'; @@ -42,12 +54,12 @@ export interface Message { direction: MessageDirection; msgType: MessageType; - senderType: MessageActorType; + senderType: MessageSenderType; senderId?: number; senderExternalId?: string; sender?: MessageActorRef; - receiverType: MessageActorType; + receiverType: MessageReceiverType; receiverId?: number; receiverExternalId?: string; receiver?: MessageActorRef;