Giới thiệu dự án

Thành phố Thủ Đức được định hướng phát triển thành đô thị sáng tạo, tập trung mật độ cao các trường đại học, khu công nghệ cao và khu dân cư trẻ. Theo khảo sát hành vi tiêu dùng F&B (Food & Beverage) tại khu vực TP.HCM, hơn 68% người dùng trẻ (sinh viên, nhân viên văn phòng) có xu hướng ăn uống trực tiếp tại quán để trải nghiệm không gian và giao lưu xã hội thay vì chỉ đặt giao hàng tận nơi. Tuy nhiên, việc ăn uống tại chỗ thường xuyên gặp phải các trở ngại: mất thời gian tìm kiếm địa điểm uy tín, thiếu thông tin tình trạng bàn trống, khó khăn trong việc định vị đường đi tại các khu vực đường hẻm phức tạp, và lãng phí thời gian chờ đợi phục vụ món.

+-----------------------------------------------------------------------------------+
|                                THỰC TRẠNG & VẤN ĐỀ                                |
|  - 68% người dùng muốn trải nghiệm tại quán nhưng ngại tìm kiếm và chờ đợi bàn.   |
|  - Các ứng dụng hiện hữu (GrabFood, Foody) tập trung giao hàng, thiếu tính năng  |
|    đặt bàn trực tiếp kết hợp điều hướng vi mô (Micro-routing).                   |
+-----------------------------------------------------------------------------------+
                                         │
                                         ▼
+-----------------------------------------------------------------------------------+
|                                MỤC TIÊU GIẢI PHÁP                                |
|  1. Xây dựng ứng dụng di động đa nền tảng (React Native 0.71.8).                  |
|  2. Tích hợp Hệ thống Thông tin Địa lý GIS (VietMap API v2).                      |
|  3. Kiến trúc Backend-as-a-Service thời gian thực (Firebase Cloud Firestore).     |
|  4. Phát triển công cụ gợi ý thông minh dựa trên luật (Rule-Based Engine).         |
+-----------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng ứng dụng di động đa nền tảng: Phát triển ứng dụng hoàn chỉnh trên hệ điều hành Android và iOS bằng React Native framework, tối ưu giao diện trực quan và trải nghiệm người dùng (UX).
  2. Tích hợp bản đồ và định tuyến thông minh (GIS Engine): Nhúng bản đồ số VietMap API để cung cấp khả năng tìm kiếm tự động hoàn thiện (Autocomplete) và vẽ lộ trình đường đi (LINESTRING) từ vị trí người dùng (POINT(lat, lng)) đến nhà hàng.
  3. Hiện thực hóa hệ thống đặt bàn và duyệt đơn thời gian thực: Cho phép khách hàng chọn số lượng người (1–22 người), thời gian nhận bàn, đặt trước món ăn và hỗ trợ phía nhà hàng duyệt đơn ngay trên hệ thống.
  4. Xây dựng hệ thống gợi ý món ăn/quán ăn (Rule-Based Recommendation): Đưa ra đề xuất quán ăn tự động dựa trên điều kiện thời tiết thực tế, nhóm độ tuổi người dùng và điểm đánh giá cộng đồng ($\ge 4.0\text{ sao}$).

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

  • Phạm vi dữ liệu: Thí điểm thu thập, chuẩn hóa tọa độ không gian và thực đơn của 20 nhà hàng/quán ăn đại diện trên địa bàn Thành phố Thủ Đức.
  • Môi trường hoạt động: Thiết bị di động chạy hệ điều hành Android 8.0 (API Level 26) trở lên và iOS 12.0 trở lên, yêu cầu kết nối Internet liên tục và quyền truy cập GPS (ACCESS_FINE_LOCATION).

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 F&B phổ biến tại thị trường Việt Nam cho thấy sự phân hóa rõ rệt về mặt tính năng:

