Giới thiệu dự án

Trong bối cảnh giáo dục Việt Nam đang đối mặt với thực trạng đáng báo động — 52,03% thí sinh đạt điểm dưới trung bình môn Lịch Sử trong kỳ thi tốt nghiệp THPT 2021 (theo thống kê của Bộ Giáo dục và Đào tạo) — nhóm sinh viên Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh đã phát triển đề tài "Xây dựng Website Lịch sử Việt Nam" như một giải pháp công nghệ thiết thực.

Problem Statement cụ thể:

  • Học sinh bị nhiễu loạn thông tin từ phim ảnh và mạng xã hội thiếu kiểm chứng
  • Hiện tượng học vẹt, không hệ thống hóa được kiến thức lịch sử
  • Các nền tảng hiện có (Người Kể Sử, Nghiên Cứu Lịch Sử, Wikipedia) thiếu tính năng đăng nhập, kiểm tra kiến thức và nội dung chuyên sâu về nhân vật, di tích

Mục tiêu dự án (đánh số):

  1. Xây dựng hệ thống tra cứu thông tin lịch sử đa chiều: nhân vật, di tích, sách, phim, dòng lịch sử
  2. Tích hợp mô-đun kiểm tra kiến thức tương tác theo chuẩn trắc nghiệm
  3. Hỗ trợ thanh toán đặt mua sách và xem phim trực tuyến
  4. Xây dựng hệ thống phân quyền 4 cấp: User chưa đăng nhập → User đã đăng nhập → Admin (nhân viên soạn sử) → Super Admin
  5. Tích hợp tính năng chat real-time giữa người dùng và nhân viên

Phạm vi & giới hạn: Dự án tập trung vào lịch sử Việt Nam và lịch sử thế giới ở cấp phổ thông, không thay thế tài liệu học thuật chuyên ngành. Triển khai trên môi trường CPanel với Python 3 và Django framework.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nhóm đã khảo sát 3 nền tảng lịch sử hiện có và rút ra bảng đánh giá:

Tiêu chí Người Kể Sử Nghiên Cứu Lịch Sử Wikipedia Website đề xuất
Đăng nhập / tài khoản ✅ (hạn chế) ✅ Đầy đủ
Kiểm tra kiến thức ✅ (ít đề) ✅ Có bộ đề thi
Nhân vật lịch sử chuyên sâu
Di tích khảo cổ
Giới thiệu sách / phim
Thanh toán trực tuyến
Chat với chuyên gia
Responsive mobile

Gap analysis: Không có nền tảng nào kết hợp đầy đủ tra cứu + kiểm tra + thương mại điện tử + cộng đồng trong một hệ thống duy nhất.

Yêu cầu theo mô hình MoSCoW:

  • Must have: Đăng ký/đăng nhập, tra cứu nhân vật, di tích, dòng lịch sử, kiểm tra kiến thức
  • Should have: Bản đồ lịch sử tương tác, chat với nhân viên, bình luận bài viết
  • Could have: Thanh toán xem phim/mua sách, tường cá nhân của nhân viên soạn sử
  • Won't have (v1): Ứng dụng mobile native, hỗ trợ đa ngôn ngữ hoàn toàn

Thiết kế hệ thống

Technology Stack:

Layer Technology Phiên bản
Backend Python 3.x
Web Framework Django latest stable
Rich Text Editor CKEditor 5 5.x
Database MySQL (RDBMS) Oracle-owned
Frontend HTML5, CSS3, JavaScript ES6+
IDE Visual Studio Code 1.x
Deployment CPanel Standard

Kiến trúc MVT (Model-View-Template):

Django triển khai mô hình MVT — biến thể của MVC truyền thống:

  • Model (M): Python object ánh xạ trực tiếp với bảng MySQL, cung cấp ORM (Object-Relational Mapping) để thao tác CRUD mà không cần viết SQL thủ công
  • View (V): Hàm xử lý HTTP request, tương đương Controller trong MVC; nhận request → truy vấn Model → trả về Template
  • Template (T): File HTML kết hợp DTL (Django Template Language) để render dữ liệu động
# Ví dụ View xử lý danh sách nhân vật lịch sử
def view_list_person(request):
    persons = Person.objects.filter(is_published=True).order_by('-created_at')
    context = {'persons': persons}
    return render(request, 'history/person_list.html', context)

