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

Trong bối cảnh chuyển đổi số và ứng dụng công nghệ thông tin vào đời sống thường nhật, việc quản lý tài chính cá nhân trở thành nhu cầu thiết yếu đối với nhiều nhóm đối tượng xã hội. Thực tiễn cho thấy sinh viên—đặc biệt là sinh viên năm nhất bắt đầu cuộc sống tự lập xa nhà—cùng với công nhân viên và người lao động thường gặp khó khăn trong việc theo dõi, cân đối các khoản thu chi hàng ngày, hàng tháng và hàng năm. Việc thiếu công cụ hỗ trợ dẫn đến tình trạng chi tiêu mất kiểm soát, khó tích lũy kinh nghiệm quản lý ngân sách cá nhân một cách hợp lý và tiết kiệm.

Nhằm giải quyết bài toán thực tiễn trên, khóa luận tốt nghiệp ngành Công nghệ Thông tin (chuyên ngành Công nghệ phần mềm) tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh đã thực hiện đề tài: "Xây dựng ứng dụng web quản lý chi tiêu, khai thác dữ liệu sử dụng mô hình ngôn ngữ lớn".

Mục tiêu nghiên cứu

Khóa luận xác định 05 mục tiêu cụ thể:

  1. Xây dựng một trang web lên kế hoạch và quản lý chi tiêu với các chức năng cơ bản cho người dùng.
  2. Xây dựng giao diện thân thiện với người sử dụng, dễ thao tác và vận hành.
  3. Quản lý được các ghi chú cũng như các hoạt động trong danh sách công việc cần làm (todolist) do người dùng tạo ra.
  4. Tích hợp chatbot trí tuệ nhân tạo (AI) để hỗ trợ người dùng trong quá trình lên kế hoạch và tối ưu hóa chi tiêu.
  5. Thực hiện truy vấn và khai thác dữ liệu hệ thống bằng ngôn ngữ tự nhiên thông qua mô hình ngôn ngữ lớn (LLMs).

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Nhu cầu quản lý chi tiêu định kỳ (ngày, tháng, năm) trong học tập, làm việc của sinh viên và người lao động; các giải pháp công nghệ xây dựng hệ thống phần mềm phân tán (.NET, ReactJS, Flutter, PostgreSQL) và các mô hình, thư viện xử lý ngôn ngữ tự nhiên (Large Language Models, PandasAI, LangChain, OpenAI ChatGPT).
  • Phạm vi không gian và nền tảng: Ứng dụng triển khai trên nền tảng Web dành cho người dùng và quản trị viên (Admin), đồng thời mở rộng ứng dụng trên thiết bị di động (Mobile App).
  • Phạm vi nghiệp vụ: Lập kế hoạch chi tiêu theo thời gian, theo dõi số tiền thực tế sử dụng so với dự toán, quản lý danh mục, ghi chú lịch trình, danh sách công việc (todolist), đếm thời gian tập trung Pomodoro, phân quyền quản trị tài khoản và truy vấn số liệu chi tiêu bằng chatbot AI.
  • Phạm vi thời gian thực hiện: Đề tài được triển khai từ ngày 04/03/2024 đến ngày 15/06/2024.

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

Khung lý thuyết và công nghệ áp dụng

Đề tài kết hợp giữa kỹ thuật phát triển phần mềm đa nền tảng hiện đại và các mô hình trí tuệ nhân tạo xử lý ngôn ngữ tự nhiên:

  • Kiến trúc mô hình ngôn ngữ lớn (LLMs) và RAG (Retrieval-Augmented Generation): Nghiên cứu kiến trúc LLM, mô hình ChatGPT (phiên bản GPT-4.0) từ OpenAI, kết hợp cùng framework LangChain và thư viện PandasAI để thực hiện kết nối, tạo prompt và truy vấn dữ liệu từ cơ sở dữ liệu quan hệ.
  • Cơ chế xác thực và bảo mật: Sử dụng JSON Web Token (JWT) trong header của HTTP request để xác thực danh tính và phân quyền vai trò (User/Admin). Tích hợp cơ chế xác thực tài khoản qua mã OTP (One-Time Password) 6 chữ số gửi qua email.
  • Lập lịch và tác vụ nền: Ứng dụng thư viện HangFire trên môi trường .NET để quản lý và gửi thông báo tự động cho người dùng khi đến mốc thời gian của ghi chú.
  • Lưu trữ đám mây: Sử dụng Firebase để lưu trữ hình ảnh (bao gồm ảnh do chatbot sinh ra) và điều phối hệ thống thông báo.

