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

Trong bối cảnh nền kinh tế tri thức phát triển mạnh mẽ, phương thức lao động của xã hội có sự dịch chuyển rõ rệt từ lao động chân tay sang lao động trí óc. Sự thay đổi này dẫn đến lối sống ít vận động (sedentary lifestyle) ở phần lớn người làm việc văn phòng và lao động trí thức. Nhịp sống bận rộn khiến nhiều người không có đủ thời gian để quan tâm đến sức khỏe và thể lực của bản thân. Dựa trên số liệu từ báo cáo "Global Emotions Report" được tác giả trích dẫn, có tới 1/3 số người từ 143 quốc gia cho biết họ thường xuyên gặp phải tình trạng căng thẳng (stress) trong cuộc sống, trong đó phần lớn là người lao động trí tuệ. Tình trạng này xuất phát từ thể chất không đảm bảo do thiếu kế hoạch rèn luyện thể chất, không có thời gian đến các trung tâm thể hình (gym center) hoặc không thể tự nghiên cứu để xây dựng cho mình một lộ trình tập luyện và dinh dưỡng phù hợp.

Nhằm giải quyết bài toán thực tiễn trên, đề tài đồ án tốt nghiệp "Building a Fitness Personal Trainer Application" (Xây dựng ứng dụng huấn luyện viên cá nhân fitness) được thực hiện với các mục tiêu và nhiệm vụ nghiên cứu cụ thể:

  1. Nghiên cứu và tổng hợp các cơ sở lý thuyết, chỉ số và thuật toán tính toán trong lĩnh vực thể hình (fitness) nhằm xây dựng thuật toán tự động sinh lịch tập và chế độ dinh dưỡng (clean-eating) phù hợp với thể trạng của từng cá nhân.
  2. Thiết kế và hiện thực hóa hệ thống ứng dụng di động đóng vai trò như một huấn luyện viên cá nhân ảo, cho phép người dùng tập luyện tại nhà hoặc văn phòng mà không cần đến dụng cụ hỗ trợ phức tạp.
  3. Cung cấp các công cụ theo dõi tiến trình tập luyện, tính toán lượng calo tiêu thụ, quản lý nhật ký dinh dưỡng hàng ngày (nạp calo/protein/carbs/fat) và đo lường sự thay đổi của các chỉ số cơ thể theo thời gian.
  4. Xây dựng phân hệ quản trị hệ thống cho phép quản lý tài khoản người dùng và quản lý dữ liệu mẫu (bài tập, kế hoạch mẫu, công thức dinh dưỡng).

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

  • Đối tượng nghiên cứu: Các thuật toán tính toán dinh dưỡng, phân bổ khối lượng bài tập theo nhóm cơ trong thể hình; các công nghệ phát triển phần mềm di động và dịch vụ web (React Native, Redux, Django REST framework, PostgreSQL).
  • Phạm vi không gian: Đề tài được triển khai thực hiện tại Khoa Công nghệ Thông tin, Trường Đại học Bách khoa – Đại học Đà Nẵng, kết hợp sự hỗ trợ chuyên môn từ các chuyên gia tại công ty Enclave.
  • Phạm vi thời gian: Đồ án được giao nhiệm vụ ngày 07/09/2019 và hoàn thành ngày 20/12/2019.
  • Phạm vi đối tượng người dùng: Ứng dụng hướng tới nhóm đối tượng có nhu cầu và khả năng tuân thủ kế hoạch rèn luyện thể chất nghiêm túc; tác giả nêu rõ hệ thống không dành cho những người không quan tâm đến thể lực hoặc không đủ quyết tâm theo đuổi các chế độ rèn luyện thể chất cường độ cao.

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

Để xây dựng thuật toán sinh kế hoạch rèn luyện và dinh dưỡng tự động, tác giả đã tổng hợp các lý thuyết khoa học thể hình và dinh dưỡng:

