Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 đã thúc đẩy quá trình chuyển đổi số mạnh mẽ trong ngành giải trí và dịch vụ rạp chiếu phim. Theo các báo cáo thị trường điện ảnh, tỷ lệ người dùng đặt vé trực tuyến tại các cụm rạp đã vượt ngưỡng 68%, tạo ra hàng triệu lượt tương tác dữ liệu mỗi ngày. Tuy nhiên, tình trạng quá tải thông tin (information overload) đang là rào cản lớn: khách hàng thường mất từ 10 đến 15 phút tìm kiếm giữa hàng chục bộ phim, suất chiếu mà không tìm được nội dung phù hợp với sở thích cá nhân.
Các nền tảng bán vé rạp chiếu phim lớn tại Việt Nam như CGV, Galaxy Cinema hay Lotte Cinema hiện nay chủ yếu hoạt động theo mô hình danh mục tĩnh truyền thống (phim đang chiếu, phim sắp chiếu), thiếu vắng cơ chế cá nhân hóa dữ liệu trải nghiệm người dùng. Trong khi đó, các dịch vụ trực tuyến quy mô toàn cầu như Netflix hay Amazon đã chứng minh việc ứng dụng Hệ thống gợi ý (Recommender System - RS) giúp tăng tỷ lệ giữ chân khách hàng (retention rate) lên hơn 35% và tối ưu hóa doanh thu đáng kể.
Đồ án khóa luận "Phát triển ứng dụng Web có tính năng gợi ý cho rạp chiếu phim" (Development of a Recommendation-Based Web Application for the Cinema) được thực hiện bởi sinh viên Nguyễn Hồng Vĩ dưới sự hướng dẫn của PGS. Lê Trung Quân tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM. Đề tài tập trung giải quyết bài toán cốt lõi: kết hợp nền tảng quản lý đặt vé rạp chiếu phim trực tuyến hiện đại với các thuật toán gợi ý phim thông minh, tối ưu trải nghiệm người dùng theo phân khúc khách hàng trẻ và học sinh, sinh viên.
graph TD
A[Khách hàng / Sinh viên] -->|Tương tác / Đặt vé| B(Giao diện Web ReactJS)
B -->|RESTful API Calls| C(Backend Django Framework)
C -->|Truy vấn / Ghi dữ liệu| D[(PostgreSQL RDBMS)]
C -->|Dữ liệu Rating / Tương tác| E[Recommender Engine]
E -->|User-User / Item-Item CF & MF| E
E -->|Gợi ý phim cá nhân hóa| B
Mục tiêu dự án
- Xây dựng hệ thống Web đặt vé rạp chiếu phim toàn diện: Phát triển đầy đủ các luồng nghiệp vụ từ tra cứu phim, chọn suất chiếu, đặt ghế trực quan thời gian thực, chọn combo bắp nước đến thanh toán trực tuyến.
- Nghiên cứu và hiện thực hóa thuật toán gợi ý (RS): Triển khai các thuật toán lọc cộng tác (Collaborative Filtering - CF) gồm User-User CF, Item-Item CF và Phân rã ma trận (Matrix Factorization - MF) để dự đoán chính xác điểm đánh giá và đề xuất danh sách phim phù hợp.
- Tối ưu hóa độ chính xác mô hình trên tập dữ liệu chuẩn: Sử dụng tập dữ liệu MovieLens để huấn luyện, chuẩn hóa ma trận tiện ích (Utility Matrix) và đánh giá qua chỉ số sai số toàn phương trung bình ($RMSE \le 0.90$).
- Phát triển giao diện người dùng tương tác cao (UI/UX): Ứng dụng Single-Page Application (SPA) với ReactJS, đảm bảo khả năng phản hồi mượt mà và thời gian tải trang dưới 1.5 giây.
- Định hướng mở rộng kiến trúc IoT cho rạp thông minh: Thiết kế mô hình kiến trúc có khả năng tích hợp thiết bị IoT như vé điện tử QR/RFID, kiểm soát môi trường phòng chiếu và giám sát chỗ ngồi thông minh.
Phạm vi và giới hạn
- Phạm vi: Ứng dụng web hướng đến các cụm rạp chiếu phim quy mô vừa và nhỏ; đối tượng khách hàng mục tiêu là học sinh, sinh viên và khán giả trẻ; hệ thống gợi ý xử lý trên tập dữ liệu đánh giá và phản hồi tiềm ẩn (implicit feedback).
- Giới hạn: Hệ thống chưa triển khai trực tiếp phần cứng IoT vật lý tại phòng chiếu; việc thanh toán sử dụng cổng giả lập sandbox an toàn; giai đoạn đầu tập trung vào thuật toán lọc cộng tác và phân rã ma trận trước khi mở rộng sang Deep Learning.
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 đặt vé và dịch vụ xem phim trực tuyến hiện nay cho thấy sự khác biệt rõ rệt về công nghệ và tính năng cá nhân hóa:
| Tiêu chí |
CGV Cinemas |
Galaxy Cinema |
Netflix |
Hệ thống đề xuất của Đồ án |
| Mô hình hoạt động |
Rạp chiếu phim truyền thống |
Rạp chiếu phim truyền thống |
Streaming video trực tuyến |
Rạp chiếu phim kết hợp gợi ý thông minh |
| Tính năng gợi ý (RS) |
Không hỗ trợ |
Danh mục nổi bật thủ công |
Cá nhân hóa đa chiều (AI/ML) |
Collaborative Filtering & Matrix Factorization |
| Chọn ghế & Combo |
Có |
Có |
Không áp dụng |
Trực quan, cập nhật thời gian thực |
| Chi phí / Giá vé |
Cao (85.000đ - 110.000đ) |
Trung bình (75.000đ - 95.000đ) |
Thuê bao (180.000đ/tháng) |
Tối ưu, có chính sách ưu đãi sinh viên |
| Kiến trúc kỹ thuật |
Monolithic / Web App |
Web / App di động |
Microservices phân tán |
Django REST + ReactJS SPA + PostgreSQL |
Phân tích yêu cầu hệ thống theo mô hình MoSCoW
- Must-have (Bắt buộc có):
- Xác thực người dùng (Đăng ký, Đăng nhập, JWT Authentication).
- Quản lý phim, thể loại, lịch chiếu, phòng chiếu và phân hạng ghế.
- Sơ đồ chọn ghế động và luồng thanh toán đặt vé an toàn.
- Module gợi ý phim cá nhân hóa dựa trên thuật toán Collaborative Filtering.
- Phân quyền Admin quản trị nội dung và thống kê.
- Should-have (Nên có):
- Đặt trước bắp nước (Concessions management).
- Đánh giá, chấm điểm và phản hồi sau khi xem phim.
- Hiển thị danh sách phim theo độ tương đồng Cosine Similarity.
- Could-have (Có thể có):
- Khuyến nghị theo thời gian thực dựa trên phiên làm việc (Session-based RS).
- Tích hợp giao diện quản lý thiết bị IoT rạp chiếu phim.
- Won't-have (Tạm thời chưa triển khai):
- Triển khai cảm biến phần cứng IoT tại rạp thực tế.
- Xử lý phân tích video trailer bằng Computer Vision.
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình phân tầng độc lập (Decoupled Client-Server Architecture), giao tiếp thông qua giao thức chuẩn RESTful API.
classDiagram
class User {
+UUID id
+String username
+String email
+String password_hash
+String role
}
class Movie {
+UUID id
+String title
+String genre
+Int duration_minutes
+Float avg_rating
+Date release_date
}
class Showtime {
+UUID id
+UUID movie_id
+DateTime start_time
+String room_number
+Decimal ticket_price
}
class Booking {
+UUID id
+UUID user_id
+UUID showtime_id
+Decimal total_amount
+String status
+DateTime created_at
}
class Seat {
+UUID id
+String seat_code
+String seat_type
+Boolean is_available
}
class Rating {
+UUID id
+UUID user_id
+UUID movie_id
+Float rating_value
+DateTime timestamp
}
User "1" --> "0..*" Booking
User "1" --> "0..*" Rating
Movie "1" --> "0..*" Showtime
Movie "1" --> "0..*" Rating
Showtime "1" --> "0..*" Booking
Booking "1" --> "1..*" Seat
Ngăn xếp công nghệ (Technology Stack)
- Frontend: ReactJS 18.2, JavaScript XML (JSX), Virtual DOM, Axios, HTML5/CSS3, TailwindCSS.
- Backend: Python 3.10+, Django 4.2 LTS, Django REST Framework (DRF), kiến trúc MVT/MVC.
- Cơ sở dữ liệu: PostgreSQL 15 (Tuân thủ chuẩn ACID, tối ưu hóa truy vấn quan hệ và lập chỉ mục Indexing).
- Thư viện Khoa học dữ liệu & Machine Learning: NumPy, Pandas, Scikit-learn, Surprise Framework.
- Giao thức & Định dạng truyền tải: RESTful API, JSON, Fetch API.
Thiết kế RESTful API tiêu biểu
GET /api/v1/movies/: Lấy danh sách phim đang chiếu và sắp chiếu.
GET /api/v1/movies/{id}/: Lấy thông tin chi tiết, trailer và lịch chiếu của một phim.
POST /api/v1/ratings/: Gửi đánh giá sao (1-5) cho bộ phim.
GET /api/v1/recommendations/user/{user_id}/: Lấy danh sách $N$ phim được gợi ý cá nhân hóa.
POST /api/v1/bookings/checkout/: Xử lý giao dịch đặt vé và khóa ghế theo thời gian thực.
Phương pháp luận (Methodology)
Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum kết hợp quy trình khoa học dữ liệu CRISP-DM:
- Thời gian thực hiện: 12 tuần, chia thành 4 Sprint chính (3 tuần/Sprint).
- Sprint 1: Thu thập yêu cầu, thiết kế cơ sở dữ liệu PostgreSQL và wireframe UI/UX.
- Sprint 2: Xây dựng backend Django REST API, xác thực người dùng và quản lý dữ liệu phim.
- Sprint 3: Nghiên cứu, huấn luyện và tích hợp thuật toán lọc cộng tác (CF) & Matrix Factorization.
- Sprint 4: Xây dựng giao diện ReactJS, kiểm thử toàn diện (Unit Test, Integration Test) và tối ưu hóa $RMSE$.
- Chiến lược kiểm soát rủi ro (Risk Mitigation):
- Rủi ro thưa thớt dữ liệu (Data Sparsity): Áp dụng chuẩn hóa Normalized Utility Matrix trừ giá trị trung bình (mean-centering) và chuyển đổi sang phản hồi tiềm ẩn.
- Rủi ro hiệu năng API: Đệm kết quả gợi ý (Caching) trong cơ sở dữ liệu, phân trang kết quả truy vấn.
Implementation và kết quả
Development Process & Thuật toán cốt lõi
Quy trình xử lý của Hệ thống gợi ý được chia thành hai luồng chính: User-User Collaborative Filtering (uuCF) và Item-Item Collaborative Filtering (iiCF), kết hợp tối ưu bằng Matrix Factorization (MF).
sequenceDiagram
autonumber
actor User as Người dùng
participant UI as Giao diện ReactJS
participant API as Django Backend
participant DB as PostgreSQL
participant RS as Recommender Engine (CF/MF)
User->>UI: Truy cập trang chủ / Đăng nhập
UI->>API: GET /api/v1/recommendations/user/{id}/
API->>DB: Lấy lịch sử tương tác & ma trận rating
DB-->>API: Trả về Utility Matrix
API->>RS: Tính toán Cosine Similarity & Dự đoán Rating
RS-->>API: Trả về Top-N Movie IDs có điểm dự đoán cao nhất
API->>DB: Lấy chi tiết thông tin phim theo IDs
DB-->>API: Trả về danh sách phim
API-->>UI: Trả về JSON danh sách phim gợi ý
UI-->>User: Hiển thị giao diện phim đề xuất cá nhân hóa
1. Độ đo tương đồng Cosine Similarity
Độ tương đồng giữa hai vector người dùng $\mathbf{u}$ và $\mathbf{v}$ (hoặc hai item) được tính toán theo công thức:
$$\text{Cosine Similarity}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{|\mathbf{u}|2 |\mathbf{v}|2} = \frac{\sum{i \in I{uv}} r_{u,i} r_{v,i}}{\sqrt{\sum_{i \in I_u} r_{u,i}^2} \sqrt{\sum_{i \in I_v} r_{v,i}^2}}$$
Trong đó $I_{uv}$ là tập hợp các bộ phim mà cả hai người dùng $u$ và $v$ đều đã đánh giá.
2. Hiện thực hóa thuật toán Collaborative Filtering bằng Python
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from scipy import sparse
class CollaborativeFilteringRecommender:
def __init__(self, Y_data, k_neighbors=10, is_user_based=True):
"""
Y_data: Ma trận tương tác [user_id, item_id, rating]
k_neighbors: Số lượng láng giềng gần nhất để dự đoán
is_user_based: True nếu là User-User CF, False nếu là Item-Item CF
"""
self.Y_data = Y_data
self.k = k_neighbors
self.is_user_based = is_user_based
self.n_users = int(np.max(Y_data[:, 0])) + 1
self.n_items = int(np.max(Y_data[:, 1])) + 1
self.dist_matrix = None
self.mu = None
self.Ybar_data = None
def normalize_utility_matrix(self):
"""Chuẩn hóa trừ đi điểm trung bình (Mean-centering) để giải quyết bias cá nhân"""
users = self.Y_data[:, 0]
self.Ybar_data = self.Y_data.copy()
self.mu = np.zeros((self.n_users,))
for u in range(self.n_users):
ids = np.where(users == u)[0]
item_ids = self.Y_data[ids, 1]
ratings = self.Y_data[ids, 2]
if len(ratings) > 0:
mean_val = np.mean(ratings)
self.mu[u] = mean_val
self.Ybar_data[ids, 2] = ratings - mean_val
else:
self.mu[u] = 0
# Chuyển đổi sang Sparse Matrix
self.Ybar = sparse.coo_matrix(
(self.Ybar_data[:, 2], (self.Ybar_data[:, 1], self.Ybar_data[:, 0])),
shape=(self.n_items, self.n_users)
).tocsr()
def compute_similarity(self):
"""Tính toán ma trận tương đồng Cosine Similarity"""
if self.is_user_based:
self.dist_matrix = cosine_similarity(self.Ybar.T, self.Ybar.T)
else:
self.dist_matrix = cosine_similarity(self.Ybar, self.Ybar)
def predict_rating(self, u, i):
"""Dự đoán rating của người dùng u cho phim i"""
ids = np.where(self.Y_data[:, 1] == i)[0]
users_rated_i = self.Y_data[ids, 0].astype(np.int32)
sim = self.dist_matrix[u, users_rated_i]
# Chọn ra k láng giềng có độ tương đồng lớn nhất
k_nearest_indices = np.argsort(sim)[-self.k:]
nearest_sim = sim[k_nearest_indices]
r = self.Ybar[i, users_rated_i[k_nearest_indices]].toarray().flatten()
eps = 1e-8
predicted_normalized_rating = np.sum(nearest_sim * r) / (np.sum(np.abs(nearest_sim)) + eps)
return predicted_normalized_rating + self.mu[u]
3. Tối ưu hóa với Matrix Factorization (MF)
Mô hình phân rã ma trận rating $R \approx P \times Q^T$ tối thiểu hóa hàm mất mát có điều chuẩn (Regularization):
$$\mathcal{L} = \sum_{(u, i) \in R} \left(r_{ui} - \mathbf{p}_u^T \mathbf{q}_i - b_u - b_i - \mu\right)^2 + \lambda \left(|\mathbf{p}_u|_2^2 + |\mathbf{q}_i|_2^2 + b_u^2 + b_i^2\right)$$
Trong đó $b_u, b_i$ là hệ số sai lệch (bias) của user và item, $\lambda$ là siêu tham số kiểm soát overfitting.
Testing và validation
Hiệu năng của các thuật toán được đánh giá trên tập dữ liệu chuẩn MovieLens 100K (100.000 ratings từ 943 người dùng trên 1.682 bộ phim) bằng chỉ số Root Mean Square Error:
$$RMSE = \sqrt{\frac{1}{|\Omega_{test}|} \sum_{(u,i) \in \Omega_{test}} (r_{ui} - \hat{r}_{ui})^2}$$
| Thuật toán |
Precision@10 |
Recall@10 |
RMSE |
Thời gian phản hồi API (ms) |
| Baseline (Mean Rating) |
0.621 |
0.542 |
1.124 |
42 ms |
| User-User CF (uuCF) |
0.764 |
0.689 |
0.985 |
115 ms |
| Item-Item CF (iiCF) |
0.792 |
0.715 |
0.942 |
86 ms |
| Matrix Factorization (SVD) |
0.841 |
0.783 |
0.892 |
68 ms |
pie title Tỷ lệ phân bổ phản hồi người dùng UAT
"Rất hài lòng (Gợi ý đúng sở thích)" : 58
"Hài lòng (Giao diện mượt mà)" : 32
"Bình thường" : 7
"Chưa hài lòng" : 3
- Kết quả User Acceptance Testing (UAT): Thử nghiệm thực tế với 120 sinh viên cho thấy 90% người dùng đánh giá cao giao diện chọn ghế trực quan và danh mục phim gợi ý chính xác hơn 30% so với việc tự tìm kiếm thủ công.
- Kiểm thử hệ thống: 100% test scenario (Authentication, Booking, Checkout, RS Inference) đạt trạng thái PASS với độ bao phủ mã nguồn (Code Coverage) đạt 84.6%.
Đổi mới và đóng góp
- Ứng dụng thuật toán gợi ý vào thị trường rạp chiếu phim nội địa: Trong khi các rạp phim tại Việt Nam chỉ dừng lại ở hiển thị danh sách tĩnh, đồ án đã tích hợp thành công hệ thống gợi ý đa thuật toán (Hybrid giữa Content Correlation và Collaborative Filtering), lấp đầy khoảng trống công nghệ trong phân khúc rạp vừa và nhỏ.
- Cải thiện độ chính xác và giảm độ trễ: Việc chuyển đổi dữ liệu thưa thớt sang cấu trúc Sparse Matrix kết hợp tiền xử lý Mean-Centering giúp giảm chỉ số $RMSE$ từ 1.124 xuống 0.892 (cải thiện 20.6% độ chính xác so với phương pháp cơ bản).
- Mô hình kiến trúc sẵn sàng tích hợp IoT (IoT-Ready): Đồ án nghiên cứu và phác thảo chi tiết cách thức liên kết giữa Web Application và hệ sinh thái rạp chiếu phim thông minh:
- Smart Ticketing: Check-in vào rạp qua mã QR tạo động sau khi thanh toán trên web.
- Smart Seat Monitoring: Đồng bộ trạng thái ghế ngồi từ cảm biến áp lực vật lý lên sơ đồ ghế trên ReactJS.
- Environment Control: Điều chỉnh ánh sáng và nhiệt độ phòng chiếu tự động theo lịch chiếu phim từ cơ sở dữ liệu.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use Case Scenario)
- Kịch bản sinh viên: Khách hàng A (sinh viên) đăng nhập vào web, hệ thống tự động nhận diện lịch sử thích phim viễn tưởng và đề xuất các suất chiếu phim tương tự kèm mức giá vé ưu đãi học sinh/sinh viên. Khách hàng chọn ghế, đặt kèm combo bắp nước và nhận vé điện tử có mã QR ngay trên trình duyệt trong vòng dưới 60 giây.
graph LR
User([Khách hàng]) -->|1. Chọn phim & ghế| Web[ReactJS Frontend]
Web -->|2. Gửi request đặt vé| Nginx[Nginx Reverse Proxy]
Nginx -->|3. Chuyển tiếp| Gunicorn[Gunicorn WSGI]
Gunicorn -->|4. Xử lý nghiệp vụ & RS| Django[Django Backend Engine]
Django -->|5. Đọc/Ghi dữ liệu| DB[(PostgreSQL)]
Django -->|6. Trả về mã vé QR| Web
Chiến lược triển khai hệ thống (Deployment Strategy)
- Máy chủ ứng dụng: Nginx làm Reverse Proxy kết hợp Gunicorn chạy ứng dụng Django trên hệ điều hành Ubuntu 22.04 LTS.
- Frontend Hosting: Build tĩnh ReactJS tối ưu qua CDN để đạt tốc độ tải trang cao nhất.
- Cơ sở dữ liệu: PostgreSQL được cấu hình Connection Pooling (PgBouncer) để xử lý đồng thời hơn 1.000 kết nối đặt vé trong các khung giờ cao điểm.
- Phân tích hiệu quả kinh tế (ROI): Việc ứng dụng web tự động giúp giảm chi phí nhân sự bán vé tại quầy tới 40%, tăng tỷ lệ lấp đầy ghế trống tại rạp thêm 18% nhờ cơ chế gợi ý phim cá nhân hóa.
Hạn chế và hướng phát triển
- Hạn chế kỹ thuật hiện tại:
- Vấn đề khởi đầu lạnh (Cold-Start Problem) xảy ra khi người dùng mới chưa có bất kỳ lịch sử tương tác nào, hệ thống phải dựa trên thể loại phổ biến thay vì cá nhân hóa sâu.
- Độ thưa thớt ma trận tương tác (Matrix Sparsity) vẫn ở mức cao khi số lượng người dùng và phim tăng nhanh.
- Hướng phát triển tương lai:
- Tích hợp mạng nơ-ron học sâu (Deep Learning) như Autoencoders, Recurrent Neural Networks (RNN/LSTM) hoặc Transformer (BERT4Rec) để nhận diện chuỗi hành vi xem phim theo ngữ cảnh thời gian thực.
- Triển khai phần cứng IoT thực tế: lắp đặt đầu đọc vé RFID/QR tại cửa phòng chiếu và kết nối cảm biến ghế ngồi thông minh qua giao thức MQTT/WebSockets.
Đối tượng hưởng lợi
mindmap
root((Hệ thống Web Cinema RS))
Sinh viên & Khách hàng
Trải nghiệm đặt vé nhanh dưới 60s
Tiếp cận giá vé ưu đãi sinh viên
Gợi ý phim đúng sở thích
Lập trình viên & Kỹ sư
Tham khảo kiến trúc Django + ReactJS
Mã nguồn triển khai CF và MF mẫu
Mô hình tích hợp RESTful API chuẩn
Doanh nghiệp Rạp phim
Tăng doanh thu vé và combo bắp nước
Tối ưu 40% chi phí vận hành quầy
Dữ liệu phân tích hành vi khách hàng
Nhà nghiên cứu
Tài liệu thực nghiệm trên MovieLens
Đánh giá so sánh RMSE giữa uuCF, iiCF, MF
- Học sinh, sinh viên & Khách xem phim: Tiết kiệm thời gian tra cứu, nhận gợi ý phim chính xác, trải nghiệm quy trình đặt vé và thanh toán trực tuyến liền mạch.
- Lập trình viên & Kỹ sư phần mềm: Nắm bắt phương pháp kết hợp ReactJS SPA với Django REST Framework, kiến trúc chuẩn hóa ma trận và triển khai giải thuật Machine Learning trong sản phẩm thực tế.
- Chủ doanh nghiệp & Cụm rạp vừa và nhỏ: Sở hữu giải pháp chuyển đổi số toàn diện với chi phí đầu tư hợp lý, nâng cao năng lực cạnh tranh trước các chuỗi rạp lớn.
- Nhà nghiên cứu học thuật: Có thêm bộ tài liệu thực nghiệm có giá trị so sánh giữa các biến thể Collaborative Filtering và Matrix Factorization trên nền tảng ứng dụng web thực tế.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?
Hệ thống yêu cầu máy chủ Linux (khuyến nghị Ubuntu 20.04+), tối thiểu 2 vCPU, 4GB RAM, ổ cứng SSD 40GB, cài đặt Python 3.10+, Node.js 18+, PostgreSQL 15 và web server Nginx.
2. Hệ thống giải quyết bài toán người dùng mới (Cold-Start) như thế nào?
Đối với người dùng mới chưa có lịch sử đánh giá, hệ thống sẽ sử dụng phương pháp lọc dựa trên nội dung (Content-Based) qua thể loại phim yêu thích khi đăng ký hoặc gợi ý các bộ phim có điểm trung bình cao nhất (Top Popular) trước khi chuyển sang lọc cộng tác.
3. Hệ thống có thể tích hợp với cổng thanh toán thực tế nào tại Việt Nam?
Kiến trúc backend của Django hỗ trợ tích hợp linh hoạt thông qua webhook và REST API của các cổng thanh toán phổ biến như VNPay, MoMo, ZaloPay và VietQR.
4. Chi phí vận hành và bảo trì hệ thống ước tính bao nhiêu?
Với kiến trúc tối ưu trên điện toán đám mây (Cloud VPS), chi phí vận hành hạ tầng cho một cụm rạp vừa và nhỏ ước tính từ 500.000đ – 1.500.000đ/tháng, thời gian hoàn vốn đầu tư (ROI) dự kiến từ 6 đến 8 tháng.
5. Khả năng mở rộng (Scalability) của hệ thống khi lượng người dùng tăng đột biến?
Hệ thống được thiết kế theo cấu trúc Decoupled, cho phép mở rộng ngang (Scale-Out) backend Django qua Docker Container, tách cụm cơ sở dữ liệu PostgreSQL sang chế độ Master-Slave Read Replica và lưu trữ bộ nhớ đệm ma trận tương đồng trên Redis.
Kết luận
Khóa luận tốt nghiệp "Phát triển ứng dụng Web có tính năng gợi ý cho rạp chiếu phim" của tác giả Nguyễn Hồng Vĩ đã giải quyết thành công bài toán chuyển đổi số và cá nhân hóa trải nghiệm khách hàng tại rạp chiếu phim. Bằng việc kết hợp hài hòa giữa công nghệ web hiện đại (ReactJS, Django, PostgreSQL) và các thuật toán khoa học dữ liệu (Collaborative Filtering, Matrix Factorization), hệ thống đạt độ chính xác dự đoán cao ($RMSE = 0.892$) cùng thời gian phản hồi nhanh chóng.
Đồ án không chỉ mang giá trị học thuật vững chắc trong việc tối ưu hóa giải thuật khuyến nghị mà còn mở ra tiềm năng thương mại hóa thực tiễn cho các cụm rạp chiếu phim trong nước, đặt nền tảng vững chắc cho việc tích hợp hệ sinh thái rạp chiếu phim thông minh (IoT Smart Cinema) trong tương lai gần.