Phân quyền 4 cấp (Role-based Access Control):

User-no-login  →  Xem công khai
User-login     →  Xem + kiểm tra + mua hàng + bình luận
Admin          →  CRUD bài viết + chat + trả lời bình luận
Super Admin    →  Quản trị toàn hệ thống + cấp quyền

Cơ sở dữ liệu MySQL — các entity chính:

  • Person (Nhân vật lịch sử): id, name, birth_date, death_date, biography, image, contributors
  • Relic (Di tích khảo cổ): id, name, location, period, description, images
  • Book (Sách): id, title, author, price, stock, cover_image, description
  • Film (Phim): id, title, director, price, stream_url, thumbnail
  • TimeLine (Dòng lịch sử): id, country, year, event, description
  • Quiz (Kiểm tra): id, question, options, correct_answer, difficulty_level
  • Order (Đơn hàng): id, user_id, book_id, payment_status, shipping_status

Bảo mật hệ thống:

  • Xác thực người dùng tích hợp sẵn của Django (django.contrib.auth)
  • Đặt lại mật khẩu qua Gmail OTP (SendGmail - UC_03)
  • Kiểm duyệt bình luận bằng AI để lọc nội dung tiêu cực trước khi hiển thị

Methodology

Nhóm áp dụng phương pháp phát triển lặp (Iterative Development) kết hợp:

  • Phương pháp tổng hợp lý thuyết: Nghiên cứu tài liệu Django, MySQL, CKEditor
  • Phương pháp chuyên gia: Tham vấn ThS. Hoàng Công Trình định kỳ
  • Phương pháp mô hình hóa: Thiết kế Usecase → ERD → Giao diện → Hiện thực

Timeline: Nhận đề tài 20/02/2023 → Nộp 29/05/2023 (≈ 14 tuần)


Implementation và kết quả

Development process

Các module chính được phát triển:

  1. Module Quản lý Nhân vật (UC_05, UC_13): CRUD đầy đủ với CKEditor 5 cho phép nhập nội dung rich text, embed hình ảnh/video. Hệ thống lưu danh sách contributor cho mỗi bài viết.

  2. Module Bản đồ Lịch sử: Tích hợp bản đồ tương tác hiển thị lịch sử Việt Nam và thế giới theo vùng địa lý.

  3. Module Kiểm tra Kiến thức: Hệ thống trắc nghiệm chỉ dành cho user đã đăng nhập, lưu điểm theo lịch sử, hỗ trợ nhiều mức độ khó.

  4. Module Thương mại điện tử: Đặt mua sách + theo dõi vận chuyển; thanh toán để xem phim trực tuyến có thu phí.

  5. Module Chat Real-time: Giao tiếp giữa user-login, admin và superadmin.

Tích hợp CKEditor 5 cho Admin panel:

# settings.py - Cấu hình CKEditor
INSTALLED_APPS = [
    ...
    'django_ckeditor_5',
]

CKEDITOR_5_CONFIGS = {
    'default': {
        'toolbar': ['heading', '|', 'bold', 'italic', 'link',
                    'bulletedList', 'numberedList', 'blockQuote',
                    'imageUpload', 'mediaEmbed'],
    }
}

Testing và validation

Các kịch bản kiểm thử (dựa trên Usecase):

Usecase Kịch bản Kết quả mong đợi
UC_01 Register Nhập email trùng lặp Thông báo lỗi, quay lại form
UC_02 Login Sai mật khẩu 3 lần Hiển thị cảnh báo
UC_05 CreatePerson Admin tạo nhân vật mới Lưu DB + hiển thị trang danh sách
UC_13 ViewListPerson User xem danh sách Render đúng pagination
Thanh toán Giao dịch thành công Cập nhật trạng thái đơn hàng

Môi trường chạy hệ thống:

# Cài đặt dependencies
pip install django django-ckeditor-5 mysqlclient

# Migrate database
python manage.py makemigrations
python manage.py migrate

# Chạy server development
python manage.py runserver

