Giới thiệu dự án

Thị trường xuất bản số và sách điện tử (E-book) trên toàn cầu đang chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt xấp xỉ 4.9% giai đoạn 2023–2028. Tại Việt Nam, xu hướng chuyển đổi số trong văn hóa đọc phát triển mạnh mẽ nhưng đang đối mặt với nhiều rào cản từ các nền tảng phân phối độc quyền quốc tế. Các nhà xuất bản và tác giả trong nước chịu mức chiết khấu doanh thu rất cao khi phân phối qua các kênh ngoại (Google Play Books giữ lại tới 48% doanh thu, Amazon Kindle áp dụng biểu phí lên đến 65% đối với các thị trường không thuộc nhóm ưu tiên). Đồng thời, định dạng sách trên Kindle bị ràng buộc bởi hệ thống quản lý bản quyền số (DRM) đóng kín, đòi hỏi thiết bị chuyên dụng hoặc ứng dụng chuyên biệt, gây hạn chế cho độc giả phổ thông.

+-------------------------------------------------------------------------+
|                              VẤN ĐỀ CỐT LÕI                              |
|  - Chiết khấu nền tảng cao (35% - 52% doanh thu)                        |
|  - Rào cản công nghệ DRM đóng, chi phí bản quyền thiết bị lớn           |
|  - Thiếu hệ sinh thái khuyến nghị và trợ lý AI tối ưu cho tiếng Việt   |
+-------------------------------------------------------------------------+
+-------------------------------------------------------------------------+
|                            GIẢI PHÁP ĐỀ XUẤT                            |
|  Nền tảng Quản lý Thư viện Sách điện tử Toàn diện (Web Admin + Mobile)  |
|  Tích hợp Machine Learning (Universal Recommender) & Chatbot NLP AI     |
+-------------------------------------------------------------------------+

Đề tài "Xây dựng ứng dụng quản lý thư viện sách điện tử với chức năng khuyến nghị và Chatbot" được thực hiện bởi nhóm tác giả Dương Thành Vương và Phan Duy Đức (Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM) dưới sự hướng dẫn của ThS. Trần Thị Hồng Yến. Dự án giải quyết bài toán tối ưu chi phí phân phối e-book và nâng cao trải nghiệm đọc cá nhân hóa thông qua các mục tiêu cụ thể:

  1. Xây dựng hệ thống quản trị Web Admin tập trung hỗ trợ nghiệp vụ thêm, sửa, xóa, phân loại danh mục, quản lý siêu dữ liệu sách (metadata), kiểm duyệt người dùng và báo cáo thống kê đa chiều.
  2. Phát triển ứng dụng Mobile Client đa nền tảng (Cross-platform) cho phép độc giả đăng ký, tìm kiếm, tải và đọc sách với giao diện thân thiện, tối ưu thao tác cá nhân.
  3. Triển khai hệ thống khuyến nghị thông minh (The Universal Recommender) ứng dụng thuật toán tương quan đa sự kiện (Correlated Cross-Occurrence - CCO) để gợi ý sách chính xác dựa trên hành vi đọc.
  4. Tích hợp Chatbot trí tuệ nhân tạo (Dialogflow NLP) trên ứng dụng di động để hỗ trợ tra cứu thông tin tác phẩm, giải đáp thắc mắc và tư vấn sách tự động theo ngữ cảnh thời gian thực.

Dự án cam kết mang lại một nền tảng mở, giảm thiểu hơn 60% chi phí hạ tầng so với giải pháp thương mại độc quyền, đạt độ trễ phản hồi API dưới 200ms và đảm bảo độ chính xác của mô hình gợi ý sách đạt trên 85% sau quá trình huấn luyện dữ liệu.


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

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

Khảo sát thị trường cho thấy các sản phẩm thư viện và phân phối sách điện tử hiện tại phân hóa rõ rệt về ưu/nhược điểm:

Nền tảng Ưu điểm Nhược điểm Chi phí vận hành / Phân phối Khả năng cá nhân hóa
Google Play Books Kho sách toàn cầu phong phú, đồng bộ đa nền tảng mượt mà Chiết khấu cao (~48%), hỗ trợ đầu sách tiếng Việt chưa tối ưu Rất cao (Tỷ lệ chia sẻ doanh thu lớn) Trung bình (Dựa trên lịch sử tìm kiếm Google)
Amazon Kindle Thị phần lớn, hệ sinh thái thiết bị phần cứng mạnh Khóa DRM độc quyền, bắt buộc dùng ứng dụng/thiết bị Kindle Cao (Phí nền tảng và bản quyền phân phối) Cao (Thuật toán Collaborative Filtering)
Calibre Content Server Mã nguồn mở, quản lý thư viện cá nhân linh hoạt, miễn phí Giao diện cơ bản, không có engine khuyến nghị và thiếu chatbot Thấp (Tự lưu trữ - Self-hosted) Kém (Chỉ phân loại theo thẻ tag tĩnh)
Hệ thống đề xuất Tự chủ công nghệ, tối ưu chi phí, tích hợp CCO Recommender + Chatbot Cần nguồn dữ liệu ban đầu để huấn luyện mô hình (Cold-start) Rất thấp (Kiến trúc mã nguồn mở mở rộng) Rất cao (Đa sự kiện hành vi và ngữ cảnh)

Yêu cầu người dùng và hệ thống được phân loại theo mô hình MoSCoW:

  • Must have: Xác thực người dùng (JWT), Đọc sách trực tuyến, Quản lý danh mục/sách/tác giả/NXB, Gợi ý sách theo hành vi (UR Engine), Tương tác hỏi đáp qua Chatbot.
  • Should have: Báo cáo thống kê trực quan (Charts), Đánh giá/bình luận sách, Quản lý giá sách (Bookshelf) cá nhân.
  • Could have: Gợi ý sách tương tự ngay tại trang chi tiết, Tìm kiếm toàn văn theo nội dung file sách.
  • Won't have (Giai đoạn này): Xử lý thanh toán cổng quốc tế phức tạp, Chuyển đổi văn bản thành giọng nói (Text-to-Speech).

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc Microservices kết hợp Client-Server 3 lớp (3-Tier Architecture) giúp phân tách rõ ràng tầng giao diện, tầng logic xử lý và tầng lưu trữ phân tán.

Technology Stack và phiên bản công cụ:

  • Front-end Web Admin: ReactJS 18.2, Axios, HTML5/JSX, Virtual DOM tối ưu hóa render.
  • Front-end Mobile App: React Native 0.71, React Navigation, React Native Paper.
  • Backend API: Node.js 18.x LTS, Express.js 4.18, RESTful API architecture.
  • Cơ sở dữ liệu quan hệ (RDBMS): MySQL 8.0 lưu trữ người dùng, quyền, sách, NXB, metadata.
  • Hệ thống Khuyến nghị (ML Engine): The Universal Recommender (UR) triển khai trên Harness Server, Apache Spark 3.3, Elasticsearch 7.17, MongoDB 6.0.
  • Chatbot Engine: Google Dialogflow Natural Language Processing (NLP) Engine.

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

Cơ sở dữ liệu gồm 20 bảng chuẩn hóa quan hệ 3NF. Dưới đây là cấu trúc các thực thể nòng cốt:

-- Bảng lưu trữ định danh người dùng
CREATE TABLE USERS (
    USER_ID INT AUTO_INCREMENT PRIMARY KEY,
    USER_IS_ADMIN BIT(1) DEFAULT 0,
    USER_PHONE VARCHAR(191),
    USER_EMAIL VARCHAR(191) NOT NULL UNIQUE,
    USER_PASSWORD VARCHAR(191) NOT NULL,
    USER_NICKNAME VARCHAR(191),
    USER_IS_ACTIVE BIT(1) DEFAULT 1,
    USER_IS_NOT_LOCKED BIT(1) DEFAULT 1,
    USER_DOB DATETIME,
    CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Bảng siêu dữ liệu sách
CREATE TABLE BOOKS (
    BOOK_ID INT AUTO_INCREMENT PRIMARY KEY,
    BOOK_TITLE VARCHAR(255) NOT NULL,
    BOOK_DESCRIPTION TEXT,
    BOOK_PUBLISHER_ID INT,
    BOOK_TOTAL_PAGES INT,
    BOOK_IS_DELETED BIT(1) DEFAULT 0,
    CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_book_publisher FOREIGN KEY (BOOK_PUBLISHER_ID) 
        REFERENCES BOOK_PUBLISHERS(PUBLISHER_ID) ON DELETE RESTRICT
);

-- Bảng ghi nhận sự kiện tương tác phục vụ Recommender Engine
CREATE TABLE USAGE_EVENTS (
    EVENT_ID INT AUTO_INCREMENT PRIMARY KEY,
    USER_ID INT NOT NULL,
    EVENT_TYPE_ID INT NOT NULL,
    BOOK_ID INT NOT NULL,
    EVENT_TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_event_user FOREIGN KEY (USER_ID) REFERENCES USERS(USER_ID) ON DELETE CASCADE,
    CONSTRAINT fk_event_book FOREIGN KEY (BOOK_ID) REFERENCES BOOKS(BOOK_ID) ON DELETE CASCADE
);

Thiết kế API Endpoints (RESTful API)

  • POST /api/v1/auth/login: Xác thực người dùng, trả về mã định danh và JSON Web Token (JWT).
  • GET /api/v1/books?page=1&limit=20&category=IT: Lấy danh sách sách có phân trang và bộ lọc.
  • GET /api/v1/recommendations/user/:id: Truy vấn danh sách BOOK_ID khuyến nghị từ Elasticsearch model.
  • POST /api/v1/chatbot/query: Chuyển tiếp truy vấn người dùng đến Webhook/Dialogflow API để nhận phản hồi ngữ nghĩa.

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):

  • Sprint 1-2: Phân tích yêu cầu, thiết kế Database E-R, đặc tả Use Case, thiết lập khung kiến trúc Node.js và React.
  • Sprint 3: Xây dựng nghiệp vụ CRUD tại Web Admin, hoàn thiện xác thực bảo mật và quản lý tệp sách.
  • Sprint 4: Phát triển ứng dụng React Native Mobile, tích hợp tính năng đọc sách và lưu trữ trạng thái đọc.
  • Sprint 5: Triển khai Harness Machine Learning Server, cấu hình Apache Spark & Elasticsearch, nạp tập dữ liệu huấn luyện thuật toán CCO.
  • Sprint 6: Xây dựng kịch bản Intent/Entities trên Dialogflow, tích hợp Chatbot vào Mobile App, kiểm thử hồi quy (Regression Testing) và tối ưu hiệu năng.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc ghép nối giữa luồng dữ liệu nghiệp vụ (OLTP trên MySQL) và luồng xử lý phân tích dữ liệu lớn (Analytics/Recommender trên MongoDB, Spark, Elasticsearch).

Thuật toán Correlated Cross-Occurrence (CCO)

Thuật toán CCO cho phép phân tích không chỉ một hành vi đơn lẻ (như hành vi đọc sách) mà còn kết hợp chéo nhiều loại sự kiện tương tác khác nhau (sự kiện xem chi tiết, thêm vào kệ sách, đánh giá sao) thông qua chỉ số tỷ lệ hợp lý Log-Likelihood Ratio ($LLR$):

$$LLR = 2 \sum_{i,j} k_{ij} \log \left( \frac{k_{ij} N}{R_i C_j} \right)$$

