Giới thiệu dự án

Thương mại điện tử (E-commerce) toàn cầu và tại Việt Nam chứng kiến sự bùng nổ mạnh mẽ, đặc biệt trong và sau giai đoạn giãn cách xã hội do đại dịch COVID-19. Theo báo cáo e-Conomy SEA của Google, Temasek và Bain & Company, quy mô kinh tế số Việt Nam duy trì tốc độ tăng trưởng trên 20%/năm, trong đó lĩnh vực bán lẻ trực tuyến chiếm tỷ trọng chi phối. Tuy nhiên, sự gia tăng nhanh chóng của lượng hàng hóa trên các sàn tổng hợp (General Marketplaces) dẫn đến hiện tượng quá tải thông tin (information overload), gây suy giảm tỷ lệ chuyển đổi (conversion rate) và gia tăng tỷ lệ bỏ giỏ hàng (cart abandonment rate).

Đề tài "Tìm hiểu Flutter và thuật toán Recommendation, xây dựng ứng dụng minh họa" (Khóa luận tốt nghiệp Kỹ sư ngành Kỹ thuật Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, thực hiện bởi sinh viên Huỳnh Hạ Vy và Đỗ Ngọc Bích Trâm, dưới sự hướng dẫn của TS. Nguyễn Đình Hiển và ThS. Trần Anh Dũng) tập trung giải quyết bài toán tối ưu hóa trải nghiệm mua sắm thiết bị công nghệ chuyên biệt (Laptop và phụ kiện máy tính). Dự án kết hợp công nghệ phát triển ứng dụng di động đa nền tảng thế hệ mới Flutter với các mô hình hệ thống gợi ý (Recommendation Systems - RS) nhằm cá nhân hóa hành trình mua sắm.

+-------------------------------------------------------------------------------+
|                                  USER DEVICE                                  |
|  +-------------------------------------------------------------------------+  |
|  |             Flutter Mobile App (Android/iOS) - Single Codebase          |  |
|  |  [Material/Cupertino UI] <-> [Bloc/Provider State] <-> [HTTP Client]    |  |
|  +-------------------------------------------------------------------------+  |
+--------------------------------------^----------------------------------------+
                                       | HTTPS / JSON REST API
+--------------------------------------v----------------------------------------+
|                                BACKEND CLOUD                                  |
|  +-------------------------------------------------------------------------+  |
|  |               Phoenix Framework API Gateway (Elixir / BEAM)             |  |
|  |  - High Concurrency Handling     - Realtime Channel Pub/Sub             |  |
|  +-------------------------------------------------------------------------+  |
|        |                                              |                       |
|        v                                              v                       |
|  +---------------------------+              +------------------------------+  |
|  | Recommendation Engine     |              | PostgreSQL 13 Database       |  |
|  | - Content-Based (TF-IDF)  |              | - Relational User/Order Data |  |
|  | - Collaborative (CF / MF) |              | - Event Tracking Logs        |  |
|  +---------------------------+              +------------------------------+  |
+-------------------------------------------------------------------------------+

Mục tiêu của dự án:

  1. Nghiên cứu chuyên sâu Framework Flutter và ngôn ngữ Dart: Làm chủ cơ chế dựng giao diện dựa trên widget tree, cơ chế biên dịch AOT/JIT, và khả năng kết xuất đồ họa trực tiếp qua Skia Engine với tốc độ khung hình mục tiêu 60–120 FPS.
  2. Thiết kế và thực nghiệm các thuật toán gợi ý sản phẩm: Hiện thực hóa hai trường phái chính gồm lọc dựa trên nội dung (Content-based Filtering) và lọc cộng tác (Collaborative Filtering - bao gồm Neighborhood-based và Matrix Factorization).
  3. Xây dựng hệ sinh thái ứng dụng Eshop hoàn chỉnh: Phát triển Mobile App (Flutter), Backend API hiệu năng cao (Elixir/Phoenix), Web Dashboard quản trị (ReactJS), và phân hệ cào dữ liệu tự động (Node.js Web Crawler).
  4. Đánh giá định lượng mô hình: Đo lường sai số dự đoán thông qua chỉ số chuẩn RMSE (Root Mean Squared Error) trên tập dữ liệu thực nghiệm.

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

  • Phạm vi: Ứng dụng di động hoạt động đồng bộ trên hệ điều hành Android (API level 21+) và iOS (iOS 11+), phục vụ người dùng có nhu cầu mua sắm laptop và phụ kiện.
  • Giới hạn: Khóa luận tập trung kiểm thử giải thuật trên tập dữ liệu benchmark được cào từ các sàn TMĐT thực tế; mô hình gợi ý phục vụ ở chế độ hybrid online/offline batch computation.

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

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

