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

Trong giai đoạn năm 2021, diễn biến phức tạp của đại dịch COVID-19 đã tác động trực tiếp đến hoạt động đào tạo và nghiên cứu, dẫn đến sự chuyển dịch sang hình thức học tập và làm việc trực tuyến. Việc các doanh nghiệp hạn chế tiếp nhận thực tập trực tiếp đòi hỏi sinh viên phải thích ứng thông qua các chương trình đào tạo chuyên đề kết hợp nghiên cứu thực tiễn. Báo cáo chuyên đề tốt nghiệp này được thực hiện bởi sinh viên Trần Minh Hiếu (ngành Kỹ thuật phần mềm, Trường Đại học Thủ Dầu Một) dưới sự hướng dẫn của ThS. Nguyễn Hữu Vĩnh và cán bộ hướng dẫn Nguyễn Nhất Nguyên tại Công ty Cổ phần CrossTech.

Về mặt thực tiễn ứng dụng, nhu cầu tìm kiếm địa điểm ăn uống và giải đáp câu hỏi thường nhật "Hôm nay ăn gì?" ngày càng trở nên phổ biến. Mặc dù xu hướng đánh giá ẩm thực (Food Reviewer) cùng các hội nhóm trực tuyến phát triển mạnh, người dùng vẫn gặp khó khăn trong việc tiếp cận các nguồn thông tin tổng hợp đáng tin cậy và được cá nhân hóa theo vị trí địa lý. Trước thực tế đó, tác giả đặt ra nhiệm vụ nghiên cứu và phát triển ứng dụng di động mang tên What Eat – một nền tảng mạng xã hội chuyên biệt về địa điểm ẩm thực tích hợp công nghệ định vị và hệ thống gợi ý tự động.

Nhiệm vụ nghiên cứu được phân định thành hai phần chính:

  1. Hoàn thành chương trình thực tập doanh nghiệp: Tham gia khóa đào tạo chuyên đề "Linux Essential" do Công ty Cổ phần CrossTech phối hợp cùng Công ty TEL4VN tổ chức nhằm củng cố kiến thức quản trị hệ thống, dòng lệnh và công nghệ mã nguồn mở phục vụ triển khai phần mềm.
  2. Nghiên cứu và xây dựng phần mềm What Eat: Khảo sát các nền tảng ẩm thực hiện có; phân tích yêu cầu, thiết kế kiến trúc hệ thống, cơ sở dữ liệu và hiện thực hóa ứng dụng mạng xã hội ẩm thực trên nền tảng React Native có tích hợp bản đồ và hệ thống gợi ý (Recommendation System).

Phạm vi và đối tượng nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình phát triển ứng dụng di động mạng xã hội chia sẻ địa điểm ăn uống, kỹ thuật xây dựng hệ thống gợi ý và tích hợp giao diện lập trình ứng dụng (API).
  • Phạm vi không gian: Thực tập tại Công ty Cổ phần CrossTech (Phòng 112A, Trung tâm Khởi nghiệp Công nghệ Thông tin ITP, Đại học Quốc gia TP.HCM, Phường Linh Trung, TP. Thủ Đức, TP.HCM).
  • Phạm vi thời gian: Đợt thực tập diễn ra từ ngày 26/09/2021 đến ngày 31/10/2021; báo cáo hoàn thành vào tháng 12/2021.

Cơ sở lý thuyết và công nghệ

Báo cáo tổng hợp nền tảng lý thuyết từ việc khảo sát các hệ thống hiện hành đến việc lựa chọn ngăn xếp công nghệ (tech stack) phù hợp cho bài toán xây dựng mạng xã hội di động.

+-------------------------------------------------------------+
|               KIẾN TRÚC HỆ THỐNG WHAT EAT                   |
+-------------------------------------------------------------+
| [Client Tier]     React Native + Redux (Cross-Platform UI)  |
| [Services/API]    Google Maps API (Location), Web APIs      |
| [Backend Tier]    Node.js (Server Logic), Firebase Platform |
| [Algorithm Tier]  Recommendation System (Users-Items Matrix)|
+-------------------------------------------------------------+