# Deploy trên CPanel: Cài Python 3, django, ckeditor-5, MySQL

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

  • 25+ Usecase được hiện thực hóa đầy đủ (UC_01 đến UC_20.1)
  • 15+ giao diện được thiết kế và lập trình: trang chủ, bản đồ, nhân vật, di tích, phim, sách, dòng lịch sử, lịch sử Trái Đất, khoa học công nghệ, kiểm tra kiến thức, admin panel, chat
  • 4 cấp phân quyền hoạt động đúng theo đặc tả
  • Tích hợp thanh toán đặt sách và xem phim trực tuyến

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

So sánh với 2 giải pháp hiện có:

Tính năng Người Kể Sử Nghiên Cứu Lịch Sử Website đề tài
Kiến trúc Static CMS Blog platform Django MVT có phân quyền
Kiểm tra KT Trắc nghiệm đơn giản Không có Hệ thống quiz + lưu điểm + lịch sử
Thương mại Không Không Đặt sách + xem phim có phí
Chat Không Không Real-time với nhân viên soạn sử
AI moderation Không Không Kiểm duyệt bình luận bằng AI
Contributor tracking Không Không Ghi nhận đóng góp từng nhân viên

Đổi mới kỹ thuật nổi bật:

  1. Hệ thống cộng tác soạn sử (Collaborative Authoring): Nhiều nhân viên có thể cùng đóng góp, chỉnh sửa một bài viết; hệ thống lưu vết tất cả contributor và hiển thị trên trang bài viết — tương tự mô hình Wikipedia nhưng có kiểm soát quyền chặt chẽ hơn.
  2. Tích hợp AI kiểm duyệt bình luận: Nội dung bình luận được xử lý bởi AI trước khi hiển thị, giảm nguy cơ thông tin tiêu cực hoặc vi phạm đạo đức.
  3. Bản đồ lịch sử tương tác: Kết hợp địa lý và dòng thời gian, người dùng có thể khám phá lịch sử theo không gian địa lý — tính năng chưa có ở các nền tảng lịch sử Việt Nam hiện tại.

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

Các kịch bản sử dụng thực tế:

  • Học sinh THPT: Tra cứu nhân vật, sự kiện trước kỳ thi; làm bài kiểm tra trực tuyến để tự đánh giá
  • Giáo viên/Giảng viên: Tạo bộ đề trắc nghiệm cho lớp học; đóng góp bài viết chuyên sâu về di tích địa phương
  • Hướng dẫn viên du lịch: Tra cứu nhanh di tích khảo cổ, lịch sử hình thành vùng đất
  • Nhà làm phim/xuất bản: Nghiên cứu nhân vật lịch sử để phát triển kịch bản; mua/giới thiệu sách lịch sử

Yêu cầu triển khai:

Server: CPanel Hosting
Runtime: Python 3.x
Database: MySQL
Dependencies: Django, django-ckeditor-5, mysqlclient

Tiềm năng mở rộng:

  • Thêm module lịch sử các nước ASEAN
  • Tích hợp API bản đồ (Google Maps / Leaflet.js) nâng cao
  • Phát triển ứng dụng mobile (React Native hoặc Flutter)
  • Mở rộng hệ thống quiz sang gamification (huy hiệu, bảng xếp hạng)

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

Hạn chế kỹ thuật được thừa nhận:

  • Python/Django có cơ chế GIL (Global Interpreter Lock) giới hạn hiệu năng đa luồng; với lượng người dùng lớn cần chuyển sang đa tiến trình hoặc async (Django Channels)
  • Dữ liệu ban đầu thu thập thủ công từ nhiều nguồn, chưa có cơ chế tự động kiểm chứng nguồn gốc
  • Giao diện mobile còn một số hạn chế về hiển thị (kế thừa nhược điểm từ các trang khảo sát)
  • Chưa hỗ trợ song ngữ (Việt – Anh)

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

  1. Nâng cấp AI moderation sang mô hình NLP tiếng Việt chuyên biệt (PhoBERT)
  2. Tích hợp WebSocket (Django Channels) cho chat real-time hiệu năng cao hơn
  3. Xây dựng REST API để hỗ trợ ứng dụng mobile
  4. Áp dụng Elasticsearch cho tìm kiếm toàn văn (full-text search) nhanh hơn MySQL LIKE
  5. Thêm tính năng tường cộng đồng — người dùng chia sẻ ghi chú học tập

