Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, internet đã làm thay đổi phương thức học tập, làm việc và giải trí. Chơi cờ là môn thể thao trí tuệ truyền thống, khi chuyển dịch lên môi trường trực tuyến mang lại sự tiện lợi, kết nối kỳ thủ toàn cầu và cung cấp công cụ luyện tập nâng cao trình độ. Câu lạc bộ Cờ Sinh viên trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (CLB Cờ SPKT) là một tổ chức sinh viên hoạt động tích cực, có số lượng thành viên ngày càng tăng. Tuy nhiên, công tác quản lý thủ công và việc thiếu hụt một hệ thống chuyên biệt đã hạn chế khả năng kết nối, tổ chức giải đấu và đào tạo thành viên.

Để giải quyết vấn đề thực tiễn trên, đề tài thực hiện 06 nhiệm vụ nghiên cứu và phát triển cụ thể:

  1. Xây dựng hoàn thiện website chơi cờ đa chức năng phục vụ riêng cho CLB Cờ SPKT.
  2. Xây dựng hoàn chỉnh kịch bản sử dụng hệ thống bao gồm: kịch bản người dùng (personas), lược đồ ca sử dụng (Use-case diagram), lược đồ lớp (Class diagram), lược đồ hoạt động (Activity diagram), lược đồ tuần tự (Sequence diagram) và tài liệu đặc tả yêu cầu phần mềm (SRS).
  3. Thiết kế kiến trúc hệ thống tối ưu về chi phí và hiệu suất vận hành theo mô hình điện toán đám mây Amazon Web Services (AWS), lựa chọn ngăn xếp công nghệ phù hợp.
  4. Tích hợp dịch vụ mô hình ngôn ngữ lớn (LLM) như ChatGPT nhằm hỗ trợ trả lời tự động, tạo nội dung và tối ưu hóa thao tác người dùng.
  5. Tích hợp cổng thanh toán trực tuyến MoMo phục vụ việc đăng ký và nâng cấp tài khoản thành viên VIP.
  6. Tích hợp phương thức xác thực và đăng nhập nhanh bằng tài khoản Google (Google Sign-In).
  • Đối tượng nghiên cứu: Quy trình nghiệp vụ quản lý câu lạc bộ cờ, các mô hình chơi cờ trực tuyến hiện hành và giải pháp kỹ thuật xây dựng ứng dụng web thời gian thực.
  • Phạm vi nghiên cứu:
    • Không gian: Áp dụng cho các hoạt động của CLB Cờ SPKT với ba nhóm đối tượng người dùng: Quản trị viên (Admin), Người chơi (Player) và Khách (Guest).
    • Thời gian thực hiện: Từ ngày 18/03/2024 đến ngày 05/07/2024 (15 tuần làm việc theo mô hình Agile).

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình phát triển

Khóa luận áp dụng phương pháp phát triển phần mềm linh hoạt (Agile) theo khung làm việc Scrum. Quy trình được chia thành 7 sprint với chu kỳ lặp ngắn nhằm liên tục hoàn thiện và kiểm thử các tính năng.

Sprint Nội dung công việc chính Thời gian dự kiến
Sprint 1 Tìm hiểu nghiệp vụ, khảo sát hệ thống tương quan, xây dựng kịch bản personas, SRS, Use-case, ERD, Class, Activity, Sequence diagrams Tuần 1 – 2
Sprint 2 Lựa chọn công nghệ, thiết kế kiến trúc hệ thống, thiết kế luồng giao diện (UI flow), thiết kế cơ sở dữ liệu Tuần 3
Sprint 3 Cài đặt môi trường, thiết lập CI/CD, lập trình giao diện và logic các phân hệ chức năng Tuần 3 – 11
Sprint 4 Lập kế hoạch kiểm thử, thực hiện kiểm thử tự động và kiểm thử thủ công Tuần 12 – 13
Sprint 5 Chuẩn bị môi trường, đóng gói container, triển khai hệ thống lên hạ tầng production Tuần 14
Sprint 6 Vận hành, giám sát hiệu năng, bảo trì và khắc phục lỗi phát sinh Tuần 15
Sprint 7 Tổng hợp kết quả, đánh giá ưu nhược điểm và đề xuất hướng phát triển Tuần 15

