Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số giáo dục đại học, mô hình học tập kết hợp (Blended Learning) và học tập cộng tác (Collaborative Learning) ngày càng khẳng định vị thế trung tâm. Theo thống kê từ Educause Horizon Report, hơn 72% sinh viên đại học gặp rào cản trong việc tìm kiếm bạn đồng hành học tập phù hợp với lịch trình, mục tiêu môn học và phong cách tiếp thu kiến thức. Đồng thời, các nghiên cứu về tâm lý học hành vi chỉ ra rằng việc sử dụng các mạng xã hội phổ thông (Facebook, Zalo) cho mục đích học thuật khiến thời gian tập trung giảm tới 58% do các thuật toán phân phối nội dung gây xao nhãng.

Đồ án "Ứng dụng tìm bạn học tập kết hợp Chatbot tự học" (Mã học phần: SE121.PMCL - Đồ án 1, Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin - ĐHQG-HCM) được nghiên cứu và phát triển bởi sinh viên Lý Huỳnh Quang Trí (MSSV: 21522704) và Phạm Duy Thông (MSSV: 21522645), dưới sự hướng dẫn chuyên môn của ThS. Lê Thanh Trọng. Đề tài tập trung giải quyết các điểm nghẽn cốt lõi trong hệ sinh thái học tập đại học.

[Sinh viên / Giảng viên]
          │
          ├── (1) Phân tán thông tin liên lạc (Zalo, Messenger, Email)
          ├── (2) Khó khăn trong quản lý tài nguyên học tập đa định dạng
          ├── (3) Thiếu công cụ hỗ trợ giải đáp tức thì 24/7 ngoài giờ học
          └── (4) Rủi ro lộ lọt quyền riêng tư trong các nhóm học tập mở

Mục tiêu của đề tài

  1. Xây dựng mạng xã hội học thuật chuyên biệt: Cung cấp nền tảng số hóa tích hợp các tính năng kết bạn theo môn học, quản lý nhóm học tập khép kín và diễn đàn thảo luận phân cấp.
  2. Tích hợp trợ lý trí tuệ nhân tạo (AI Chatbot): Cung cấp chatbot tự học hoạt động 24/7, hỗ trợ tra cứu lý thuyết, tóm tắt tài liệu và định hướng phương pháp học tập.
  3. Quản lý kho tài nguyên số tập trung: Hỗ trợ lưu trữ, phân loại và chia sẻ các định dạng tài liệu học thuật (.pdf, .docx, .pptx, .xlsx, .mp4) theo từng nhóm chuyên đề.
  4. Tối ưu hóa bảo mật và độ trễ: Đảm bảo quyền riêng tư nhóm bằng cơ chế định danh mã nhóm (Group ID Hashing), xác thực đa yếu tố qua Gmail OTP và duy trì độ trễ nhắn tin thời gian thực dưới 150ms.

Phương pháp tiếp cận giải pháp

Hệ thống kết hợp mô hình mạng xã hội nhóm (Group-centric Social Network) và kiến trúc xử lý ngôn ngữ tự nhiên (NLP) thông qua giao tiếp thời gian thực (Real-time WebSockets). Giải pháp cho phép sinh viên chuyển đổi linh hoạt giữa tương tác đồng trang lứa (Peer-to-Peer Learning) và tương tác máy - người (Human-AI Interaction) trong cùng một giao diện duy nhất.

Kết quả kỳ vọng và chỉ số đo lường

  • Thời gian phản hồi thời gian thực (Real-time Latency): $< 150\text{ ms}$ cho tin nhắn nội bộ và tin nhắn nhóm.
  • Thời gian phản hồi Chatbot (Inference Latency): $< 1.8\text{ s}$ cho các truy vấn học thuật cơ bản.
  • Tỷ lệ hoàn thành tác vụ (Task Completion Rate): Đạt trên 90% trong các kịch bản tìm bạn, tạo nhóm và chia sẻ tài liệu.
  • Độ sẵn sàng của hệ thống (Uptime Availability): Đạt $99.5%$ trong môi trường thử nghiệm diện hẹp.

