---
doc_id: "DOC-ARCH-006"
title: "Kiến Trúc Kênh Chat & Tương Tác Xã Hội Tốc Độ Cao"
category: "architecture"
diataxis_type: "explanation"
status: "canonical"
version: "2026.1"
owner_role: "server_systems_architect"
last_updated: "2026-09-29"
tags: ["chat", "social", "guild-chat", "moderation", "websocket"]
related_code:
  - "server/chat/chat_service.py"
  - "server/chat/moderation.py"
related_docs:
  - "docs/game_design/GUILD_SYSTEM_AND_SHARED_STASH.md"
summary: "Hệ thống kênh Chat Bang Hội, Chat Thế Giới qua WebSocket/QUIC kết hợp bộ lọc kiểm duyệt từ khóa độc hại thời gian thực."
---

# KIẾN TRÚC HỆ THỐNG KÊNH CHAT, GIÁM SÁT AN NINH ĐA NGÔN NGỮ & KHOE ĐỒ (FREEEXILE 2026)

> **Dự án**: `FreeExile` — Dark Martial Astral ARPG (Cổ Võ Hắc Ám 2.5D)  
> **Chủ đề**: Thiết kế hệ thống Chat thời gian thực đa kênh, Lõi lọc từ ngữ nhạy cảm đa ngữ 2 tầng, Giám sát an ninh chống RMT/lừa đảo và Cơ chế khoe đồ (Item Hyperlinking) bảo mật HMAC-SHA256.

---

## 1. NGUYÊN TẮC CỐT LÕI: TÁCH BIỆT HOÀN TOÀN KHỎI WORLD SIMULATION ENGINE

Trong các game online thế hệ cũ, kênh chat thường được nhét chung vào Game Server chính. Khi có hàng trăm ngàn người spam chat thế giới hoặc hệ thống lọc từ ngữ chạy tốn CPU, vòng lặp vật lý bị chậm lại gây lag toàn server.

**Quy tắc vàng của FreeExile 2026**:
* **Chat là dịch vụ I/O-Bound & Fan-out Pub/Sub**: Chạy hoàn toàn độc lập trên **Edge Gateway & Chat Microservice Cluster (C++ / Rust / NATS / Redis PubSub)**.
* **Đa luồng trên kết nối mạng (QUIC Multiplexed Streams)**:
  * `Stream 0`: World Simulation (30Hz Datagrams, di chuyển, vật lý, sát thương).
  * `Stream 1`: Chat & Social Engine (Tin nhắn, liên kết đồ đạc, thông báo bang hội).
  * $\rightarrow$ **Nghẽn mạng chat không bao giờ làm giật khung hình hay lag combat!**

```mermaid
flowchart TD
    subgraph ClientLayer["iOS Client (Metal 120Hz)"]
        ChatUI["Chat UI (Tabs: Thế Giới, Khu Vực, Bang, Đội, Mật)"]
        ItemInventory["Túi Đồ: Nhấp 'Khoe Đồ'"]
        ChatUI <--> ItemInventory
    end

    subgraph NetworkTransport["QUIC Multiplexed Transport"]
        Stream0["Stream 0: 30Hz World Simulation (Zero-Loss / Fast UDP)"]
        Stream1["Stream 1: Chat & Social Stream (Reliable Flow Control)"]
    end

    subgraph ServerBackend["Hạ Tầng Máy Chủ FreeExile"]
        ZoneServer["C++20 Zone Server (30Hz Hot Path)\n[HOÀN TOÀN KHÔNG CHỊU TẢI CHAT]"]
        ChatService["Chat & Social Gateway Cluster (Rust / C++)"]
        
        subgraph ModerationPipeline["Hệ Thống Lọc 2 Tầng (Multilingual Surveillance)"]
            SyncFilter["Tầng 1: Aho-Corasick Trie (0ms C++ Native)\n[Unicode NFKC + Leetspeak Normalizer]"]
            AsyncAI["Tầng 2: Asynchronous AI Sentinel & Anti-RMT\n[Quét SĐT, Zalo/Telegram, Chợ Đen, Spam Bot]"]
        end

        ItemVault["Redis Snapshot Cache (HMAC-SHA256 Item Signatures)"]
        KafkaChatAudit["Kafka Immutable Chat Audit Stream (Lưu trữ giám sát pháp lý)"]
    end

    ClientLayer -- "QUIC Multiplexing" --> NetworkTransport
    Stream0 --> ZoneServer
    Stream1 --> ChatService
    ChatService --> SyncFilter
    ChatService --> ItemVault
    ChatService -.-> AsyncAI
    ChatService --> KafkaChatAudit
```