Phương pháp nghiên cứu và công cụ hỗ trợ

  • Nghiên cứu đối chuẩn (Benchmarking): Khảo sát hai nền tảng cờ trực tuyến phổ biến là Chess.com (hệ thống thương mại với các chế độ cờ nhanh, chớp, siêu chớp, bài tập cờ thế, phân tích ván đấu, VIP) và Lichess.org (nền tảng mã nguồn mở phi lợi nhuận, phân tích tự động, không quảng cáo). Từ đó, tác giả chọn lọc các tính năng cốt lõi để đưa vào website của CLB.
  • Công cụ quản lý và lập trình: Sử dụng Jira để quản lý tiến độ và backlog; Visual Studio Code làm môi trường phát triển tích hợp (IDE); Git và GitHub để quản lý phiên bản mã nguồn.

Thiết kế và triển khai hệ thống

Kiến trúc công nghệ

Hệ thống được xây dựng theo kiến trúc phân tầng (Client-Server / RESTful API) với các công nghệ thành phần:

  • Giao diện người dùng (Front-end): Xây dựng bằng ReactJS kết hợp thư viện thành phần giao diện Chakra UI, HTML, CSS và JavaScript (ES6+), tối ưu hóa tương tác DOM.
  • Xử lý phía máy chủ (Back-end): Sử dụng ngôn ngữ Python với framework Flask để xây dựng hệ thống RESTful API xử lý logic nghiệp vụ và trao đổi dữ liệu định dạng JSON.
  • Cơ sở dữ liệu: Kết hợp MongoDB (NoSQL document-based) để lưu trữ cấu trúc dữ liệu linh hoạt của người dùng, giải đấu, bài viết và Redis làm bộ nhớ đệm (in-memory cache) xử lý phiên làm việc và giảm tải truy vấn.
  • Triển khai và Giám sát: Đóng gói ứng dụng bằng Docker container, định tuyến dịch vụ bằng Nginx web server, triển khai trên nền tảng đám mây AWS, tích hợp New Relic để giám sát hiệu năng và kiểm tra sức tải hệ thống.
  • Dịch vụ tích hợp bên ngoài: Google OAuth (Google Sign-In), Cổng thanh toán MoMo API, Dịch vụ AI ChatGPT API.

Thiết kế dữ liệu

Cơ sở dữ liệu được chuẩn hóa thành 14 bảng/collection phục vụ toàn bộ các luồng nghiệp vụ:

STT Tên bảng (Collection) Mục đích lưu trữ
1 User Thông tin tài khoản, vai trò, thông tin cá nhân, trạng thái VIP
2 Blog Bài viết tin tức, thông báo chuyên môn của câu lạc bộ
3 Notification Thông báo hệ thống gửi đến người dùng
4 Offline Calendar Lịch sinh hoạt trực tiếp và sự kiện của CLB
5 Book Tài liệu, giáo trình, sách cờ điện tử
6 Video Video bài giảng và phân tích chuyên môn
7 Friend Request Yêu cầu kết bạn giữa các thành viên
8 Friend Danh sách quan hệ bạn bè đã kết nối
9 Puzzle Dữ liệu thế cờ luyện tập, câu đố chiến thuật
10 Lobby Phòng chờ ghép trận trực tuyến
11 Online Game Dữ liệu biên bản, thời gian, kết quả ván cờ trực tuyến
12 Offline Game Dữ liệu ván cờ chơi ngoại tuyến / lưu trữ
13 Tournament Thông tin giải đấu do câu lạc bộ tổ chức
14 Tournament Game Dữ liệu các cặp đấu và kết quả trong giải đấu

Nội dung chính theo từng chương

Chương 1: Mở đầu

Chương này phân tích tính cấp thiết của việc số hóa hoạt động CLB Cờ SPKT trong kỷ nguyên số. Tác giả chỉ rõ 4 mục tiêu lớn: quảng bá hình ảnh CLB, cung cấp nền tảng chơi cờ trực tuyến, tối ưu hóa công tác quản trị và hỗ trợ thành viên luyện tập. Chương 1 cũng phân tích chi tiết tính năng của hai công trình liên quan là Chess.com và Lichess.org, xác định các yêu cầu đối với 3 nhóm người dùng (Quản trị viên, Người chơi, Khách), đồng thời lập kế hoạch thực hiện chi tiết qua bảng phân bổ 43 đầu việc và biểu đồ Gantt cho 7 Sprint.

Chương 2: Cơ sở lý thuyết

Trình bày tổng quan vòng đời phát triển phần mềm (SDLC) theo mô hình Agile/Scrum. Tác giả hệ thống hóa các khái niệm, quy trình và kỹ thuật phân tích nghiệp vụ (thu thập yêu cầu, xây dựng personas, user story, use case, UI/UX). Đồng thời, chương này giới thiệu cơ sở lý thuyết của các công nghệ: ReactJS, Chakra UI, Python, Flask, MongoDB, Redis, Docker, Nginx, các phương thức kiểm thử (chức năng, hiệu năng) và quy trình triển khai phần mềm liên tục (CI/CD) trên nền tảng AWS.