1. Khảo sát các hệ thống ẩm thực hiện có

Tác giả đã phân tích ưu điểm và hạn chế của một số sản phẩm và website ẩm thực đang hoạt động trên thị trường:

  • Foody: Nền tảng đánh giá và tìm kiếm ẩm thực phổ biến trên cả giao diện Web và ứng dụng di động.
  • Hatto: Ứng dụng hỗ trợ tìm kiếm và trải nghiệm địa điểm ăn uống.
  • Bản đồ ăn: Nền tảng web hỗ trợ hiển thị chi tiết địa điểm và các món ăn theo bản đồ trực quan.

2. Công nghệ phát triển ứng dụng và quản lý trạng thái

  • React Native: Khung làm việc (framework) mã nguồn mở cho phép phát triển ứng dụng di động đa nền tảng (Android và iOS) bằng JavaScript. Tác giả phân tích các đặc tính kỹ thuật, khả năng tái sử dụng mã nguồn và các nhược điểm cần khắc phục trong quá trình tối ưu hiệu năng.
  • Redux: Thư viện quản lý trạng thái tập trung (state management) cho ứng dụng, vận hành theo luồng dữ liệu một chiều (Unidirectional Data Flow) với cấu trúc gồm Store, Actions và Reducers.

3. Nền tảng phía máy chủ và tích hợp dịch vụ

  • Node.js: Môi trường thực thi JavaScript phía máy chủ, xây dựng các dịch vụ Web API xử lý logic nghiệp vụ và trao đổi dữ liệu định dạng JSON.
  • Firebase: Nền tảng đám mây cung cấp các nhóm công cụ:
    • Nhóm Develop & Test Your App: Cơ sở dữ liệu thời gian thực, xác thực người dùng (Authentication), lưu trữ tệp (Storage).
    • Nhóm Grow & Engage Your Audience: Phân tích hành vi người dùng, gửi thông báo đẩy (Push Notifications).
  • Google Maps API: Giao diện lập trình ứng dụng bản đồ phục vụ định vị vị trí hiện tại của người dùng, gắn thẻ tọa độ địa điểm ẩm thực và hiển thị bản đồ trực quan.

4. Cơ sở lý thuyết hệ thống gợi ý (Recommendation System)

Hệ thống gợi ý trong đề tài được tiếp cận dựa trên mô hình lọc cộng tác và phân tích hành vi:

  • Mô hình ma trận người dùng - đối tượng (Users – Items Matrix): Biểu diễn mức độ quan tâm hoặc điểm đánh giá của người dùng đối với từng món ăn, địa điểm.
  • Quy trình xử lý dữ liệu: Thu thập dữ liệu tương tác (lượt thích, bình luận, lưu trữ, tìm kiếm), tiến hành chuẩn hóa ma trận dữ liệu và tính toán độ tương đồng để đưa ra danh sách đề xuất cá nhân hóa trên giao diện chính.

Phân tích và thiết kế hệ thống

Báo cáo phân rã hệ thống thành 24 ca sử dụng (Use Case) cụ thể phục vụ hai nhóm đối tượng chính: Người dùng thông thường (User) và Quản trị viên (Administrator).

1. Danh mục đặc tả ca sử dụng (Use Cases)