Trong đó:

  • $k_{ij}$ là số lần sự kiện $i$ và sự kiện $j$ đồng xuất hiện.
  • $R_i, C_j$ lần lượt là tổng số lần xuất hiện của sự kiện $i$ và $j$.
  • $N$ là tổng không gian tương tác trong hệ thống.
// Trích xuất đoạn mã tích hợp API truy vấn hệ thống khuyến nghị tại Node.js Backend
const axios = require('axios');

async function getPersonalizedRecommendations(userId, numRecs = 10) {
    try {
        const payload = {
            user: userId.toString(),
            num: numRecs,
            fields: [{ name: "categories", boost: 1.5 }]
        };
        
        // Gửi truy vấn tới REST Server của The Universal Recommender
        const response = await axios.post('http://localhost:9090/engines/ur/queries', payload, {
            headers: { 'Content-Type': 'application/json' },
            timeout: 2500
        });

        if (response.data && response.data.itemScores) {
            return response.data.itemScores.map(item => ({
                bookId: parseInt(item.item),
                score: item.score
            }));
        }
        return [];
    } catch (error) {
        console.error(`[Recommender Service Error]: ${error.message}`);
        // Fallback: Trả về danh sách sách phổ biến nhất nếu Recommendation engine timeout
        return getPopularBooksFallback(numRecs);
    }
}

Testing và validation

Quá trình kiểm thử bao gồm kiểm thử chức năng tự động (Unit/Integration Test bằng Jest), kiểm thử tải (Load Test bằng Apache JMeter) và kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT).

Kiểm thử tải (JMeter) - Tốc độ phản hồi API theo số lượng người dùng đồng thời:
Users | Latency (ms) | Error Rate (%)
100   |    45 ms     |     0.0%
500   |    112 ms    |     0.0%
1000  |    185 ms    |     0.2%
2000  |    340 ms    |     1.1%
Loại hình kiểm thử Mục tiêu kiểm thử Độ phủ / Mẫu thử Kết quả đạt được Trạng thái
Unit Test Backend Kiểm tra logic xác thực, CRUD sách, tính điểm review 125 test cases Độ phủ code (Code Coverage) đạt 88.4% ĐẠT
Integration Test Đồng bộ dữ liệu MySQL -> MongoDB -> Spark Engine 40 kịch bản Dữ liệu đồng bộ chính xác 100% ĐẠT
Load Testing Đo lường độ trễ API khi chịu tải 1000 CCU 1,000 người dùng ảo Thời gian phản hồi trung bình 185ms ĐẠT
UAT (Người dùng) Trải nghiệm đọc sách, tính phù hợp của gợi ý, độ nhạy Chatbot 35 người tham gia 91.4% đánh giá trải nghiệm ở mức Tốt/Rất tốt ĐẠT

Kết quả đạt được

Hệ thống đã hoàn thành 100% các tính năng đề ra theo đúng yêu cầu:

  • Ứng dụng Web Admin: Hoạt động ổn định trên nền trình duyệt hiện đại, hiển thị bảng điều khiển trực quan, cung cấp đầy đủ chức năng quản lý tác giả, nhà xuất bản, thể loại và khóa tài khoản vi phạm.
  • Ứng dụng Mobile: Build thành công gói cài đặt trên Android và iOS, thời gian render trang sách mượt mà với dung lượng tệp tối ưu.
  • Hệ thống gợi ý & Chatbot: Engine Universal Recommender phản hồi danh sách gợi ý dưới 200ms; Chatbot Dialogflow nhận diện đúng ý định (Intent Recognition Accuracy) đạt 89.2% với các câu hỏi về thông tin tác giả, thể loại và nội dung sách.

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

  1. Ứng dụng thuật toán CCO đa nguồn dữ liệu: Khác biệt với các hệ thống lọc cộng tác truyền thống (Collaborative Filtering) vốn chỉ dựa trên điểm đánh giá (Rating) đơn nhất, giải pháp CCO kết hợp tương quan giữa hành vi đọc thử, thời gian mở sách và thao tác phân loại giá sách để giải quyết triệt để bài toán thưa thớt dữ liệu (Data Sparsity).
  2. Kiến trúc phân tầng độc lập, chi phí thấp: Kết hợp Node.js phi đồng bộ và công cụ tìm kiếm phân tán Elasticsearch, hệ thống giảm thiểu tối đa tài nguyên phần cứng, cho phép các đơn vị xuất bản quy mô vừa và nhỏ vận hành với chi phí chỉ bằng 30-40% so với việc thuê bao dịch vụ SaaS nước ngoài.
  3. Trợ lý đọc sách NLP thông minh: Ứng dụng Dialogflow tạo ra trải nghiệm tương tác đối thoại tự nhiên, giúp người đọc tìm kiếm tác phẩm qua mô tả ngôn ngữ đời thường thay vì chỉ phụ thuộc vào thanh tìm kiếm từ khóa tĩnh.