Chương 3: Phân tích nghiệp vụ cho website cho CLB cờ

Chương 3 xây dựng chi tiết chân dung người dùng (Personas) cho 3 nhóm vai trò:

  • Khách (Guest): Người dùng vãng lai chưa tạo tài khoản, chỉ được xem các thông tin công khai và thực hiện đăng ký thành viên.
  • Người chơi (Player): Thành viên đã đăng nhập, có quyền chơi cờ (trực tuyến, AI, bạn bè), giải thế cờ, xem cờ (TV), luyện tập chế độ VIP, tham gia giải đấu, quản lý hồ sơ cá nhân và kết nối bạn bè.
  • Quản trị viên (Admin): Có toàn quyền quản lý hệ thống, duyệt bài viết, đăng tải sách/video, quản lý người dùng, thiết lập lịch sinh hoạt, tổ chức giải đấu và theo dõi báo cáo phân tích hiệu năng.

Tác giả mô hình hóa hệ thống thông qua hệ thống lược đồ UML hoàn chỉnh:

  • Lược đồ Use-case: Đặc tả 11 use-case chính (Vai trò người dùng, Tổng quan chức năng, Chơi cờ, Luyện tập, Xem cờ, Xếp hạng, Công cụ chơi cờ, Thay đổi giao diện, Xem thông tin người dùng, Quản lý CLB, Xác thực người dùng).
  • Lược đồ hoạt động (Activity Diagram) & Lược đồ tuần tự (Sequence Diagram): Chi tiết hóa các luồng: Đăng ký/Xác thực qua email, Đăng nhập, Quên mật khẩu, Kết bạn, Tìm kiếm bạn bè, Xem thông tin/lịch sử, Chơi cờ trực tuyến, Luyện tập, Quản lý CLB, Thay đổi giao diện.

Chương 4: Phân tích và thiết kế hệ thống

Tập trung vào việc chuyển đổi các yêu cầu nghiệp vụ thành thiết kế kỹ thuật cụ thể. Tác giả trình bày kiến trúc phân tầng hệ thống, thiết kế luồng xử lý giao diện từ trang chủ, sảnh chờ (Lobby), phòng chơi cờ, trang giải đấu đến bảng điều khiển của quản trị viên. Toàn bộ lược đồ cơ sở dữ liệu được chi tiết hóa cho 14 bảng thực thể nhằm đảm bảo tính toàn vẹn và hiệu năng truy vấn.

Chương 5: Xây dựng website CLB cờ SPKT

Trình bày chi tiết quá trình chuẩn bị môi trường phát triển và lập trình giao diện, xử lý logic. Các phân hệ giao diện chính được hiện thực hóa bao gồm:

  • Hệ thống trang công khai: Trang chủ, Đăng ký, Đăng nhập, Quên mật khẩu, Danh sách/Chi tiết bài viết, Trang thành tích, Giới thiệu, Ủng hộ câu lạc bộ.
  • Phân hệ chơi cờ và luyện tập: Sảnh chờ, Chơi với cài đặt thời gian, Danh sách giải đấu, Trò chơi Chessle, Kho sách, Danh sách video, 5 chế độ luyện tập VIP (Đếm ngược, Về đích, Vô cực, Siêu tốc, Ba).
  • Phân hệ tiện ích và cá nhân: Hồ sơ cá nhân, Danh sách bạn bè, Cài đặt giao diện (ngôn ngữ, hình nền), Công cụ đánh dấu bàn cờ trực tiếp.
  • Phân hệ quản trị: Bảng điều khiển admin, Admin menu, Quản lý tài liệu, Quản lý ván cờ, Quản lý người dùng và sự kiện.

Chương 6: Kiểm thử website CLB cờ SPKT

Chương này lập kế hoạch và thực hiện kiểm thử tự động kết hợp kiểm thử thủ công. Kết quả kiểm thử chức năng được ghi nhận qua các kịch bản kiểm thử cụ thể:

  1. Đăng ký tài khoản mới và xác thực liên kết kích hoạt qua email.
  2. Đăng nhập nhanh bằng tài khoản Google.
  3. Tương tác và nhận phản hồi từ ChatGPT.
  4. Nhắn tin trực tiếp với bạn bè theo thời gian thực.
  5. Thanh toán nâng cấp tài khoản VIP thông qua cổng MoMo.
  6. Chơi trò chơi đoán nước đi Chessle.
  7. Đăng ký tham gia giải đấu trực tuyến.
  8. Khởi tạo ván cờ online và thực hiện thao tác đầu hàng.
  9. Quản trị viên thay đổi lịch sinh hoạt CLB.
  10. Kiểm thử hiệu năng và sức tải hệ thống thông qua báo cáo New Relic.