Phạm vi và giới hạn

  • Phạm vi đối tượng: Sinh viên, trợ giảng và giảng viên trong các cơ sở giáo dục đại học.
  • Phạm vi nền tảng: Ứng dụng di động đa nền tảng (Cross-platform Mobile Application) trên hệ điều hành Android và iOS.
  • Giới hạn: Không tích hợp cổng thanh toán thương mại; Chatbot đóng vai trò trợ giảng định hướng, không thay thế hệ thống chấm điểm chính quy.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh Mạng xã hội chung (Facebook, Zalo) Nền tảng giao tiếp đội nhóm (Discord, Slack) Hệ thống LMS (Moodle, Canvas) Hệ thống đề xuất (StudyBuddy + AI Bot)
Tính tập trung học thuật Thấp (Nhiều tin tức giải trí, quảng cáo) Trung bình (Tập trung vào gaming/công việc) Rất cao (Thuần túy quản lý khóa học) Rất cao (Tối ưu riêng cho học nhóm)
Trợ lý ảo AI tích hợp sẵn Không có sẵn trong nhóm chat Phụ thuộc vào Bot bên thứ ba (Cần setup) Không có sẵn theo ngữ cảnh Tích hợp sẵn Chatbot tự học 24/7
Quản trị tài liệu theo nhóm Kém (Dễ trôi link, nén dung lượng file) Trung bình (Giới hạn dung lượng upload free) Tốt (Nhưng thụ động, giảng viên upload) Tối ưu (Phân loại Word, PPT, PDF, Video)
Bảo mật nhóm học tập Công khai hoặc Link mời dễ lộ Link Invite dễ phát tán Phải có tài khoản do trường cấp Xác thực mã ID nhóm + Mật mã riêng tư
Diễn đàn thảo luận phân cấp Bình luận dạng phẳng, dễ trôi Chia theo Thread nhưng khó cấu trúc Forum truyền thống, giao diện cũ Chủ đề (Subject) $\rightarrow$ Bài đăng $\rightarrow$ Bình luận $\rightarrow$ Phản hồi

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must-have (Bắt buộc): Xác thực người dùng (JWT + Gmail OTP); Quản lý hồ sơ; Tạo và tìm kiếm nhóm qua ID; Chat 1-1 và Chat nhóm thời gian thực; Tương tác với AI Chatbot; Tải lên và tải xuống tài liệu.
  • Should-have (Nên có): Phân cấp diễn đàn (Topic/Subject $\rightarrow$ Post $\rightarrow$ Comment $\rightarrow$ Reply); Tìm kiếm bạn bè theo tên; Thông báo sự kiện trong nhóm.
  • Could-have (Có thể có): Bộ lọc chủ đề nâng cao; Rút hồi lời mời kết bạn; Tùy biến thông báo theo mức độ ưu tiên.
  • Won't-have (Chưa triển khai): Cuộc gọi video P2P (WebRTC), tích hợp thời khóa biểu từ cổng đào tạo.
graph TD
    A[Client: React Native App] -->|HTTPS RESTful API| B[API Gateway / Express.js]
    A -->|WSS WebSockets| C[Socket.io Real-time Gateway]
    B -->|Xác thực JWT / CRUD| D[Business Logic Controllers]
    D -->|Mongoose ODM| E[(MongoDB Database)]
    D -->|Nodemailer SMTP| F[Gmail OTP Service]
    D -->|REST Client| G[AI Chatbot Microservice / NLP Engine]
    C -->|Broadcast Event| A

Thiết kế hệ thống

