Chat 模块提供多频道消息功能,支持频道、成员、线程消息、提及、已读标记和文件附件。遵循与其他模块相同的端口/适配器模式。
端点
| 端点 | 方法 | 描述 |
|---|---|---|
/api/chat/channels | POST | 创建频道 |
/api/chat/channels | GET | 列出频道 |
/api/chat/channels/{id}/members | POST | 添加成员 |
/api/chat/channels/{id}/messages | POST | 发送消息 |
/api/chat/channels/{id}/messages | GET | 分页消息 |
/api/chat/channels/{id}/read | POST | 标记已读 |
/api/chat/messages/{id} | PATCH | 编辑消息 |
架构
ChatEndpoints (Minimal API) │ ▼ChatService │ ├── IChatRepository → SqlSugarChatRepository ├── IChatEventPublisher → NullChatEventPublisher ├── IChatRealtimeAdapter → NullChatRealtimeAdapter (路线图: SignalR) └── IChatAttachmentAccessService → FileAssetChatAttachmentAccessService实体
| 实体 | 用途 |
|---|---|
ChatChannelEntity | 频道定义(名称、类型、租户) |
ChatMemberEntity | 频道成员关系(用户 + 角色) |
ChatMessageEntity | 消息(内容、发送者、编辑标志) |
ChatAttachmentEntity | 消息文件附件 |
ChatMentionEntity | @提及跟踪 |
ChatReadMarkerEntity | 每用户已读位置 |
权限
Chat 通过 ChatPermissions 使用基于特性的权限:
public static class ChatPermissions{ public const string ChannelCreate = "chat.channel.create"; public const string ChannelManage = "chat.channel.manage"; public const string MessageSend = "chat.message.send"; public const string MessageEdit = "chat.message.edit"; public const string MemberManage = "chat.member.manage";}消息分页
public class ChatMessagePage{ public IReadOnlyList<ChatMessage> Messages { get; } public int TotalCount { get; } public bool HasMore { get; }}消息按时间倒序加载,使用基于游标的分页。
实时适配器(路线图)
public interface IChatRealtimeAdapter{ Task MessageCreatedAsync(ChatMessage message, CancellationToken ct); Task MessageEditedAsync(ChatMessage message, CancellationToken ct); Task MemberJoinedAsync(ChatMember member, CancellationToken ct);}计划的实现:SignalR hub、Server-Sent Events、WebSocket 适配器。