Phương pháp nghiên cứu và phát triển

  • Phương pháp phân tích và mô hình hóa hệ thống: Phân rã yêu cầu chức năng, xây dựng sơ đồ Use Case tổng quát, mô hình khái niệm (Conceptual Model), sơ đồ lớp (Class Diagram), sơ đồ tuần tự (Sequence Diagram) và sơ đồ cộng tác (Collaboration Diagram) cho từng ca sử dụng.
  • Phương pháp phát triển phần mềm theo hướng dịch vụ: Xây dựng hệ thống Backend cung cấp RESTful API độc lập, kết nối Frontend Single Page Application (SPA) và ứng dụng di động đa nền tảng.
  • Phương pháp xử lý và chuyển đổi dữ liệu: Quá trình phát triển đã thực hiện thử nghiệm chatbot qua các giai đoạn: xử lý trên file Excel (.xlsx), chuyển sang file định dạng CSV (.csv), và cải tiến đọc, truy vấn trực tiếp từ cơ sở dữ liệu quan hệ.
  • Phương pháp kiểm thử phần mềm: Xây dựng các kịch bản kiểm thử hộp đen (Black-box Testing) chi tiết cho các chức năng đăng nhập, đăng ký, quản lý kế hoạch, ghi chú, todolist và kiểm thử độ chính xác của phản hồi chatbot AI.

Nguồn dữ liệu

  • Dữ liệu người dùng, kế hoạch tài chính, danh mục và lịch trình lưu trữ tập trung tại hệ thống cơ sở dữ liệu quan hệ PostgreSQL (được chuyển đổi và chuẩn hóa từ MongoDB trong giai đoạn đầu của dự án).
  • Bộ dữ liệu thử nghiệm phục vụ kiểm thử và huấn luyện truy vấn cho chatbot được khởi tạo bằng script SQL và sinh tự động thông qua các câu lệnh prompt trên OpenAI ChatGPT.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình phân tầng Client-Server tách biệt, đảm bảo khả năng mở rộng và tính độc lập giữa giao diện người dùng và tầng xử lý nghiệp vụ.