Tiêu chí Foody GrabFood ClingMe Ứng dụng Quản lý Quán ăn Thủ Đức
Mô hình cốt lõi Đánh giá & Giao đồ ăn Giao thức ăn & Gọi xe Tìm kiếm & Hoàn tiền Đặt bàn tại chỗ & Điều hướng GIS
Chức năng đặt bàn Hạn chế (chuyển qua hotline) Không hỗ trợ Không hỗ trợ Hỗ trợ đầy đủ (Chọn số người, giờ, thực đơn)
Dẫn đường trực quan Liên kết Google Maps ngoài Bản đồ theo dõi tài xế Bản đồ cơ bản Định tuyến trực tiếp trên app (VietMap SDK)
Cơ chế gợi ý Banner quảng cáo, lịch sử xem Thuật toán dựa trên khuyến mãi Cá nhân hóa theo ưu đãi Rule-based (Thời tiết + Độ tuổi + Đánh giá)
Quản trị phía quán Portal web phức tạp Ứng dụng GrabMerchant riêng Hệ thống tích điểm POS Tích hợp trực tiếp màn hình duyệt đơn trên app

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

  • Must have: Đăng ký/Đăng nhập (Firebase Auth), Bản đồ định vị và chỉ đường (VietMap Route API), Xem chi tiết quán ăn/thực đơn, Đặt bàn trực tuyến, Quản lý duyệt đơn phía nhà hàng.
  • Should have: Gợi ý theo thời tiết và độ tuổi, Đánh giá/Bình luận thời gian thực, Lưu danh mục yêu thích, Lọc quán ăn theo thể loại (Filter).
  • Could have: Thống kê doanh thu cơ bản cho chủ quán ăn, Tìm kiếm tự động hoàn thiện (Autocomplete).
  • Won't have (phiên bản hiện tại): Cổng thanh toán trực tuyến qua thẻ tín dụng quốc tế (chỉ hỗ trợ quy trình xác nhận cọc 50% thủ công qua hotline/chuyển khoản).

Thiết kế hệ thống

Kiến trúc ứng dụng tuân thủ mô hình Client-Serverless, phân tách rõ ràng giữa tầng hiển thị di động, các dịch vụ API trung gian và cơ sở dữ liệu phân tán NoSQL.

flowchart TB
    subgraph ClientLayer ["Mobile Client Layer (React Native 0.71.8)"]
        UI_Home["Trang chủ & Bộ lọc"]
        UI_Map["Module Bản đồ & Dẫn đường"]
        UI_Order["Module Đặt bàn & Duyệt đơn"]
        UI_Profile["Quản lý Tài khoản & Yêu thích"]
    end

    subgraph ServiceLayer ["External Cloud Services & APIs"]
        VM_Auto["VietMap Autocomplete API"]
        VM_Route["VietMap Route Maps API"]
        Weather_API["OpenWeather Geolocation API"]
    end

    subgraph BackendLayer ["Google Firebase Backend Platform"]
        FB_Auth["Firebase Authentication (Email/Password)"]
        FB_Firestore["Cloud Firestore (NoSQL Realtime Database)"]
        FB_Storage["Cloud Storage (Static Images/Assets)"]
    end

    UI_Home -->|Tra cứu tọa độ| VM_Auto
    UI_Map -->|Truy vấn định tuyến| VM_Route
    UI_Home -->|Lấy dữ liệu thời tiết| Weather_API

    ClientLayer -->|Xác thực người dùng| FB_Auth
    ClientLayer -->|Truy vấn & Đồng bộ Realtime| FB_Firestore
    ClientLayer -->|Tải hình ảnh quán ăn| FB_Storage

Ngăn xếp công nghệ (Technology Stack)

  • Frontend Framework: React Native 0.71.8 (JavaScript ES6+, React Hooks, React Navigation v6).
  • Backend Platform: Google Firebase (Firebase SDK v9.22.0).
  • Bản đồ số & GIS: VietMap API v2.0 (RESTful Routing & Tile Services).
  • Môi trường phát triển: Android Studio Hedgehog (Android SDK Platform 33), Java JDK 11.0.18, Node.js 18.16.0 LTS.

Thiết kế cơ sở dữ liệu Cloud Firestore

Cơ sở dữ liệu dạng NoSQL Document-Oriented được thiết kế chuẩn hóa cho các collection chính:

├── User (Collection)
│   └── {userId} (Document)
│       ├── Age: "21" (String)
│       ├── Email: "user@domain.com" (String)
│       ├── Favorite: ["quan1", "quan5"] (Array)
│       ├── Name: "Nguyen Van A" (String)
│       ├── Sdt: "0901234567" (String)
│       └── Role: "customer" | "manager" (String)
│
├── Restaurant (Collection)
│   └── {restaurantId} (Document)
│       ├── Name: "Nha Hang Goc Hue" (String)
│       ├── Address: "123 Vo Van Ngan, Thu Duc" (String)
│       ├── Location: [10.8505, 106.7719] (Array: [Lat, Lng])
│       ├── Rating: 4.8 (Number)
│       ├── Categories: ["Com", "Mon Hue"] (Array)
│       ├── Menu: [{dishId: 1, name: "Bun Bo", price: 45000}] (Array of Objects)
│       └── Orderlist: (Array of Reservation Objects)
│
└── Comment (Collection)
    └── {restaurantId} (Document)
        └── Reviews: (Array of Maps: [{userId, name, content, rating, timestamp}])

Methodology

Dự án áp dụng mô hình phát triển Xoắn ốc (Spiral Model), kết hợp tính tuần tự của Waterfall và tính linh hoạt lặp vòng của Agile/Scrum. Mỗi vòng xoắn giải quyết một nhóm rủi ro kỹ thuật cụ thể:

[Vòng 1: Khảo sát & Đánh giá rủi ro công nghệ]
  └── Đánh giá tính khả thi VietMap API + Firebase Native Bridge
[Vòng 2: Thiết kế & Xây dựng Prototype]
  └── Hiện thực kiến trúc dữ liệu NoSQL & UI Wireframe trên Figma
[Vòng 3: Lập trình tích hợp & Tối ưu hiệu năng]
  └── Code tính năng Dẫn đường, Đặt bàn, Engine gợi ý
[Vòng 4: Đánh giá, Kiểm thử & Đóng gói sản phẩm]
  └── UAT Test với 20 địa điểm thực tế tại TP. Thủ Đức
gantt
    title Kế hoạch Triển khai Dự án Khóa luận
    dateFormat  YYYY-MM-DD
    section Giai đoạn 1: Khảo sát
    Khảo sát thị trường & nghiệp vụ       :done, des1, 2023-01-05, 2023-01-20
    Thiết kế Use-case & Data Schema       :done, des2, 2023-01-21, 2023-02-10
    section Giai đoạn 2: Phát triển
    Thiết lập Firebase & React Native     :done, dev1, 2023-02-11, 2023-02-28
    Tích hợp VietMap GIS API              :done, dev2, 2023-03-01, 2023-03-25
    Phát triển Module Đặt bàn & Duyệt đơn :done, dev3, 2023-03-26, 2023-04-20
    Xây dựng Engine gợi ý thông minh      :done, dev4, 2023-04-21, 2023-05-10
    section Giai đoạn 3: Kiểm thử
    Kiểm thử chức năng & Tải hệ thống     :done, tst1, 2023-05-11, 2023-05-25
    UAT & Tối ưu hóa UI/UX                :done, tst2, 2023-05-26, 2023-06-05

Implementation và kết quả

Development process

Quá trình xây dựng tập trung giải quyết 3 bài toán kỹ thuật cốt lõi: xử lý định tuyến bản đồ, thuật toán đề xuất dựa trên luật ngữ cảnh, và quản lý giao dịch đặt bàn đồng thời.

1. Xử lý Định tuyến và Hiển thị Đường đi (VietMap Routing Engine)

Đoạn mã chịu trách nhiệm gọi VietMap Route API, giải mã hình học đường đi sang tọa độ thực và kết xuất đối tượng Polyline trực quan:

import React, { useState, useEffect } from 'react';
import MapView, { Polyline, Marker } from 'react-native-maps';
import axios from 'axios';

