Giới thiệu dự án
Sự bùng nổ của chuyển đổi số trong các cơ sở giáo dục đại học và đô thị thông minh đang định hình lại phương thức vận hành hạ tầng dịch vụ. Tại các trường đại học quy mô lớn, lưu lượng phương tiện ra vào vào các khung giờ cao điểm (đầu giờ học từ 6h45 - 7h30 và giờ tan ca) thường xuyên vượt ngưỡng phục vụ, dẫn đến hiện tượng tắc nghẽn nghiêm trọng tại các cổng kiểm soát. Đồng thời, tại khu vực nhà ăn (canteen), thời gian xếp hàng mua phiếu ăn và chờ chế biến vào giờ nghỉ trưa kéo dài từ 15 đến 25 phút làm suy giảm trải nghiệm của sinh viên và cán bộ giảng viên.
Đề tài "Xây dựng ứng dụng gửi xe và đặt món canteen, tích hợp thanh toán qua ứng dụng di động" được thực hiện bởi nhóm nghiên cứu Khoa Hệ thống Thông tin – Trường Đại học Công nghệ Thông tin (ĐHQG-HCM), dưới sự hướng dẫn của TS. Cao Thị Nhạn. Đề tài tập trung giải quyết triệt để các bài toán thực tiễn về tối ưu hóa quy trình kiểm soát bãi đỗ xe và tự động hóa khâu dịch vụ ăn uống thông qua nền tảng số hóa tập trung.
+-------------------------------------------------------------------------+
| CAMPUS ECOSYSTEM |
+--------------------+-------------------------------+--------------------+
| |
+-------------v-------------+ +-------------v-------------+
| Smart Parking Subsystem | | Canteen Order Subsystem |
| - ALPR Camera (PlateRec) | | - Digital Menu / Pre-order|
| - RFID Card Reader | | - Cart & Order Tracking |
+-------------+-------------+ +-------------+-------------+
| |
+---------------+---------------+
|
+-------------v-------------+
| Microservices / LoopBack4 |
| + MoMo Payment Gateway |
+---------------------------+
Vấn đề thực tiễn và điểm nghẽn hệ thống (Problem Statement)
- Tắc nghẽn cổng bãi xe: Thủ tục so khớp vé thủ công hoặc các trạm soát vé đơn tuyến mất trung bình 15–20 giây/lượt xe, gây ùn ứ hàng dài khi sinh viên vào lớp.
- Rủi ro thất lạc vé: Quy trình xác minh khi mất thẻ từ truyền thống đòi hỏi tra cứu thủ công qua camera và đối chiếu giấy đăng ký xe kéo dài từ 10–30 phút, gây gián đoạn vận hành.
- Xếp hàng giờ trưa: Canteen quá tải vào khung giờ 11h30–12h30; việc sử dụng tiền mặt hoặc phiếu giấy gây lãng phí nhân lực thu ngân và làm chậm tốc độ luân chuyển bàn ăn.
- Chi phí hạ tầng cao: Các giải pháp giữ xe thông minh thương mại trên thị trường đòi hỏi chi phí đầu tư ban đầu lớn (2 làn riêng biệt, 4 camera, barier đắt đỏ), không tối ưu cho mô hình phân tán hoặc nguồn ngân sách giới hạn.
Mục tiêu dự án (Project Objectives)
- Xây dựng ứng dụng di động Hybrid đa nền tảng (Android/iOS) kết nối đồng bộ dịch vụ gửi xe và đặt món ăn canteen theo triết lý "Move faster with a single codebase".
- Tích hợp giải pháp nhận diện biển số xe tự động (ALPR - Automatic License Plate Recognition) qua camera AI kết hợp đầu đọc thẻ từ RFID (Radio Frequency Identification) 13.56MHz.
- Triển khai kiến trúc Backend phân tán dạng Microservices bằng LoopBack 4 Framework (Node.js/TypeScript), đảm bảo tính sẵn sàng cao và khả năng mở rộng linh hoạt.
- Tích hợp cổng thanh toán trực tuyến MoMo API (App-In-App Deeplink) và cơ chế trừ tiền ví nội bộ qua thẻ sinh viên số hóa.
Phạm vi và giới hạn (Scope & Limitations)
- Phạm vi: Triển khai mô hình bãi giữ xe thông minh 1 làn đa năng (1 lane ra/vào linh hoạt, 2 camera nhận diện trước/sau, 1 máy quét RFID) và phân hệ đặt món canteen trực tuyến phục vụ người dùng trong khuôn viên trường.
- Giới hạn: Hệ thống nhận diện biển số dựa trên tích hợp API đám mây từ PlateRecognizer; yêu cầu kết nối mạng ổn định (Internet/Intranet) để xử lý giao tiếp giữa các microservices.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và yêu cầu người dùng
So sánh giải pháp đề xuất với các hệ thống quản lý hiện có trên thị trường:
| Tiêu chí |
Bãi xe thẻ từ truyền thống |
Hệ thống thương mại (iParking/Epik) |
Giải pháp đề tài UIT |
| Chi phí đầu tư phần cứng |
Thấp ($300 - $500) |
Rất cao ($3.000 - $8.000) |
Tối ưu ($800 - $1.200) |
| Công nghệ nhận diện |
Chỉ dùng thẻ từ RFID |
RFID + OCR biển số tại chỗ |
RFID + Cloud ALPR API |
| Hình thức thanh toán |
Tiền mặt / Vé tháng cố định |
Tiền mặt / Thẻ trả trước |
Ví MoMo / Thẻ sinh viên liên kết ví |
| Tích hợp tiện ích Canteen |
Không hỗ trợ |
Không hỗ trợ |
Tích hợp đặt món & thực đơn số |
| Khả năng mở rộng kiến trúc |
Đơn khối (Monolithic), cục bộ |
Đơn khối / Client-Server |
Microservices + Docker + CI/CD |
Bảng phân loại yêu cầu tính năng theo mô hình MoSCoW
| Phân loại (MoSCoW) |
Yêu cầu chức năng / Kỹ thuật |
| Must have (Bắt buộc) |
Quẹt thẻ RFID vào/ra, Chụp ảnh và nhận diện biển số tự động, Đăng nhập qua SMS OTP (Twilio), Nạp tiền ví qua MoMo App-In-App, Xem menu và đặt món canteen. |
| Should have (Nên có) |
Giám sát trạng thái bãi xe thời gian thực (Dashboard), Lịch sử giao dịch chi tiết, Đánh giá món ăn canteen, Thông báo build tự động qua Jenkins + MS Teams. |
| Could have (Có thể có) |
Quét mã QR code đăng nhập dự phòng khi mất thẻ vật lý, Gợi ý món ăn yêu thích dựa trên lịch sử đặt hàng. |
| Won't have (Chưa làm) |
Tự động hóa Barrier cơ điện, Tự huấn luyện (Train) mô hình AI Deep Learning on-premise cho biển số. |
Thiết kế hệ thống và kiến trúc phần mềm
Hệ thống được thiết kế theo kiến trúc Microservices hướng dịch vụ, sử dụng API Gateway làm cổng điều phối trung tâm tiếp nhận yêu cầu từ các client (Web Admin ReactJS và Mobile App Ionic/React Native).
+-----------------------------+
| Mobile App (Ionic + RN) |
| Web Admin Dashboard (React) |
+--------------+--------------+
| (REST / HTTPS)
+--------------v--------------+
| API GATEWAY |
+--------------+--------------+
|
+-----------------+---------+---------+-----------------+
| | | |
+--------v-------+ +-------v--------+ +--------v-------+ +-------v-------+
| Auth Service | | Parking Service| | Payment Service| | Canteen Serv. |
| (JWT, Twilio) | | (ALPR Proxy) | | (MoMo Handler) | | (Order/Menu) |
+--------+-------+ +-------+--------+ +--------+-------+ +-------+-------+
| | | |
+-----------------+---------+---------+-----------------+
|
+--------------v--------------+
| MongoDB Distributed DB |
+-----------------------------+
Công nghệ và phiên bản sử dụng
- Backend Framework: Node.js v14.x LTS, LoopBack 4 Framework (TypeScript) phục vụ xây dựng REST API và OpenAPI 3.0 specification.
- Database: MongoDB Community Server v4.4.x (NoSQL Document Store, lưu trữ schema JSON linh hoạt).
- Frontend Web: ReactJS v17.0.2, Redux Toolkit quản lý state ứng dụng giám sát bãi xe.
- Mobile Frontend: Ionic Framework v5 kết hợp React Native v0.64 (tận dụng WebView hiển thị UI và Native Container giao tiếp DeepLink với MoMo SDK).
- Third-party APIs: MoMo Payment Platform API, PlateRecognizer Snapshot API (ALPR), Twilio SMS Verify API.
- DevOps & Tools: Docker Engine v20.10, Jenkins Automation Server, GitLab SCM, Visual Studio Code.
Thiết kế cơ sở dữ liệu (Database Schema)
Cơ sở dữ liệu NoSQL MongoDB được thiết kế với 9 collections chính nhằm đảm bảo tính toàn vẹn và phi chuẩn hóa (denormalization) hợp lý:
+-------------------------------------------------------------------------------+
| DATABASE ENTITY DIAGRAM |
+-------------------------------------------------------------------------------+
+-------------------+ 1:N +-------------------+
| USER |---------------->| USERPARKING |
| - id (PK) | | - id (PK) |
| - email, phone | | - timeIn, timeOut |
| - balance | | - userId (FK) |
| - rfid (FK) | | - status |
| - vehicleId (FK) | +-------------------+
+---------+---------+
| 1:N
|
| 1:N 1:N +-------------------+
+-------------------------->| PAYMENT |
| | - id (PK) |
| | - payee, receiver |
| | - amount, channel |
+-------------------+ +-------------------+
|
| 1:N +-------------------+
+------>| PARKING |
| - id (PK) |
| - lat, long |
| - manager (FK) |
+-------------------+
+-------------------+ 1:N +-------------------+
| FOODCATEGORY |---------------->| FOOD |
| - id (PK) | | - id (PK) |
| - description | | - description |
| - thumbnail | | - price |
+-------------------+ | - category (FK) |
+-------------------+
Chi tiết cấu trúc các thực thể dữ liệu trọng tâm:
- User:
Id (String, PK), Email (String), Password (String - Bcrypt Hash), fullName (String), rfid (String, Index), Phone (String), Avatar (String), RoleId (String, FK), Balance (Number, Default: 0), VehicleId (String, FK).
- Payment:
Id (String, PK), Payee (String, FK), Receiver (String, FK), Channel (String: MOMO | INTERNAL_WALLET), Amount (Number), CreatedAt (DateTime).
- Parking:
Id (String, PK), Lat (String), Long (String), Thumbnail (String), Manager (String, FK).
- Userparking:
Id (String, PK), Timein (DateTime), Timeout (DateTime), UserId (String, FK), PlateNumberIn (String), PlateNumberOut (String), Status (String: PARKED | COMPLETED | VIOLATION).
- Food:
Id (String, PK), Description (String), Price (Number), Thumbnail (Array[String]), Category (String, FK).
Đặc tả API Endpoints chính (RESTful Services)
Hệ thống giao tiếp qua giao thức HTTPS với chuẩn dữ liệu JSON:
| Service |
Endpoint |
Method |
Request Payload / Params |
Status Code |
Mô tả chức năng |
| Payment |
/balance/:id |
GET |
id (String, Path) |
200 OK / 404 |
Lấy số dư tài khoản người dùng |
| Payment |
/add-balance/:id |
PUT |
{ amount: number, partnerRef: string } |
200 OK / 409 |
Nạp tiền vào tài khoản nội bộ |
| Payment |
/subtract-balance/:id |
PUT |
{ amount: number, serviceType: string } |
200 OK / 400 |
Trừ số dư thanh toán dịch vụ |
| Parking |
/vehical-move-in/:vehicalId |
PUT |
{ rfid: string, imageBase64: string } |
200 OK / 409 |
Xử lý xe vào bãi, trigger ALPR |
| Parking |
/vehical-move-out/:vehicalId |
PUT |
{ rfid: string, imageBase64: string } |
200 OK / 409 |
Đối chiếu biển số, trừ tiền và mở làn |
| MoMo |
/forwardPayment |
POST |
{ appData: string, orderId: string, amount: number } |
200 OK / 500 |
Ký HMAC-SHA256 và mở DeepLink MoMo |
| MoMo |
/confirm |
POST |
{ partnerCode, orderId, momoTransId, signature } |
200 OK / 400 |
Webhook nhận phản hồi trạng thái từ MoMo |
Implementation và kết quả
Quy trình phát triển và kiểm soát chất lượng (Development Methodology)
Dự án áp dụng mô hình Agile/Scrum điều chỉnh với vòng lặp Sprint kéo dài 2 tuần:
- Quản lý công việc qua bảng Kanban (Trello) với 4 cột trạng thái chuẩn hóa:
TODO, DOING, DONE, BACKLOG.
- Tự động hóa CI/CD thông qua Jenkins: Mỗi commit đẩy lên nhánh chính của GitLab sẽ tự động kích hoạt pipeline kiểm thử đơn vị (Unit Test), đóng gói container Docker và bắn thông báo trực tiếp vào nhóm Microsoft Teams.
+-----------+ Git Push +------------+ Auto Trigger +-------------+
| Developer | -------------------> | GitLab SCM | -------------------> | Jenkins |
+-----------+ +------------+ +------+------+
|
+-----------------------------------+-----------------------------------+
| | |
+-------v-------+ +-------v-------+ +-------v-------+
| Build & Test | | Docker Deploy | | MS Teams Noti |
+---------------+ +---------------+ +---------------+
Hiện thực thuật toán và mã nguồn then chốt
1. Xử lý xác thực chữ ký số thanh toán MoMo (HMAC-SHA256)
Quá trình tích hợp cổng thanh toán MoMo yêu cầu mã hóa và ký số payload bằng thuật toán HMAC-SHA256 nhằm ngăn chặn tấn công giả mạo dữ liệu (Man-in-the-middle).
import * as crypto from 'crypto';
export interface MoMoPaymentRequest {
partnerCode: string;
accessKey: string;
requestId: string;
amount: string;
orderId: string;
orderInfo: string;
returnUrl: string;
notifyUrl: string;
extraData: string;
}
export function generateMoMoSignature(
params: MoMoPaymentRequest,
secretKey: string,
): string {
// Chuẩn hóa chuỗi raw signature theo đúng định dạng MoMo quy định
const rawSignature =
`accessKey=${params.accessKey}` +
`&amount=${params.amount}` +
`&extraData=${params.extraData}` +
`¬ifyUrl=${params.notifyUrl}` +
`&orderId=${params.orderId}` +
`&orderInfo=${params.orderInfo}` +
`&partnerCode=${params.partnerCode}` +
`&returnUrl=${params.returnUrl}` +
`&requestId=${params.requestId}`;
return crypto
.createHmac('sha256', secretKey)
.update(rawSignature)
.digest('hex');
}
2. Xử lý kiểm soát xe ra và đối chiếu biển số (Parking Service)
Hàm kiểm soát xe ra khỏi bãi thực hiện việc trích xuất biển số qua PlateRecognizer ALPR API, so khớp với dữ liệu lúc vào bãi và tự động trừ số dư ví người dùng:
@post('/parking/checkout')
async handleVehicleCheckOut(
@requestBody() payload: { rfid: string; imageBase64: string },
): Promise<{ status: string; message: string; plateNumber: string }> {
// 1. Tìm thông tin phiên gửi xe đang hoạt động (Status: PARKED)
const activeTicket = await this.userParkingRepository.findOne({
where: { rfid: payload.rfid, status: 'PARKED' },
});
if (!activeTicket) {
throw new HttpErrors.NotFound('Không tìm thấy thông tin xe vào bãi.');
}
// 2. Gửi ảnh lên PlateRecognizer Cloud API để trích xuất biển số
const alprResponse = await this.alprService.recognizePlate(payload.imageBase64);
const detectedPlate = alprResponse.results[0]?.plate?.toUpperCase();
// 3. So khớp biển số xe vào và ra
if (detectedPlate !== activeTicket.plateNumberIn) {
throw new HttpErrors.Conflict(
`Cảnh báo sai lệch biển số! Vào: ${activeTicket.plateNumberIn}, Ra: ${detectedPlate}`,
);
}
// 4. Trừ tiền giữ xe từ ví nội bộ người dùng
const PARKING_FEE = 3000; // 3,000 VND
await this.paymentService.subtractBalance(activeTicket.userId, PARKING_FEE);
// 5. Cập nhật trạng thái vé gửi xe
await this.userParkingRepository.updateById(activeTicket.id, {
timeOut: new Date(),
plateNumberOut: detectedPlate,
status: 'COMPLETED',
});
return { status: 'SUCCESS', message: 'Xe hợp lệ, thanh toán thành công!', plateNumber: detectedPlate };
}
Đánh giá kết quả thực nghiệm và kiểm thử
Quá trình thử nghiệm thực tế tại khuôn viên Đại học Công nghệ Thông tin (UIT) ghi nhận các thông số kỹ thuật ấn tượng:
+-------------------------------------------------------------------------+
| LATENCY & PERFORMANCE BENCHMARK |
+-------------------------------------------------------------------------+
ALPR Cloud API Call [===== 650ms =====]
RFID Scanner Read Time [= 120ms =]
Internal Wallet Deduct [== 180ms ==]
MoMo App-In-App Launch [======= 950ms =======]
+-------------------------------------------------------------------------+
Total Check-in Flow Avg: 1.25s (Manual: 15-20s) -> 93.7% Reduction
Total Check-out Flow Avg: 1.85s (Manual: 20-30s) -> 90.7% Reduction
+-------------------------------------------------------------------------+
- Độ chính xác ALPR: Đạt 96.4% trong điều kiện ánh sáng chuẩn và 89.2% trong điều kiện trời mưa hoặc thiếu sáng.
- Tốc độ xử lý check-in/check-out: Giảm thời gian kiểm soát từ 15–20 giây (so soát thủ công) xuống còn 1.2 – 1.8 giây/lượt.
- Hiệu năng API Backend: Độ trễ trung bình của các dịch vụ LoopBack đạt dưới 250ms khi chịu tải 100 requests đồng thời (concurrency).
- Tỷ lệ thanh toán thành công qua MoMo: Đạt 99.1% trên tập mẫu 200 lượt thử nghiệm giao dịch test.
Đổi mới và đóng góp
- Kiến trúc phần cứng tối ưu chi phí (Single-Lane Dual-Camera Design): Khác với các hệ thống giữ xe đắt đỏ trên thị trường, mô hình của nhóm sử dụng cơ chế kiểm soát linh hoạt trên 1 làn đơn tích hợp 2 camera góc hẹp và 1 đầu đọc RFID. Giải pháp giúp giảm 45% - 60% chi phí đầu tư ban đầu nhưng vẫn đảm bảo tính an toàn nhờ thuật toán đối chiếu ảnh kép.
- Hệ sinh thái thanh toán không tiền mặt khép kín (Campus Cashless Closed-Loop): Tích hợp tài khoản giữ xe và đặt món ăn canteen vào chung một định danh thẻ sinh viên số. Sinh viên chỉ cần nạp tiền một lần qua ví MoMo để chi trả cho toàn bộ dịch vụ phụ trợ trong trường.
- Mô hình Hybrid App tối ưu tốc độ phát triển: Sự kết hợp độc đáo giữa Ionic Framework (xây dựng nhanh UI/UX di động linh hoạt) và React Native Native Modules (phục vụ kết nối cầu nối DeepLink với MoMo Payment SDK và quản lý camera phần cứng) cho phép rút ngắn 40% thời gian lập trình so với phát triển ứng dụng Native thuần túy.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use-Case Scenarios)
- Kịch bản 1: Giờ cao điểm sáng (7h00 AM): Sinh viên điều khiển xe vào bãi, quét thẻ sinh viên RFID lên máy đọc. Camera chụp ảnh sau/trước, API trích xuất biển số lưu vào cơ sở dữ liệu trong 1.2 giây; màn hình hiển thị xác nhận và người dùng di chuyển vào bãi nhanh chóng mà không gây ùn tắc.
- Kịch bản 2: Đặt bữa trưa tiết kiệm thời gian (11h00 AM): Trước khi tiết học sáng kết thúc 15 phút, sinh viên mở ứng dụng di động, chọn món ăn tại canteen và bấm đặt hàng. Tiền được trừ tự động qua số dư ví. Khi xuống canteen lúc 11h30, đơn hàng đã được chuẩn bị sẵn, sinh viên chỉ cần quét mã đơn để nhận món mà không cần xếp hàng.
- Kịch bản 3: Xử lý sự cố mất thẻ từ: Khi làm mất thẻ vật lý, sinh viên sử dụng mã QR xác thực định danh tạm thời trên ứng dụng di động (được bảo mật qua SMS OTP Twilio) để đối chiếu thông tin phương tiện đã đăng ký trong hồ sơ, giảm thời gian giải quyết sự cố xuống dưới 2 phút.
+-----------------------------------------------------------------------------------+
| CAMPUS DEPLOYMENT ROADMAP |
+-------------------+-------------------------------+-------------------------------+
| Phase 1: Prototype| Phase 2: Campus Pilot (UIT) | Phase 3: Commercial Scaling |
| - 1 Lab test lane | - 1 Live lane at Block B | - Multi-lane campus rollout |
| - Mock Canteen API| - Onboard UIT Central Canteen | - Multi-tenant Cloud SaaS |
| - MoMo Test Env | - MoMo Live Merchant SDK | - On-premise Edge YOLOv8 AI |
+-------------------+-------------------------------+-------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)
- Tiết kiệm chi phí nhân sự: Cắt giảm 1 nhân viên thu ngân tại canteen và giảm áp lực trực soát vé cho đội ngũ bảo vệ vào giờ cao điểm, ước tính tiết kiệm 15.000.000 – 20.000.000 VNĐ/tháng chi phí vận hành cho nhà trường.
- Thời gian hoàn vốn (ROI): Với chi phí đầu tư phần cứng và triển khai phần mềm ước tính khoảng 25.000.000 – 35.000.000 VNĐ cho một cụm bãi xe - nhà ăn, thời gian hoàn vốn đầu tư dự kiến chỉ từ 4 đến 6 tháng thông qua việc tối ưu chi phí quản lý vé giấy và gia tăng lượng giao dịch tại nhà ăn.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Giải pháp nhận diện biển số vẫn phụ thuộc vào kết nối Internet tới PlateRecognizer Cloud API, tiềm ẩn nguy cơ gián đoạn nếu đường truyền mạng gặp sự cố.
- Chưa tích hợp phần cứng cảm biến vòng từ (Loop Detector) và rào chắn Barrier tự động đóng/mở vật lý.
- Cơ sở dữ liệu MongoDB chưa triển khai cơ chế Replication Sharding cho môi trường chịu tải quy mô hàng trăm nghìn sinh viên.
Hướng phát triển trong tương lai
- Triển khai mô hình AI On-premise (Edge Computing): Tích hợp mô hình nhận diện biển số tự huấn luyện bằng YOLOv8 / TensorRT chạy trực tiếp trên các thiết bị máy tính nhúng (Nvidia Jetson Nano) tại trạm bãi xe để loại bỏ hoàn toàn độ trễ đám mây.
- Mở rộng hệ thống Multi-tenant SaaS: Phát triển nền tảng thành dịch vụ quản lý bãi đỗ xe và căn tin trường học dạng Cloud SaaS, cho phép nhiều trường đại học hoặc chuỗi tòa nhà văn phòng cùng đăng ký sử dụng chung hạ tầng.
- Tích hợp thanh toán sinh trắc học (Facial Recognition / Smart POS): Cho phép nhận diện khuôn mặt để thanh toán suất ăn tại canteen không cần mở điện thoại di động.
Đối tượng hưởng lợi
- Sinh viên & Cán bộ nhân viên trường: Tiết kiệm trung bình 15–20 phút mỗi ngày trong việc gửi xe và ăn trưa; trải nghiệm thanh toán không dùng tiền mặt an toàn, minh bạch.
- Nhân viên bảo vệ & Ban quản trị bãi xe: Giảm thiểu 80% áp lực ghi chép thủ công, hạn chế tối đa sai sót và nhầm lẫn biển số; dễ dàng truy vết lịch sử ra vào qua nhật ký hệ thống.
- Ban quản lý Canteen: Chủ động dự báo số lượng phần ăn cần chuẩn bị dựa trên dữ liệu đặt trước, giảm tỷ lệ thực phẩm dư thừa hoặc thiếu hụt nguyên liệu trong ngày.
- Cộng đồng Lập trình viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo thực tế về việc thiết kế hệ thống Microservices kết hợp hybrid app Ionic/React Native và quy trình tích hợp các cổng thanh toán fintech hiện đạ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 trạm kiểm soát bãi xe là gì?
Hệ thống yêu cầu: 01 máy tính trạm (Intel Core i3 thế hệ 8, 8GB RAM, hệ điều hành Ubuntu Linux 20.04 LTS hoặc Windows 10), 02 IP Camera độ phân giải tối thiểu Full HD (1080p) hỗ trợ hồng ngoại ban đêm, và 01 đầu đọc thẻ từ RFID chuẩn tần số 13.56MHz kết nối cổng USB.
2. Hệ thống xử lý thế nào khi mất kết nối mạng Internet?
Dữ liệu thẻ RFID và thông tin người dùng được lưu trong bộ nhớ đệm (Cache) cục bộ tại máy trạm. Khi mất Internet, hệ thống sẽ tạm thời chuyển sang chế độ đối chiếu thẻ từ Offline và đồng bộ (Sync) dữ liệu hình ảnh lên máy chủ ngay khi đường truyền được khôi phục.
3. Tích hợp thanh toán MoMo App-In-App có an toàn không?
Giao dịch thanh toán tuân thủ tiêu chuẩn bảo mật PCI-DSS cấp độ cao nhất. Mọi gói tin truyền nhận giữa ứng dụng di động, máy chủ backend và cổng thanh toán MoMo đều được mã hóa SSL/TLS 1.3 và ký số xác thực hai đầu bằng thuật toán HMAC-SHA256.
4. Tại sao nhóm lại kết hợp cả Ionic Framework và React Native trong cùng một ứng dụng?
Ionic Framework giúp nhóm tận dụng triệt để kỹ năng lập trình Web (HTML5/CSS/JavaScript) để dựng nhanh các giao diện phức tạp như Menu món ăn, giỏ hàng. Trong khi đó, React Native đóng vai trò Native Wrapper cung cấp hiệu năng mượt mà khi gọi DeepLink sang ứng dụng MoMo và thao tác với camera phần cứng.
5. Chi phí duy trì hệ thống hằng tháng ước tính là bao nhiêu?
Chi phí vận hành định kỳ rất tiết kiệm, bao gồm tiền điện trạm máy tính (~150.000 VNĐ/tháng), gói cước Cloud Server/VPS lưu trữ Backend (~300.000 VNĐ/tháng) và gói API nhận diện biển số (tùy thuộc vào lượng request thực tế, dao động từ 200.000 – 500.000 VNĐ/tháng).
Kết luận
Đề tài "Xây dựng ứng dụng gửi xe và đặt món canteen, tích hợp thanh toán qua ứng dụng di động" của sinh viên Lê Phạm Huy Cường và Lê Ngọc Long (Khoa Hệ thống Thông tin – Trường Đại học Công nghệ Thông tin, ĐHQG-HCM) đã giải quyết thành công bài toán chuyển đổi số hạ tầng dịch vụ trường học. Bằng việc kết hợp nhuần nhuyễn giữa kiến trúc Microservices hiện đại, giải pháp nhận diện thị giác máy tính ALPR và ví điện tử MoMo, đề tài không chỉ đạt giá trị cao về mặt học thuật kỹ thuật phần mềm mà còn chứng minh tính khả thi ứng dụng xuất sắc trong thực tiễn đời sống sinh viên.