Thành phần hệ thống Công nghệ / Thư viện sử dụng Vai trò và chức năng chính
Backend API .NET (C#), ASP.NET Core RESTful API Tiếp nhận và xử lý nghiệp vụ, quản lý logic ứng dụng, xác thực JWT, kết nối CSDL.
Tác vụ nền & Lịch trình HangFire Quản lý tác vụ ngầm, quét dữ liệu ghi chú và tự động gửi thông báo đúng thời gian hẹn.
Frontend Web ReactJS, Redux Toolkit Giao diện tương tác người dùng trên trình duyệt và trang quản trị hệ thống (Admin).
Mobile Application Flutter (Dart) Cung cấp ứng dụng di động đa nền tảng cho người dùng cá nhân.
Cơ sở dữ liệu PostgreSQL Lưu trữ dữ liệu có cấu trúc: tài khoản, danh mục, kế hoạch thu chi, ghi chú, todolist.
Dịch vụ lưu trữ Firebase Lưu trữ tài nguyên đa phương tiện, hình ảnh biểu đồ tài chính do chatbot sinh ra.
Module Chatbot AI OpenAI API (ChatGPT 4.0), LangChain, PandasAI Phân tích câu hỏi tự nhiên, sinh mã truy vấn CSDL, phân tích số liệu và xuất biểu đồ trực quan.

Luồng xử lý của Chatbot AI trong hệ thống

  1. Người dùng gửi câu hỏi liên quan đến chi tiêu qua khung chat trên giao diện Web hoặc Mobile.
  2. Hệ thống chuyển câu hỏi đến module AI xử lý; thư viện PandasAI kết hợp mô hình ChatGPT phân tích ngữ nghĩa và sinh mã truy vấn dữ liệu từ PostgreSQL.
  3. Hệ thống thực thi mã truy vấn trên tập dữ liệu tương ứng của người dùng và kiểm tra kết quả trả về.
  4. Phân loại định dạng phản hồi:
    • Nếu kết quả là văn bản hoặc số liệu: Trả về câu trả lời trực tiếp trên giao diện chat.
    • Nếu câu hỏi yêu cầu biểu đồ: Hệ sinh ảnh biểu đồ, tải lên Firebase Storage và hiển thị ảnh tương ứng trong khung chat.
    • Nếu không tìm được dữ liệu hoặc câu hỏi vượt quá phạm vi xử lý: Trả về thông báo chuẩn: "Sorry, I can't answer this question right now".

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

Chương 1: Mô hình hóa yêu cầu

Chương này tập trung xác định và mô hình hóa toàn bộ yêu cầu của hệ thống:

  • Yêu cầu chức năng dành cho Admin: Quản lý tài khoản người dùng trên hệ thống (thêm tài khoản mới, cập nhật thông tin, thay đổi trạng thái hoạt động, tìm kiếm/lọc tài khoản) và sử dụng Chatbot AI quản trị.
  • Yêu cầu chức năng dành cho User:
    • Quản lý tài khoản: Đăng ký thành viên, kích hoạt tài khoản qua OTP, đăng nhập, đổi mật khẩu, quên mật khẩu, cập nhật thông tin cá nhân.
    • Quản lý kế hoạch: Thêm mới kế hoạch theo ngày/tháng/năm, cập nhật số tiền thực tế so với dự toán, xóa kế hoạch, thống kê chi tiêu, sử dụng chức năng gợi ý chi tiết kế hoạch ("Suggest").
    • Quản lý ghi chú & Lịch trình: Thêm, sửa, xóa ghi chú theo ngày/giờ kèm màu sắc phân loại; nhận thông báo nhắc nhở tự động.
    • Quản lý công việc (Todolist): Tạo, cập nhật, xóa các cột trạng thái và các thẻ công việc với ngày bắt đầu và kết thúc cụ thể.
    • Đồng hồ Pomodoro: Đếm ngược thời gian tập trung và quản lý nhiệm vụ cần thực hiện trong khoảng thời gian đã định.
    • Trợ lý Chatbot AI: Trò chuyện, tư vấn tài chính, tra cứu lịch sử chi tiêu và vẽ biểu đồ.
  • Yêu cầu phi chức năng: Giao diện thân thiện, thời gian đáp ứng thao tác nhanh chóng và chính xác, bảo mật dữ liệu cao qua token xác thực, mã nguồn dễ bảo trì và mở rộng.
  • Đặc tả và mô hình hóa: Xây dựng đầy đủ bảng đặc tả ca sử dụng (Use Case), lược đồ lớp (Class Diagram), lược đồ tuần tự (Sequence Diagram) và lược đồ cộng tác (Collaboration Diagram) cho 12 ca sử dụng chính: Đăng nhập, Đăng ký, Kích hoạt tài khoản, Cập nhật tài khoản, Tạo kế hoạch, Cập nhật kế hoạch, Tạo ghi chú, Cập nhật ghi chú, Tạo tài khoản Admin, Quản lý tài khoản, Chatbot AI, và Thông báo.

Chương 2: Cơ sở lý thuyết và công nghệ sử dụng

Trình bày tổng quan và lý do lựa chọn các công nghệ nền tảng:

  • Giới thiệu chi tiết kiến trúc, ưu và nhược điểm của thư viện ReactJS trong việc xây dựng giao diện người dùng đơn trang linh hoạt.
  • Giới thiệu về framework Flutter, khả năng biên dịch đa nền tảng và quản lý trạng thái trên thiết bị di động.
  • Trình bày cơ sở lý thuyết về mô hình ngôn ngữ lớn (LLMs), cấu trúc mạng nơ-ron Transformer và kỹ thuật kết nối RAG.
  • Nguyên lý hoạt động của framework LangChain trong việc liên kết các thành phần mô hình ngôn ngữ.
  • Cơ chế truy vấn dữ liệu có cấu trúc sử dụng thư viện PandasAI kết hợp mô hình OpenAI ChatGPT: chuyển đổi câu hỏi ngôn ngữ tự nhiên thành câu lệnh truy vấn dữ liệu dạng DataFrame/SQL và trả về phản hồi chính xác.

Chương 3: Thiết kế hệ thống

Mô tả chi tiết kiến trúc thiết kế giao diện và luồng dữ liệu nghiệp vụ:

  • Thiết kế giao diện Admin: Bố cục trang đăng nhập quản trị, trang danh sách quản lý tài khoản người dùng, trang tạo tài khoản mới và trang cập nhật thông tin người dùng.
  • Thiết kế giao diện Web và Mobile: Thiết kế đồng bộ trải nghiệm người dùng trên cả hai nền tảng cho các màn hình: Đăng nhập, Đăng ký, Quên mật khẩu, Đổi mật khẩu, Trang chủ, Quản lý chi tiêu, Tạo kế hoạch theo tuần/ngày, Ghi chú trên Calendar, Bảng công việc Todolist, Giao diện đồng hồ Pomodoro và Cửa sổ Chatbot AI.
  • Thiết kế luồng hoạt động Chatbot: Xác định phạm vi câu hỏi tiếp nhận, sơ đồ luồng dữ liệu kết nối giữa client, backend API, PandasAI và cơ sở dữ liệu PostgreSQL.

Chương 4: Cài đặt chương trình và kiểm thử

Trình bày các bước triển khai mã nguồn và đánh giá chất lượng phần mềm:

  • Cài đặt môi trường: Cấu hình các gói phần mềm, cấu trúc thư mục phân tầng cho Backend (.NET), Frontend (ReactJS), Mobile (Flutter) và module Chatbot (Python/PandasAI/OpenAI API); kiểm tra API thông qua giao diện Swagger UI.
  • Thực hiện kiểm thử chức năng: Xây dựng và thực thi 24 ca kiểm thử chi tiết bao gồm các trường hợp dữ liệu hợp lệ, dữ liệu trống và dữ liệu ngoại lệ đối với từng phân hệ: xác thực, quản lý kế hoạch tài chính, quản lý ghi chú, thao tác thẻ todolist và khả năng phản hồi/sinh biểu đồ của chatbot.

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

Kết quả triển khai thực tế

Đồ án đã xây dựng hoàn chỉnh hệ thống ứng dụng quản lý chi tiêu đa nền tảng, tích hợp thành công mô hình ngôn ngữ lớn để khai thác dữ liệu:

  • Giao diện đa nền tảng hoàn chỉnh: Hệ thống Web App và Mobile App hoạt động đồng bộ, đáp ứng toàn bộ các yêu cầu nghiệp vụ cá nhân (quản lý kế hoạch ngân sách, ghi chú tích hợp lịch, bảng công việc Todolist, đồng hồ Pomodoro).
  • Phân hệ quản trị hiệu quả: Cung cấp đầy đủ công cụ cho Admin để theo dõi, lọc, cập nhật trạng thái và tạo mới người dùng trong cơ sở dữ liệu.
  • Tích hợp Chatbot AI thông minh: Triển khai thành công module kết nối PandasAI và OpenAI API, cho phép người dùng đặt câu hỏi bằng ngôn ngữ tự nhiên để tra cứu lịch sử tài chính và tự động sinh ảnh biểu đồ trực quan lưu trữ trên Firebase.
  • Kiểm thử nghiệm thu: Toàn bộ 24 kịch bản kiểm thử chức năng đều được thực hiện, ghi nhận kết quả xử lý chính xác theo đúng đặc tả luồng chính (Main Flow), luồng thay thế (Alternate Flow) và luồng ngoại lệ (Exception Flow).
Nhóm chức năng kiểm thử Số ca kiểm thử thực hiện Các trường hợp tiêu biểu đã xác minh
Đăng nhập & Đăng ký 08 Bỏ trống email/mật khẩu, email chưa tồn tại, mật khẩu không đúng, email trùng lặp, xác thực thành công.
Quản lý kế hoạch 02 Tạo kế hoạch với dữ liệu hợp lệ, cập nhật kế hoạch khi số tiền thực tế vượt mức dự kiến.
Quản lý ghi chú 04 Không chọn màu, thời gian bắt đầu lớn hơn kết thúc, tạo ghi chú hợp lệ, cập nhật ghi chú.
Quản lý Todolist 07 Không nhập tiêu đề cột/thẻ, ngày bắt đầu lớn hơn kết thúc, thêm và cập nhật cột/thẻ thành công.
Chatbot AI 02 Câu hỏi yêu cầu sinh biểu đồ trực quan, câu hỏi tra cứu dữ liệu quản lý chi tiêu thông thường.

Đóng góp của đề tài

  1. Đưa ra giải pháp kết hợp thực tiễn giữa phần mềm quản lý tài chính cá nhân với các công nghệ AI tạo sinh mới (LLMs, PandasAI, LangChain).
  2. Xây dựng quy trình chuyển đổi câu hỏi ngôn ngữ tự nhiên thành câu lệnh truy vấn dữ liệu trực tiếp trên cơ sở dữ liệu quan hệ PostgreSQL, giảm bớt sự phức tạp trong việc tra cứu số liệu tài chính của người dùng.
  3. Cung cấp một bộ công cụ hỗ trợ toàn diện cho sinh viên trong việc quản lý ngân sách sinh hoạt kết hợp quản lý thời gian và công việc học tập.

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

Hạn chế của hệ thống

  • Phụ thuộc vào dịch vụ bên thứ ba: Hoạt động của module Chatbot phụ thuộc vào kết nối API của OpenAI và đường truyền mạng; tốc độ phản hồi có thể bị ảnh hưởng bởi độ trễ từ dịch vụ ngoài.
  • Phạm vi xử lý ngôn ngữ tự nhiên: Chatbot chỉ phản hồi chính xác đối với các câu hỏi nằm trong phạm vi dữ liệu chi tiêu đã được mô hình hóa; khi gặp câu hỏi quá phức tạp hoặc nằm ngoài dữ liệu, hệ thống chỉ có thể trả về câu thông báo mặc định.
  • Chi phí vận hành API: Việc sử dụng mô hình ngôn ngữ lớn thương mại đòi hỏi chi phí cho các lượt gọi API truy vấn dữ liệu.

Hướng phát triển

  • Tối ưu hóa câu lệnh prompt và tinh chỉnh mô hình (Fine-tuning) để nâng cao độ chính xác và tốc độ phản hồi của trợ lý ảo.
  • Mở rộng phạm vi câu hỏi và khả năng phân tích nâng cao, cho phép chatbot đưa ra các lời khuyên tối ưu hóa ngân sách cá nhân mang tính dự báo.
  • Nghiên cứu tích hợp các mô hình ngôn ngữ lớn mã nguồn mở có thể chạy cục bộ hoặc tự host nhằm giảm thiểu chi phí API và tăng cường tính bảo mật dữ liệu nội bộ.

Giá trị tham khảo

Tài liệu khóa luận tốt nghiệp này mang lại giá trị tham khảo thiết thực cho các nhóm đối tượng:

  • Sinh viên ngành Công nghệ phần mềm và Công nghệ thông tin: Là tài liệu tham khảo chi tiết về quy trình công nghệ xây dựng một hệ thống đa nền tảng kết hợp giữa Backend .NET RESTful API, Frontend ReactJS và Mobile Flutter.
  • Người nghiên cứu ứng dụng LLM trong khai thác dữ liệu: Cung cấp thiết kế luồng xử lý thực tế trong việc tích hợp LangChain và PandasAI để truy vấn trực tiếp cơ sở dữ liệu quan hệ (PostgreSQL) và tự động tạo biểu đồ thống kê bằng ngôn ngữ tự nhiên.
  • Người phát triển ứng dụng quản lý cá nhân: Tham khảo cấu trúc mô hình hóa yêu cầu nghiệp vụ tích hợp nhiều tính năng: quản lý chi tiêu, lịch biểu ghi chú có cảnh báo (HangFire), bảng công việc (Todolist) và phương pháp quản lý thời gian Pomodoro.

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

1. Hệ thống sử dụng những công nghệ và thư viện nào để xây dựng tính năng Chatbot AI?
Hệ thống sử dụng mô hình ChatGPT 4.0 của OpenAI kết hợp cùng framework LangChain và thư viện PandasAI. Thư viện này có nhiệm vụ tiếp nhận câu hỏi bằng ngôn ngữ tự nhiên, sinh mã truy vấn tương ứng trên tập dữ liệu PostgreSQL và trả về kết quả dạng văn bản hoặc biểu đồ.

2. Quy trình đăng ký và kích hoạt tài khoản của người dùng diễn ra như thế nào?
Khi người dùng nhập đầy đủ thông tin trên form đăng ký, hệ thống lưu dữ liệu vào cơ sở dữ liệu và tự động gửi một mã xác thực OTP gồm 6 chữ số đến email của người dùng. Người dùng phải nhập chính xác mã OTP này tại trang xác thực để kích hoạt trạng thái tài khoản trước khi có thể đăng nhập.

3. Dữ liệu của hệ thống được lưu trữ và chuyển đổi qua những giai đoạn nào?
Trong giai đoạn đầu phát triển, hệ thống dự kiến sử dụng MongoDB, sau đó được chuyển đổi hoàn toàn sang cơ sở dữ liệu quan hệ PostgreSQL. Đối với dữ liệu thử nghiệm của chatbot, nhóm phát triển đã đi từ việc nạp dữ liệu qua file Excel (.xlsx), chuyển sang định dạng CSV (.csv) và cuối cùng là kết nối truy vấn trực tiếp từ PostgreSQL.

4. Chức năng thông báo tự động cho các ghi chú được hiện thực bằng cơ chế nào?
Hệ thống sử dụng thư viện HangFire trên nền tảng .NET. Khi người dùng tạo hoặc cập nhật một ghi chú có mốc thời gian cụ thể, HangFire sẽ thiết lập tác vụ lập lịch ngầm. Khi đến đúng thời gian đã hẹn, HangFire thực thi tác vụ và phát thông báo đến người dùng.

5. Chatbot sẽ xử lý như thế nào khi nhận được câu hỏi không tìm thấy câu trả lời hoặc nằm ngoài phạm vi dữ liệu?
Trong trường hợp hệ thống không tìm được dữ liệu phù hợp hoặc không thể biên dịch câu hỏi thành mã truy vấn, Chatbot sẽ trả về câu phản hồi mặc định: "Sorry, I can't answer this question right now" và cho phép người dùng tiếp tục đặt câu hỏi khác.


Kết luận

Khóa luận tốt nghiệp "Xây dựng ứng dụng web quản lý chi tiêu, khai thác dữ liệu sử dụng mô hình ngôn ngữ lớn" của sinh viên Phan Thái Bảo và Trương Thuận Hòa đã hoàn thành trọn vẹn các mục tiêu nghiên cứu và kỹ thuật đề ra. Hệ thống kết hợp thành công kiến trúc phần mềm đa nền tảng (.NET, ReactJS, Flutter, PostgreSQL) với các công nghệ AI tiên tiến (OpenAI API, PandasAI, LangChain) để tạo nên một giải pháp quản lý tài chính cá nhân trực quan, đa tiện ích. Các kết quả kiểm thử chức năng cho thấy ứng dụng vận hành ổn định, mang tính ứng dụng thực tiễn cao và cung cấp tài liệu tham khảo có giá trị trong việc tích hợp mô hình ngôn ngữ lớn vào các hệ thống thông tin quản lý.