Chương 7: Triển khai website cho CLB cờ SPKT

Mô tả quy trình đưa hệ thống vào vận hành thực tế:

  • Chuẩn bị hạ tầng đám mây và thiết lập các biến môi trường bảo mật.
  • Đóng gói toàn bộ mã nguồn front-end và back-end thành các Docker container riêng biệt.
  • Cấu hình Nginx làm Reverse Proxy để điều phối lưu lượng truy cập và tối ưu hóa tải tĩnh.
  • Triển khai lên máy chủ AWS, kiểm tra kết nối cơ sở dữ liệu MongoDB/Redis và xác nhận hoạt động ổn định của các dịch vụ tích hợp bên ngoài.

Chương 8: Kết luận

Tổng hợp các kết quả thực tế đạt được sau 15 tuần nghiên cứu và xây dựng, đánh giá ưu điểm, hạn chế kỹ thuật và đề xuất lộ trình mở rộng tính năng trong tương lai.


Kết quả và đóng góp

Kết quả triển khai chức năng

Hệ thống đã xây dựng thành công nền tảng website hoàn chỉnh với các kết quả cụ thể:

Phân hệ Tính năng đã hoàn thiện
Xác thực & Người dùng Đăng ký tài khoản có gửi link xác thực email, đăng nhập qua Google Sign-In, lấy lại mật khẩu tự động qua email, quản lý thông tin cá nhân và lịch sử đấu
Chơi cờ trực tuyến Ghép trận ngẫu nhiên qua sảnh chờ, tạo ván thách đấu gửi link cho bạn bè, thi đấu với AI, tham gia giải đấu tự động phân cặp
Công cụ bàn cờ Đánh dấu ô tròn và mũi tên hỗ trợ phân tích trực tiếp trên bàn cờ với 3 màu: Xanh lá (Click phải), Đỏ (Shift + Click phải), Xanh dương (Alt + Click phải); xóa ký hiệu bằng Click trái
Luyện tập & Giải trí Giải câu đố thế cờ, chơi mini-game Chessle, đọc sách cờ điện tử, xem video bài giảng, 5 chế độ luyện tập nâng cao cho tài khoản VIP (Đếm ngược, Về đích, Vô cực, Siêu tốc, Ba)
Tương tác & Quản lý Tích hợp trò chuyện với ChatGPT, hệ thống kết bạn và nhắn tin, thanh toán MoMo nâng cấp VIP, bảng điều khiển quản trị viên quản lý nội dung và lịch sinh hoạt

Đóng góp thực tiễn

  • Xây dựng một nền tảng chuyên biệt hóa tối ưu cho mô hình sinh hoạt của CLB Cờ SPKT, kết hợp đồng thời ba nghiệp vụ: tổ chức thi đấu, đào tạo luyện tập và quản trị nội bộ câu lạc bộ.
  • Triển khai thành công kiến trúc kết hợp giữa Python/Flask, ReactJS, MongoDB, Redis và Docker, đảm bảo khả năng mở rộng và tối ưu hóa chi phí vận hành trên hạ tầng AWS.
  • Cung cấp tài liệu phân tích thiết kế phần mềm hoàn chỉnh theo chuẩn UML (SRS, Use-case, Class, Activity, Sequence, ERD diagrams) làm cơ sở cho việc phát triển tiếp theo.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế:
    • Phạm vi thử nghiệm chủ yếu tập trung trong nội bộ CLB Cờ SPKT với quy mô người dùng thử nghiệm vừa phải; chưa kiểm nghiệm trên diện rộng với lưu lượng truy cập đột biến.
    • Hệ thống hỗ trợ định dạng cờ chính theo các luật chơi tiêu chuẩn đã lập trình; chưa mở rộng các biến thể cờ phức tạp khác.
  • Hướng phát triển trong tương lai:
    • Tiếp tục nâng cấp và tối ưu hóa thuật toán AI chơi cờ và phân tích chuyên sâu nước đi sau mỗi trận đấu.
    • Mở rộng thêm các phương thức thanh toán trực tuyến (như VNPay) theo định hướng ban đầu của đề cương.
    • Phát triển ứng dụng di động (Mobile App) trên nền tảng Android/iOS để tăng tính tiện lợi cho thành viên khi luyện tập và nhận thông báo.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo giá trị cho các đối tượng:

  • Sinh viên ngành Công nghệ phần mềm / CNTT: Tham khảo quy trình áp dụng mô hình Agile/Scrum vào đề tài tốt nghiệp, phương pháp xây dựng tài liệu SRS và các lược đồ UML từ pha phân tích nghiệp vụ đến thiết kế hệ thống.
  • Lập trình viên phát triển ứng dụng web: Tham khảo kiến trúc kết hợp ReactJS, Chakra UI với Flask RESTful API, cơ chế cache bằng Redis và kỹ thuật đóng gói Docker, triển khai AWS kết hợp giám sát New Relic.
  • Ban điều hành các câu lạc bộ sinh viên: Tham khảo mô hình chức năng tích hợp giữa mạng xã hội nhỏ, hệ thống quản trị nội dung (CMS) và công cụ chuyên môn (chơi cờ, giải đấu) để số hóa hoạt động câu lạc bộ.

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