const NavigationScreen = ({ userLocation, restaurantLocation }) => {
  const [routeCoordinates, setRouteCoordinates] = useState([]);
  const [routeInfo, setRouteInfo] = useState({ distance: 0, duration: 0 });

  useEffect(() => {
    const fetchDirections = async () => {
      const VIETMAP_API_KEY = 'YOUR_VIETMAP_API_KEY';
      const url = `https://maps.vietmap.vn/api/route?api-version=2.0&apikey=${VIETMAP_API_KEY}&point=${userLocation.latitude},${userLocation.longitude}&point=${restaurantLocation.latitude},${restaurantLocation.longitude}&vehicle=car`;

      try {
        const response = await axios.get(url);
        if (response.data.paths && response.data.paths.length > 0) {
          const path = response.data.paths[0];
          // Giải mã chuỗi tọa độ LineString từ VietMap API
          const decodedPoints = path.points.coordinates.map(coord => ({
            latitude: coord[1],
            longitude: coord[0]
          }));
          setRouteCoordinates(decodedPoints);
          setRouteInfo({
            distance: (path.distance / 1000).toFixed(2), // km
            duration: Math.round(path.time / 60000)      // phút
          });
        }
      } catch (error) {
        console.error("Lỗi truy vấn lộ trình VietMap:", error);
      }
    };
    fetchDirections();
  }, [userLocation, restaurantLocation]);

  return (
    <MapView
      style={{ flex: 1 }}
      initialRegion={{
        latitude: userLocation.latitude,
        longitude: userLocation.longitude,
        latitudeDelta: 0.05,
        longitudeDelta: 0.05,
      }}
    >
      <Marker coordinate={userLocation} title="Vị trí của bạn" pinColor="blue" />
      <Marker coordinate={restaurantLocation} title="Nhà hàng đích" pinColor="red" />
      {routeCoordinates.length > 0 && (
        <Polyline coordinates={routeCoordinates} strokeWidth={5} strokeColor="#E53935" />
      )}
    </MapView>
  );
};

2. Thuật toán Gợi ý Đa điều kiện (Context-Aware Rule-Based Algorithm)

Hệ thống xử lý phân loại tập quán ăn theo không gian quyết định 3 chiều: Nhiệt độ môi trường, Độ tuổi tài khoản, và Điểm tín nhiệm cộng đồng. Độ phức tạp tính toán đạt mức tối ưu $O(N)$ với $N$ là tổng số lượng quán ăn trong cơ sở dữ liệu.

/**
 * Thuật toán lọc gợi ý quán ăn theo luật ngữ cảnh
 * @param {Array} restaurants - Danh sách quán ăn từ Firestore
 * @param {number} currentTemp - Nhiệt độ hiện tại từ Weather API (°C)
 * @param {number} userAge - Tuổi của người dùng
 * @returns {Array} Danh sách quán ăn đã được lọc
 */
export const filterRecommendations = (restaurants, currentTemp, userAge) => {
  return restaurants.filter(restaurant => {
    // Rule 1: Lọc theo đánh giá chất lượng (Threshold >= 4.0 sao)
    const matchesRating = restaurant.Rating >= 4.0;

    // Rule 2: Khớp danh mục theo điều kiện nhiệt độ thời tiết
    let matchesWeather = false;
    if (currentTemp > 30) {
      matchesWeather = restaurant.Categories.some(c => ['Trà sữa', 'Tráng miệng', 'Nước uống', 'Kem'].includes(c));
    } else if (currentTemp >= 25 && currentTemp <= 30) {
      matchesWeather = restaurant.Categories.some(c => ['Cơm', 'Bún', 'Fastfood', 'Quán ăn thông thường'].includes(c));
    } else {
      matchesWeather = restaurant.Categories.some(c => ['Lẩu', 'Mì cay', 'Nướng', 'Món nóng'].includes(c));
    }

    // Rule 3: Khớp danh mục theo độ tuổi người dùng
    let matchesAge = false;
    if (userAge <= 20) {
      matchesAge = restaurant.Categories.some(c => ['Ăn vặt', 'Trà sữa', 'Fastfood'].includes(c));
    } else if (userAge <= 50) {
      matchesAge = restaurant.Categories.some(c => ['Cơm văn phòng', 'Gia đình', 'Nhà hàng'].includes(c));
    } else {
      matchesAge = restaurant.Categories.some(c => ['Món thanh đạm', 'Chay', 'Truyền thống', 'Lẩu'].includes(c));
    }

    return matchesRating && (matchesWeather || matchesAge);
  });
};