So sánh hiệu quả tìm kiếm sách giữa 2 phương pháp:
==> Giảm 70.8% thời gian tìm kiếm tác phẩm phù hợp cho độc giả!

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

Kịch bản ứng dụng thực tế

  • Thư viện số tại các trường Đại học/Cao đẳng: Giúp sinh viên dễ dàng tra cứu tài liệu học tập, giáo trình điện tử và nhận tư vấn tài liệu chuyên ngành tự động từ Chatbot.
  • Nhà xuất bản và Công ty phát hành sách nội địa: Tự chủ kênh phân phối số, giảm bớt sự phụ thuộc vào các nền tảng ngoại, tối ưu hóa biên lợi nhuận kinh doanh.
  • Thư viện nội bộ của doanh nghiệp: Hỗ trợ xây dựng văn hóa đọc và đào tạo nội bộ thông qua việc theo dõi và khuyến nghị tài liệu chuyên môn theo phòng ban.

Triển khai và Tối ưu hóa hạ tầng

# docker-compose.production.yml (Trích xuất cấu hình triển khai phân tán)
version: '3.8'
services:
  api-gateway:
    image: node:18-alpine
    restart: always
    ports:
      - "8080:8080"
    environment:
      - NODE_ENV=production
      - DB_HOST=mysql-db
      - UR_SERVER_URL=http://ur-engine:9090
    depends_on:
      - mysql-db
      - ur-engine

  mysql-db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - mysql_data:/var/lib/mysql

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.9
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"

volumes:
  mysql_data:

Phân tích hiệu quả kinh tế (ROI)

  • Chi phí đầu tư ban đầu ước tính giảm 55% so với việc mua bản quyền giải pháp đóng gói nước ngoài.
  • Tỷ suất sinh lời (ROI) dự kiến đạt điểm hòa vốn sau 8–12 tháng vận hành thực tế tại các đơn vị xuất bản nhờ tiết kiệm phí chiết khấu hoa hồng phân phối.

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

Hạn chế hiện tại

  • Vấn đề khởi đầu lạnh (Cold-start): Đối với người dùng mới đăng ký chưa có bất kỳ dữ liệu hành vi nào, hệ thống phải sử dụng cơ chế dự phòng (Fallback) là hiển thị sách phổ biến nhất (Popularity-based).
  • Phụ thuộc kết nối mạng: Ứng dụng chưa hỗ trợ đọc sách ở chế độ ngoại tuyến hoàn toàn (Offline Caching) kèm đồng bộ hai chiều khi có mạng.
  • Khả năng hiểu ngữ cảnh sâu của Chatbot: Dialogflow ES có giới hạn trong việc xử lý các truy vấn quá dài hoặc có cấu trúc ngữ pháp phức tạp.

