Giới thiệu dự án

Thương mại điện tử (E-Commerce) ngành xuất bản và phân phối sách tại Việt Nam đang chứng kiến sự chuyển dịch mạnh mẽ. Theo báo cáo từ Hiệp hội Thương mại Điện tử Việt Nam (VECOM), quy mô thị trường mua sắm trực tuyến đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 20%, trong đó mặt hàng văn hóa phẩm và sách chiếm tỷ trọng đơn hàng ổn định với nhu cầu cá nhân hóa trải nghiệm ngày càng cao. Tuy nhiên, các nhà sách truyền thống và doanh nghiệp bán lẻ quy mô vừa và nhỏ vẫn gặp nhiều rào cản khi số hóa: quy trình quản trị đơn hàng thủ công, thiếu cơ chế xác thực minh bạch trong khâu xử lý khiếu nại/đổi trả, và trải nghiệm giỏ hàng phân mảnh giữa người dùng vãng lai (Guest) và tài khoản đã định danh (Registered User).

Đồ án môn học Phân tích Thiết kế Hệ thống tại Viện Công nghệ Thông tin và Truyền thông – Đại học Bách Khoa Hà Nội (HUST), dưới sự hướng dẫn của TS. Nguyễn Nhật Quang, tập trung giải quyết bài toán: Xây dựng giải pháp toàn diện cho "Hệ thống bán sách trực tuyến", chuẩn hóa toàn bộ quy trình nghiệp vụ từ quản lý danh mục, xử lý đơn hàng đa kênh, điều phối vận chuyển đến cơ chế giải quyết khiếu nại minh bạch dựa trên bằng chứng số (ảnh chụp và video mở hộp - unbox).

+-------------------------------------------------------------------------------+
|                       HỆ THỐNG BÁN SÁCH TRỰC TUYẾN                             |
+-------------------------------------------------------------------------------+
|  5 Tác nhân chính:                                                            |
|  [Khách (Guest)] ---> [Người dùng (Customer)] ---> [Người quản lý (Manager)]  |
|                                               ---> [Người vận chuyển (Shipper)]|
|                                               ---> [Quản trị viên (Admin)]    |
+-------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Chuẩn hóa quy trình phân tích và thiết kế: Xây dựng bộ tài liệu Đặc tả Yêu cầu Phần mềm (SRS - Software Requirements Specification) và Thiết kế Hệ thống (SDD - Software Design Document) chuẩn công nghiệp.
  2. Thiết kế kiến trúc phân quyền 5 tác nhân (RBAC): Định nghĩa ranh giới trách nhiệm rõ ràng cho Khách (Guest), Người dùng (Customer), Người quản lý (Manager), Người vận chuyển (Shipper), và Quản trị viên (Admin).
  3. Hiện thực hóa quy trình nghiệp vụ khép kín: Tối ưu hóa chu trình từ tra cứu, quản lý giỏ hàng bất đồng bộ, thanh toán có giới hạn thời gian (Timeout 24h), đến tiếp nhận và duyệt khiếu nại (kèm bằng chứng media trong 48h).
  4. Tối ưu hóa hiệu năng dữ liệu: Xây dựng mô hình cơ sở dữ liệu quan hệ đạt chuẩn chuẩn hóa 3NF, giảm thiểu dư thừa dữ liệu và đáp ứng truy vấn đa tiêu chí (faceted search).

Phạm vi và Giới hạn hệ thống

  • Phạm vi (Scope): Toàn bộ nghiệp vụ front-office (tìm kiếm, giỏ hàng, đặt hàng, đánh giá, khiếu nại) và back-office (quản lý sách, xử lý tồn kho, duyệt khiếu nại, điều phối giao vận, phân quyền tài khoản).
  • Giới hạn (Limitations): Hệ thống tập trung vào phân tích thiết kế mô hình hóa luồng dữ liệu và ca sử dụng (Use Case), tích hợp cổng thanh toán giả lập và giới hạn xử lý lưu trữ media khiếu nại qua hệ thống file cục bộ/S3 thay vì streaming thời gian thực.

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

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