1. Cơ sở lý thuyết thể hình và tính toán năng lượng

  • Tỷ lệ trao đổi chất cơ bản (BMR - Basal Metabolic Rate): Xác định mức năng lượng tối thiểu mà cơ thể cần để duy trì các chức năng sinh tồn cơ bản (hô hấp, tuần hoàn, duy trì thân nhiệt). Tác giả sử dụng phương trình Harris-Benedict để tính toán:
    • Đối với nam giới: $BMR = 66.5 + (13.75 \times \text{cân nặng [kg]}) + (5.003 \times \text{chiều cao [cm]}) - (6.755 \times \text{tuổi})$
    • Đối với nữ giới: $BMR = 655.1 + (9.563 \times \text{cân nặng [kg]}) + (1.850 \times \text{chiều cao [cm]}) - (4.676 \times \text{tuổi})$
  • Tổng mức tiêu hao năng lượng hàng ngày (TDEE - Total Daily Energy Expenditure): Đại diện cho lượng calo tiêu thụ trung bình mỗi ngày dựa trên mức độ hoạt động thể chất, được tính bằng công thức $TDEE = BMR \times PAL$ (Physical Activity Level - Mức độ hoạt động thể chất):
    • $PAL = 1.53$: Áp dụng cho nhân viên văn phòng, ít hoặc không vận động thể chất.
    • $PAL = 1.76$: Áp dụng cho công nhân xây dựng hoặc người chạy bộ 1 giờ mỗi ngày.
    • $PAL = 2.25$: Áp dụng cho lao động nông nghiệp thủ công hoặc người bơi lội 2 giờ mỗi ngày.
  • Nguyên lý phân bổ bài tập và khối lượng lặp lại (Repetitions):
    • Nhóm cơ lớn (Large size muscle group): Phân bổ khuyến nghị từ 60 đến 120 lần lặp lại mỗi tuần (reps/week).
    • Nhóm cơ nhỏ (Small size muscle group): Phân bổ khuyến nghị từ 30 đến 50 lần lặp lại mỗi tuần (reps/week).
    • Thuật toán kết hợp hai loại hình bài tập chính gồm Cardio (bài tập tim mạch) và Weightlifting (bài tập kháng lực sử dụng trọng lượng cơ thể không cần tạ) dựa trên nhóm cơ yêu thích và số ngày tập luyện trong tuần mà người dùng đăng ký.

2. Phương pháp nghiên cứu và phát triển hệ thống

  • Phương pháp thu thập dữ liệu: Toàn bộ dữ liệu mẫu ban đầu về bài tập, động tác, nhóm cơ và thành phần dinh dưỡng được thu thập từ các nguồn trực tuyến uy tín và đã được kiểm chứng độ tin cậy.
  • Phương pháp phân tích và thiết kế phần mềm: Áp dụng mô hình hướng đối tượng, sử dụng ngôn ngữ mô hình hóa thống nhất UML để xây dựng hệ thống sơ đồ (Use Case Diagram, Activity Diagram, Sequence Diagram, Class Diagram, Package Diagram).
  • Phương pháp kiến trúc phần mềm: Áp dụng phong cách kiến trúc REST (Representational State Transfer) với 6 nguyên tắc cốt lõi: Kiến trúc Client-Server, Phi trạng thái (Statelessness), Bộ đệm (Caching), Giao diện đồng nhất (Uniform Interface), Hệ thống phân lớp (Layered System), và Mã theo yêu cầu (Code-on-demand).

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

Hệ thống được thiết kế theo mô hình phân tầng tách biệt giữa tầng giao diện người dùng trên thiết bị di động và tầng dịch vụ cung cấp dữ liệu qua API.

1. Kiến trúc hệ thống và ngăn xếp công nghệ

Thành phần hệ thống Công nghệ / Nền tảng sử dụng Vai trò và chức năng kỹ thuật
Mobile Client React Native, Redux Ứng dụng di động đa nền tảng (iOS, Android) đóng vai trò giao diện cho người dùng, quản lý trạng thái tập trung với Redux, giao tiếp qua cầu nối bất đồng bộ Bridge.
API Service & Backend Python, Django, Django REST framework (DRF) Xử lý logic nghiệp vụ, xác thực tài khoản, thực thi thuật toán sinh lịch trình, tuần tự hóa dữ liệu (Serialization) và cung cấp các điểm cuối RESTful API (GET, POST, PUT, DELETE).
Cơ sở dữ liệu PostgreSQL Hệ quản trị cơ sở dữ liệu quan hệ lưu trữ dữ liệu người dùng, bài tập, kế hoạch và nhật ký dinh dưỡng với tính toàn vẹn giao dịch (ACID).
Hạ tầng triển khai Heroku Cloud Platform Môi trường lưu trữ và triển khai dịch vụ API và cơ sở dữ liệu trực tuyến.
Công cụ phát triển VS Code, Android Studio Emulator, Postman, Google Chrome Viết mã nguồn, giả lập thiết bị kiểm thử di động, kiểm thử API và theo dõi giao diện web quản trị.

