Giới thiệu dự án
Bối cảnh thị trường và vấn đề thực tiễn
Trong kỷ nguyên chuyển đổi số và sự bùng nổ của mô hình thương mại đa kênh (Omni-channel Commerce), thị trường bán lẻ và phân phối tại Việt Nam đang ghi nhận tốc độ tăng trưởng kép hàng năm (CAGR) vượt mức 20%. Tuy nhiên, phần lớn các doanh nghiệp vừa và nhỏ (SME) vẫn vận hành dựa trên các giải pháp phần mềm rời rạc hoặc hệ thống ERP (Enterprise Resource Planning) cồng kềnh, chi phí bản quyền đắt đỏ và thiếu khả năng tùy biến linh hoạt theo thời gian thực.
Tuyên bố vấn đề và điểm nghẽn (Problem Statement & Pain Points)
Quy trình vận hành thương mại truyền thống bộc lộ nhiều điểm nghẽn kỹ thuật và nghiệp vụ nghiêm trọng:
- Phân mảnh dữ liệu: Thông tin sản phẩm, chính sách giá, khuyến mãi và dữ liệu khách hàng không được đồng bộ tức thời giữa kênh bán lẻ di động (B2C) và hệ thống điều hành kho bãi, bán buôn (B2B/ERP).
- Quản lý biến thể phức tạp: Sản phẩm có nhiều thuộc tính (Model, màu sắc, cấu hình, mã sản phẩm, số serial/IMEI đích danh) gây khó khăn cho việc quản lý tồn kho chính xác và định giá theo từng cấp độ.
- Quy trình xử lý đơn hàng thủ công: Thiếu luồng tự động hóa từ khâu tiếp nhận đơn, kiểm tra tồn kho tức thời (real-time stock availability), duyệt đơn, xuất kho đến tạo vận đơn và đối soát công nợ/phiếu thu-chi.
- Trải nghiệm khách hàng kém: Giao diện ứng dụng di động thiếu tính phản hồi nhanh, khó tra cứu khuyến mãi và trạng thái xử lý đơn hàng theo thời gian thực.
+-----------------------------------------------------------------------------------+
| ĐIỂM NGHẼN DOANH NGHIỆP |
+--------------------------+-----------------------------+--------------------------+
| Phân mảnh dữ liệu B2B/B2C| Quản lý tồn kho đa biến thể| Quy trình duyệt thủ công |
| - Trễ tồn kho | - Lỗi định danh Model/SKU | - Sai sót phiếu xuất kho|
| - Giá không đồng bộ | - Khó kiểm soát Serial | - Chậm trễ tạo vận đơn |
+--------------------------+-----------------------------+--------------------------+
Mục tiêu dự án
Đồ án tốt nghiệp "Phát triển hệ thống bán hàng dành cho doanh nghiệp" do nhóm sinh viên Nguyễn Văn Huy và Trần Gia Phúc thực hiện dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn (Trường Đại học Sư phạm Kỹ thuật TP.HCM) hướng tới 5 mục tiêu cốt lõi:
- Xây dựng hệ thống Backend API tập trung: Phát triển máy chủ RESTful API trên nền tảng Node.js và Express, xử lý đồng thời luồng nghiệp vụ phức tạp với độ trễ thấp.
- Thiết kế cơ sở dữ liệu quan hệ tối ưu: Xây dựng hệ thống bảng dữ liệu trên MySQL 8.0, chuẩn hóa cấu trúc quản lý phân cấp sản phẩm (Model $\rightarrow$ SKU $\rightarrow$ Serial/IMEI) và giao dịch tài chính.
- Phát triển ứng dụng di động khách hàng (Mobile Client): Sử dụng React Native để xây dựng ứng dụng đa nền tảng (iOS & Android) tối ưu trải nghiệm người dùng cuối.
- Phát triển Web Portal quản trị doanh nghiệp (Admin ERP): Sử dụng ReactJS xây dựng giao diện điều hành toàn diện: quản lý sản phẩm, bảng giá, kho hàng đa chi nhánh, vận đơn, phiếu xuất và báo cáo thu-chi.
- Đảm bảo tính toàn vẹn dữ liệu và mở rộng: Thiết lập cơ chế kiểm soát giao dịch (ACID transactions) chống xung đột tồn kho (race conditions) khi có nhiều đơn hàng phát sinh đồng thời.
Phương pháp tiếp cận và kết quả kỳ vọng
Dự án áp dụng phương pháp phân tích nghiệp vụ thực tế kết hợp mô hình hóa Ontology và quy trình kiểm thử phần mềm chuẩn mực.
- Kết quả kỳ vọng: Triển khai hoàn chỉnh hệ thống 3 lớp (Mobile Client, Web Management, Backend Server).
- Chỉ số đo lường (Measurable Metrics): Thời gian phản hồi giao diện không quá $3.0\text{s}$, thời gian xử lý API trung bình $\le 120\text{ms}$, chịu tải trên $500\text{ RPS}$ (Requests Per Second) mà không gây sai lệch dữ liệu tồn kho.
Phạm vi và giới hạn
- Phạm vi: Nghiệp vụ quản lý bán lẻ và bán buôn nội bộ, quy trình xử lý đơn hàng, xuất nhập kho, quản lý giá/khuyến mãi, tạo vận đơn và hạch toán phiếu thu/chi nội bộ.
- Giới hạn: Hệ thống chưa tích hợp trực tiếp cổng thanh toán trực tuyến của bên thứ ba (VNPay, MoMo) qua sandbox ngân hàng và chưa kết nối API động của các đơn vị vận chuyển công cộng (GHN, GHTK).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
+-------------------------------------------------------------------------------------+
| SO SÁNH CÁC GIẢI PHÁP BÁN HÀNG |
+------------------+------------------------------+-----------------------------------+
| Tiêu chí | FASTWORK SALE / CRM+ | HỆ THỐNG ĐỒ ÁN (PROPOSED SYSTEM) |
+------------------+------------------------------+-----------------------------------+
| Mô hình phục vụ | Chuyên biệt B2B | Tích hợp B2B & B2C đa kênh |
| Kênh di động | App nội bộ nhân viên | App chuyên dụng cho khách hàng |
| Quản trị tồn kho | Quản lý kho tổng quát | Chi tiết: Model -> SKU -> Serial |
| Khả năng mở rộng | Phụ thuộc Vendor | Toàn quyền kiểm soát mã nguồn |
| Chi phí đầu tư | Phí thuê bao hàng tháng (SaaS)| Chi phí sở hữu thấp, mã nguồn mở |
+------------------+------------------------------+-----------------------------------+
Hệ thống được thiết kế theo thang đo ưu tiên yêu cầu MoSCoW:
- Must have: Xác thực JWT, quản lý sản phẩm & biến thể, giỏ hàng, đặt hàng, quản lý kho đa cấp (Model/SKU/Serial), quy trình duyệt đơn $\rightarrow$ xuất kho $\rightarrow$ thu tiền, tra cứu phiếu thu/chi/xuất.
- Should have: Áp dụng chương trình khuyến mãi theo thời gian thực, quản lý danh sách yêu thích, định vị địa chỉ giao hàng đa điểm.
- Could have: Thống kê doanh thu biểu đồ động, đề xuất sản phẩm liên quan.
- Won't have (lần này): Tự động định tuyến shipper bằng GPS và thanh toán thẻ quốc tế tự động.
Thiết kế hệ thống
Kiến trúc tổng thể của hệ thống áp dụng mô hình phân lớp Client-Server hướng dịch vụ (Service-Oriented Tier Architecture), kết nối thông qua giao thức truyền thông HTTP/HTTPS RESTful:
graph TB
subgraph Client Layer
A[Mobile Client App - React Native]
B[Admin Management Web - ReactJS]
end
subgraph Gateway & Security
C[Nginx Reverse Proxy / Load Balancer]
D[JWT Authentication & RBAC Middleware]
end
subgraph Application Server Layer - Node.js & Express
E[Product & Pricing Controller]
F[Order & Checkout Service]
G[Inventory & Warehouse Engine]
H[Accounting & Voucher Module]
end
subgraph Data Persistence Layer
I[(MySQL 8.0 Database)]
J[B+ Tree Indexing & Transaction Log]
end
A -->|HTTPS / JSON API| C
B -->|HTTPS / JSON API| C
C --> D
D --> E
D --> F
D --> G
D --> H
E --> I
F --> I
G --> I
H --> I
I --- J
Technology Stack và phiên bản cụ thể
- Backend Environment: Node.js v18.16.0 LTS (V8 JavaScript Engine, Single-threaded Event Loop, Non-blocking I/O).
- Web Framework: Express.js v4.18.2.
- Mobile Frontend: React Native v0.71.8 (React 18.2.0, Metro Bundler, React Navigation v6).
- Web Admin Frontend: ReactJS v18.2.0 (Redux Toolkit, TailwindCSS, Axios).
- Database Engine: MySQL Server v8.0.33 với chuẩn lưu trữ InnoDB hỗ trợ khóa dòng (Row-level Locking) và quan hệ ràng buộc khóa ngoại (Foreign Keys).
- API Documentation & Testing: Postman, Swagger UI.
Thiết kế cơ sở dữ liệu (Database Schema)
Hệ thống sử dụng mô hình dữ liệu quan hệ (ERD) giải quyết bài toán biến thể đa chiều và truy vết đơn hàng. Một số lược đồ bảng trọng yếu được định nghĩa như sau:
-- Bảng phân loại Model và biến thể sản phẩm
CREATE TABLE `product_models` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`model_code` VARCHAR(50) NOT NULL UNIQUE,
`name` VARCHAR(255) NOT NULL,
`category_id` INT NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `product_items` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`model_id` INT NOT NULL,
`sku_code` VARCHAR(100) NOT NULL UNIQUE,
`serial_number` VARCHAR(100) DEFAULT NULL UNIQUE,
`status` ENUM('AVAILABLE', 'RESERVED', 'SOLD', 'DEFECTIVE') DEFAULT 'AVAILABLE',
FOREIGN KEY (`model_id`) REFERENCES `product_models`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng quản lý tồn kho đa cấp
CREATE TABLE `inventory_stocks` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`warehouse_id` INT NOT NULL,
`item_id` INT NOT NULL,
`quantity` INT NOT NULL DEFAULT 0,
`reserved_quantity` INT NOT NULL DEFAULT 0,
`last_updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`item_id`) REFERENCES `product_items`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng đơn hàng và trạng thái vòng đời
CREATE TABLE `orders` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`order_code` VARCHAR(30) NOT NULL UNIQUE,
`customer_id` INT NOT NULL,
`total_amount` DECIMAL(15,2) NOT NULL,
`status` ENUM('PENDING', 'APPROVED', 'EXPORTED', 'DELIVERING', 'COMPLETED', 'CANCELLED') DEFAULT 'PENDING',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Thiết kế giao diện lập trình ứng dụng (RESTful API Specification)
Hệ thống cung cấp danh mục endpoints đồng nhất:
+-------------------------------------------------------------------------------------+
| DANH MỤC API ENDPOINTS |
+--------+-------------------------------------+--------------------------------------+
| Method | Endpoint | Mô tả chức năng |
+--------+-------------------------------------+--------------------------------------+
| POST | /api/v1/auth/customer/login | Xác thực người dùng, cấp access token|
| GET | /api/v1/products/models | Lấy danh sách sản phẩm & khuyến mãi |
| POST | /api/v1/cart/items | Thêm/cập nhật sản phẩm trong giỏ |
| POST | /api/v1/orders/checkout | Tạo đơn đặt hàng từ giỏ hàng |
| GET | /api/v1/erp/orders?status=PENDING | Quản trị viên lấy danh sách đơn duyệt|
| PUT | /api/v1/erp/orders/:id/approve | Phê duyệt đơn hàng chờ xuất |
| POST | /api/v1/erp/orders/:id/export | Lập phiếu xuất kho, giảm tồn thực tế |
| POST | /api/v1/erp/shipments/create | Tạo vận đơn giao hàng và thu hộ tiền |
+--------+-------------------------------------+--------------------------------------+
Phương pháp luận phát triển (Methodology)
Dự án được thực hiện trong thời gian 15 tuần (từ ngày 21/02/2023 đến 29/05/2023) theo mô hình Agile/Scrum rút gọn:
- Tuần 1 - 3 (Sprint 1): Khảo sát thực trạng quy trình nghiệp vụ bán hàng, thu thập yêu cầu từ doanh nghiệp, phân tích đặc tả usecase và mô hình hóa dữ liệu (ERD).
- Tuần 4 - 7 (Sprint 2): Xây dựng kiến trúc Node.js backend, cài đặt hệ cơ sở dữ liệu MySQL, phát triển các API core (xác thực, danh mục, sản phẩm, khuyến mãi).
- Tuần 8 - 11 (Sprint 3): Phát triển ứng dụng React Native dành cho khách hàng và xây dựng cổng Web Management bằng ReactJS (các phân hệ Quản lý sản phẩm, Làm giá, Nhập xuất kho).
- Tuần 12 - 13 (Sprint 4): Tích hợp liên thông luồng nghiệp vụ (Duyệt đơn $\rightarrow$ Xuất kho $\rightarrow$ Vận đơn $\rightarrow$ Thu tiền), hoàn thiện giao diện và cơ chế đồng bộ realtime.
- Tuần 14 - 15 (Sprint 5): Thực hiện kiểm thử tích hợp (Integration Testing), kiểm thử chấp nhận người dùng (UAT), đo đạc hiệu năng và đóng gói tài liệu khóa luận.
Implementation và kết quả
Quy trình phát triển và kỹ thuật trọng tâm
Điểm then chốt trong tầng Controller và Service của hệ thống là khả năng quản lý trạng thái đơn hàng kết hợp cơ chế kiểm soát tranh chấp dữ liệu (Concurrency Control) khi nhiều người dùng cùng mua một sản phẩm vào thời điểm khuyến mãi.
Dưới đây là mã nguồn minh họa thuật toán xử lý xuất đơn hàng và hạch toán tồn kho an toàn bằng cơ chế Transaction trong Node.js (sử dụng connection pool của MySQL):
/**
* Service xử lý xuất kho và lập vận đơn an toàn giao dịch (ACID Transaction)
*/
async function exportOrderAndCreateShipment(orderId, employeeId, warehouseId) {
const connection = await dbPool.getConnection();
try {
await connection.beginTransaction();
// 1. Khóa bản ghi đơn hàng để tránh xung đột trạng thái
const [orders] = await connection.query(
'SELECT id, status, total_amount FROM orders WHERE id = ? FOR UPDATE',
[orderId]
);
const order = orders[0];
if (!order || order.status !== 'APPROVED') {
throw new Error('Đơn hàng không hợp lệ hoặc chưa được phê duyệt.');
}
// 2. Lấy chi tiết sản phẩm trong đơn hàng
const [orderItems] = await connection.query(
'SELECT item_id, quantity FROM order_details WHERE order_id = ?',
[orderId]
);
// 3. Kiểm tra và khấu trừ tồn kho thực tế
for (const item of orderItems) {
const [stock] = await connection.query(
'SELECT quantity FROM inventory_stocks WHERE warehouse_id = ? AND item_id = ? FOR UPDATE',
[warehouseId, item.item_id]
);
if (!stock[0] || stock[0].quantity < item.quantity) {
throw new Error(`Mã sản phẩm ${item.item_id} không đủ tồn kho để xuất.`);
}
await connection.query(
'UPDATE inventory_stocks SET quantity = quantity - ?, reserved_quantity = reserved_quantity - ? WHERE warehouse_id = ? AND item_id = ?',
[item.quantity, item.quantity, warehouseId, item.item_id]
);
}
// 4. Cập nhật trạng thái đơn hàng sang EXPORTED
await connection.query(
'UPDATE orders SET status = "EXPORTED", updated_at = NOW() WHERE id = ?',
[orderId]
);
// 5. Tạo phiếu xuất và vận đơn giao hàng
const [exportReceipt] = await connection.query(
'INSERT INTO export_receipts (order_id, warehouse_id, created_by, export_date) VALUES (?, ?, ?, NOW())',
[orderId, warehouseId, employeeId]
);
await connection.query(
'INSERT INTO shipments (order_id, export_receipt_id, cod_amount, status) VALUES (?, ?, ?, "READY_FOR_DELIVERY")',
[orderId, exportReceipt.insertId, order.total_amount]
);
await connection.commit();
return { success: true, exportReceiptId: exportReceipt.insertId };
} catch (error) {
await connection.rollback();
throw error;
} finally {
connection.release();
}
}
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Hệ thống đã trải qua quy trình kiểm thử toàn diện trên cả 3 ứng dụng thành phần:
- Kiểm thử chức năng (Functional Testing): Thực hiện kiểm thử hơn 40 kịch bản Use Case (từ
uc-app-1 đến uc-app-12 trên Mobile và uc-erp-1 đến uc-erp-19 trên Web ERP). Tỷ lệ hoàn thành đạt $100%$ các ca kiểm thử chính.
- Kiểm thử phi chức năng & Tải (Performance Benchmarking):
- Sử dụng Apache JMeter mô phỏng 500 người dùng đồng thời gửi request liên tục trong 10 phút.
- Tỷ lệ lỗi (Error Rate): $0.00%$.
- Thời gian phản hồi trung bình (Average Response Time): $86\text{ms}$.
- Thời gian phản hồi phân vị 95 (P95 Latency): $174\text{ms}$ (thấp hơn nhiều so với tiêu chuẩn $3.0\text{s}$ đặt ra trong yêu cầu phi chức năng).
- Tải CPU trên máy chủ Node.js duy trì ở mức dưới $42%$.
+------------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ HIỆU NĂNG |
+--------------------------+---------------------+-------------------+---------------+
| Kịch bản kiểm thử | Lưu lượng tải (CCU) | Latency trung bình| Tỷ lệ lỗi (%) |
+--------------------------+---------------------+-------------------+---------------+
| Lấy danh mục & sản phẩm | 500 CCU | 45 ms | 0.00% |
| Thêm sản phẩm vào giỏ | 500 CCU | 62 ms | 0.00% |
| Tạo đơn đặt hàng | 300 CCU | 118 ms | 0.00% |
| Xuất kho & Tạo vận đơn | 200 CCU | 142 ms | 0.00% |
+--------------------------+---------------------+-------------------+---------------+
Đổi mới và đóng góp
Các cải tiến kỹ thuật nổi bật
- Mô hình quản lý cấu trúc tồn kho 3 cấp linh hoạt: Không giới hạn ở mã sản phẩm cố định, hệ thống phân tách rành mạch giữa Model sản phẩm, Mã biến thể (SKU) và Định danh cá thể (Serial/IMEI). Điều này cho phép doanh nghiệp kinh doanh đa ngành (từ điện tử, gia dụng đến thời trang) dễ dàng làm giá, theo dõi bảo hành và kiểm kê kho.
- Quy trình đóng gói trạng thái khép kín (Finite State Machine): Khắc phục triệt để tình trạng thất thoát hàng hóa bằng luồng tuần tự nghiêm ngặt:
Khởi tạo đơn $\rightarrow$ Duyệt đơn $\rightarrow$ Lập phiếu xuất & Giảm kho $\rightarrow$ Gán vận đơn $\rightarrow$ Xác nhận giao & Thu tiền $\rightarrow$ Lập phiếu thu.
- Hiệu suất xử lý luồng đơn hàng: Giảm thiểu $70%$ thời gian thao tác thủ công của nhân viên điều phối kho so với phương pháp ghi chép bảng tính truyền thống.
+-------------------------------------------------------------------------------------+
| ĐÓNG GÓP & CẢI TIẾN ĐỊNH LƯỢNG |
+-----------------------------------+--------------------+----------------------------+
| Chỉ số đo lường | Trước khi áp dụng | Sau khi áp dụng hệ thống |
+-----------------------------------+--------------------+----------------------------+
| Thời gian xử lý & duyệt đơn hàng | 15 - 30 phút/đơn | < 1 phút/đơn (Giảm ~95%) |
| Tỷ lệ sai lệch kiểm kê tồn kho | 3% - 5% | < 0.01% (Nhờ khóa dòng DB) |
| Tốc độ tra cứu lịch sử chứng từ | 5 - 10 phút lục sổ | < 1 giây trên Web Portal |
| Chi phí triển khai phần mềm | Đắt đỏ (ERP ngoại) | Tối ưu hóa trên mã nguồn mở|
+-----------------------------------+--------------------+----------------------------+
Ứng dụng thực tế và triển khai
Kịch bản triển khai doanh nghiệp thực tế
Hệ thống sẵn sàng áp dụng ngay cho các chuỗi phân phối bán lẻ quy mô từ 1 đến 20 chi nhánh/kho hàng:
- Mặt trận B2C: Khách hàng sử dụng ứng dụng di động tìm kiếm sản phẩm theo phân loại, lưu sản phẩm yêu thích, áp dụng mã voucher khuyến mãi và đặt hàng tận nơi.
- Mặt trận B2B & Điều hành: Bộ phận kinh doanh và thủ kho sử dụng Web Portal tiếp nhận đơn, kiểm tra tồn kho tại từng chi nhánh gần khách hàng nhất, tiến hành duyệt và in phiếu xuất kho tức thời.
Hướng dẫn cài đặt và triển khai hệ thống (Deployment Architecture)
graph LR
subgraph Host Server - Ubuntu 22.04 LTS
A[Nginx Reverse Proxy :80/:443] --> B[PM2 Cluster Node.js :5000]
B --> C[(MySQL Engine :3306)]
A --> D[Static ReactJS Web Admin :3000]
end
subgraph Mobile Devices
E[Android APK / iOS IPA] -->|API Calls| A
end
Yêu cầu cấu hình hệ thống
- Hệ điều hành máy chủ: Ubuntu Linux 20.04/22.04 LTS.
- Tài nguyên tối thiểu: 2 vCPU, 4GB RAM, 50GB SSD Storage.
- Môi trường phần mềm: Node.js $\ge 18.x$, MySQL Server $\ge 8.0$, PM2 Process Manager, Nginx.
Các bước triển khai
- Thiết lập cơ sở dữ liệu:
mysql -u root -p -e "CREATE DATABASE enterprise_sales_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p enterprise_sales_db < schema_and_seed.sql
- Cài đặt và khởi chạy Backend API Server:
cd backend-server
npm install --production
pm2 start server.js -i max --name "sales-api-cluster"
- Đóng gói và phục vụ Web Management Admin:
cd web-admin
npm install && npm run build
# Cấu hình file tĩnh build/ qua Nginx
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống cơ sở dữ liệu MySQL đơn lẻ chưa cấu hình mô hình cụm phân tán (Master-Slave Replication) để chịu tải quy mô hàng triệu bản ghi.
- Ứng dụng di động mới dừng lại ở việc hỗ trợ phương thức thanh toán tiền mặt khi nhận hàng (COD), chưa tích hợp Webhook phản hồi tức thời từ các cổng ví điện tử.
- Chưa có hệ thống AI tự động phân tích dữ liệu hành vi để gợi ý sản phẩm được cá nhân hóa sâu.
Hướng phát triển trong tương lai
- Kiến trúc Microservices & Caching: Tách module đơn hàng và quản lý kho thành các service độc lập, bổ sung Redis Cache để lưu phiên làm việc và danh mục sản phẩm hot.
- Tích hợp cổng thanh toán & Đối tác vận chuyển: Đấu nối API trực tiếp tới VNPay, MoMo, Viettel Post để tự động hóa tính cước và in mã vận đơn barcode/QR code chuẩn ngành bưu chính.
- Hệ thống phân tích dự đoán (Predictive Analytics): Áp dụng thuật toán học máy (Machine Learning) nhằm dự báo xu hướng tồn kho và tối ưu hóa lượng hàng nhập theo mùa.
Đối tượng hưởng lợi
+------------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-------------------+----------------------------------------------------------------+
| Nhóm đối tượng | Giá trị nhận được |
+-------------------+----------------------------------------------------------------+
| Sinh viên | Tài liệu tham khảo toàn diện về thiết kế hệ thống full-stack |
| Lập trình viên | Bộ khung mẫu (Template) xử lý Transaction và state machine an toàn|
| Doanh nghiệp SME | Giải pháp số hóa quy trình bán hàng khép kín với chi phí thấp |
| Nhà nghiên cứu | Khảo cứu điển hình về mô hình hóa cơ sở dữ liệu bán lẻ đa cấp |
+-------------------+----------------------------------------------------------------+
Câu hỏi thường gặp
1. Hệ thống cần cấu hình phần cứng như thế nào để vận hành ổn định?
Để phục vụ doanh nghiệp có quy mô khoảng $50.000$ người dùng hoạt động hàng tháng và $2.000$ đơn hàng mỗi ngày, máy chủ cần tối thiểu $2\text{ vCPU}$, $4\text{GB RAM}$, ổ cứng SSD và đường truyền mạng tối thiểu $100\text{ Mbps}$.
2. Làm thế nào hệ thống giải quyết tình trạng bán vượt tồn kho (Over-selling)?
Hệ thống sử dụng cơ chế khóa dòng dữ liệu (SELECT ... FOR UPDATE) bên trong một khối Transaction của MySQL. Khi có yêu cầu tạo đơn hoặc xuất kho, số lượng hàng khả dụng được kiểm tra và trừ tạm thời (reserved quantity), đảm bảo hai thao tác đồng thời không thể ghi đè làm âm kho.
3. Ứng dụng di động có hỗ trợ cả hệ điều hành Android và iOS không?
Có. Nhờ việc phát triển trên framework React Native, toàn bộ mã nguồn tầng logic và giao diện được chia sẻ và biên dịch mượt mà cho cả 2 hệ sinh thái Android và iOS.
4. Dữ liệu chứng từ và phiếu thu-chi có thể xuất ra file vật lý không?
Hệ thống hỗ trợ xuất dữ liệu phiếu xuất kho và báo cáo thu-chi sang định dạng bảng tính Excel và file PDF để phục vụ công tác lưu trữ kế toán và in ấn hóa đơn giao hàng.
5. Chi phí bảo trì và mở rộng hệ thống có cao không?
Do toàn bộ công nghệ sử dụng trong đề tài đều là nền tảng nguồn mở (Node.js, React, React Native, MySQL), doanh nghiệp không phải trả bất kỳ khoản phí cấp phép nào (License Fee), giúp tiết kiệm đến $80%$ chi phí đầu tư ban đầu so với việc mua phần mềm đóng gói thương mại.
Kết luận
Đồ án tốt nghiệp "Phát triển hệ thống bán hàng dành cho doanh nghiệp" của sinh viên Nguyễn Văn Huy và Trần Gia Phúc đã giải quyết thành công bài toán chuyển đổi số nghiệp vụ bán hàng và quản trị kho vận đa chi nhánh. Bằng việc kết hợp hài hòa giữa công nghệ hiện đại (Node.js, React Native, ReactJS, MySQL) và quy trình chuẩn mực, hệ thống mang đến một giải pháp toàn diện, độ ổn định cao, đảm bảo tính toàn vẹn dữ liệu tài chính - kho bãi, đồng thời mở ra nền tảng vững chắc để tiếp tục tích hợp các công nghệ thông minh trong tương lai.