Testing và validation

Quá trình kiểm thử được triển khai trên cả hai môi trường: Thiết bị giả lập (Android Emulator Pixel 4, API 33) và Thiết bị vật lý (Samsung Galaxy A52, Android 12).

Kết quả kiểm thử chức năng và độ bao phủ (Coverage Metrics)

Phân hệ chức năng Số lượng Test Case Trạng thái (Pass/Fail) Tỷ lệ thành công (%) Độ trễ trung bình (Latency)
Xác thực (Auth) 12 12/12 Pass 100% 185 ms
Tìm kiếm & Autocomplete 15 15/15 Pass 100% 140 ms
Định tuyến bản đồ GIS 20 19/20 Pass 95.0% 320 ms
Đặt bàn & Gửi đơn 18 18/18 Pass 100% 210 ms
Duyệt đơn phía Quán 14 14/14 Pass 100% 190 ms
Engine gợi ý thông minh 16 16/16 Pass 100% 45 ms

Đánh giá hiệu năng vận hành (Performance Benchmarks)

  • Tốc độ khung hình (Frame Rate): Duy trì ổn định ở mức $58 - 60\text{ FPS}$ trong suốt các tác vụ cuộn danh sách (FlatList) và tương tác chạm bản đồ.
  • Mức tiêu thụ tài nguyên phần cứng: Dung lượng RAM chiếm dụng trung bình $112\text{ MB}$, mức độ sử dụng CPU dao động từ $4.2%$ đến $12.8%$ khi kết xuất polyline đường đi.
  • Thời gian phản hồi dữ liệu (TTFB - Time To First Byte): Truy vấn dữ liệu qua Firebase Firestore trung bình đạt $160\text{ ms}$ trên kết nối 4G LTE.

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

+-----------------------------------------------------------------------------------+
|                            KẾT QUẢ TRIỂN KHAI THỰC NGHIỆM                         |
|                                                                                   |
|   [100%] Hoàn thành 11 use-cases cốt lõi theo đặc tả yêu cầu phần mềm.            |
|   [91.5%] Tỷ lệ định tuyến chính xác trong phạm vi địa lý TP. Thủ Đức.            |
|   [84.5/100] Điểm đánh giá mức độ hài lòng người dùng theo thang đo chuẩn SUS.    |
|   [65.0%] Giảm thiểu thời gian từ lúc tìm kiếm đến khi hoàn tất đặt bàn.          |
+-----------------------------------------------------------------------------------+

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

  1. Tích hợp giải pháp bản đồ số nội địa hóa (VietMap Integration): Khắc phục hạn chế về chi phí bản quyền đắt đỏ của Google Maps API, đồng thời tăng độ chính xác của các điểm dữ liệu địa chỉ chi tiết tại các tuyến đường đặc thù thuộc TP. Thủ Đức.
  2. Quy trình đóng khép kín trải nghiệm F&B tại chỗ: Khác biệt hoàn toàn với mô hình Food Delivery thuần túy (GrabFood/ShopeeFood), ứng dụng số hóa toàn bộ trải nghiệm từ: Tìm quán $\rightarrow$ Chỉ đường $\rightarrow$ Đặt chỗ & Chọn món trước $\rightarrow$ Xác nhận tức thời $\rightarrow$ Đánh giá.
  3. Mô hình Gợi ý Đa chiều Ngữ cảnh (Contextual Decision Tree): Ứng dụng quy tắc kết hợp giữa dữ liệu sinh trắc học cơ bản (độ tuổi) và dữ liệu môi trường thời gian thực (nhiệt độ thời tiết), đem lại tỷ lệ gợi ý trúng đích cao hơn các danh mục tĩnh truyền thống.
Tiêu chí Ứng dụng truyền thống (Foody/ClingMe) Khóa luận Ứng dụng Quản lý Quán ăn Thủ Đức Tỷ lệ cải thiện
Thời gian chốt bàn ăn 12 - 15 phút (gọi điện xác nhận) 3 - 4 phút (thao tác trực tiếp trên app) Tiết kiệm ~70% thời gian
Độ trễ cập nhật trạng thái Không đồng bộ realtime Cập nhật tức thời qua Firestore Realtime Thời gian thực (< 250ms)
Gợi ý ngữ cảnh môi trường Không hỗ trợ Tự động thích ứng theo thời tiết Tăng 45% tương tác gợi ý

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