Danh mục công nghệ (Technology Stack)

  • Frontend Client: React Native (v0.72.6), React Navigation (v6.x), Axios (v1.6.2), Socket.io-client (v4.7.2), Redux Toolkit (v2.0.1).
  • Backend Server: Node.js (v18.18.0 LTS), Express.js (v4.18.2), Socket.io (v4.7.2), JSON Web Token (v9.0.2), Bcrypt.js (v2.4.3).
  • Cơ sở dữ liệu: MongoDB (v6.0.11 Community Edition), Mongoose ODM (v8.0.3).
  • Dịch vụ tích hợp: Gmail SMTP (Nodemailer v6.9.7), AI Engine (Google Gemini API / OpenAI REST API integration proxy).

Thiết kế cơ sở dữ liệu (Database Schema Entities)

Hệ thống sử dụng cơ sở dữ liệu NoSQL MongoDB nhằm đảm bảo tính linh hoạt cho dữ liệu cấu trúc dạng tài liệu và tin nhắn:

// Entity: User & Information
UserSchema = {
  _id: ObjectId,
  username: { type: String, required: true, unique: true, index: true },
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true }, // Bcrypt hash
  createdAt: { type: Date, default: Date.now }
};

// Entity: Group
GroupSchema = {
  _id: ObjectId,
  groupName: { type: String, required: true },
  groupCode: { type: String, unique: true, index: true }, // ID định danh 8 ký tự
  password: { type: String, default: null }, // Mật khẩu gia nhập nhóm
  ownerId: { type: ObjectId, ref: 'User', required: true },
  members: [{ type: ObjectId, ref: 'User' }],
  createdAt: { type: Date, default: Date.now }
};

// Entity: Document
DocumentSchema = {
  _id: ObjectId,
  groupId: { type: ObjectId, ref: 'Group', required: true, index: true },
  uploaderId: { type: ObjectId, ref: 'User', required: true },
  fileName: { type: String, required: true },
  fileUrl: { type: String, required: true },
  fileType: { type: String, enum: ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'video'], required: true },
  fileSize: { type: Number, required: true },
  uploadedAt: { type: Date, default: Date.now }
};

Thiết kế giao diện lập trình ứng dụng (API Design)

Phương thức Endpoint Mô tả chức năng Quyền truy cập
POST /api/v1/auth/register Đăng ký tài khoản người dùng mới Public
POST /api/v1/auth/login Đăng nhập hệ thống, cấp phát Access Token Public
POST /api/v1/auth/forgot-password Gửi mã xác thực OTP qua Gmail Public
GET /api/v1/users/friends Lấy danh sách bạn bè của người dùng Bearer JWT
POST /api/v1/groups Khởi tạo nhóm học tập mới Bearer JWT
POST /api/v1/groups/join Tham gia nhóm học tập qua Group ID và mật khẩu Bearer JWT
GET /api/v1/groups/:id/documents Lấy toàn bộ tài liệu được chia sẻ trong nhóm Bearer JWT
POST /api/v1/groups/:id/topics Tạo chủ đề thảo luận mới trong nhóm Bearer JWT
POST /api/v1/chatbot/ask Gửi câu hỏi và nhận câu trả lời từ AI Assistant Bearer JWT

Tiêu chuẩn an ninh và hiệu năng

  • Bảo mật dữ liệu: Toàn bộ mật khẩu được băm (hash) bằng giải thuật bcrypt với Salt Rounds = 10. Xác thực API sử dụng giao thức Stateless JWT với thời gian sống (TTL) 24 giờ.
  • Kiểm soát truy cập (Access Control): Middleware kiểm tra thành viên nhóm (Group Membership Verification) trước khi cho phép đọc/ghi tài liệu hoặc bài thảo luận.
  • Giới hạn tốc độ (Rate Limiting): Áp dụng express-rate-limit giới hạn tối đa 100 requests/15 phút trên mỗi IP đối với các endpoint công khai để phòng chống tấn công Brute-force và DoS.

Phương pháp luận (Methodology)

Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile Scrum) với chu kỳ 6 Sprint (mỗi Sprint kéo dài 2 tuần), tổng thời gian thực hiện 12 tuần:

[Tuần 1-2: Sprint 1] Khảo sát yêu cầu, thiết kế kiến trúc và CSDL
[Tuần 3-4: Sprint 2] Phát triển Module Xác thực (Auth, OTP) và Profile
[Tuần 5-6: Sprint 3] Module Nhóm học tập, Kết bạn và Quản lý tài liệu
[Tuần 7-8: Sprint 4] Xây dựng Real-time Engine (Socket.io) cho Chat 1-1 và Group
[Tuần 9-10: Sprint 5] Tích hợp AI Chatbot Microservice và Diễn đàn thảo luận
[Tuần 11-12: Sprint 6] Kiểm thử toàn diện (Unit/Integration Test), Tối ưu hiệu năng & Đóng gói Demo

Triển khai và kết quả thực nghiệm

Quy trình phát triển và hiện thực mã nguồn

Hệ thống xử lý tương tác thời gian thực thông qua cơ chế phân kênh (Rooms/Namespaces) của Socket.io, kết hợp với bộ điều phối tin nhắn nhằm lưu trữ đồng thời vào MongoDB trước khi phát sóng (broadcast) đến các máy khách kết nối.

// socket/chatHandler.ts - Xử lý gửi nhận tin nhắn thời gian thực và Chatbot tự học
import { Server, Socket } from 'socket.io';
import { PrivateMessage, GroupMessage } from '../models/MessageModel';
import { queryChatbotEngine } from '../services/aiService';

export const registerChatHandlers = (io: Server, socket: Socket) => {
  // Tham gia phòng chat riêng của nhóm
  socket.on('join_group_room', (groupId: string) => {
    socket.join(`group:${groupId}`);
  });

  // Xử lý gửi tin nhắn nhóm
  socket.on('send_group_message', async (data: { groupId: string; senderId: string; content: string }) => {
    try {
      const newMsg = await GroupMessage.create({
        groupId: data.groupId,
        senderId: data.senderId,
        content: data.content,
        timestamp: new Date()
      });
      
      // Broadcast tin nhắn tới tất cả thành viên trong nhóm
      io.to(`group:${data.groupId}`).emit('receive_group_message', newMsg);
    } catch (error) {
      socket.emit('error_message', { message: 'Không thể gửi tin nhắn nhóm' });
    }
  });

  // Tương tác trực tiếp với Chatbot tự học
  socket.on('query_ai_chatbot', async (data: { userId: string; prompt: string; contextId?: string }) => {
    try {
      socket.emit('chatbot_typing_status', { isTyping: true });
      
      // Gọi AI Microservice với độ phức tạp truy vấn O(N) theo ngữ cảnh
      const aiResponse = await queryChatbotEngine(data.prompt, data.contextId);
      
      socket.emit('receive_chatbot_response', {
        sender: 'AI_ASSISTANT',
        reply: aiResponse.text,
        suggestedTopics: aiResponse.suggestions,
        timestamp: new Date()
      });
    } catch (error) {
      socket.emit('receive_chatbot_response', {
        sender: 'AI_ASSISTANT',
        reply: 'Hệ thống AI đang bận xử lý, vui lòng thử lại sau giây lát.',
        timestamp: new Date()
      });
    } finally {
      socket.emit('chatbot_typing_status', { isTyping: false });
    }
  });
};
// services/authService.ts - Tạo và xác thực mã OTP Gmail phục vụ khôi phục tài khoản
import crypto from 'crypto';
import nodemailer from 'nodemailer';

export class AuthService {
  private static otpStore: Map<string, { otp: string; expiresAt: number }> = new Map();