Nhóm chức năng Tên Use Case Mục tiêu và mô tả nghiệp vụ
Xác thực & Tài khoản Đăng ký / Đăng nhập Tạo tài khoản mới, xác thực thông tin đăng nhập hệ thống.
Đổi mật khẩu Cho phép người dùng chủ động thay đổi mật khẩu hiện tại.
Quên mật khẩu Khôi phục mật khẩu thông qua xác thực địa chỉ email.
Đăng xuất Kết thúc phiên làm việc an toàn của tài khoản trên thiết bị.
Cập nhật hồ sơ & Avatar Chỉnh sửa thông tin cá nhân, cập nhật ảnh đại diện người dùng.
Tương tác Mạng xã hội Đăng bài viết Tạo bài đăng kèm hình ảnh từ máy ảnh/thư viện và địa điểm.
Chỉnh sửa / Xóa bài viết Cập nhật nội dung hoặc gỡ bỏ bài viết đã đăng tải.
Thích / Bình luận Bày tỏ cảm xúc và gửi ý kiến phản hồi dưới bài viết.
Lưu bài viết Đánh dấu và lưu trữ các bài viết yêu thích vào bộ sưu tập cá nhân.
Theo dõi / Hủy theo dõi Thiết lập hoặc hủy kết nối theo dõi hoạt động của người dùng khác.
Nhắn tin & Thông báo Trao đổi tin nhắn trực tiếp giữa các người dùng; nhận thông báo hệ thống.
Vị trí & Tìm kiếm Xem bản đồ Hiển thị vị trí người dùng và các địa điểm ẩm thực lân cận.
Tìm kiếm và Lọc Tìm bài viết/địa điểm theo từ khóa, lọc theo danh mục, vị trí và mức đánh giá.
Quản trị hệ thống Quản lý người dùng & Phân quyền Kiểm duyệt tài khoản, phân bổ quyền hạn truy cập trong hệ thống.
Quản lý địa điểm & Danh mục Thêm mới, chỉnh sửa và chuẩn hóa danh mục món ăn, danh sách địa điểm.
Thống kê hệ thống Tổng hợp các số liệu hoạt động, tương tác và bài đăng trên nền tảng.

2. Thiết kế cơ sở dữ liệu

Hệ thống lưu trữ dữ liệu được thiết kế gồm 12 bảng thực thể liên kết chặt chẽ nhằm đảm bảo tính toàn vẹn dữ liệu cho các tính năng mạng xã hội và hệ thống gợi ý:

Tên bảng dữ liệu Chức năng lưu trữ chính
Người dùng Lưu thông tin cá nhân, định danh, email, mật khẩu mã hóa, ảnh đại diện.
Tài khoản đang theo dõi Lưu danh sách các tài khoản mà một người dùng đang theo dõi (Following).
Tài khoản theo dõi người dùng Lưu danh sách các người dùng đang theo dõi tài khoản hiện tại (Followers).
Bài viết Lưu trữ nội dung bài đăng, hình ảnh, thời gian tạo, mã người đăng, mã địa điểm.
Thích bài viết Lưu trữ quan hệ tương tác thích (Like) giữa người dùng và bài viết.
Bình luận Lưu trữ các phản hồi, nội dung trao đổi của người dùng trên bài viết.
Lưu trữ bài viết Danh sách bài viết được đánh dấu lưu lại bởi từng người dùng.
Địa điểm Lưu trữ tên quán ăn/nhà hàng, địa chỉ, tọa độ địa lý (kinh độ, vĩ độ).
Danh mục Phân loại các nhóm ẩm thực và dịch vụ.
Quyền hạn Định nghĩa các nhóm quyền và cấp độ truy cập trong hệ thống.
Tin nhắn Lưu trữ nội dung, thời gian và trạng thái tin nhắn giữa các người dùng.
Món ăn Lưu thông tin định danh món ăn, giá cả và liên kết với địa điểm phục vụ.

Thiết kế và triển khai thực tế

Ứng dụng What Eat được xây dựng với cấu trúc màn hình hướng đến trải nghiệm người dùng hiện đại, kết hợp điều hướng thông suốt giữa các phân hệ chức năng:

+------------------------------------------------------------------------+
|                      SƠ ĐỒ LIÊN KẾT MÀN HÌNH CHÍNH                     |
+------------------------------------------------------------------------+
| [Đăng nhập / Đăng ký] ---> [Màn hình chính]                            |
|                                |--> Tab "Dành cho bạn" (Gợi ý AI)      |
|                                |--> Tab "Đang theo dõi" (Feed bạn bè)  |
|                                                                        |
| [Chức năng trung tâm]:                                                 |
|   |--> [Thêm bài viết] ---> (Camera / Thư viện ảnh / Chọn địa điểm)    |
|   |--> [Bản đồ & Khám phá] ---> (Google Maps API / Chi tiết địa điểm)  |
|   |--> [Tìm kiếm & Lọc] ---> (Lọc theo Địa điểm, Danh mục, Đánh giá)   |
|   |--> [Tương tác] ---> (Xem chi tiết bài, Thích, Bình luận, Bookmark) |
|   |--> [Trang cá nhân] ---> (Bài viết, Địa điểm đã lưu, Sửa hồ sơ)     |
|   |--> [Hộp thư & Thông báo] ---> (Nhắn tin trực tiếp, Danh sách TB)   |
+------------------------------------------------------------------------+
  1. Phân hệ Màn hình chính (News Feed): Thiết kế hai tab hiển thị riêng biệt:
    • Tab Dành cho bạn: Áp dụng thuật toán gợi ý để hiển thị các bài đánh giá, món ăn dựa trên sở thích và hành vi của người dùng.
    • Tab Đang theo dõi: Hiển thị bài đăng mới nhất từ những người dùng mà tài khoản đã bấm theo dõi theo trình tự thời gian.
  2. Phân hệ Đăng tải nội dung: Tích hợp giao diện chụp ảnh qua Camera thiết bị hoặc tải ảnh từ Thư viện; cho phép gắn nhãn món ăn và định vị tọa độ địa điểm thông qua công cụ chọn vị trí.
  3. Phân hệ Bản đồ và Khám phá: Tích hợp Google Maps hiển thị trực quan các biểu tượng địa điểm ăn uống xung quanh tọa độ hiện tại của người dùng, hỗ trợ xem thông tin tóm tắt và dẫn hướng.
  4. Phân hệ Tìm kiếm và Bộ lọc nâng cao: Hỗ trợ tìm kiếm theo từ khóa kết hợp đa bộ lọc:
    • Lọc theo khoảng cách/địa điểm.
    • Lọc theo danh mục ẩm thực.
    • Lọc theo mức đánh giá chất lượng (Rating).
  5. Phân hệ Tương tác và Cá nhân: Cung cấp đầy đủ giao diện xem chi tiết bài viết, gửi bình luận thời gian thực, thả tim (Like), lưu bài viết vào trang cá nhân, màn hình nhắn tin riêng (Direct Message), theo dõi/hủy theo dõi và xem thông báo hệ thống.
  6. Phân hệ Quản lý tài khoản: Giao diện chỉnh sửa hồ sơ cá nhân, đổi mật khẩu và quy trình khôi phục mật khẩu thông qua xác thực mã gửi về email.

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

Báo cáo được bố cục thành hai phần với 8 chương nội dung cụ thể:

Phần 1: Thực tập tại doanh nghiệp

  • Chương 1: Tổng quan về cơ sở thực tập: Giới thiệu quá trình hình thành của Công ty Cổ phần CrossTech (thành lập từ tháng 01/2019, nhận tài trợ từ vườn ươm ITP ĐHQG TP.HCM vào tháng 06/2019). Nêu rõ giá trị cốt lõi (Chất lượng – Vượt trội, Tôn trọng – Chia sẻ, Đa dạng – Bền vững, Văn hóa – Hội nhập), cơ cấu tổ chức gồm Hội đồng Co-Founder (chị Nguyễn Thị Hồng Nhung làm Leader) cùng các phòng ban: Training Team, HR Team, Content Team, Design Team, Marketing Team, Admin Team. Liệt kê các đối tác tiêu biểu như TEL4VN, MAGIKLAB, gumi Việt Nam, Wolfun Game, ANSCENTER, SaveMoney, Gcalls.
  • Chương 2: Nội dung thực tập tại cơ quan tiếp nhận: Trình bày chi tiết khóa đào tạo "Linux Essential" do Mentor Nguyễn Nhất Nguyên giảng dạy vào chiều Chủ nhật hàng tuần qua Google Meet (từ 26/09/2021 đến 31/10/2021), bao gồm 4 buổi học lý thuyết/thực hành dòng lệnh và buổi seminar định hướng nghề nghiệp "Road Map 4U" (ngày 23/10/2021). Sinh viên hoàn thành bài kiểm tra cuối khóa và được cấp chứng chỉ.
  • Chương 3: So sánh thực tế với lý thuyết. Đề xuất giải pháp cải tiến: Đối chiếu kiến thức quản trị hệ thống, kỹ thuật lập trình được đào tạo tại nhà trường với quy trình làm việc thực tế tại doanh nghiệp; đề xuất các giải pháp nâng cao hiệu quả đào tạo trực tuyến.