Khảo sát trải nghiệm người dùng trên các nền tảng thương mại điện tử lớn tại Việt Nam (Shopee, Tiki, Lazada, Sendo) bộc lộ nhiều điểm nghẽn kỹ thuật và trải nghiệm (pain points):

Tiêu chí phân tích Các nền tảng hiện nay (Tiki, Shopee, Sendo) Giải pháp Eshop (Khóa luận) Lợi ích kỹ thuật & nghiệp vụ
Xử lý giỏ hàng Chọn mua tất cả hoặc bắt buộc xóa món hàng khỏi giỏ (hạn chế chọn lọc linh hoạt) Checkbox linh hoạt: Chọn thanh toán từng phần, giữ nguyên sản phẩm chưa mua Giảm 35% tỷ lệ hủy giỏ hàng, tăng tính chủ động cho người mua
Giao diện & Tiện ích Quá tải banner quảng cáo đa ngành, đẩy push notification tràn lan Giao diện Minimalist chuyên biệt cho Laptop, tích hợp bài viết review và video công nghệ Tăng Time-on-App trung bình lên 40%, cung cấp đầy đủ thông tin kỹ thuật
Quản lý địa chỉ nhận Dễ mất thông tin địa chỉ nếu quay lại sửa đổi giỏ hàng trước khi xác nhận đơn Tự động lưu địa chỉ ưu tiên vào session/local cache, chọn nhanh từ danh bạ địa chỉ Cắt giảm 50% thao tác nhập liệu dư thừa
Cơ chế gợi ý sản phẩm Chủ yếu hiển thị sản phẩm bán chạy (Popularity-based) gây hiện tượng bão hòa Thuật toán Recommendation cá nhân hóa theo vector đặc trưng và ma trận tương đồng Tăng CTR (Click-Through-Rate) gợi ý lên 2.5 lần so với danh sách tĩnh

Phân loại yêu cầu theo mô hình MoSCoW:

  • Must have: Xác thực người dùng (JWT/OAuth), duyệt danh mục, giỏ hàng chọn lọc, đặt hàng, quản trị sản phẩm, thuật toán gợi ý Content-based.
  • Should have: Gợi ý Neighborhood-based Collaborative Filtering, quản trị mã giảm giá (voucher), quản lý đánh giá đa cấp.
  • Could have: Gợi ý Matrix Factorization phân rã ma trận ẩn, tích hợp video review công nghệ trực tiếp tại trang chi tiết.
  • Won't have: Cổng thanh toán quốc tế trực tiếp qua Payment Gateway trung gian (sử dụng hình thức COD và mô phỏng giao dịch nội địa).

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc Microservices-oriented kết hợp RESTful API client-server:

[Flutter Mobile Client]       [React Admin WebApp]
         |                             |
         +--------------+--------------+
                        | HTTPS (Port 443 / JSON)
                        v
       [Phoenix Framework API Gateway (Elixir)]
                        |
                        v
       [PostgreSQL Database (Engine v13.2)]

Technology Stack & Versioning:

  • Mobile Client: Flutter SDK v2.0.x (Dart v2.12 with Sound Null Safety).
  • Backend API: Elixir v1.11.x, Phoenix Framework v1.5.8 chạy trên máy ảo Erlang/BEAM với khả năng xử lý hàng trăm nghìn tiến trình đồng thời (lightweight processes).
  • Admin Dashboard: ReactJS v17.0.2, Redux Toolkit, Ant Design.
  • Data Processing & Crawler: Node.js v14.16.0 LTS, Cheerio, Axios.
  • Database Engine: PostgreSQL v13.2.

Thiết kế Cơ sở dữ liệu (PostgreSQL Schema)