2. Thiết kế dữ liệu và các thực thể chính

Cơ sở dữ liệu PostgreSQL của hệ thống được cấu trúc thông qua 13 bảng thực thể có mối quan hệ chặt chẽ với nhau:

  1. User: Lưu trữ thông tin tài khoản, mật khẩu băm, thông tin định danh và phân quyền.
  2. FitnessMass: Lưu trữ lịch sử các chỉ số hình thể định kỳ (cân nặng, chiều cao, chu vi bắp tay...).
  3. Activity level: Danh mục định nghĩa các mức độ hoạt động thể chất và hệ số PAL tương ứng.
  4. FitnessLevel: Cấp độ thể lực hiện tại của người dùng.
  5. FitnessGoal: Các mục tiêu thể chất (tăng cân, giảm cân, tăng cơ, cải thiện sức bền).
  6. Plan: Bảng lưu trữ thông tin kế hoạch tập luyện tổng thể (kế hoạch mẫu hoặc kế hoạch cá nhân hóa).
  7. DaySequence: Chuỗi thứ tự các ngày trong tuần thuộc một kế hoạch tập.
  8. ExerciseSequence: Thứ tự thực hiện và cấu hình các bài tập trong một ngày cụ thể.
  9. Exercise: Thư viện chi tiết các bài tập thể hình không dùng dụng cụ.
  10. DateRecord: Bản ghi theo dõi hoạt động tập luyện và dinh dưỡng theo từng ngày thực tế.
  11. Meal: Danh mục các bữa ăn trong ngày (bữa sáng, bữa trưa, bữa tối).
  12. Meal Record: Bản ghi các món ăn chi tiết được tiêu thụ trong từng bữa ăn.
  13. Food: Thư viện các món ăn, thực phẩm chứa thông tin calo, protein, carbohydrate và chất béo.

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

Giới thiệu (Introduction)

Chương giới thiệu trình bày tổng quan về bối cảnh chuyển dịch kinh tế dẫn đến tình trạng suy giảm hoạt động thể chất và gia tăng căng thẳng của người lao động trí tuệ. Tác giả định nghĩa mục tiêu xây dựng một ứng dụng di động đóng vai trò như một huấn luyện viên cá nhân, giúp tạo lập lịch tập luyện không cần dụng cụ và kế hoạch dinh dưỡng "clean-eating" được cá nhân hóa theo thông số hình thể và mục tiêu riêng của người dùng. Chương này cũng liệt kê ngăn xếp công nghệ, công cụ phát triển và cơ cấu tổ chức các chương trong đồ án.

Chương 1: Cơ sở lý thuyết và công nghệ (Chapter 1: Theories and Technologies)

Chương này đi sâu vào giải thích các nền tảng kỹ thuật và cơ sở lý thuyết khoa học được ứng dụng:

  • Định nghĩa khái niệm API và 6 nguyên tắc kiến trúc REST; vai trò của 4 phương thức HTTP (GET để truy vấn, POST để cập nhật/thay đổi trạng thái, PUT để tạo mới hoặc thay thế, DELETE để xóa tài nguyên).
  • Giới thiệu tổng quan về framework Django, các đặc tính về tính đa năng (Versatility), bảo mật (Security - lưu trữ mật khẩu băm), khả năng mở rộng (Scalability) và tính khả chuyển (Portability).
  • Cấu trúc Django REST framework, tính năng API duyệt web (Web browsable API), cơ chế tuần tự hóa dữ liệu và chính sách xác thực.
  • Kiến trúc nền tảng React Native, cơ chế giao tiếp qua cầu nối bất đồng bộ (Bridge) thay vì thao tác trực tiếp trên DOM, và thư viện quản lý trạng thái Redux.
  • Tính năng của hệ quản trị cơ sở dữ liệu PostgreSQL (kiểu dữ liệu đa dạng JSON/JSONB, chỉ mục B-tree/GiST/GIN, độ tin cậy giao dịch ACID, MVCC).
  • Các công thức khoa học thể hình: Phương trình Harris-Benedict tính BMR, công thức TDEE qua hệ số PAL, và quy tắc phân bổ số lần lặp lại bài tập cho các nhóm cơ lớn (60-120 reps/tuần) và nhóm cơ nhỏ (30-50 reps/tuần) kết hợp giữa Cardio và Weightlifting.

