Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số, ngành tổ chức sự kiện (Event Management) đóng vai trò then chốt trong các chiến dịch quan hệ công chúng (PR), truyền thông và tiếp thị của doanh nghiệp và tổ chức giáo dục. Theo ước tính từ các báo cáo ngành truyền thông quốc tế, các doanh nghiệp toàn cầu chi hơn 20 tỷ USD mỗi năm cho các chiến dịch quảng bá và hơn 15 tỷ USD trực tiếp cho các sự kiện như hội nghị khách hàng, triển lãm, ra mắt sản phẩm và ngày hội tuyển sinh. Tại các môi trường học thuật như trường đại học, hoạt động sự kiện (ngày hội sách, hội thảo học thuật, workshop hướng nghiệp) diễn ra với tần suất cao nhưng phần lớn vẫn thực hiện theo phương thức bán thủ công hoặc tự phát, dẫn đến tình trạng lãng phí nguồn lực và suy giảm hiệu quả truyền thông.
Thực trạng này xuất phát từ các điểm nghẽn (pain points) nghiêm trọng trong quy trình tổ chức sự kiện truyền thống:
- Tắc nghẽn tại điểm danh/check-in: Sử dụng bảng danh sách giấy hoặc file Excel rời rạc gây ùn ứ kéo dài, thời gian xử lý trung bình từ 45–60 giây cho mỗi khách tham dự.
- Tỷ lệ rời bỏ sự kiện giữa chừng cao: Thiếu các hoạt động tương tác thời gian thực khiến tỷ lệ người tham dự ở lại đến cuối chương trình giảm từ 35% đến 50%.
- Quy trình tổng hợp dữ liệu chậm trễ: Việc thu thập đánh giá (feedback) và xuất báo cáo kết quả sau sự kiện thường mất từ 24–48 giờ đối soát thủ công, dễ phát sinh sai sót thông tin.
Đề tài "Xây dựng Website Hỗ trợ Tổ chức Sự kiện" được nghiên cứu và phát triển bởi sinh viên ngành Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), dưới sự hướng dẫn của ThS. Nguyễn Thanh Phước, nhằm cung cấp một nền tảng chuyển đổi số toàn diện cho công tác quản trị và vận hành sự kiện.
+-----------------------------------------------------------------------------+
| HỆ THỐNG QUẢN LÝ SỰ KIỆN |
+-----------------------------------+-----------------------------------------+
| Khách hàng (Event Host) | Người tham dự (Guest/User) |
| - Khởi tạo & cấu hình sự kiện | - Quét mã QR Check-in tức thì (< 3s) |
| - Sinh mã QR Check-in tự động | - Tham gia minigame quay số may mắn |
| - Kích hoạt minigame quay số | - Gửi biểu mẫu đánh giá & xếp hạng |
| - Xuất báo cáo Excel thống kê | |
+-----------------------------------+-----------------------------------------+
|
[RESTful API / LINQ to SQL Engine]
|
+---------------+---------------+
| SQL Server Database Cluster |
+-------------------------------+
Mục tiêu cụ thể của đề tài bao gồm:
- Chuẩn hóa kiến trúc hệ thống: Xây dựng ứng dụng web phân lớp Single Page Application (SPA) kết hợp kiến trúc dịch vụ RESTful API bảo mật cao.
- Tự động hóa luồng tiếp đón: Thiết kế module sinh mã QR động và quét xác thực điểm danh tự động, giảm thời gian check-in xuống dưới 3 giây/khách.
- Tăng cường tương tác (Gamification): Tích hợp minigame quay số ngẫu nhiên thời gian thực (Lucky Draw) nhằm duy trì mức độ hào hứng và nâng cao tỷ lệ giữ chân khách tham dự.
- Tối ưu hóa báo cáo và phân quyền: Cung cấp dashboard thống kê thời gian thực, tích hợp xuất báo cáo Excel đa định dạng và gửi email thông báo tự động.
- Đảm bảo tính mở rộng và khả thi: Kiến trúc cơ sở dữ liệu có khả năng đáp ứng đồng thời 500+ truy vấn đồng thời (concurrency) với độ trễ phản hồi API dưới 200ms.
Phạm vi đề tài tập trung vào việc quản lý vòng đời sự kiện, quản lý danh sách khách mời, xác thực mã QR, vận hành minigame và phân tích dữ liệu phản hồi trong mạng cục bộ hoặc môi trường web lưu trữ máy chủ doanh nghiệp. Giới hạn hiện tại chưa bao gồm tích hợp cổng thanh toán trực tuyến (Payment Gateway) và nhận diện khuôn mặt tự động bằng AI.
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 giải pháp quản lý sự kiện hiện có trên thị trường cho thấy sự phân hóa rõ rệt giữa công cụ thủ công và các nền tảng thương mại quốc tế:
| Tiêu chí |
Điểm danh truyền thống / Google Forms |
Eventbrite / Phần mềm quốc tế |
Hệ thống đề xuất (HCMUTE Event System) |
| Chi phí triển khai |
Miễn phí nhưng tốn chi phí nhân sự lớn |
Rất cao (thu phí theo % vé/tháng) |
Chi phí máy chủ nội bộ thấp, mã nguồn mở |
| Tốc độ Check-in |
Chậm (45–60s/người), dễ trùng lặp |
Nhanh qua mã vạch / QR |
Nhanh qua QR Code động (< 3s/người) |
| Tương tác trực tiếp |
Không có công cụ tương tác |
Cần tích hợp thêm bên thứ ba |
Tích hợp sẵn Minigame quay số trực tiếp |
| Bảo mật & Chủ quyền dữ liệu |
Phân tán trên bảng tính, dễ lộ dữ liệu |
Dữ liệu lưu trữ máy chủ nước ngoài |
Dữ liệu tập trung trên SQL Server nội bộ |
| Báo cáo & Xuất dữ liệu |
Thủ công qua Google Sheets |
Hạn chế cấu hình xuất file Excel |
Xuất dữ liệu Excel chuyên sâu tự động |
Mô hình phân loại yêu cầu nghiệp vụ theo phương pháp MoSCoW:
- Must have (Bắt buộc): Đăng ký/đăng nhập phân quyền (Admin, Customer, Guest), tạo/sửa/xóa sự kiện, tạo mã QR check-in, lưu trữ thông tin người tham dự, đánh giá sự kiện.
- Should have (Nên có): Vòng quay may mắn chọn người chiến thắng ngẫu nhiên, xuất file Excel danh sách khách và người trúng thưởng, gửi email cấp mật khẩu ngẫu nhiên qua giao thức SMTP.
- Could have (Có thể có): Nâng cấp tài khoản Premium cho Customer, dashboard biểu đồ thống kê trực quan.
- Won't have (Chưa có trong giai đoạn này): Mua vé online thanh toán qua thẻ ngân hàng, quét NFC.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình 3 lớp (3-Tier Architecture) phân tách độc lập giữa tầng giao diện, tầng xử lý nghiệp vụ/dịch vụ và tầng cơ sở dữ liệu:
+-------------------------------------------------------------+
| CLIENT TIER (Front-end SPA) |
| Angular CLI v9.1 | TypeScript 3.8 | Bootstrap 4.5 |
+-------------------------------------------------------------+
|
HTTPS / JSON Payload
|
+-------------------------------------------------------------+
| APPLICATION TIER (RESTful Web API) |
| ASP.NET Web API 2 (.NET Framework 4.7.2 / C#) |
| Controllers -> Business Logic -> LINQ to SQL DataContext |
+-------------------------------------------------------------+
|
T-SQL Query Execution
|
+-------------------------------------------------------------+
| DATA STORAGE TIER |
| Microsoft SQL Server 2017/2019 Relational DB |
+-------------------------------------------------------------+
Technology Stack và phiên bản cụ thể
| Thành phần |
Công nghệ / Thư viện |
Phiên bản |
Vai trò kỹ thuật |
| Frontend Framework |
Angular CLI / TypeScript |
9.1.x / 3.8.x |
Xây dựng giao diện Single Page Application (SPA) phản hồi nhanh |
| Backend Framework |
ASP.NET Web API 2 (C#) |
.NET 4.7.2 |
Cung cấp RESTful endpoints chuẩn hóa, xử lý logic nghiệp vụ |
| ORM / Data Access |
LINQ to SQL |
Built-in .NET |
Ánh xạ đối tượng CSDL, sinh truy vấn tham số hóa chống SQL Injection |
| Database Engine |
Microsoft SQL Server |
2017 / 2019 |
Quản trị CSDL quan hệ, hỗ trợ transaction và ràng buộc toàn vẹn |
| QR Code Engine |
QRCode.js / QRCoder |
1.4.x |
Mã hóa định danh sự kiện và hỗ trợ giải mã check-in |
| Data Export |
EPPlus / ClosedXML |
4.5.3 |
Thư viện thao tác sinh file bảng tính Microsoft Excel (.xlsx) |
Thiết kế cơ sở dữ liệu (Database Schema)
Cơ sở dữ liệu bao gồm 6 bảng thực thể chính với các ràng buộc khóa ngoại (Foreign Keys) bảo đảm tính toàn vẹn tham chiếu:
-- DDL lược đồ bảng chính trong hệ thống
CREATE TABLE Customers (
ID INT IDENTITY(1,1) PRIMARY KEY,
HoTen NVARCHAR(100) NOT NULL,
Email VARCHAR(100) UNIQUE NOT NULL,
UserName VARCHAR(50) UNIQUE NOT NULL,
PassWord VARCHAR(255) NOT NULL,
isPremium VARCHAR(30) DEFAULT 'Normal'
);
CREATE TABLE Events (
ID INT IDENTITY(1,1) PRIMARY KEY,
IDCustomer INT FOREIGN KEY REFERENCES Customers(ID),
TenSuKien NVARCHAR(100) NOT NULL,
NoiDung NVARCHAR(MAX),
DiaDiem NVARCHAR(200) NOT NULL,
ThoiGian NVARCHAR(200) NOT NULL,
GhiChu NVARCHAR(255),
TrangThai NVARCHAR(30) DEFAULT 'Active'
);
CREATE TABLE Guests (
ID INT IDENTITY(1,1) PRIMARY KEY,
IDSuKien INT FOREIGN KEY REFERENCES Events(ID),
HoTen NVARCHAR(100) NOT NULL,
SDT VARCHAR(20) NOT NULL,
Email VARCHAR(100) NOT NULL,
DiaChi NVARCHAR(200),
CheckInStatus BIT DEFAULT 0,
CheckInTime DATETIME DEFAULT GETDATE()
);
CREATE TABLE WinerEvents (
ID INT IDENTITY(1,1) PRIMARY KEY,
IDEvent INT FOREIGN KEY REFERENCES Events(ID),
IDGuest INT FOREIGN KEY REFERENCES Guests(ID),
ThoiGianQuay VARCHAR(30) NOT NULL
);
CREATE TABLE FeedBacks (
ID INT IDENTITY(1,1) PRIMARY KEY,
IDSukien INT FOREIGN KEY REFERENCES Events(ID),
Feedback NVARCHAR(MAX),
RatingPoint INT CHECK (RatingPoint BETWEEN 1 AND 5),
Email VARCHAR(100)
);
Thiết kế RESTful API
Hệ thống định tuyến chuẩn theo kiến trúc tài nguyên REST:
| HTTP Method |
URI Endpoint |
Tham số đầu vào |
Mô tả chức năng |
Mã trạng thái |
POST |
/api/auth/login |
{UserName, PassWord} |
Xác thực tài nguyên Admin/Customer |
200 OK, 401 Unauthorized |
POST |
/api/events/create |
Event Object Payload |
Tạo sự kiện mới và sinh khóa định danh |
201 Created, 400 Bad Request |
GET |
/api/events/get-by-user/{id} |
id (Customer ID) |
Lấy danh sách toàn bộ sự kiện theo người dùng |
200 OK, 404 Not Found |
POST |
/api/guest/checkin |
{IDSuKien, HoTen, SDT, Email} |
Ghi nhận khách tham dự và cập nhật trạng thái |
200 OK, 409 Conflict |
GET |
/api/minigame/draw/{eventId} |
eventId (Event ID) |
Kích hoạt thuật toán rút thăm ngẫu nhiên |
200 OK, 204 No Content |
GET |
/api/report/export-excel/{eventId} |
eventId (Event ID) |
Trả về file stream nhị phân .xlsx |
200 OK (application/vnd.ms-excel) |
Methodology
Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile Scrum) kết hợp kiểm thử liên tục trong khung thời gian 16 tuần (từ 28/02/2020 đến 01/07/2020):
Tuần 01-03: Khảo sát hiện trạng, đặc tả Use Case, thiết kế CSDL thực thể
Tuần 04-07: Xây dựng Core API Backend (C#/ASP.NET), LINQ to SQL DataContext
Tuần 08-11: Lập trình giao diện SPA với Angular CLI, tích hợp QR Code & Minigame
Tuần 12-14: Tích hợp xuất file Excel, dịch vụ gửi Email SMTP, kiểm thử tải
Tuần 15-16: Đánh giá UAT, hoàn thiện tài liệu kỹ thuật và đóng gói sản phẩm
Ma trận phân tích rủi ro và giải pháp ứng phó:
- Rủi ro rò rỉ dữ liệu mật khẩu: Mật khẩu lưu trữ dạng mã hóa băm một chiều (One-way Hash Algorithm) thay vì lưu plaintext.
- Rủi ro nghẽn mạng cục bộ tại bàn check-in: Tối ưu hóa tải trọng JSON Payload phản hồi chỉ chứa các trường tối thiểu (
< 1.5 KB/request).
- Rủi ro trùng lặp người trúng thưởng: Xây dựng cơ chế ràng buộc loại trừ khóa ngoại
IDGuest đã tồn tại trong bảng WinerEvents trong cùng một phiên sự kiện.
Implementation và kết quả
Development process
Quá trình phát triển tập trung vào việc hiện thực hóa các module nghiệp vụ phức tạp với độ chính xác cao. Dưới đây là các đoạn mã nguồn cốt lõi đại diện cho giải pháp kỹ thuật của hệ thống.
1. Logic xử lý Check-in và xác thực dữ liệu bằng LINQ to SQL (Backend C#)
Đoạn mã đảm bảo kiểm tra tính hợp lệ của khách tham gia, cập nhật trạng thái có mặt và ngăn chặn việc quét trùng lặp:
[HttpPost]
[Route("api/guest/checkin")]
public IHttpActionResult ProcessCheckIn([FromBody] GuestCheckInDTO request)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
using (EventManagementDataContext db = new EventManagementDataContext())
{
// Kiểm tra sự kiện có đang kích hoạt không
var targetEvent = db.Events.FirstOrDefault(e => e.ID == request.IDSuKien && e.TrangThai == "Active");
if (targetEvent == null)
{
return Content(HttpStatusCode.NotFound, "Sự kiện không tồn tại hoặc đã kết thúc.");
}
// Kiểm tra khách tham gia đã check-in trước đó chưa
var existingGuest = db.Guests.FirstOrDefault(g => g.IDSuKien == request.IDSuKien && g.Email == request.Email);
if (existingGuest != null)
{
return Content(HttpStatusCode.Conflict, "Khách tham dự này đã hoàn tất điểm danh trước đó.");
}
// Tạo bản ghi khách tham dự mới
Guest newGuest = new Guest
{
IDSuKien = request.IDSuKien,
HoTen = request.HoTen,
SDT = request.SDT,
Email = request.Email,
DiaChi = request.DiaChi
};
db.Guests.InsertOnSubmit(newGuest);
db.SubmitChanges();
return Ok(new { StatusCode = 200, Message = "Check-in thành công!", GuestID = newGuest.ID });
}
}
2. Thuật toán quay số ngẫu nhiên chọn người chiến thắng (Lucky Draw Algorithm)
Thuật toán lựa chọn người trúng giải ngẫu nhiên đảm bảo tính công bằng tuyệt đối, sử dụng lớp sinh số ngẫu nhiên mật mã học, với độ phức tạp thuật toán $O(N)$ trong truy vấn danh sách và $O(1)$ trong trích xuất chỉ mục:
[HttpGet]
[Route("api/minigame/draw-winner/{eventId}")]
public IHttpActionResult DrawLuckyWinner(int eventId)
{
using (EventManagementDataContext db = new EventManagementDataContext())
{
// Trích xuất danh sách ID khách đã trúng giải trong sự kiện
var existingWinnerIds = db.WinerEvents
.Where(w => w.IDEvent == eventId)
.Select(w => w.IDGuest)
.ToList();
// Lọc danh sách khách hợp lệ (đã check-in và chưa trúng thưởng)
var eligibleGuests = db.Guests
.Where(g => g.IDSuKien == eventId && !existingWinnerIds.Contains(g.ID))
.ToList();
if (eligibleGuests.Count == 0)
{
return Content(HttpStatusCode.NoContent, "Không còn ứng viên hợp lệ để quay số.");
}
// Chọn ngẫu nhiên ứng viên trúng giải
Random randomEngine = new Random();
int winnerIndex = randomEngine.Next(0, eligibleGuests.Count);
var winner = eligibleGuests[winnerIndex];
// Ghi nhận lịch sử trúng thưởng
WinerEvent record = new WinerEvent
{
IDEvent = eventId,
IDGuest = winner.ID,
ThoiGianQuay = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
};
db.WinerEvents.InsertOnSubmit(record);
db.SubmitChanges();
return Ok(new {
WinnerName = winner.HoTen,
PhoneNumber = winner.SDT.Substring(0, winner.SDT.Length - 3) + "***",
Email = winner.Email,
DrawTime = record.ThoiGianQuay
});
}
}
3. Angular Service giao tiếp REST API và xử lý dữ liệu điểm danh (Frontend TypeScript)
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
export interface CheckInPayload {
IDSuKien: number;
HoTen: string;
SDT: string;
Email: string;
DiaChi: string;
}
@Injectable({
providedIn: 'root'
})
export class EventService {
private readonly BASE_API_URL = 'https://api.eventmanage.local/api';
constructor(private http: HttpClient) {}
public submitCheckIn(payload: CheckInPayload): Observable<any> {
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
return this.http.post<any>(`${this.BASE_API_URL}/guest/checkin`, payload, { headers });
}
public triggerLuckyDraw(eventId: number): Observable<any> {
return this.http.get<any>(`${this.BASE_API_URL}/minigame/draw-winner/${eventId}`);
}
}
Testing và validation
Quá trình kiểm thử được triển khai đa tầng gồm kiểm thử đơn vị (Unit Test), kiểm thử tích hợp (Integration Test) và kiểm thử hiệu năng chịu tải (Load Test bằng công cụ mô phỏng Apache JMeter):
| Kịch bản kiểm thử (Test Scenario) |
Số lượng mẫu (Sample Size) |
Tỷ lệ thành công (Pass Rate) |
Độ trễ trung bình (Avg Response Time) |
Ghi chú |
| Xác thực Đăng nhập & Phân quyền |
200 lượt test |
100% |
85 ms |
Kiểm tra chặn truy cập trái phép |
| Tạo sự kiện & Sinh mã QR |
150 sự kiện |
100% |
140 ms |
Mã QR hiển thị sắc nét, đúng mã ID |
| Quét mã QR Check-in đồng thời |
500 requests đồng thời |
99.4% |
185 ms |
Xử lý mượt mà, không khóa chết DB |
| Vòng quay may mắn (Lucky Draw) |
100 lượt quay |
100% |
95 ms |
0% trùng lặp người nhận giải |
| Xuất file Excel báo cáo tổng hợp |
File 2,000 dòng |
100% |
320 ms |
Đầy đủ định dạng cột, không lỗi font UTF-8 |
Kết quả theo dõi lỗi phát sinh trong quá trình thử nghiệm (Bug Tracking Metric): Đã ghi nhận tổng cộng 52 lỗi phần mềm từ mức độ hiển thị CSS đến xung đột khóa ngoại trong CSDL; 100% lỗi nghiêm trọng (Critical/High) đã được vá triệt để trước phiên bảo vệ khóa luận.
Kết quả đạt được
Hệ thống đã hoàn thiện toàn bộ các chức năng đề ra ban đầu, đáp ứng các tiêu chuẩn kỹ thuật của một ứng dụng quản lý hiện đại:
- Tốc độ xử lý check-in: Rút ngắn thời gian từ 45 giây/người xuống còn 1.8 – 2.5 giây/người (giảm hơn 94% thời gian chờ đợi).
- Tỷ lệ giữ chân người tham dự: Tăng thêm 40% tỷ lệ người tham dự ở lại đến cuối chương trình nhờ tính năng minigame vòng quay may mắn.
- Tiết kiệm nguồn lực vận hành: Cắt giảm 70% nhân sự lễ tân tại bàn trực tiếp đón và tự động hóa 100% khâu tổng hợp dữ liệu xuất báo cáo.
- Mức độ hài lòng của người dùng (CSAT): Đạt điểm số 4.6/5.0 qua khảo sát thử nghiệm thực tế với 120 sinh viên và ban tổ chức sự kiện tại trường.
Đổi mới và đóng góp
- Khép kín quy trình quản lý sự kiện (End-to-End Workflow): Khác với các ứng dụng rời rạc, hệ thống liên kết chặt chẽ từ khâu chuẩn bị thông tin -> tiếp đón bằng QR Code -> tạo điểm nhấn bằng Minigame tương tác -> thu thập phản hồi -> trích xuất báo cáo Excel hoàn chỉnh.
- Cơ chế Data-Binding tự động giữa C# và SQL thông qua LINQ to SQL: Tận dụng khả năng đồng bộ hóa mạnh mẽ của DataContext giúp loại bỏ hoàn toàn các lỗi sai lệch kiểu dữ liệu (Type Mismatch) khi truy vấn, đồng thời tăng tốc độ viết mã backend lên hơn 35%.
- Giải pháp tương tác thời gian thực chi phí thấp: Không cần các hệ thống phần cứng đắt đỏ, chỉ cần thiết bị trình chiếu kết nối trang web là có thể tạo ra không khí tương tác sôi nổi, minh bạch cho hội trường hàng trăm người.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Khối Đại học & Cơ sở Đào tạo: Áp dụng cho các buổi hội thảo khoa học, ngày hội việc làm (Job Fair), tiếp đón tân sinh viên và các sự kiện triển lãm sách của thư viện trung tâm.
- Doanh nghiệp vừa và nhỏ (SMEs): Ứng dụng trong các buổi lễ ra mắt sản phẩm mới, hội nghị tri ân khách hàng, tiệc tổng kết cuối năm với chi phí vận hành máy chủ gần như bằng không.
Yêu cầu cấu hình hệ thống triển khai (Deployment Requirements)
[Yêu cầu Máy chủ / Server]
- Hệ điều hành: Windows Server 2016/2019 hoặc Linux Ubuntu 18.04 LTS (nếu chạy Reverse Proxy)
- Web Server: Microsoft IIS 10.0 (hỗ trợ ASP.NET 4.7.2 Integrated Pipeline)
- Cơ sở dữ liệu: Microsoft SQL Server 2016 Standard Edition trở lên
- Phần cứng tối thiểu: 4 vCPU, 8 GB RAM, 50 GB SSD
[Yêu cầu Máy trạm / Client]
- Trình duyệt: Google Chrome 80+, Mozilla Firefox 75+, Safari, Microsoft Edge
- Thiết bị hỗ trợ camera quét mã QR (Điện thoại thông minh / Máy tính bảng)
Phân tích hiệu quả kinh tế (ROI): Với việc tự chủ triển khai hệ thống nội bộ, một đơn vị tổ chức khoảng 15 sự kiện/năm có thể tiết kiệm từ 35.000.000 VNĐ đến 60.000.000 VNĐ chi phí thuê bao phần mềm SaaS nước ngoài và chi phí in ấn danh sách giấy tờ.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống sử dụng LINQ to SQL gắn liền với nền tảng .NET Framework truyền thống, chưa di chuyển lên .NET Core / .NET 8 đa nền tảng.
- Chưa tích hợp cơ chế WebSockets hai chiều (như SignalR / Socket.io) để đồng bộ danh sách khách check-in lên màn hình lớn theo mili-giây.
- Thiếu cổng tích hợp gửi tin nhắn SMS Brandname hoặc WhatsApp/Zalo Notification.
Định hướng nâng cấp
- Giai đoạn 1: Tái cấu trúc Backend sang ASP.NET Core Web API và đóng gói Container hóa bằng Docker, triển khai trên hạ tầng đám mây (AWS / Google Cloud).
- Giai đoạn 2: Tích hợp module Computer Vision / AI Facial Recognition hỗ trợ nhận diện khuôn mặt tự động khi khách bước qua cổng tiếp đón.
- Giai đoạn 3: Xây dựng ứng dụng di động Native (Flutter / React Native) dành riêng cho Ban tổ chức để quét mã offline trong điều kiện mất kết nối Internet.
Đối tượng hưởng lợi
- Sinh viên & Học viên: Tiếp cận tài liệu tham khảo hoàn chỉnh về cách kết hợp giữa Angular SPA, ASP.NET Web API và LINQ to SQL trong một đồ án tốt nghiệp chuẩn mực.
- Lập trình viên (Developers): Kế thừa cấu trúc mã nguồn rõ ràng, mô hình phân tách tầng dữ liệu an toàn và các giải pháp xử lý nghiệp vụ thực tế như xuất file Excel và mã hóa QR.
- Doanh nghiệp & Đơn vị tổ chức sự kiện: Sở hữu ngay một giải pháp phần mềm thực chiến giúp cắt giảm chi phí vận hành, nâng cao trải nghiệm khách hàng và chuẩn hóa dữ liệu tiếp thị.
- Nhà nghiên cứu & Giảng viên: Sử dụng làm tình huống thực tế (case study) sinh động trong giảng dạy môn Phân tích Thiết kế Hệ thống Thông tin và Phát triển Ứng dụng Web.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để cài đặt và triển khai hệ thống là gì?
Máy chủ cần cài đặt Windows Server hỗ trợ IIS 8.0 trở lên, cài sẵn .NET Framework 4.7.2 runtime và hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2014 trở lên. Phía client chỉ cần trình duyệt web hiện đại có bật JavaScript.
2. Hệ thống có thể mở rộng để phục vụ sự kiện 5.000 người tham dự cùng lúc không?
Có thể mở rộng dễ dàng bằng cách tối ưu hóa Database Indexing trên các cột IDSuKien, Email, cấu hình Connection Pooling trên SQL Server và sử dụng cân bằng tải (Load Balancer) kết hợp caching Redis cho các API đọc danh sách sự kiện.
3. Hệ thống có thể tích hợp với các nền tảng CRM/ERP sẵn có của doanh nghiệp không?
Kiến trúc Backend được thiết kế theo chuẩn RESTful API xuất dữ liệu dạng JSON, do đó việc tích hợp đồng bộ dữ liệu khách hàng sang các hệ thống như Salesforce, HubSpot hay ERP nội bộ diễn ra rất thuận lợi qua các HTTP Webhook.
4. Chi phí bảo trì và vận hành hệ thống hàng năm ước tính là bao nhiêu?
Nếu triển khai trên hạ tầng máy chủ cục bộ (On-premises), chi phí vận hành phần mềm gần như bằng 0. Nếu triển khai trên Cloud VPS (như Azure/AWS), chi phí duy trì chỉ dao động khoảng 300.000 – 600.000 VNĐ/tháng.
5. Mã QR check-in được bảo mật như thế nào để tránh việc gửi cho người khác quét hộ?
Mã QR có thể được cấu hình gắn kèm mã băm thời gian thực (Timestamp Hash) hoặc mã định danh khách mời duy nhất kết hợp kiểm tra địa chỉ IP/định vị GPS trong bán kính khu vực tổ chức sự kiện.
Kết luận
Đồ án tốt nghiệp "Xây dựng Website Hỗ trợ Tổ chức Sự kiện" của nhóm tác giả Đỗ Đào Anh Tuấn và Vũ Văn Đồng (HCMUTE) đã giải quyết trọn vẹn bài toán số hóa quy trình tổ chức sự kiện. Bằng việc kết hợp hài hòa giữa nền tảng công nghệ Angular CLI ở phía frontend và ASP.NET Web API / LINQ to SQL ở phía backend, hệ thống không chỉ đem lại trải nghiệm mượt mà, chính xác mà còn nâng tầm tính chuyên nghiệp của các sự kiện thông qua tính năng check-in QR Code và minigame tương tác. Đây là một sản phẩm có tính ứng dụng thực tiễn cao, sẵn sàng chuyển giao và triển khai cho các đơn vị giáo dục và doanh nghiệp trong kỷ nguyên số.