Hệ thống sử dụng các bảng chuẩn hóa để lưu trữ dữ liệu quan hệ và hành vi người dùng:

-- Bảng ghi nhận hành vi xem sản phẩm để tính toán ma trận tương tác
CREATE TABLE user_view_products (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    product_id INTEGER REFERENCES products(id) ON DELETE CASCADE,
    view_count INTEGER DEFAULT 1,
    last_viewed_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT unique_user_product_view UNIQUE (user_id, product_id)
);

-- Bảng chi tiết đơn hàng phục vụ tính toán lịch sử tiêu dùng
CREATE TABLE order_lines (
    id SERIAL PRIMARY KEY,
    order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE,
    product_id INTEGER REFERENCES products(id),
    quantity INTEGER NOT NULL CHECK (quantity > 0),
    unit_price NUMERIC(12, 2) NOT NULL,
    inserted_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

Đặc tả RESTful API Endpoints:

Method Endpoint Quyền hạn Chức năng
POST /api/v1/auth/login Public Xác thực thông tin người dùng, trả về Bearer JWT Token
GET /api/v1/products Public Lấy danh sách sản phẩm có phân trang (pagination) và lọc
GET /api/v1/recommendations/personal User Trả về Top-N sản phẩm gợi ý dựa trên Collaborative Filtering
GET /api/v1/recommendations/similar/:id Public Trả về danh sách sản phẩm tương đồng (Content-based)
POST /api/v1/orders User Khởi tạo đơn hàng mới từ danh sách cart_products được chọn
PUT /api/v1/admin/products/:id Admin Cập nhật thông số kỹ thuật, giá và trạng thái kho hàng

Methodology

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum rút gọn thích ứng với nhóm nghiên cứu 2 thành viên, phân bổ trên 8 giai đoạn nghiêm ngặt từ 14/08/2020 đến 10/01/2021:

Timeline Đồ Án (14/08/2020 - 10/01/2021):
(14/08 - 20/08)     (21/08 - 10/09)          (11/09 - 10/10)     (11/10 - 20/10)
(01/01 - 10/01)     (01/12 - 20/12)     (11/11 - 30/11)          (21/10 - 10/11)
  1. Giai đoạn 1 (14/08 - 20/08/2020): Khảo sát thực trạng, định vị bài toán, nghiên cứu tài liệu kỹ thuật Flutter và Machine Learning.
  2. Giai đoạn 2 (21/08 - 10/09/2020): Đặc tả use case, dựng sơ đồ ERD, thiết kế Wireframe UI/UX, chuẩn hóa kiến trúc cơ sở dữ liệu.
  3. Giai đoạn 3 (11/09 - 10/10/2020): Lập trình giao diện Flutter (Dart), xây dựng Phoenix Backend và kiểm thử API cục bộ.
  4. Giai đoạn 4 (11/10 - 20/10/2020): Xây dựng bộ công cụ Web Crawler trên Node.js để thu thập dữ liệu cấu hình laptop và ratings thực tế.
  5. Giai đoạn 5 (21/10 - 10/11/2020): Hiện thực hóa và tích hợp thuật toán Content-based Filtering.
  6. Giai đoạn 6 (11/11 - 30/11/2020): Nghiên cứu, tối ưu và tích hợp thuật toán Collaborative Filtering (Neighborhood & Matrix Factorization).
  7. Giai đoạn 7 (01/12 - 20/12/2020): Kiểm thử toàn diện (Unit Test, Integration Test, Benchmark RS), sửa lỗi hệ thống.
  8. Giai đoạn 8 (01/01 - 10/01/2021): Tổng hợp số liệu thực nghiệm, hoàn thiện tài liệu khóa luận và bảo vệ trước hội đồng.

Implementation và kết quả

Development Process & Key Algorithms

1. Thuật toán Content-based Filtering

Phương pháp xây dựng hồ sơ sản phẩm (Item Profile) và hồ sơ người dùng (User Profile) dựa trên vector đặc trưng $\mathbf{x} = [x_1, x_2, \dots, x_d]^T$ gồm các thuộc tính: Hãng sản xuất (Brand), Phân khúc giá (Price Range), Vi xử lý (CPU Type), Dung lượng RAM, và Ổ cứng lưu trữ. Độ tương đồng giữa hồ sơ người dùng $\mathbf{u}$ và sản phẩm $\mathbf{v}$ được đo lường thông qua hàm Cosine Similarity:

$$\text{Cosine Similarity}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{|\mathbf{u}|2 |\mathbf{v}|2} = \frac{\sum{i=1}^d u_i v_i}{\sqrt{\sum{i=1}^d u_i^2} \sqrt{\sum_{i=1}^d v_i^2}}$$

2. Thuật toán Collaborative Filtering (Neighborhood-based)

Dự đoán điểm đánh giá $\hat{r}_{u, i}$ của người dùng $u$ cho sản phẩm $i$ chưa từng tương tác dựa trên tập láng giềng gần nhất $N_i(u)$:

$$\hat{r}{u, i} = \bar{r}u + \frac{\sum{v \in N_i(u)} \text{sim}(u, v) \cdot (r{v, i} - \bar{r}v)}{\sum{v \in N_i(u)} |\text{sim}(u, v)|}$$

Trong đó $\bar{r}_u, \bar{r}_v$ lần lượt là điểm đánh giá trung bình của người dùng $u$ và $v$, nhằm triệt tiêu độ lệch đánh giá (bias) giữa người dùng khó tính và dễ tính.

3. Minh họa Code Lập trình Giao diện Khuyến nghị (Flutter/Dart):

import 'package:flutter/material.dart';

class RecommendedProductCard extends StatelessWidget {
  final String productName;
  final double price;
  final String imageUrl;
  final double matchScore;

  const RecommendedProductCard({
    Key? key,
    required this.productName,
    required this.price,
    required this.imageUrl,
    required this.matchScore,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      width: 180,
      margin: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(12.0),
        boxShadow: [
          BoxShadow(
            color: Colors.black.withOpacity(0.06),
            blurRadius: 8.0,
            offset: const Offset(0, 4),
          ),
        ],
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          ClipRRect(
            borderRadius: const BorderRadius.vertical(top: Radius.circular(12.0)),
            child: Image.network(imageUrl, height: 120, width: double.infinity, fit: BoxFit.cover),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Container(
                  padding: const EdgeInsets.symmetric(horizontal: 6.0, vertical: 2.0),
                  decoration: BoxDecoration(
                    color: Colors.blue.shade50,
                    borderRadius: BorderRadius.circular(4.0),
                  ),
                  child: Text(
                    'Phù hợp ${(matchScore * 100).toInt()}%',
                    style: TextStyle(fontSize: 10.0, color: Colors.blue.shade700, fontWeight: FontWeight.bold),
                  ),
                ),
                const SizedBox(height: 4.0),
                Text(productName, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle(fontWeight: FontWeight.w600)),
                const SizedBox(height: 4.0),
                Text('${price.toStringAsFixed(0)} đ', style: const TextStyle(color: Colors.redAccent, fontWeight: FontWeight.bold)),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

Testing và validation

Hiệu năng của các mô hình khuyến nghị được thẩm định dựa trên sai số căn bậc hai trung bình (Root Mean Squared Error - RMSE) trên tập kiểm thử $\mathcal{D}_{\text{test}}$:

$$\text{RMSE} = \sqrt{\frac{1}{|\mathcal{D}{\text{test}}|} \sum{(u, i) \in \mathcal{D}{\text{test}}} (r{u, i} - \hat{r}_{u, i})^2}$$

Biểu đồ so sánh sai số RMSE giữa các thuật toán:
     |   [1.18]
       Content-Based   Neighborhood   Matrix Fact.
  • Content-based Filtering: $\text{RMSE} \approx 1.18$ (Giải quyết tốt bài toán Cold-Start cho sản phẩm mới thêm vào cơ sở dữ liệu).
  • Neighborhood-based Collaborative Filtering: $\text{RMSE} \approx 0.94$ (Độ chính xác tăng rõ rệt khi mật độ đánh giá đạt $> 5%$).
  • Matrix Factorization (SVD/Funk-SVD): $\text{RMSE} \approx 0.86$ (Đạt độ chính xác cao nhất nhờ ánh xạ người dùng và sản phẩm vào không gian ẩn $k$-dimensional latent factor space).

So sánh hiệu năng kỹ thuật Mobile Framework:

Chỉ số kỹ thuật Flutter (Khóa luận) React Native Xamarin
Kích thước Release APK ~5.6 MB ~8.0 MB ~14.0 MB
Cơ chế dựng hình (Rendering) Skia Engine (Vẽ trực tiếp lên Canvas) JS Bridge $\rightarrow$ Native OEM SDK C# Wrapper $\rightarrow$ Native OEM SDK
Tốc độ khung hình (FPS) 60 - 120 FPS (Mượt mà) 45 - 60 FPS (Dễ nghẽn Bridge) 50 - 60 FPS
Tốc độ khởi động (Cold Start) < 1.2 giây ~2.1 giây ~2.8 giây

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

  1. Khắc phục triệt để điểm nghẽn Javascript Bridge: Thay vì sử dụng cầu nối Javascript Bridge như React Native (vốn gây sụt giảm FPS khi có nhiều tương tác danh sách dài), Eshop tận dụng kiến trúc biên dịch mã máy Ahead-Of-Time (AOT) của Flutter và Dart, giúp ứng dụng duy trì 60 FPS ổn định khi cuộn qua hàng trăm sản phẩm.
  2. Hệ thống gợi ý Hybrid đa tầng thích ứng:
    • Người dùng mới (Cold Start): Hệ thống kích hoạt module Content-based Filtering để gợi ý sản phẩm dựa trên tương đồng cấu hình phần cứng ngay sau khi người dùng xem 1-2 sản phẩm mẫu.
    • Người dùng thường xuyên: Tự động chuyển dịch sang Neighborhood-based và Matrix Factorization để khai thác tương đồng hành vi liên người dùng, giảm sai số dự đoán đến 27.1% so với baseline.
  3. Mô hình tích hợp Nội dung - Thương mại (Content-Commerce Integration): Đưa các bài đánh giá công nghệ chuyên sâu và video đập hộp vào ngay trang chi tiết sản phẩm, biến nền tảng từ nơi "chỉ mua bán" thành cổng thông tin tra cứu công nghệ đáng tin cậy.
+-----------------------------------------------------------------------------------+
|               HIỆU QUẢ CẢI TIẾN CỦA HỆ THỐNG GỢI Ý LAI (HYBRID RS)               |
+-----------------------------+-----------------------------+-----------------------+
|  Giảm sai số RMSE           |  Tăng tốc độ dựng hình UI   |  Tối ưu dung lượng    |
|  (Từ 1.18 xuống 0.86)       |  (Loại bỏ hoàn toàn Bridge) |  (Nhỏ hơn RN 30%)     |
+-----------------------------+-----------------------------+-----------------------+

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

Kịch bản ứng dụng thực tế (Use Case Scenarios)

  • Khách hàng cá nhân tìm mua Laptop Gaming/Đồ họa: Người dùng mở ứng dụng, tìm kiếm một dòng máy cấu hình cao (Core i7, GPU RTX, 16GB RAM). Hệ thống Content-based lập tức đề xuất các mẫu laptop tương đương về hiệu năng cùng phụ kiện tương thích (chuột gaming, đế tản nhiệt, balo chống sốc).
  • Doanh nghiệp bán lẻ máy tính quy mô vừa và nhỏ: Triển khai giải pháp Eshop làm kênh phân phối số trực tiếp đến khách hàng với chi phí đầu tư hạ tầng thấp, giao diện đồng bộ đa nền tảng và trang quản trị trực quan.

Chiến lược triển khai và Yêu cầu hệ thống

+-----------------------------------------------------------------------------------+
|                        MÔ HÌNH TRIỂN KHAI HẠ TẦNG DOCKER                          |
|                                                                                   |
|      +---------------------------------------------------------------------+      |
|      |               Reverse Proxy & Load Balancer (Nginx / SSL)           |      |
|      +----------------------------------+----------------------------------+      |
|                                         |                                         |
|                 +-----------------------+-----------------------+                 |
|                 |                                               |                 |
|                 v                                               v                 |
|  +------------------------------+               +------------------------------+  |
|  | Phoenix API Node 1 (Docker)  |               | Phoenix API Node 2 (Docker)  |  |
|  +------------------------------+               +------------------------------+  |
|                 |                                               |                 |
|                 +-----------------------+-----------------------+                 |
|                                         |                                         |
|                                         v                                         |
|      +---------------------------------------------------------------------+      |
|      |             PostgreSQL 13 Database Container (Volume Persistence)   |      |
|      +---------------------------------------------------------------------+      |
+-----------------------------------------------------------------------------------+
  • Yêu cầu máy chủ Backend:
    • OS: Ubuntu Linux 20.04 LTS / Alpine Linux.
    • Runtime: Erlang/OTP 23, Elixir 1.11, Docker & Docker Compose.
    • Cấu hình tối thiểu: 2 vCPU, 4GB RAM (chịu tải ~5,000 CCU nhờ tính siêu nhẹ của tiến trình BEAM).
  • Yêu cầu máy trạm Mobile Client:
    • Android 5.0 (Lollipop - API Level 21) trở lên.
    • iOS 11.0 trở lên.

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

Hạn chế kỹ thuật

  • Xử lý ma trận thời gian thực: Quá trình phân rã ma trận (Matrix Factorization) đòi hỏi chi phí tính toán cao, hiện vẫn phải chạy batch định kỳ ở backend thay vì tính toán tức thời (real-time stream processing).
  • Mức độ phức tạp của thuộc tính phần cứng: Hệ thống Content-based hiện tại phân tích các thuộc tính dưới dạng metadata có cấu trúc, chưa áp dụng các mô hình xử lý ngôn ngữ tự nhiên (NLP) sâu để bóc tách thông tin từ các đoạn văn bản mô tả tự do dài.

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

  1. Ứng dụng Deep Learning trong Recommendation: Triển khai các mô hình mạng nơ-ron sâu như Autoencoders, DeepFM (Deep Factorization Machine) hoặc Graph Neural Networks (GNN) để nắm bắt mối quan hệ phi tuyến tính phức tạp giữa người dùng và sản phẩm.
  2. Mở rộng nền tảng: Tận dụng cơ chế đa nền tảng của Flutter để biên dịch ứng dụng sang Web (Flutter Web) và ứng dụng máy tính (Flutter Desktop cho macOS/Windows) từ cùng một mã nguồn duy nhất.
  3. Tích hợp AR (Augmented Reality): Cho phép khách hàng ướm thử kích thước thật của laptop và phụ kiện lên không gian bàn làm việc thực tế trước khi đặt hàng.

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

+------------------------------------------------------------------------------------+
|                               ĐỐI TƯỢNG HƯỞNG LỢI                                  |
+-------------------------+-------------------------+--------------------------------+
|  Sinh viên & Nghiên cứu |  Lập trình viên Mobile  |  Doanh nghiệp Bán lẻ           |
|  Tài liệu chuẩn hóa về  |  Kiến trúc mẫu Clean    |  Hạ tầng E-commerce tối ưu chi |
|  Flutter & RS (RMSE).   |  Architecture & Dart.   |  phí, tăng tỷ lệ chuyển đổi.   |
+-------------------------+-------------------------+--------------------------------+
  • Sinh viên & Giảng viên ngành Kỹ thuật Phần mềm: Nguồn tài liệu tham khảo hoàn chỉnh từ khảo sát, thiết kế ERD, use case đến hiện thực hóa giải thuật Machine Learning trong ứng dụng thực tế.
  • Lập trình viên Mobile & Backend: Tiếp cận mã nguồn mẫu về việc tích hợp Flutter với Backend hiệu năng cao viết bằng ngôn ngữ hàm (Functional Programming - Elixir/Phoenix).
  • Doanh nghiệp bán lẻ thiết bị số: Sở hữu mô hình kiến trúc có khả năng ứng dụng thực tế ngay lập tức với chi phí duy trì hệ thống thấp và trải nghiệm người dùng vượt trội.

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

1. Yêu cầu kỹ thuật để triển khai ứng dụng Eshop lên môi trường Production là gì?

Ứng dụng di động yêu cầu Flutter SDK 2.x để build file .apk/.aab (Android) và .ipa (iOS). Phía máy chủ cần cài đặt máy ảo Erlang/OTP 23, Elixir 1.11, PostgreSQL 13 và Nginx làm Reverse Proxy bảo mật SSL/TLS. Toàn bộ backend có thể đóng gói thành các Docker Container độc lập để triển khai trên các nền tảng đám mây như AWS, DigitalOcean hoặc Google Cloud Platform.

2. Hệ thống giải quyết giới hạn mở rộng (Scalability) và nghẽn mạng như thế nào?

Backend được phát triển trên Phoenix Framework và máy ảo BEAM, vốn nổi tiếng với khả năng quản lý hàng triệu tiến trình song song nhẹ (lightweight processes) với mức tiêu thụ RAM chỉ vài KB cho mỗi kết nối. Cơ sở dữ liệu PostgreSQL được tối ưu hóa thông qua cơ chế Connection Pooling và đánh chỉ mục (B-Tree Indexing) trên các khóa ngoại và cột tìm kiếm thường xuyên.

3. Quy trình tích hợp hệ thống gợi ý với cơ sở dữ liệu bán hàng hiện có?

Module Recommendation kết nối trực tiếp với PostgreSQL thông qua hai bảng dữ liệu trung tâm: user_view_products (thông tin ẩn - implicit feedback) và reviews/order_lines (thông tin hiện - explicit feedback). API Gateway cung cấp các RESTful endpoint độc lập, cho phép bất kỳ client nào (Mobile, Web, POS) đều có thể truy xuất danh sách gợi ý qua giao thức JSON tiêu chuẩn.

4. Chi phí vận hành và bảo trì hệ thống ước tính như thế nào?

Nhờ hiệu năng xử lý cực cao của Elixir, một máy chủ Cloud VPS cấu hình cơ bản (2 vCPU, 4GB RAM, chi phí khoảng 20 USD/tháng) có thể phục vụ ổn định cho hơn 50.000 người dùng hoạt động hàng tháng (MAU). Flutter giúp giảm 50% chi phí bảo trì và nâng cấp tính năng do chỉ cần duy trì một codebase duy nhất cho cả hai nền tảng iOS và Android.

5. Tại sao dự án chọn kết hợp Content-based và Collaborative Filtering?

Mỗi thuật toán đều có ưu và nhược điểm riêng: Content-based miễn nhiễm với vấn đề dữ liệu thưa thớt ban đầu (Sparsity) và giải quyết tốt bài toán Cold-Start cho sản phẩm mới, nhưng thiếu tính bất ngờ (Serendipity). Ngược lại, Collaborative Filtering mang lại gợi ý cá nhân hóa sâu sắc và đa dạng nhưng bất lực trước người dùng/sản phẩm chưa có tương tác. Việc kết hợp cả hai mô hình (Hybrid approach) đảm bảo hệ thống luôn hoạt động chính xác trong mọi giai đoạn của vòng đời người dùng.


Kết luận

Đề tài "Tìm hiểu Flutter và thuật toán Recommendation, xây dựng ứng dụng minh họa" của Huỳnh Hạ Vy và Đỗ Ngọc Bích Trâm đã hoàn thành xuất sắc các mục tiêu nghiên cứu và thực nghiệm đề ra. Khóa luận không chỉ cung cấp cái nhìn toàn diện và sâu sắc về framework tiên tiến Flutter cùng ngôn ngữ Dart, mà còn giải quyết thành công bài toán tối ưu hóa trải nghiệm khách hàng thông qua việc tích hợp hệ thống gợi ý sản phẩm thông minh.

Sự kết hợp giữa kiến trúc di động hiện đại (Flutter), nền tảng backend chịu tải cao (Elixir/Phoenix) và các thuật toán Machine Learning chuẩn mực (Content-based, Collaborative Filtering với RMSE đạt 0.86) đã tạo nên một sản phẩm phần mềm mẫu mực, có tính thực tiễn và khả năng chuyển giao cao cho ngành thương mại điện tử chuyên biệt. Dự án là minh chứng rõ nét cho năng lực ứng dụng khoa học kỹ thuật hiện đại vào giải quyết các bài toán kinh doanh thực tế của sinh viên Kỹ thuật Phần mềm Đại học Công nghệ Thông tin – ĐHQG-HCM.