Chương 2: Phân tích và thiết kế hệ thống (Chapter 2: Analysis and Design)

Chương 2 mô tả chi tiết các yêu cầu chức năng, yêu cầu phi chức năng, kiến trúc phần mềm và đặc tả các ca sử dụng (Use Case) cho hai tác nhân chính:

Tác nhân Mã Use Case Tên Use Case Mô tả tóm tắt luồng hoạt động
Administrator UC-01 Đăng nhập hệ thống quản trị Quản trị viên nhập email, mật khẩu để truy cập trang web quản trị.
UC-02 đến UC-05 Quản lý, thêm, sửa, xóa dữ liệu mẫu Quản trị viên quản lý danh mục bài tập mẫu, kế hoạch mẫu và thực đơn thực phẩm mẫu.
UC-06, UC-07 Tạo và xóa tài khoản người dùng Quản trị viên quản lý danh sách tài khoản người dùng trên hệ thống.
User UC-08, UC-09 Đăng ký và đăng nhập Người dùng tạo tài khoản mới và đăng nhập vào ứng dụng di động.
UC-10 Nhập thông tin ban đầu Người dùng khai báo mục tiêu thể hình, chiều cao, cân nặng, độ tuổi, giới tính, mức độ hoạt động và thời gian tập.
UC-11 Xem kế hoạch tập luyện đề xuất Hệ thống hiển thị lịch tập được cá nhân hóa tự động dựa trên thuật toán.
UC-12, UC-13 Xem kế hoạch mẫu và bài tập mẫu Người dùng tra cứu thư viện các bài tập đơn lẻ và các kế hoạch tập mẫu có sẵn.
UC-14 Xem số liệu thống kê Người dùng theo dõi biểu đồ thống kê calo tiêu thụ và tiến trình thay đổi hình thể.
UC-15 đến UC-17 Tạo, sửa, xóa món ăn cá nhân Người dùng tự tạo danh mục món ăn và thành phần dinh dưỡng tùy chỉnh.
UC-18 đến UC-21 Quản lý nhật ký dinh dưỡng hàng ngày Người dùng thêm món ăn vào bữa sáng/trưa/tối, cập nhật số lượng, xóa món hoặc xóa toàn bộ nhật ký trong ngày.

Chương này cũng thể hiện chi tiết thiết kế hệ thống thông qua các sơ đồ hoạt động (Activity Diagrams từ Figure 2.4 đến 2.22), sơ đồ tuần tự (Sequence Diagrams từ Figure 2.24 đến 2.29) và mô hình dữ liệu quan hệ gồm 13 bảng từ Table 2.22 đến Table 2.34.

Chương 3: Hiện thực hóa và đánh giá kết quả (Chapter 3: Implementation and Result Evaluation)

Chương 3 trình bày các kết quả hiện thực hóa cụ thể của hệ thống:

  • Minh họa phản hồi của các điểm cuối API thông qua các phương thức HTTP GET, POST, PUT, DELETE xử lý dữ liệu JSON chuẩn.
  • Hiện thực hóa các màn hình chức năng chính trên ứng dụng di động:
    1. Màn hình nhập thông tin chỉ số ban đầu của người dùng (Result – Input initial information).
    2. Màn hình hiển thị kế hoạch tập luyện cá nhân hóa (Result – Workout plan).
    3. Màn hình phân bổ chuỗi ngày tập trong tuần của kế hoạch (Result – Days sequence of each plan).
    4. Màn hình chi tiết bài tập trong từng ngày cụ thể (Result – Detail information of each plan day).
    5. Màn hình hỗ trợ trong lúc thực hiện bài tập (Result – Practice feature).
    6. Thư viện tra cứu bài tập và hướng dẫn kỹ thuật chi tiết (Result – Library of exercises / Detail of each exercise).
    7. Màn hình hiển thị chỉ tiêu dinh dưỡng hàng ngày và nhật ký thực phẩm đã tiêu thụ (Result – Daily nutrition information / Daily eaten food record).

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