Kịch bản sử dụng điển hình

  • Sinh viên Đại học Quốc gia TP.HCM: Nhóm 6 sinh viên có nhu cầu tổ chức ăn uống sau giờ học vào một ngày mưa ($<25^\circ\text{C}$). Ứng dụng tự động đề xuất quán lẩu nóng gần nhất với điểm rating $\ge 4.5$ sao, hỗ trợ nhóm đặt trước bàn 6 người, chọn sẵn nước lẩu và điều hướng đường ngắn nhất tránh các đoạn ngập nước.
  • Chủ quán ăn gia đình tại Thủ Đức: Tiếp nhận đơn đặt bàn của khách kèm thông tin chi tiết (giờ đến, số lượng khách, món ăn đặt trước). Chủ quán chỉ cần bấm "Duyệt đơn", hệ thống lập tức cập nhật trạng thái về điện thoại khách hàng, giảm thiểu tỷ lệ hủy bàn đột ngột.

Hướng dẫn cài đặt và Triển khai (Deployment Guide)

1. Yêu cầu môi trường

  • Node.js $\ge 18.x$, NPM $\ge 9.x$, Android SDK API Level 33, Java JDK 11.

2. Quy trình biên dịch và đóng gói Android APK

# Bước 1: Clone source code và cài đặt các phụ thuộc
git clone https://github.com/uit-project/restaurant-management-thuduc.git
cd restaurant-management-thuduc
npm install

# Bước 2: Cấu hình Firebase config
# Đặt tệp tin google-services.json vào thư mục /android/app/

# Bước 3: Liên kết cấu hình biến môi trường VietMap API Key trong .env
echo "VIETMAP_API_KEY=your_production_key_here" > .env

# Bước 4: Biên dịch và chạy ứng dụng trên thiết bị Android
npx react-native run-android --mode=release

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

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

  • Quy mô tập dữ liệu: Dữ liệu thử nghiệm mới dừng lại ở 20 nhà hàng/quán ăn tại TP. Thủ Đức, chưa bao phủ toàn bộ hệ sinh thái ẩm thực TP.HCM.
  • Cơ chế gợi ý: Thuật toán Rule-based hiện tại phụ thuộc vào các ngưỡng cố định (Hardcoded thresholds), chưa tự động học theo hành vi lịch sử dài hạn của từng cá nhân (Collaborative Filtering / Matrix Factorization).
  • Quy trình thanh toán: Chưa tích hợp trực tiếp SDK cổng thanh toán tự động (VNPay, MoMo, ZaloPay), việc đặt cọc vẫn cần xác nhận qua liên hệ trực tiếp.

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

  1. Nâng cấp AI Recommendation Engine: Tích hợp mô hình học máy Deep Learning (DeepFM hoặc Neural Collaborative Filtering) để cá nhân hóa đề xuất theo từng phiên truy cập.
  2. Mở rộng không gian địa lý: Mở rộng dữ liệu ra toàn bộ 24 quận, huyện thuộc TP.HCM và các tỉnh lân cận (Bình Dương, Đồng Nai).
  3. Tích hợp Ví điện tử: Hoàn thiện module thanh toán trực tuyến ký quỹ an toàn (Escrow Payment) cho phép tự động hoàn cọc khi hủy bàn đúng quy định.

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

+-----------------------------------------------------------------------------------+
|                             GIÁ TRỊ MANG LẠI CHO CỘNG ĐỒNG                        |
+-----------------------------------------------------------------------------------+
  │
  ├──► [Sinh viên / Người học]
  │    • Mã nguồn tham khảo chuẩn mực về tích hợp React Native & Google Firebase.
  │    • Kiến trúc xử lý GIS và tối ưu hóa hiệu năng render bản đồ.
  │
  ├──► [Lập trình viên Mobile]
  │    • Thiết kế Pattern kết nối Backend-as-a-Service (BaaS) an toàn, tinh gọn.
  │    • Phương pháp xử lý dữ liệu GeoJSON / Polyline từ dịch vụ bản đồ nội địa.
  │
  ├──► [Doanh nghiệp / Chủ Quán ăn]
  │    • Giải pháp chuyển đổi số F&B chi phí 0 đồng, tối ưu hóa công suất lấp đầy bàn.
  │    • Kênh tiếp cận khách hàng trẻ tại địa phương cực kỳ hiệu quả.
  │
  └──► [Nhà nghiên cứu Khoa học]
       • Tài liệu thực nghiệm về giải thuật Rule-Based trong ứng dụng định vị ngữ cảnh.

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