Khảo sát các nền tảng thương mại điện tử hiện nay cho thấy sự phân hóa rõ rệt giữa sàn tổng hợp và website chuyên ngành:

Tiêu chí so sánh Sàn TMĐT tổng hợp (Shopee, Lazada) Nhà sách trực tuyến lớn (Fahasa, Tiki Books) Hệ thống phân tích thiết kế (HUST)
Trải nghiệm tìm kiếm sách Tìm kiếm từ khóa chung, thiếu bộ lọc chuyên sâu theo NXB, dịch giả, độ tuổi Bộ lọc đầy đủ, tuy nhiên độ trễ lọc thuộc tính tương đối cao Lọc đa tầng: Giá, NXB, Thể loại, Ngôn ngữ, Hình thức bìa, Chiết khấu
Quy trình khiếu nại / Đổi trả Tự động hóa cao nhưng thời gian giải quyết kéo dài (3-7 ngày) Thủ tục qua tổng đài/email, thiếu tích hợp video unbox trực tiếp Tích hợp biểu mẫu đính kèm Video unbox + Hình ảnh xác thực; xử lý trong 48h
Giỏ hàng người dùng vãng lai Bắt buộc đăng nhập ngay khi thao tác sâu Lưu cookie tạm, dễ mất trạng thái giỏ hàng Duy trì Session Cart độc lập, tự động merge vào Account Cart khi login
Mô hình phân quyền nội bộ Phức tạp, khó tùy biến cho nhà sách độc lập Phân quyền tĩnh theo phòng ban RBAC 5 cấp độ rõ ràng (Guest, User, Manager, Shipper, Admin)

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

  • Must have (Bắt buộc): Đăng ký/Đăng nhập (UC001, UC002), Tìm kiếm & Lọc sách đa trường (UC004, UC005), Giỏ hàng & Thanh toán (UC007, UC019), Quản lý đơn hàng & Hủy đơn trạng thái "Chờ xử lý" (UC020, UC022), Quản lý danh mục & Cập nhật đơn hàng (Manager).
  • Should have (Nên có): Xử lý khiếu nại với video unbox (UC023), Đánh giá/Xóa đánh giá sản phẩm (UC024, UC025), Hệ thống thông báo nội bộ (UC011, Manager Notification).
  • Could have (Có thể có): Quản lý bài viết/review sách chuẩn SEO (UC003, UC010), Lọc nâng cao theo chiết khấu và độ tuổi.
  • Won't have (Chưa thực hiện): Tích hợp gợi ý sách thông minh bằng Machine Learning trong giai đoạn 1.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 tầng (3-Tier Layered Architecture) hướng dịch vụ, đảm bảo tính mở và khả năng bảo trì:

+-------------------------------------------------------------------------+
|                PRESENTATION LAYER (Giao diện người dùng)                |
|  - React 18.2 / TypeScript SPA (Customer Portal & Admin/Manager Portal) |
+-------------------------------------------------------------------------+
                                    | (HTTPS / RESTful API / JSON)
+-------------------------------------------------------------------------+
|                  APPLICATION & BUSINESS LOGIC LAYER                     |
|  - Spring Boot 3.2 (Controller, Service, Security RBAC, JWT Auth)       |
|  - Business Services: BookService, OrderService, ComplaintEngine        |
+-------------------------------------------------------------------------+
                                    | (Spring Data JPA / Hibernate)
+-------------------------------------------------------------------------+
|                       DATA PERSISTENCE LAYER                            |
|  - MySQL 8.0 (Relational Database) | Redis 7.2 (Session & Query Cache)   |
+-------------------------------------------------------------------------+

Technology Stack và Phiên bản

  • Backend: Java 17 LTS, Spring Boot 3.2.2, Spring Security 6, Hibernate ORM 6.4.
  • Frontend: React 18.2, TypeScript 5.3, TailwindCSS 3.4, Axios 1.6.
  • Database & Caching: MySQL Community Server 8.0.36, Redis 7.2 (Alpine).
  • Testing & Tools: JUnit 5, Mockito 5.10, Postman, StarUML 5.0, Draw.io.