Đồ án đã hoàn thành đầy đủ các mục tiêu thiết kế và xây dựng hệ thống ứng dụng huấn luyện thể hình cá nhân theo đúng yêu cầu đề ra:

  1. Về mặt kỹ thuật và phần mềm:
    • Xây dựng hoàn chỉnh hệ thống dịch vụ RESTful API bằng framework Django/DRF trên ngôn ngữ Python, triển khai thành công lên nền tảng Heroku và kết nối cơ sở dữ liệu PostgreSQL.
    • Xây dựng ứng dụng di động đa nền tảng bằng React Native kết hợp Redux, cung cấp giao diện trực quan, cho phép người dùng thao tác mượt mà từ khâu đăng ký, khai báo chỉ số, tập luyện theo hướng dẫn đến ghi nhận dinh dưỡng.
    • Hiện thực hóa đầy đủ 21 ca sử dụng (Use Cases) được phân chia cho Quản trị viên và Người dùng, bao gồm hệ thống 13 bảng cơ sở dữ liệu quan hệ chuẩn hóa.
  2. Về mặt ứng dụng giải thuật và nghiệp vụ:
    • Ứng dụng thành công các công thức khoa học thể hình (Harris-Benedict BMR, chỉ số PAL, mức tiêu hao TDEE) vào thuật toán tự động tính toán nhu cầu năng lượng và định lượng các nhóm chất (Calories, Protein, Carbs, Fat).
    • Xây dựng thuật toán phân bổ bài tập hợp lý dựa trên tần suất tập trong tuần, thời gian mỗi buổi tập và số lần lặp lại tiêu chuẩn cho nhóm cơ lớn (60-120 reps/tuần) và nhóm cơ nhỏ (30-50 reps/tuần) mà không cần dụng cụ phòng gym.
    • Cung cấp giải pháp rèn luyện sức khỏe và kiểm soát chế độ ăn "clean-eating" chủ động, tiết kiệm chi phí và thời gian cho nhóm người làm việc văn phòng.

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

Dựa trên phạm vi và nội dung được tác giả công bố trong đồ án, hệ thống còn tồn tại một số hạn chế và định hướng phát triển:

  • Hạn chế:
    • Do tác giả mới tiếp cận các công nghệ hiện đại (React Native, Django REST framework, PostgreSQL) trong quá trình thực hiện đồ án nên hệ thống vẫn còn một số điểm thiếu sót kỹ thuật cần tối ưu thêm.
    • Cơ sở dữ liệu ban đầu về bài tập và công thức dinh dưỡng phụ thuộc vào việc nhập liệu thủ công của quản trị viên từ các nguồn internet.
    • Hệ thống chỉ phù hợp cho người dùng có tính kỷ luật cao và cam kết theo đuổi lộ trình; chưa có cơ chế tự động nhắc nhở thông minh cho người thiếu động lực.
  • Hướng nghiên cứu tiếp:
    • Bổ sung và mở rộng nguồn dữ liệu mẫu phong phú hơn về danh mục bài tập thể hình và thực đơn các món ăn dinh dưỡng.
    • Nâng cấp và tối ưu hóa thuật toán tự động sinh lịch trình tập luyện để thích ứng linh hoạt hơn với sự thay đổi thể trạng theo thời gian thực của người dùng.
    • Hoàn thiện thêm các tính năng nâng cao về phân tích số liệu thống kê và kiểm thử hệ thống trên diện rộng.

Giá trị tham khảo