1. Yêu cầu phần cứng và phần mềm tối thiểu để cài đặt ứng dụng là gì?

Ứng dụng tương thích với các thiết bị chạy Android từ phiên bản 8.0 (Oreo) trở lên hoặc iOS từ phiên bản 12.0 trở lên. Thiết bị cần tối thiểu $2\text{ GB RAM}$, $100\text{ MB}$ bộ nhớ khả dụng và có chip định vị GPS hoạt động ổn định.

2. Hệ thống xử lý thế nào khi xảy ra tình trạng mất kết nối mạng (Offline)?

Firebase Cloud Firestore hỗ trợ tính năng Offline Persistence. Ứng dụng sẽ lưu trữ bộ nhớ đệm (Cache) các thông tin quán ăn đã tải. Khi mất mạng, người dùng vẫn có thể xem lại danh sách yêu thích và thực đơn đã lưu; các thao tác đặt bàn sẽ được đưa vào hàng đợi và tự động đồng bộ ngay khi thiết bị có Internet trở lại.

3. Tại sao dự án chọn VietMap API thay vì Google Maps API?

VietMap cung cấp dữ liệu biển báo, định tuyến đường hẻm và các điểm địa chỉ tại Việt Nam với độ phân giải cao và tính địa phương hóa chuẩn xác. Ngoài ra, việc sử dụng VietMap giúp tối ưu chi phí vận hành API đối với các dự án khởi nghiệp và đồ án nghiên cứu trong nước.

4. Chi phí duy trì hệ thống trên Cloud hàng tháng ước tính là bao nhiêu?

Với quy mô thử nghiệm dưới 10.000 người dùng hoạt động hàng tháng (MAU), gói miễn phí của Firebase (Spark Plan) hoàn toàn đáp ứng đủ lưu lượng đọc/ghi Firestore và dung lượng lưu trữ ảnh. Khi mở rộng quy mô lớn hơn, chi phí ước tính chỉ khoảng $15 - $25/tháng trên gói trả phí theo dung lượng (Blaze Plan).

5. Dữ liệu tài khoản và mật khẩu của người dùng được bảo mật như thế nào?

Mọi thông tin định danh và mật khẩu đều được mã hóa bằng thuật toán băm an toàn thông qua dịch vụ Firebase Authentication của Google. Hệ thống không lưu trữ mật khẩu dưới dạng văn bản thuần (Plaintext), tuân thủ các tiêu chuẩn bảo mật dữ liệu công nghiệp.


Kết luận

Đồ án tốt nghiệp "Ứng dụng quản lý quán ăn tại Thành phố Thủ Đức" do sinh viên Trần Hữu Hoàn và Nguyễn Thanh Minh thực hiện đã giải quyết thành công bài toán chuyển đổi số trong lĩnh vực F&B tại chỗ. Thông qua việc kết hợp giữa React Native, Google Firebase và VietMap GIS API, ứng dụng không chỉ đáp ứng toàn diện các tiêu chuẩn kỹ thuật về hiệu năng, tính ổn định và bảo mật, mà còn mở ra hướng tiếp cận mới trong việc gợi ý ẩm thực theo ngữ cảnh môi trường và độ tuổi.

Công trình là tài liệu tham khảo có giá trị ứng dụng cao cho sinh viên ngành Công nghệ Thông tin, đồng thời cung cấp một nền tảng thực tiễn sẵn sàng chuyển giao công nghệ cho các doanh nghiệp, hộ kinh doanh dịch vụ ăn uống trong kỷ nguyên đô thị thông minh.