Phần 2: Đề tài tự nghiên cứu

  • Chương 1: Giới thiệu tổng quan đề tài: Trình bày lý do hình thành ý tưởng mạng xã hội What Eat nhằm giải quyết nhu cầu tìm kiếm quán ăn và chia sẻ đánh giá ẩm thực thực tế; xác định các mục tiêu chức năng cần đạt được của ứng dụng.
  • Chương 2: Cơ sở lý thuyết và công nghệ: Khảo sát các nền tảng Foody, Hatto, Bản đồ ăn; phân tích lý thuyết về React Native, Node.js, Firebase, Web API, Google Maps API, kiến trúc Redux và mô hình ma trận Users - Items trong hệ thống gợi ý.
  • Chương 3: Phân tích thiết kế: Xây dựng danh sách yêu cầu phi chức năng; đặc tả chi tiết 24 ca sử dụng bằng bảng biểu; vẽ các sơ đồ tuần tự (Sequence Diagram) cho các luồng xử lý chính; thiết kế mô hình dữ liệu quan hệ với 12 bảng thực thể.
  • Chương 4: Xây dựng và cài đặt hệ thống: Hiện thực hóa các giao diện người dùng trên ứng dụng di động; thiết lập sơ đồ liên kết màn hình và sơ đồ triển khai hệ thống (Deployment Diagram).
  • Chương 5: Kết luận: Tổng hợp các kết quả thực nghiệm đã triển khai, chỉ ra các điểm còn tồn tại và đề xuất định hướng nâng cấp trong tương lai.

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

  1. Kết quả thực tập tại doanh nghiệp:

    • Hoàn thành đầy đủ 100% thời lượng khóa học chuyên đề Linux Essential và vượt qua kỳ kiểm tra đánh giá chất lượng.
    • Được đơn vị thực tập (Công ty Cổ phần CrossTech) đánh giá đạt loại Xuất sắc với điểm số tối đa: 10/10 (Điểm chữ: Mười), ghi nhận tinh thần chuyên cần, đạo đức nghề nghiệp và năng lực giải quyết công việc chuyên môn.
  2. Kết quả xây dựng phần mềm What Eat:

    • Hoàn thành việc phân tích, thiết kế và cài đặt thành công ứng dụng mạng xã hội ẩm thực trên thiết bị di động bằng React Native.
    • Tích hợp thành công dịch vụ bản đồ Google Maps API hỗ trợ tìm kiếm và định vị quán ăn theo thời gian thực.
    • Xây dựng hoàn chỉnh mô hình luồng dữ liệu quản lý trạng thái bằng Redux và hệ thống cơ sở dữ liệu gồm 12 bảng chức năng, đáp ứng trọn vẹn 24 ca sử dụng đã đặc tả.
  3. Đóng góp của đề tài:

    • Cung cấp tài liệu thiết kế hệ thống chi tiết cho mô hình ứng dụng mạng xã hội chuyên ngành (ẩm thực), kết hợp hài hòa giữa tính năng chia sẻ cộng đồng và công cụ hỗ trợ ra quyết định thông qua gợi ý địa điểm.

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

  • Hạn chế:
    • Do khoảng thời gian thực tập có hạn (01 tháng, từ 26/09/2021 đến 31/10/2021) và bối cảnh dịch bệnh phải làm việc trực tuyến, thuật toán gợi ý (Recommendation System) mới dừng lại ở mức mô hình hóa ma trận dữ liệu tương tác cơ bản, chưa được thử nghiệm đánh giá trên tập dữ liệu người dùng quy mô lớn (Big Data).
    • Một số tính năng nâng cao về phân tích chuyên sâu hành vi người dùng trên nền tảng đám mây cần thêm thời gian để tối ưu hóa hiệu năng truy vấn.
  • Hướng nghiên cứu tiếp:
    • Hoàn thiện và tích hợp sâu các thuật toán học máy (Machine Learning/Deep Learning) để tối ưu hóa độ chính xác của hệ thống gợi ý món ăn theo thời gian thực và thời tiết/khu vực.
    • Mở rộng phân hệ quản trị dành cho chủ quán ăn/nhà hàng và tích hợp các giải pháp thanh toán điện tử, đặt bàn trực tuyến.