---

## 2. PHÂN TẦNG VÀ CƠ CHẾ CÁC KÊNH CHAT (MULTI-CHANNEL ARCHITECTURE)

| Kênh Chat | Phạm Vi Phát Tán (Scope) | Cơ Chế Phân Phối | Hạn Chế & Chống Spam (Anti-Spam Gate) |
| :--- | :--- | :--- | :--- |
| **Kênh Thế Giới (World)** | Toàn cõi Hoang Vực Lưu Đày (Server-wide) | Redis Pub/Sub broadcast | Giới hạn Cấp $\ge 20$, Token Bucket $15s/\text{tin}$, tiêu hao $10$ Chân Khí (hoặc 1 Hắc Sơ Thạch). |
| **Kênh Khu Vực (Zone)** | Người chơi trong cùng Bản đồ / Cell AOI | Spatial Grid Cell Neighborhood ($64m$) | Khoảng cách $3s/\text{tin}$, tự động câm lặng nếu spam 5 tin giống nhau. |
| **Kênh Bang Hội (Guild)** | Toàn bộ thành viên Bang / Tông Môn | Redis Channel `guild:{guild_id}` | Không tốn phí, lưu trữ 100 tin nhắn gần nhất khi offline. |
| **Kênh Đội Ngũ (Party)** | Thành viên trong tổ đội săn Boss | Session Router `party:{party_id}` | Độ trễ cực thấp $< 5ms$, đồng bộ tọa độ cắm cờ Boss. |
| **Kênh Mật Thư (Whisper)** | Trò chuyện riêng tư 1-1 giữa 2 người chơi | Direct Session Routing tới Gateway người nhận | Chống quấy rối: Tự động chặn nếu người gửi nằm trong Blacklist của người nhận. |
| **Kênh Hệ Thống (System)** | Toàn server | Kafka Broadcast | Bản tin Thiên Đạo: Giết Boss Thế Giới, rớt Huyết Ảnh Cổ Kính, đập đồ Thái Cổ. |

---

## 3. LÕI LỌC TỪ NGỮ NHẠY CẢM & GIÁM SÁT NGƯỜI CHƠI ĐA NGÔN NGỮ 2 TẦNG

Để đảm bảo vừa **không gây giật lag (0ms delay)** vừa **bảo vệ môi trường game lành mạnh và giám sát an ninh (chống lừa đảo, RMT, chợ đen)**:

### 3.1. Tầng 1: Lọc Đồng Bộ Siêu Tốc C++ Aho-Corasick Trie (0ms)
Chạy trực tiếp trước khi phát tán tin nhắn ra kênh chat:
1. **Unicode NFKC & Homoglyph Folding**:
   - Chuyển đổi các ký tự ngụy trang về dạng gốc: `@` $\rightarrow$ `a`, `1`/`!` $\rightarrow$ `i`, `0` $\rightarrow$ `o`, `3` $\rightarrow$ `e`.
   - Triệt tiêu các ký tự tàng hình (Zero-Width Space `\u200B`, `\uFEFF`) mà bot thường chèn vào giữa các chữ.
2. **Xử lý Biến thể Đa Ngôn Ngữ**:
   - **Tiếng Việt**: Bắt triệt để các biến thể chửi bậy telex/vni (`d.m`, `d-m`, `l_o_n`, `c.a.c`, `d.k.m`, `v.k.l`).
   - **Tiếng Anh**: F-words, N-words, Hate speech, Harassment.
   - **Tiếng Trung**: Các từ ngữ xúc phạm Pinyin đồng âm và nhạy cảm chính trị.
3. **Mặt nạ bảo tồn (Asterisk Masking)**:
   - Các từ vi phạm được tự động thay thế bằng hoa thị `***` mà không hủy bỏ toàn bộ tin nhắn, giúp trải nghiệm giao tiếp không bị gián đoạn.

### 3.2. Tầng 2: Giám Sát Bất Đồng Bộ & Chống Chợ Đen RMT (Async Sentinel)
Toàn bộ tin nhắn thô (kèm ID người gửi, IP, Mac address, thời gian) được đẩy vào luồng **Kafka `chat-audit-events`**:
1. **Phát Hiện Rao Bán Tiền Thật (RMT Detection)**:
   - Quét Regex nâng cao bắt các mẫu: Số điện thoại Việt Nam (`09xx`, `03xx`, `08xx`), từ khóa *"chuyển khoản"*, *"ATM"*, *"MoMo"*, *"Zalo"*, *"Telegram"*, *"bán acc"*, *"thu mua ngọc"*.