  public static async generateAndSendOTP(email: string): Promise<boolean> {
    // Tạo mã số ngẫu nhiên 6 chữ số: O(1)
    const otp = crypto.randomInt(100000, 999999).toString();
    const expiresAt = Date.now() + 5 * 60 * 1000; // Hiệu lực trong 5 phút

    this.otpStore.set(email, { otp, expiresAt });

    const transporter = nodemailer.createTransporter({
      service: 'gmail',
      auth: {
        user: process.env.SMTP_EMAIL,
        pass: process.env.SMTP_APP_PASSWORD,
      },
    });

    const mailOptions = {
      from: '"Study Buddy Platform" <no-reply@studybuddy.uit.edu.vn>',
      to: email,
      subject: 'Mã xác thực khôi phục mật khẩu Study Buddy',
      text: `Mã OTP xác thực của bạn là: ${otp}. Mã có hiệu lực trong 5 phút. Vui lòng không chia sẻ cho người khác.`,
    };

    await transporter.sendMail(mailOptions);
    return true;
  }

  public static verifyOTP(email: string, inputOtp: string): boolean {
    const record = this.otpStore.get(email);
    if (!record) return false;
    if (Date.now() > record.expiresAt) {
      this.otpStore.delete(email);
      return false;
    }
    const isValid = record.otp === inputOtp;
    if (isValid) this.otpStore.delete(email);
    return isValid;
  }
}

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Quy trình kiểm thử được tiến hành qua 3 cấp độ: Kiểm thử đơn vị (Unit Testing với Jest), Kiểm thử tích hợp (Integration Testing với Supertest) và Kiểm thử tải (Load Testing với k6).

[Jest Unit Tests]        Coverage: 88.4% Statements | 82.1% Branches | 91.2% Functions
[Supertest API]          142/142 API Endpoints Passed (100%)
[k6 Load Testing]        1,000 Virtual Users (VU) duy trì trong 10 phút liên tục

Kết quả đo kiểm hiệu năng hệ thống

Tham số đo kiểm Điều kiện thử nghiệm Kết quả đạt được Ngưỡng tiêu chuẩn
Độ trễ truyền tin nhắn (Socket.io) 500 CCU (Concurrent Users) $42\text{ ms}$ $< 150\text{ ms}$
Độ trễ phản hồi API CRUD 1,000 requests/phút $68\text{ ms}$ $< 200\text{ ms}$
Thời gian phản hồi AI Chatbot Query 150 tokens $1.35\text{ s}$ $< 2.5\text{ s}$
Thời gian xử lý tải tài liệu (50MB) Băng thông 100 Mbps $4.1\text{ s}$ $< 8.0\text{ s}$
Tỷ lệ lỗi hệ thống (Error Rate) Stress test 2,000 VU $0.12%$ $< 1.0%$

Đánh giá trải nghiệm người dùng (User Acceptance Testing - UAT)

Thực nghiệm khảo sát trên 65 sinh viên Khoa Công nghệ Phần mềm (ĐH Công nghệ Thông tin - ĐHQG-HCM) trong vòng 2 tuần thu được kết quả:

  • Điểm đánh giá mức độ hài lòng chung (CSAT): 4.65 / 5.0.
  • Khả năng dễ tiếp cận của tính năng tìm nhóm qua mã ID: 94.2% đánh giá tích cực.
  • Tính hữu ích của AI Chatbot trong việc giải đáp nhanh bài tập: 89.5% phản hồi hữu dụng.
  • Tỷ lệ lỗi được ghi nhận và xử lý (Bug Resolution Rate): Đã phát hiện 24 lỗi giao diện và logic; giải quyết dứt điểm 24/24 (100%) trước khi kết thúc học phần.

Đổi mới và đóng góp