Giá trị tham khảo

Báo cáo chuyên đề thực tập tốt nghiệp này là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Kỹ thuật phần mềm và Công nghệ thông tin: Tham khảo phương pháp phân tích yêu cầu phần mềm, kỹ thuật viết bảng đặc tả Use Case chuẩn mực và phương pháp thiết kế sơ đồ tuần tự cho ứng dụng di động.
  • Lập trình viên phát triển ứng dụng di động React Native: Tham khảo mô hình phân chia cấu trúc màn hình, kiến trúc quản lý luồng dữ liệu Redux và kỹ thuật tích hợp Google Maps API vào ứng dụng thực tế.
  • Người nghiên cứu hệ thống gợi ý: Tham khảo cách tiếp cận xây dựng ma trận Users – Items và cách tích hợp thuật toán gợi ý vào một sản phẩm ứng dụng di động mạng xã hội.

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

1. Khóa học chuyên đề mà sinh viên hoàn thành tại cơ sở thực tập là gì và do đơn vị nào phối hợp tổ chức?
Sinh viên hoàn thành khóa đào tạo "Linux Essential" do Công ty Cổ phần CrossTech phối hợp cùng Công ty TEL4VN và Trường Đại học Thủ Dầu Một tổ chức trong tháng 09 và tháng 10 năm 2021.

2. Ứng dụng What Eat sử dụng công nghệ chính nào cho phía giao diện người dùng và quản lý trạng thái?
Ứng dụng sử dụng framework React Native để xây dựng giao diện người dùng đa nền tảng và sử dụng thư viện Redux để quản lý trạng thái tập trung của toàn bộ ứng dụng.

3. Cơ sở dữ liệu của hệ thống What Eat được thiết kế gồm bao nhiêu bảng thực thể?
Cơ sở dữ liệu của hệ thống được thiết kế gồm 12 bảng dữ liệu chính, bao gồm: Người dùng, Tài khoản đang theo dõi, Tài khoản theo dõi người dùng, Bài viết, Thích bài viết, Bình luận, Lưu trữ bài viết, Địa điểm, Danh mục, Quyền hạn, Tin nhắn và Món ăn.

4. Ứng dụng tích hợp dịch vụ bên ngoài nào để hỗ trợ tìm kiếm địa điểm và hiển thị vị trí?
Ứng dụng tích hợp Google Maps API để thực hiện chức năng định vị vị trí người dùng, hiển thị bản đồ trực quan và gắn thẻ tọa độ các địa điểm ẩm thực.

5. Kết quả đánh giá thực tập của sinh viên tại Công ty Cổ phần CrossTech đạt bao nhiêu điểm?
Sinh viên được cán bộ hướng dẫn tại Công ty Cổ phần CrossTech chấm điểm đánh giá kết quả thực tập đạt 10 điểm (Điểm chữ: Mười), xếp loại Tốt ở tất cả các tiêu chí chuyên cần, đạo đức nghề nghiệp và giải quyết công việc chuyên môn.


Kết luận

Báo cáo chuyên đề thực tập tốt nghiệp của sinh viên Trần Minh Hiếu đã phản ánh toàn diện quá trình rèn luyện kỹ năng quản trị hệ thống Linux tại Công ty Cổ phần CrossTech, đồng thời giải quyết tốt bài toán xây dựng ứng dụng di động mạng xã hội ẩm thực What Eat. Bằng việc ứng dụng khung công nghệ React Native, Node.js, Firebase và Google Maps API, đề tài đã thiết kế và hiện thực hóa thành công một hệ thống phần mềm có tính ứng dụng cao, cấu trúc dữ liệu chặt chẽ và giao diện trực quan. Công trình là tài liệu tham khảo có giá trị chuyên môn cao cho sinh viên ngành Kỹ thuật phần mềm trong việc phát triển ứng dụng di động tích hợp bản đồ và hệ thống gợi ý.