2. **Hệ Thống Điểm Nghi Vấn (Moderation Risk Score)**:
   - Mỗi vi phạm làm tăng điểm nghi vấn của tài khoản.
   - Khi điểm vượt ngưỡng:
     * Cấp 1: Cấm chat 30 phút (Auto-Mute).
     * Cấp 2: Đưa vào danh sách đen theo dõi gian lận kinh tế (Anti-Dupe & Fraud Watchlist).
     * Cấp 3: Khóa tính năng giao dịch Kỳ Trân Các khẩn cấp.

---

## 4. CƠ CHẾ KHOE ĐỒ (RICH ITEM HYPERLINKING) BẢO MẬT HMAC-SHA256

Một trong những tính năng hấp dẫn nhất của MMORPG là quyền được **"khoe đồ cực phẩm"** lên kênh thế giới hay với bạn bè. Tuy nhiên, nếu thiết kế hời hợt, hacker có thể gửi gói tin giả mạo để hiển thị một món đồ thần thoại 6 dòng hoàn mỹ mà bản thân không hề có.

### 4.1. Quy Trình Khoe Đồ 4 Bước Tuyệt Đối Chống Giả Mạo:

```mermaid
sequenceDiagram
    autonumber
    participant Client as iPhone Client
    participant ChatGW as Chat Gateway
    participant Inventory as Ledger / Inventory Service
    participant Redis as Redis Snapshot Store
    participant Recipient as Người Xem Trong Kênh

    Client->>ChatGW: SendChatRequest("Xem kiếm ta vừa đúc!", link_item_uuid: "item_987")
    ChatGW->>Inventory: Xác thực quyền sở hữu: "Player 101 có sở hữu item_987 không?"
    Inventory-->>ChatGW: Xác nhận: Hợp lệ (Thanh Phong Kiếm +15, Kim hệ)
    
    Note over ChatGW,Redis: Ký số bảo mật chống giả mạo
    ChatGW->>ChatGW: Tạo Hash: HMAC_SHA256(item_data, ServerSecretKey)
    ChatGW->>Redis: Lưu ItemSnapshot(item_uuid, stats, signature, TTL: 24h)
    
    ChatGW->>Recipient: Phát tán ChatMessage("Xem kiếm ta vừa đúc! [item:item_987:sig]")
    
    Recipient->>ChatGW: Chạm vào link: QueryItemSnapshotRequest("item_987", signature)
    ChatGW->>Redis: Lấy snapshot & kiểm tra chữ ký signature
    ChatGW-->>Recipient: Trả về Full ItemSnapshot (Affixes, Ngũ Hành, Nghệ nhân đúc)
    Note over Recipient: Client hiển thị Tooltip 2.5D Cổ Võ cực đẹp!
```

### 4.2. Cấu Trúc Link và Tooltip Trên Màn Hình iPhone:
- Trong khung chat, vật phẩm hiển thị dưới dạng thẻ bấm:  
  `[Thanh Phong Huyền Kiếm +15]` (Màu Cam Cực Phẩm, lấp lánh hiệu ứng Kim quang).
- Khi người chơi khác chạm vào:
  - Hiển thị Popup Modal thông số:
    * **Phẩm cấp**: Cực Phẩm Bậc 5 (Chế tác bởi: Kiếm Thánh Tiêu Dao).
    * **Thuộc tính cơ bản**: Sát thương Vật Lý $850 - 1.200$, Tốc đánh $+25\%$.
    * **Dòng ẩn Ngũ Hành**: Tăng $35\%$ sát thương Lôi Điện khi khắc Mộc.
    * **Ma Võ Tàn Cốt đính kèm**: Cắm 2 viên Hỗn Nguyên Đan.
  - Có nút **"Sao chép liên kết"** hoặc **"Trả giá hỏi mua"** kết nối thẳng tới Hắc Thị Hoang Vực.

---

## 5. KẾT LUẬN & CAM KẾT HIỆU NĂNG

1. **Hiệu Năng**: Tách rời hoàn toàn khỏi C++ Zone Server, giữ vững nhịp tim $30\text{Hz}$ mô phỏng thế giới mà không tốn $1\mu s$ nào cho việc chat.
2. **An Toàn Đa Ngữ**: Lọc từ ngữ tức thì trong $0.1ms$ bằng C++ Aho-Corasick, kết hợp AI Sentinel quét RMT ngầm qua Kafka.
3. **Trải Nghiệm Đỉnh Cao**: Cơ chế khoe đồ có chữ ký HMAC-SHA256, đem lại cảm giác tự hào chân thực cho người chơi mà bài trừ triệt để tình trạng hack đồ ảo.