Đồ án tốt nghiệp này mang lại giá trị tham khảo hữu ích cho các nhóm đối tượng:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo thực tế về quy trình phân tích thiết kế hệ thống theo chuẩn UML, cách xây dựng kiến trúc phân tách Client-Server sử dụng Django REST framework kết hợp với React Native và cơ sở dữ liệu PostgreSQL.
  • Các nhà phát triển ứng dụng y tế và sức khỏe (Health & Fitness App Developers): Cung cấp tài liệu tham khảo về phương pháp số hóa các công thức thể hình khoa học (BMR, TDEE, PAL, phân bổ reps cơ bắp) thành các thuật toán tự động trong phần mềm.
  • Người nghiên cứu các giải pháp rèn luyện cá nhân: Cung cấp mô hình quản lý tập luyện không cần dụng cụ kết hợp chế độ ăn clean-eating phù hợp cho người có lối sống ít vận động.

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

1. Hệ thống tính toán lượng calo tiêu thụ hàng ngày (TDEE) của người dùng dựa trên những công thức và hệ số nào?
Hệ thống sử dụng phương trình Harris-Benedict để tính chỉ số BMR dựa trên giới tính, chiều cao, cân nặng và độ tuổi của người dùng. Sau đó, BMR được nhân với hệ số hoạt động thể chất (PAL) tương ứng với từng mức độ vận động: 1.53 (nhân viên văn phòng, ít vận động), 1.76 (lao động nặng/chạy bộ 1 giờ/ngày), hoặc 2.25 (lao động nông nghiệp/bơi lội 2 giờ/ngày) để ra chỉ số TDEE.

2. Thuật toán sinh lịch tập luyện tự động căn cứ vào những tiêu chí nào để phân bổ bài tập?
Thuật toán căn cứ vào số ngày tập luyện trong tuần, thời lượng tập mỗi ngày, danh sách nhóm cơ yêu thích do người dùng lựa chọn, kết hợp với định mức số lần lặp lại khuyến nghị theo khoa học: 60-120 reps/tuần đối với nhóm cơ lớn và 30-50 reps/tuần đối với nhóm cơ nhỏ. Các bài tập được lựa chọn từ thư viện bài tập gồm Cardio và Weightlifting không cần dụng cụ.

3. Ngăn xếp công nghệ (Tech stack) được sử dụng để xây dựng hệ thống gồm những gì?
Hệ thống sử dụng React Native và Redux để xây dựng ứng dụng di động cho người dùng; sử dụng Python kết hợp Django và Django REST framework để xây dựng dịch vụ API và trang quản trị; sử dụng PostgreSQL làm hệ quản trị cơ sở dữ liệu và triển khai toàn bộ dịch vụ backend lên nền tảng đám mây Heroku.

4. Hệ thống phân quyền cho những tác nhân nào và có bao nhiêu ca sử dụng (Use Case)?
Hệ thống gồm 2 tác nhân chính là Administrator (Quản trị viên) và User (Người dùng) với tổng cộng 21 ca sử dụng: Quản trị viên quản lý 7 use case (đăng nhập, quản lý/thêm/sửa/xóa dữ liệu mẫu, tạo/xóa tài khoản) và Người dùng thực hiện 14 use case (đăng ký, đăng nhập, nhập thông tin thể trạng, xem lịch tập đề xuất, xem bài tập/kế hoạch mẫu, theo dõi thống kê, tạo/sửa/xóa món ăn cá nhân, quản lý nhật ký dinh dưỡng hàng ngày).

Kết luận

Đồ án "Building a Fitness Personal Trainer Application" của tác giả Ngô Minh Cường đã giải quyết thành công bài toán xây dựng ứng dụng huấn luyện viên thể hình cá nhân hóa dành cho người bận rộn. Bằng việc kết hợp giữa lý thuyết thể hình khoa học (BMR, TDEE, PAL, số lần lặp lại nhóm cơ) và kiến trúc công nghệ hiện đại (React Native, Django REST framework, PostgreSQL), hệ thống cho phép tự động tạo lập lịch tập luyện không cần dụng cụ và kế hoạch dinh dưỡng clean-eating tối ưu. Đây là một công trình tốt nghiệp hoàn chỉnh về quy trình từ phân tích, thiết kế UML, lập trình đến triển khai hệ thống thực tế.