Bài học kinh nghiệm: Việc tích hợp CKEditor 5 với Django đòi hỏi cấu hình CSRF và media file handling kỹ lưỡng; quản lý phân quyền nhiều cấp cần thiết kế middleware rõ ràng ngay từ đầu để tránh refactor về sau.


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

Nhóm đối tượng Lợi ích cụ thể Tính năng sử dụng chính
Học sinh THPT Tiếp cận lịch sử trực quan qua hình ảnh/video, tự kiểm tra kiến thức Tra cứu, Quiz, Dòng lịch sử
Giáo viên/Giảng viên Có nền tảng đăng tải bài nghiên cứu, tạo đề kiểm tra Tạo bài viết, Quản lý Quiz
Nhà nghiên cứu/Báo chí Dữ liệu lịch sử có nguồn gốc rõ ràng, được kiểm duyệt bởi chuyên gia Tra cứu chuyên sâu, Chat với soạn giả
Ngành du lịch/Văn hóa Thông tin di tích, bản đồ lịch sử phục vụ hướng dẫn Bản đồ, Di tích khảo cổ
Nhà xuất bản/Điện ảnh Kênh phân phối sách/phim lịch sử trực tuyến Thanh toán, Xem phim, Mua sách

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

1. Yêu cầu kỹ thuật để deploy hệ thống? Hosting CPanel hỗ trợ Python 3, MySQL database, cài đặt pip install django django-ckeditor-5 mysqlclient, cấu hình DATABASES trong settings.py và chạy python manage.py migrate.

2. Giới hạn khả năng mở rộng (Scalability)? Với kiến trúc Django đơn server, hệ thống phù hợp cho vài nghìn người dùng đồng thời. Để mở rộng lớn hơn cần triển khai load balancer, Django Channels cho WebSocket và cache layer (Redis).

3. Tích hợp với hệ thống bên ngoài? Hiện tại hệ thống tích hợp Gmail API (gửi OTP đặt lại mật khẩu) và cổng thanh toán trực tuyến. Có thể mở rộng REST API để kết nối LMS (Learning Management System) của các trường học.

4. Bảo trì và cập nhật nội dung? Nhân viên soạn sử được Super Admin cấp quyền có thể cập nhật bài viết bất kỳ lúc nào thông qua giao diện Admin panel tích hợp CKEditor 5 — không cần kiến thức lập trình.

5. Phân tích chi phí? Chi phí chủ yếu là hosting CPanel (thấp, dùng chung) và tên miền. Django và MySQL là mã nguồn mở, CKEditor 5 có bản miễn phí. Chi phí vận hành phụ thuộc vào lưu lượng người dùng và dung lượng media.


Kết luận

Khóa luận tốt nghiệp "Xây dựng Website Lịch sử Việt Nam" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP. HCM đã hiện thực hóa thành công một nền tảng giáo dục lịch sử toàn diện trên nền tảng Python 3 + Django MVT + MySQL + CKEditor 5, triển khai được trên môi trường CPanel thực tế.

Thành tựu kỹ thuật nổi bật: hệ thống phân quyền 4 cấp linh hoạt, mô-đun kiểm tra kiến thức tích hợp lưu điểm, tính năng cộng tác soạn sử có ghi nhận contributor, AI kiểm duyệt bình luận và tích hợp thương mại điện tử — tất cả trong một monolithic Django application được thiết kế có hệ thống từ Usecase đến ERD.

Giá trị thực tiễn: Dự án trực tiếp giải quyết bài toán 52% học sinh Việt Nam thất bại môn Lịch sử bằng cách biến kiến thức lịch sử khô khan thành trải nghiệm học tập đa phương tiện, có tính tương tác và kiểm chứng được. Đây là minh chứng rõ ràng cho khả năng ứng dụng công nghệ thông tin vào giải quyết thách thức giáo dục quốc gia.

Những nhà giáo dục, nhà phát triển muốn tiếp nối dự án có thể tham khảo kiến trúc MVT và hệ thống phân quyền đã được mô hình hóa chi tiết — nền tảng vững chắc để mở rộng sang ứng dụng mobile hoặc tích hợp AI học tập thích ứng trong tương lai.