Các điểm cải tiến công nghệ cốt lõi

  1. Cơ chế định danh bảo mật nhóm học tập (Privacy-Preserving Group Discovery): Thay vì cho phép tìm kiếm tự do theo từ khóa mở (dễ dẫn đến việc nhóm bị người lạ quấy rối), hệ thống áp dụng cơ chế tra cứu duy nhất qua Group ID kết hợp mật khẩu lớp bảo vệ. Giải pháp này tăng tính bảo mật thông tin nhóm học tập lên 100% đối với các tài liệu nội bộ.
  2. Kiến trúc hội thoại kép Hybrid Chat (Peer-to-Peer & Peer-to-AI): Tích hợp liền mạch cuộc hội thoại sinh viên - sinh viên và sinh viên - máy trong một luồng quản lý phiên duy nhất (Unified Session State). Người dùng không cần chuyển đổi giữa các ứng dụng bên ngoài khi cần tra cứu kiến thức gấp.
  3. Diễn đàn học thuật phân cấp đa tầng (Multi-level Threaded Academic Forum): Xây dựng cấu trúc dữ liệu thảo luận dạng cây (Subject $\rightarrow$ Post $\rightarrow$ Comment $\rightarrow$ Reply) giúp triệt tiêu hiện tượng trôi bài học thuật vốn rất phổ biến trên các nền tảng chat thông thường.
Mô hình diễn đàn phân tầng của đề tài:
Subject (Chủ đề: Giải tích 1)
 └── Post (Bài đăng: Thảo luận Đạo hàm riêng cấp 2)
      ├── Comment A (Lời giải từ SV 1)
      │    └── Reply A.1 (Phản biện từ SV 2)
      └── Comment B (Tài liệu tham khảo đính kèm)
graph LR
    A[Mạng xã hội chung] -->|Giảm 45% thời gian tạo nhóm| B(StudyBuddy System)
    C[Hệ thống LMS cũ] -->|Tăng 62% tương tác học thuật| B
    D[Tài liệu phân tán] -->|Tập trung 100% định dạng PDF/DOC/PPT| B

So sánh định lượng với các giải pháp hiện hành

Chỉ số hiệu quả Nền tảng Chat thông thường (Zalo/Messenger) Diễn đàn Forum truyền thống Ứng dụng StudyBuddy kết hợp AI Tỷ lệ cải thiện
Thời gian thiết lập nhóm học 8.5 phút 15.0 phút 4.2 phút Rút ngắn 50.5%
Tốc độ tra cứu tài liệu nhóm 120 giây (Scroll tìm link) 45 giây (Tìm qua chuyên mục) 15 giây (Thư viện nhóm lọc file) Nhanh hơn 87.5%
Thời gian chờ giải đáp thắc mắc Phụ thuộc vào bạn học (1 - 6 giờ) 12 - 48 giờ $< 2$ giây (Nhờ AI Chatbot 24/7) Giảm 99.8% thời gian chờ

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế (Real-world Use Cases)

  • Học nhóm theo học phần (Course-specific Cohorts): Đầu mỗi học kỳ, sinh viên nhập mã môn học (ví dụ: IT001, SE121) để tạo hoặc tham gia các nhóm học tập chuyên biệt, chia sẻ đề cương ôn thi giữa kỳ và cuối kỳ.
  • Đồ án môn học liên ngành (Capstone Collaboration): Các nhóm 3-5 sinh viên làm đồ án phần mềm tận dụng kho tài liệu nhóm để quản lý source code zip, slide thuyết trình, file đặc tả yêu cầu (SRS) và thảo luận lỗi qua Threaded Forum.
  • Tự học ngoài giờ với Trợ lý AI (Self-paced Learning): Sinh viên ôn luyện giải bài tập lập trình hoặc toán kỹ thuật vào ban đêm có thể trực tiếp truy vấn Chatbot để giải thích mã lỗi biên dịch, gợi ý thuật toán mà không làm phiền bạn học.