Hướng phát triển trong tương lai

  • Tích hợp mô hình ngôn ngữ lớn (LLM) và kiến trúc RAG (Retrieval-Augmented Generation) để Chatbot có thể tóm tắt trực tiếp nội dung chương sách theo yêu cầu của độc giả.
  • Nâng cấp hệ thống khuyến nghị với mạng nơ-ron sâu (Deep Neural Networks for Recommendation - ví dụ DLRM hoặc Transformer-based RecSys).
  • Phát triển tính năng chuyển đổi giọng nói Text-to-Speech (TTS) hỗ trợ độc giả nghe Audio-book chất lượng cao.

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


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

1. Yêu cầu phần cứng tối thiểu để triển khai toàn bộ hệ thống là gì?

Máy chủ tối thiểu cần 4 vCPU, 8GB RAM (khuyến nghị 16GB RAM để vận hành đồng thời cụm Apache Spark và Elasticsearch mượt mà), 50GB ổ cứng SSD và hệ điều hành Ubuntu Server 20.04/22.04 LTS có cài đặt Docker & Docker Compose.

2. Hệ thống giải quyết bài toán tải cao (High Concurrency) như thế nào?

Kiến trúc sử dụng Node.js xử lý bất đồng bộ kết hợp cơ chế lập chỉ mục tìm kiếm phân tán trên Elasticsearch. Khi lượng truy cập tăng đột biến, tầng API Backend có thể mở rộng theo chiều ngang (Horizontal Scaling) phía sau Reverse Proxy Nginx, trong khi dữ liệu huấn luyện ML được tính toán định kỳ theo batch bởi Spark mà không làm nghẽn luồng truy vấn trực tiếp.

3. Hệ thống có thể tích hợp với cơ sở dữ liệu thư viện hiện có (như Marc21/Koha) không?

Có. Nhờ thiết kế theo chuẩn RESTful API, hệ thống có thể xây dựng thêm module chuyển đổi dữ liệu (ETL Service) để đồng bộ danh mục sách và bạn đọc từ các chuẩn quản lý thư viện truyền thống sang MySQL thông qua các cron-job định kỳ.

4. Chi phí bảo trì định kỳ của hệ thống bao gồm những khoản nào?

Chi phí bảo trì chủ yếu gồm phí thuê máy chủ Cloud/VPS (khoảng 30–80 USD/tháng tùy quy mô người dùng), chi phí duy trì tên miền/chứng chỉ SSL và hạn mức truy vấn API của Google Dialogflow (nếu vượt quá gói miễn phí tiêu chuẩn).

5. Khả năng bảo mật thông tin và chống sao chép sách điện tử được thực hiện ra sao?

Toàn bộ kết nối được mã hóa qua giao thức HTTPS/WSS. Liên kết tải tệp sách được ký số tạm thời (Signed URL) với thời gian hết hạn cụ thể; dữ liệu định danh và mật khẩu người dùng được băm bảo mật bằng thuật toán bcrypt có độ phức tạp cao, ngăn ngừa nguy cơ rò rỉ dữ liệu tài khoản.


Kết luận

Khóa luận tốt nghiệp "Xây dựng ứng dụng quản lý thư viện sách điện tử với chức năng khuyến nghị và Chatbot" của nhóm tác giả tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM đã giải quyết trọn vẹn bài toán xây dựng một nền tảng đọc sách số hoàn chỉnh, hiện đại và tối ưu chi phí. Việc kết hợp thành công giữa các công nghệ phần mềm phổ biến (React, React Native, Node.js, MySQL) với các công cụ trí tuệ nhân tạo và học máy tiên tiến (The Universal Recommender, Apache Spark, Elasticsearch, Google Dialogflow) là minh chứng rõ nét cho tính ứng dụng thực tiễn cao của đề tài.

Giải pháp mở ra cơ hội chuyển đổi số chi phí thấp nhưng hiệu quả vượt trội cho các nhà sách, trường học và nhà xuất bản tại Việt Nam, đóng góp tích cực vào sự phát triển của văn hóa đọc trong kỷ nguyên số.