1. Hệ thống hỗ trợ người dùng tạo các ký hiệu phân tích trên bàn cờ như thế nào?
Website cho phép người chơi đánh dấu trực tiếp trên bàn cờ bằng chuột và phím tắt:

  • Click chuột phải: Tạo vòng tròn màu xanh lá cây tại ô cờ.
  • Click chuột phải và kéo thả: Tạo mũi tên chỉ hướng màu xanh lá cây.
  • Shift + Click chuột phải (hoặc kéo thả): Tạo vòng tròn hoặc mũi tên màu đỏ.
  • Alt + Click chuột phải (hoặc kéo thả): Tạo vòng tròn hoặc mũi tên màu xanh dương.
  • Click chuột trái vào vị trí bất kỳ: Xóa toàn bộ các ký hiệu đánh dấu hiện có trên bàn cờ.

2. Người chơi có những hình thức nào để tham gia một ván cờ trên website?
Người chơi sau khi đăng nhập có 4 hình thức thi đấu:

  • Chơi trực tuyến: Thiết lập thông số ván cờ và chờ hệ thống ghép cặp ngẫu nhiên tại sảnh chờ.
  • Thách thức bạn bè: Tạo phòng đấu, sao chép đường link liên kết để gửi cho bạn bè cùng tham gia.
  • Chơi với AI: Đấu tập trực tiếp với trí tuệ nhân tạo của hệ thống.
  • Tham gia giải đấu: Đăng ký vào danh sách giải đấu do quản trị viên tổ chức; hệ thống sẽ tự động ghép cặp thi đấu khi giải đấu bắt đầu.

3. Tài khoản VIP cung cấp các chế độ luyện tập đặc thù nào và được thanh toán ra sao?
Tài khoản nâng cấp VIP cho phép người chơi trải nghiệm 5 chế độ luyện tập chuyên sâu: Đếm ngược, Về đích, Vô cực, Siêu tốc và Ba. Người dùng thực hiện nâng cấp tài khoản VIP thông qua cổng thanh toán trực tuyến MoMo được tích hợp trực tiếp trên trang web.

4. Khóa luận sử dụng các công nghệ cơ sở dữ liệu nào và phân chia nhiệm vụ ra sao?
Hệ thống sử dụng đồng thời hai công nghệ cơ sở dữ liệu:

  • MongoDB: Hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) lưu trữ dữ liệu dưới dạng JSON-like documents, quản lý toàn bộ 14 bảng thực thể của hệ thống (User, Game, Blog, Puzzle, Tournament...).
  • Redis: Cơ sở dữ liệu in-memory lưu trữ trong bộ nhớ tạm, được sử dụng làm bộ đệm (cache) và quản lý phiên làm việc (session) để tăng tốc độ phản hồi cho các tác vụ thời gian thực.

Kết luận

Khóa luận "Xây dựng website chơi cờ đa chức năng với CLB Cờ SPKT" của sinh viên Lê Quang Tùng và Nguyễn Đức Hiển đã hoàn thành toàn diện mục tiêu xây dựng một nền tảng web phục vụ quản lý, thi đấu và luyện tập cho câu lạc bộ cờ. Đề tài ứng dụng ngăn xếp công nghệ hiện đại gồm ReactJS, Python/Flask, MongoDB, Redis, Docker cùng các dịch vụ tích hợp ChatGPT, Google Sign-In và MoMo. Toàn bộ quy trình phát triển được thực hiện bài bản theo chuẩn Agile/Scrum với hệ thống tài liệu thiết kế UML và kiểm thử chức năng rõ ràng, mang lại giá trị ứng dụng thực tiễn cao cho đơn vị thụ hưởng.