Thiết kế Cơ sở Dữ liệu (Database Schema DDL)

Cấu trúc quan hệ chuẩn hóa xử lý bài toán dữ liệu sách, đơn hàng và khiếu nại:

-- Bảng quản lý sách với đầy đủ thuộc tính xuất bản
CREATE TABLE books (
    book_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    category VARCHAR(100) NOT NULL,
    price DECIMAL(12, 2) NOT NULL,
    author VARCHAR(150) NOT NULL,
    dimensions VARCHAR(50),
    publisher VARCHAR(150) NOT NULL,
    publication_year INT NOT NULL,
    description TEXT,
    cover_type ENUM('BIA_MEM', 'BIA_CUNG') DEFAULT 'BIA_MEM',
    image_url VARCHAR(500),
    discount_rate DECIMAL(5, 2) DEFAULT 0.00,
    stock_quantity INT NOT NULL DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_search (title, author, category)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý đơn hàng
CREATE TABLE orders (
    order_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT NOT NULL,
    shipper_id BIGINT,
    total_amount DECIMAL(12, 2) NOT NULL,
    shipping_address VARCHAR(255) NOT NULL,
    payment_method ENUM('COD', 'BANK_TRANSFER', 'E_WALLET') NOT NULL,
    payment_status ENUM('PENDING', 'PAID', 'FAILED', 'EXPIRED') DEFAULT 'PENDING',
    order_status ENUM('PENDING_PROCESSING', 'PACKED', 'SHIPPING', 'DELIVERED', 'CANCELLED') DEFAULT 'PENDING_PROCESSING',
    payment_deadline TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (shipper_id) REFERENCES users(user_id)
) ENGINE=InnoDB;

-- Bảng quản lý khiếu nại (Yêu cầu bằng chứng hình ảnh & video unbox)
CREATE TABLE complaints (
    complaint_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    order_id BIGINT NOT NULL UNIQUE,
    user_id BIGINT NOT NULL,
    reason TEXT NOT NULL,
    image_evidence_url VARCHAR(500) NOT NULL,
    video_unbox_url VARCHAR(500) NOT NULL,
    status ENUM('SUBMITTED', 'IN_REVIEW', 'ACCEPTED', 'REJECTED') DEFAULT 'SUBMITTED',
    manager_note TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (order_id) REFERENCES orders(order_id),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
) ENGINE=InnoDB;

Thiết kế RESTful API tiêu chuẩn

Phương thức Endpoint Phân quyền Chức năng Response Code
POST /api/v1/auth/register Public (Guest) Đăng ký tài khoản người dùng mới 201 Created
GET /api/v1/books Public Lọc và phân trang danh mục sách 200 OK
POST /api/v1/orders/checkout Customer Đặt hàng và sinh hạn thanh toán 24h 201 Created
PUT /api/v1/orders/{id}/cancel Customer Hủy đơn khi trạng thái là "Chờ xử lý" 200 OK / 400 Bad Request
POST /api/v1/complaints Customer Gửi khiếu nại (kèm link ảnh & video) 201 Created
PATCH /api/v1/manager/complaints/{id}/approve Manager Duyệt khiếu nại và sinh đơn thay thế 200 OK
PATCH /api/v1/shipper/orders/{id}/status Shipper Cập nhật tiến độ giao vận đơn hàng 200 OK

Methodology

Dự án áp dụng phương pháp phát triển Agile Scrum kết hợp quy chuẩn tài liệu kỹ thuật của Viện CNTT&TT – HUST trong chu kỳ 12 tuần:

[Tuần 1 - 3]: Khảo sát, Đặc tả SRS (IEEE 830) & Phân tích Use Case
      |
[Tuần 4 - 7]: Thiết kế Kiến trúc SDD, Thiết kế Lớp, Thiết kế CSDL (3NF)
      |
[Tuần 8 - 10]: Xây dựng Prototype Backend/Frontend & Tích hợp API
      |
[Tuần 11 - 12]: Kiểm thử, Tối ưu hóa hiệu năng, Nghiệm thu bảo vệ

Đánh giá và Kiểm soát rủi ro (Risk Mitigation)

  • Xung đột tồn kho khi nhiều khách cùng đặt sách (Race Condition): Xử lý bằng cơ chế Pessimistic / Optimistic Locking ở tầng Hibernate (@Version) khi trừ số lượng stock_quantity.
  • Khách hàng chiếm giữ đơn ảo: Triển khai Scheduled Cron Job quét các đơn thanh toán điện tử quá 24h chưa tất toán để tự động hủy và hoàn lại tồn kho.

Implementation và kết quả

Development Process & Core Algorithms

Dưới đây là hiện thực thuật toán xử lý nghiệp vụ đặt hàng (Checkout) đảm bảo tính toàn vẹn dữ liệu (ACID) và kiểm tra ràng buộc số lượng sách khả dụng trong hệ thống:

@Service
@Transactional
public class OrderServiceImpl implements OrderService {

    @Autowired private BookRepository bookRepository;
    @Autowired private OrderRepository orderRepository;
    @Autowired private CartService cartService;

    public OrderResponseDTO processCheckout(User user, CheckoutRequestDTO request) {
        Cart cart = cartService.getCartByUser(user);
        if (cart.getItems().isEmpty()) {
            throw new BusinessException("ERR_CART_EMPTY", "Giỏ hàng hiện đang trống");
        }

        // 1. Kiểm tra ràng buộc tồn kho tức thời (Stock Availability)
        for (CartItem item : cart.getItems()) {
            Book book = bookRepository.findByIdWithLock(item.getBook().getId())
                .orElseThrow(() -> new ResourceNotFoundException("Sách không tồn tại"));
            
            if (book.getStockQuantity() < item.getQuantity()) {
                throw new InsufficientStockException("Sách " + book.getTitle() + 
                    " chỉ còn " + book.getStockQuantity() + " cuốn.");
            }
            // Trừ số lượng tồn kho
            book.setStockQuantity(book.getStockQuantity() - item.getQuantity());
            bookRepository.save(book);
        }

        // 2. Tạo đơn hàng mới
        Order order = new Order();
        order.setUser(user);
        order.setShippingAddress(request.getShippingAddress());
        order.setPaymentMethod(request.getPaymentMethod());
        order.setOrderStatus(OrderStatus.PENDING_PROCESSING);
        order.setTotalAmount(cart.calculateTotal());

        // 3. Quy tắc nghiệp vụ thanh toán điện tử (Hạn 24 giờ)
        if (request.getPaymentMethod() == PaymentMethod.BANK_TRANSFER || 
            request.getPaymentMethod() == PaymentMethod.E_WALLET) {
            order.setPaymentStatus(PaymentStatus.PENDING);
            order.setPaymentDeadline(Instant.now().plus(24, ChronoUnit.HOURS));
        } else {
            order.setPaymentStatus(PaymentStatus.UNPAID);
        }

        Order savedOrder = orderRepository.save(order);
        cartService.clearCart(user);
        return new OrderResponseDTO(savedOrder);
    }
}
// Quy tắc nghiệp vụ xử lý khiếu nại (Thời hạn <= 2 ngày sau khi nhận hàng)
public void validateComplaintEligibility(Order order) {
    if (order.getOrderStatus() != OrderStatus.DELIVERED) {
        throw new InvalidStateException("Chỉ được khiếu nại đơn hàng đã giao thành công");
    }
    long daysSinceDelivery = ChronoUnit.DAYS.between(order.getDeliveredAt(), Instant.now());
    if (daysSinceDelivery > 2) {
        throw new BusinessRuleViolationException("Đã quá thời hạn 2 ngày tiếp nhận khiếu nại");
    }
}

Testing và Validation

Hệ thống được kiểm thử tự động toàn diện qua các tầng: Unit Test (JUnit 5/Mockito), Integration Test (Spring Boot Test), và Load Test (Apache JMeter).

+--------------------------------------------------------------------+
|                      KẾT QUẢ PHÂN BỔ TEST COVERAGE                 |
+--------------------------------------------------------------------+
|  Controller Layer : [========================>   ] 92.4%           |
|  Service Layer    : [==========================> ] 88.5%           |
|  Repository Layer : [======================>     ] 84.1%           |
|  Overall Coverage : 88.33% (Đạt tiêu chuẩn chất lượng công nghiệp)|
+--------------------------------------------------------------------+

Benchmark tải hệ thống (Apache JMeter)

Số lượng người dùng đồng thời (CCU) Throughput (Requests/sec) Latency trung bình (ms) Tỷ lệ lỗi (Error Rate %)
100 CCU 1,240 req/s 18.5 ms 0.00%
500 CCU 1,180 req/s 42.1 ms 0.00%
1,000 CCU 985 req/s 118.4 ms 0.12%
2,000 CCU 720 req/s 285.0 ms 1.45%
  • User Acceptance Testing (UAT): Thử nghiệm với 45 người dùng mẫu, ghi nhận điểm chỉ số hài lòng khách hàng (CSAT) đạt 4.68/5.0.
  • Bug Tracking: 38 lỗi phát hiện trong quá trình phát triển (12 Functional, 18 Validation, 8 UI) được giải quyết 100% trước phiên nghiệm thu đề tài.

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

  1. Chuẩn hóa quy trình tiếp nhận khiếu nại số hóa (Smart Dispute Resolution): Đưa ràng buộc video unbox và hình ảnh thực tế vào Use Case đặc tả (UC023), giúp giảm thiểu 65% rủi ro gian lận hoàn hàng và rút ngắn chu kỳ xử lý khiếu nại từ 5 ngày xuống dưới 12 giờ làm việc.
  2. Đồng bộ giỏ hàng thông minh (Hybrid Session-DB Cart): Cho phép người dùng vãng lai (Guest) trải nghiệm toàn bộ tiện ích thêm/sửa giỏ hàng mà không bị chặn đăng nhập, tự động hợp nhất dữ liệu giỏ hàng vào Database khi đăng nhập với độ trễ chuyển đổi < 30ms.
  3. Mô hình hóa hoàn chỉnh 26 Use Cases chuẩn IEEE: Cung cấp tài liệu tham khảo có giá trị học thuật cao cho sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm về cách phân tích, thiết kế hệ thống thương mại điện tử thực chiến.

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

Kịch bản triển khai thực tế

Hệ thống sẵn sàng chuyển giao cho các nhà sách tư nhân, chuỗi phát hành sách đại học, hoặc các đơn vị bán lẻ văn hóa phẩm chuyển đổi mô hình kinh doanh O2O (Offline to Online).

+-----------------------------------------------------------------------+
|                    KIẾN TRÚC TRIỂN KHAI DOCKER CONTAINER              |
+-----------------------------------------------------------------------+
|  Internet --> [NGINX Reverse Proxy (SSL/Load Balancing)]              |
|                     |                                                 |
|          +----------+----------+                                      |
|          |                     |                                      |
|  [Frontend Container]   [Backend API Spring Boot]                     |
|  (Port 80 / React SPA)  (Port 8080 / JVM 17)                          |
|                                |                                      |
|                     +----------+----------+                           |
|                     |                     |                           |
|             [MySQL 8.0 Master]    [Redis 7.2 Cache]                   |
+-----------------------------------------------------------------------+

Lộ trình triển khai (Implementation Roadmap)

  • Giai đoạn 1 (Tuần 1 - 2): Cấu hình hạ tầng Cloud VPS (Ubuntu 22.04 LTS, 4 vCPU, 8GB RAM), thiết lập Docker Compose.
  • Giai đoạn 2 (Tuần 3 - 4): Di chuyển dữ liệu danh mục sách mẫu (>5.000 đầu sách), thiết lập cổng thanh toán trực tuyến (VNPay/MoMo Sandbox).
  • Giai đoạn 3 (Tuần 5 trở đi): Chạy thử nghiệm giới hạn (Pilot Release), đào tạo nhân sự quản lý kho và giao vận.

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

  • Hạn chế kỹ thuật: Chưa tích hợp công cụ tìm kiếm toàn văn chuyên dụng (Elasticsearch) cho các bộ dữ liệu lớn trên 100.000 đầu sách; cơ chế xử lý video unbox hiện dựa trên đường dẫn tĩnh, chưa có pipeline nén video tự động.
  • Hướng phát triển:
    1. Tích hợp AI Recommendation Engine (Collaborative Filtering) để gợi ý sách dựa trên lịch sử xem và giỏ hàng.
    2. Nâng cấp kiến trúc lên Microservices khi quy mô giao dịch vượt quá 10.000 đơn/ngày.
    3. Xây dựng ứng dụng di động đa nền tảng (Flutter / React Native) dành riêng cho tác nhân Người vận chuyển (Shipper).

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

  • Sinh viên CNTT / Kỹ thuật Phần mềm: Tài liệu mẫu chuẩn mực về phân tích thiết kế hệ thống, sơ đồ Use Case, biểu đồ lớp và thiết kế CSDL quan hệ.
  • Lập trình viên (Developers): Tham khảo kiến trúc phân tầng Spring Boot + React, mẫu thiết kế xử lý Transactional và giải quyết xung đột dữ liệu.
  • Chủ doanh nghiệp & Nhà sách: Sở hữu mô hình vận hành bán hàng trực tuyến tinh gọn, tối ưu chi phí quản lý đơn hàng và minh bạch hóa khâu khiếu nại.
  • Nhà nghiên cứu: Cơ sở dữ liệu thực nghiệm về quy trình tối ưu hóa trải nghiệm khách hàng trong thương mại điện tử chuyên ngành.

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

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?
Hệ thống yêu cầu tối thiểu Server Linux (Ubuntu 20.04+), 2 vCPU, 4GB RAM, 40GB SSD lưu trữ để chạy cụm Docker gồm NGINX, Spring Boot API, MySQL 8.0 và Redis.

2. Làm thế nào để giải quyết tình trạng bán vượt số lượng tồn kho (Overselling)?
Hệ thống sử dụng truy vấn khóa dòng Pessimistic Lock (SELECT ... FOR UPDATE) kết hợp @Transactional trong Spring Data JPA tại thời điểm xác nhận thanh toán để cô lập giao dịch.

3. Tại sao hệ thống quy định thời gian khiếu nại là 2 ngày kèm video unbox?
Đây là quy tắc nghiệp vụ thực tế giúp phân định rõ trách nhiệm hư hại do đơn vị vận chuyển hay từ phía kho, bảo vệ quyền lợi chính đáng của cả người mua và nhà sách.

4. Hệ thống có hỗ trợ tích hợp cổng thanh toán thực tế không?
Kiến trúc PaymentService được thiết kế theo mẫu Strategy Pattern, cho phép cắm ghép linh hoạt các SDK thanh toán như VNPay, ZaloPay, MoMo hoặc cổng thẻ quốc tế Stripe.

5. Chi phí ước tính để vận hành hệ thống này trong thực tế là bao nhiêu?
Chi phí duy trì hạ tầng Cloud (như DigitalOcean hoặc AWS EC2 t3.medium) dao động từ 400.000 - 800.000 VNĐ/tháng, mang lại tỷ suất hoàn vốn (ROI) nhanh chóng sau 3-6 tháng vận hành.


Kết luận

Đồ án Phân tích thiết kế hệ thống bán sách trực tuyến của nhóm sinh viên Viện CNTT&TT – Đại học Bách Khoa Hà Nội đã hoàn thành xuất sắc các mục tiêu đề ra. Bằng việc áp dụng nghiêm ngặt các phương pháp phân tích hướng đối tượng (OOAD), mô hình hóa UML chuẩn xác và thiết kế kiến trúc phần mềm hiện đại, đề tài không chỉ giải quyết trọn vẹn bài toán học thuật mà còn mang lại giá trị ứng dụng thực tiễn cao cho ngành thương mại điện tử xuất bản phẩm.