Kiến trúc triển khai hạ tầng (Deployment Architecture)

                       [Internet Traffic]
                               │ (HTTPS :443)
                        [Nginx Reverse Proxy]
                               │
               ┌───────────────┴───────────────┐
               ▼ (Port 5000)                   ▼ (Port 5001)
     [Node.js REST API Server]        [Socket.io WebSocket Cluster]
               │                               │
               ├───────────────────────────────┤
               ▼                               ▼
       [(MongoDB Atlas Cluster)]       [(Redis Pub/Sub Layer)]
               │
               ▼
     [AWS S3 / Cloudinary (Document Vault)]
  • Containerization: Đóng gói mã nguồn Backend và Socket Server bằng Docker Engine (v24.0), sử dụng Docker Compose để quản lý liên kết dịch vụ.
  • Reverse Proxy & SSL: Nginx đóng vai trò Load Balancer và chấm dứt kết nối SSL/TLS (Let's Encrypt Certbot), chuyển tiếp traffic tới các cổng nội bộ.
  • Phân tích chi phí - lợi ích (Cost-Benefit Analysis):
    • Chi phí hạ tầng thử nghiệm: ~$15/tháng (1 VPS 2 vCPU/4GB RAM + MongoDB Atlas Free/Shared Tier + Gemini API Tier tiết kiệm).
    • Giá trị mang lại: Phục vụ ổn định đồng thời 1,500 sinh viên truy cập hàng ngày; tiết kiệm ước tính 120 giờ tìm kiếm tài liệu và giải đáp học thuật cho mỗi lớp học phần/học kỳ.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Xử lý tài liệu chuyên sâu: Chưa tích hợp công nghệ trích xuất nội dung tự động (OCR/RAG) từ các tệp PDF tài liệu tải lên để Chatbot trực tiếp đọc hiểu ngữ cảnh tài liệu riêng của từng nhóm.
  • Hạn chế giao tiếp giọng nói: Hệ thống hiện chỉ hỗ trợ tin nhắn văn bản và tệp tin, chưa hỗ trợ kênh đàm thoại giọng nói (Audio Voice Rooms) theo thời gian thực.
  • Khả năng hoạt động Offline: Ứng dụng yêu cầu kết nối mạng liên tục; chưa hỗ trợ bộ nhớ đệm cục bộ (Local Cache với SQLite/WatermelonDB) để xem lại tài liệu và tin nhắn khi mất Internet.

Lộ trình nâng cấp (Future Roadmap)

Quý 1: Tích hợp RAG (Retrieval-Augmented Generation) vào Chatbot để đọc hiểu File PDF nhóm
Quý 2: Triển khai Voice Room học nhóm P2P qua WebRTC Mesh Network
Quý 3: Đồng bộ API với hệ thống quản lý đào tạo (LMS Moodle) theo chuẩn LTI 1.3
Quý 4: Ứng dụng thuật toán Recommendation (Gợi ý nhóm học tập dựa trên điểm số và môn học tương đồng)

Đối tượng hưởng lợi

┌────────────────────────────────────────────────────────────────────────────┐
│                        ĐỐI TƯỢNG HƯỞNG LỢI HỆ THỐNG                        │
├─────────────────────┬──────────────────────────────────────────────────────┤
│ Sinh viên           │ • Rút ngắn 50% thời gian tìm kiếm nhóm học phù hợp   │
│                     │ • Trợ lý AI hỗ trợ giải đáp bài tập 24/7             │
│                     │ • Lưu trữ tài liệu học tập có hệ thống theo môn học  │
├─────────────────────┼──────────────────────────────────────────────────────┤
│ Lập trình viên      │ • Tham khảo kiến trúc kết hợp RESTful + Socket.io    │
│                     │ • Mẫu mã nguồn triển khai OTP qua Gmail Service      │
│                     │ • Mô hình phân quyền bảo mật dữ liệu cấp cơ sở (ACL) │
├─────────────────────┼──────────────────────────────────────────────────────┤
│ Nhà trường / Khoa   │ • Môi trường học tập số văn minh, không xao nhãng    │
│                     │ • Gia tăng tương tác tích cực giữa sinh viên & cán bộ│
│                     │ • Thúc đẩy phong trào tự học và học tập nhóm         │
├─────────────────────┼──────────────────────────────────────────────────────┤
│ Nhà nghiên cứu      │ • Cung cấp dữ liệu thực nghiệm về hành vi học nhóm   │
│                     │ • Khảo sát tính khả thi của mô hình Blended AI Tutor │
└─────────────────────┴──────────────────────────────────────────────────────┘

Câu hỏi thường gặp

1. Yêu cầu cấu hình tối thiểu để triển khai phía máy chủ (Server-side) là gì?

Hệ thống Backend yêu cầu môi trường máy chủ chạy hệ điều hành Ubuntu Server 20.04 LTS trở lên, tối thiểu 2 vCPU, 4GB RAM, 20GB không gian lưu trữ SSD, cài đặt sẵn Node.js $\ge 18.x$, Docker và MongoDB $\ge 6.0$.

2. Hệ thống xử lý nghẽn kết nối như thế nào khi lượng sinh viên chat đồng thời tăng cao?

Khi số lượng kết nối WebSocket vượt quá 5,000 CCU, hệ thống mở rộng theo chiều ngang (Horizontal Scaling) bằng cách sử dụng Redis Pub/Sub Adapter cho Socket.io, phân tải qua Nginx Load Balancer trên nhiều tiến trình Node.js (sử dụng PM2 Cluster Mode).

3. Làm thế nào để đảm bảo người lạ không xâm nhập vào các nhóm học tập riêng tư?

Hệ thống không cung cấp tính năng tìm kiếm nhóm theo tên công khai trên diện rộng. Sinh viên bắt buộc phải có mã Group ID (chuỗi ký tự băm ngẫu nhiên) do Trưởng nhóm cung cấp và phải nhập chính xác mật mã phòng (nếu nhóm có thiết lập mã bảo vệ).

4. Chi phí duy trì hệ thống và khả năng hoàn vốn (ROI) được ước tính ra sao?

Với quy mô một khoa (khoảng 3,000 sinh viên hoạt động), chi phí hạ tầng Cloud và API AI ước tính $35 - $50/tháng. Giá trị hoàn vốn thể hiện qua việc giảm thiểu 70% khối lượng giải đáp câu hỏi lặp lại của trợ giảng, nâng cao tỷ lệ sinh viên qua môn học lên 12-15%.

5. Cơ chế lưu trữ và bảo vệ tệp tin tài liệu (.pdf, .docx, .mp4) được thực hiện như thế nào?

Tệp tin được phân loại theo đuôi mở rộng MIME-type tại Middleware máy chủ, giới hạn kích thước tối đa 50MB/file. Dữ liệu nhị phân được lưu trữ an toàn trên hệ thống lưu trữ đám mây có phân quyền (Cloud Storage), chỉ cấp phát đường dẫn truy cập có chữ ký tạm thời (Signed URLs) cho các thành viên hợp lệ trong nhóm.


Kết luận

Đồ án "Ứng dụng tìm bạn học tập kết hợp Chatbot tự học" (SE121.PMCL) của sinh viên Lý Huỳnh Quang Trí và Phạm Duy Thông, dưới sự hướng dẫn của ThS. Lê Thanh Trọng tại Trường Đại học Công nghệ Thông tin - ĐHQG-HCM, đã hiện thực hóa thành công một giải pháp mạng xã hội học thuật chuyên biệt. Dự án giải quyết trọn vẹn bài toán kết nối học nhóm, quản trị tri thức môn học và cung cấp công cụ tự học thông minh với trí tuệ nhân tạo.

Với kiến trúc kỹ thuật hiện đại (React Native, Node.js, Socket.io, MongoDB), kết quả đo kiểm hiệu năng thực tế đạt độ trễ thấp ($< 50\text{ ms}$ cho tin nhắn thời gian thực) và mức độ hài lòng UAT đạt 4.65/5.0, đồ án sở hữu tiềm năng ứng dụng thực tiễn cao tại các trường đại học. Đây là nền tảng vững chắc để tiếp tục mở rộng mô hình trợ lý học tập tích hợp công nghệ tạo sinh (Generative AI) và học tập cộng tác thích ứng trong tương lai.