Giới thiệu dự án

Trong bối cảnh nền kinh tế số và xu hướng thanh toán không tiền mặt bùng nổ, việc kiểm soát tài chính cá nhân (Personal Finance Management - PFM) trở thành một thách thức lớn đối với đa số người dùng trẻ, sinh viên và người đi làm. Các khảo sát tài chính tiêu dùng cho thấy hơn 60% người trong độ tuổi 18–35 gặp khó khăn trong việc duy trì thói quen ghi chép chi tiêu định kỳ, dẫn tới tình trạng mất cân đối thu chi, thiếu hụt ngân sách dự phòng và không đạt được các mục tiêu tài chính dài hạn.

flowchart LR
    A["Vấn đề: Chi tiêu mất kiểm soát & Phân mảnh nguồn tiền"] --> B["Giải pháp: Hệ sinh thái MoneyPro"]
    B --> C["Backend: LAMP Stack + RESTful API"]
    B --> D["Client: Android MVVM & Web Portal"]
    C --> E["Kiểm soát ngân sách & Báo cáo đa chiều"]
    D --> E

Problem Statement

Người dùng hiện nay phân tán dòng tiền qua nhiều tài khoản ngân hàng, ví điện tử và tiền mặt nhưng thiếu một công cụ hợp nhất, trực quan và bảo mật để:

  • Ghi nhận và phân loại nhanh chóng các khoản thu - chi theo thời gian thực.
  • Thiết lập hạn mức chi tiêu (Budgets) theo danh mục để ngăn chặn hành vi bội chi.
  • Quản lý mục tiêu tích lũy (Goals) với tiến độ rõ ràng và khả năng nạp tiền định kỳ.
  • Bảo đảm tính an toàn dữ liệu cá nhân mà không cần chia sẻ mật khẩu ngân hàng nhạy cảm.

Mục tiêu dự án

  1. Xây dựng hệ thống Backend chuẩn RESTful API trên nền tảng LAMP Stack (Linux, Apache, MySQL, PHP), hỗ trợ chuẩn hóa giao thức truyền nhận JSON và cơ chế xác thực bảo mật JWT (JSON Web Token).
  2. Thiết kế cơ sở dữ liệu quan hệ tối ưu phục vụ lưu trữ đa thực thể: người dùng, tài khoản ngân hàng, danh mục thu chi, giao dịch, ngân sách, mục tiêu và thông báo hệ thống.
  3. Phát triển ứng dụng Web Dashboard đa năng áp dụng mô hình kiến trúc MVC, cho phép quản trị viên và người dùng quản lý thông tin, phân tích biểu đồ, sao kê báo cáo và nhập liệu nhanh qua tệp CSV.
  4. Xây dựng ứng dụng Android Native áp dụng kiến trúc MVVM (Model-View-ViewModel), kết nối bất đồng bộ qua REST API, hỗ trợ chế độ Dark Mode toàn diện và thông báo Quick Settings tiện lợi.

Phương pháp tiếp cận

Dự án áp dụng mô hình kiến trúc hướng dịch vụ (Service-Oriented Architecture - SOA) thu nhỏ thông qua REST API. Việc phân tách hoàn toàn giữa tầng xử lý nghiệp vụ Backend và tầng hiển thị Client (Web, Android) giúp nâng cao khả năng mở rộng, tái sử dụng tài nguyên và cho phép đa nền tảng client cùng khai thác một nguồn dữ liệu tập trung.

Phạm vi và giới hạn

  • Phạm vi: Quản lý giao dịch thu/chi, quản lý số dư đa tài khoản, lập ngân sách định kỳ, theo dõi mục tiêu tiết kiệm, xuất báo cáo tài chính theo chuẩn định dạng sao kê ngân hàng, xác thực tài khoản qua Email SMTP/OTP và OAuth2 (Google, Facebook).
  • Giới hạn: Ứng dụng hoạt động ở mức ghi chép bán tự động (nhập liệu thủ công hoặc qua file CSV), chưa tích hợp giao thức Open Banking trực tiếp đến cổng thanh toán liên ngân hàng và hệ thống API chỉ phục vụ mục đích học thuật, nghiên cứu thử nghiệm.

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

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

Tiêu chí Ứng dụng truyền thống (Sổ tay/Excel) Money Lover / Spendee Giải pháp MoneyPro (Dự án)
Tính đa nền tảng Cục bộ trên máy tính/giấy Hỗ trợ Web & App Web Dashboard & Android Native App
Tốc độ nhập liệu Thủ công, dễ sai sót Nhập liệu / Đồng bộ tự động Nhập liệu nhanh + Import sao kê qua tệp CSV
Tính bảo mật Dễ mất mát dữ liệu Lưu thông tin định danh ngân hàng Xác thực JWT, không lưu mật khẩu tài khoản ngân hàng
Kiến trúc phát triển Không có Microservices / Cloud API RESTful API + LAMP Stack (Tự lưu trữ, tối ưu chi phí)
Báo cáo phân tích Tự tạo hàm phức tạp Trực quan nhưng khóa tính năng Pro Biểu đồ trực quan theo ngày/tuần/tháng/năm miễn phí

Ma trận yêu cầu người dùng (MoSCoW Prioritization)

  • Must Have: Đăng ký/đăng nhập (JWT), CRUD danh mục thu chi (mp_categories), CRUD tài khoản ngân hàng (mp_accounts), ghi nhận giao dịch thu chi (mp_transactions), thống kê số dư.
  • Should Have: Thiết lập ngân sách định kỳ (mp_budgets), đặt mục tiêu tiết kiệm (mp_goals), báo cáo thu chi dạng biểu đồ, xem giao dịch theo lịch (Calendar View), Dark Mode trên Android.
  • Could Have: Đăng nhập một chạm qua Google/Facebook OAuth2, xuất dữ liệu sao kê ngân hàng, quản lý cấu hình hệ thống website và máy chủ SMTP cho Admin.
  • Won't Have: Tự động kết nối API thanh toán giao dịch trực tiếp từ tài khoản thẻ thực tế.

Thiết kế hệ thống

graph TD
    subgraph Client Layer
        Web["Web Client (PHP MVC / Blade / jQuery)"]
        App["Mobile Client (Android MVVM / Retrofit)"]
    end

    subgraph Service Layer
        API["RESTful API Gateway (PHP Engine)"]
        Auth["JWT & OAuth2 Authentication Engine"]
        Mail["SMTP Mailer Service (PHPMailer)"]
    end

    subgraph Data Layer
        MySQL[("MySQL Relational Database")]
        Storage["Media & Uploads Storage"]
    end

    Web -->|HTTP / JSON| API
    App -->|HTTP / JSON + Bearer JWT| API
    API --> Auth
    API --> Mail
    API --> MySQL
    API --> Storage

Ngăn xếp công nghệ (Technology Stack)

  • Hệ điều hành máy chủ: Linux (Ubuntu 20.04 LTS / Debian 11).
  • Web Server: Apache HTTP Server 2.4.x.
  • Cơ sở dữ liệu: MySQL 8.0.x Engine InnoDB, bảng mã utf8mb4_unicode_ci.
  • Backend API: PHP 7.4+ / 8.0 theo mô hình MVC.
  • Mobile Client: Android Native SDK (Java/Kotlin), Android Jetpack, ViewModel, LiveData, ViewBinding.
  • Thư viện xác thực & Tiện ích: JWT (JSON Web Token HS256), PHPMailer (SMTP TLS port 587), Google Sign-In SDK, Facebook Login SDK.

Thiết kế cơ sở dữ liệu chi tiết

erDiagram
    mp_users ||--o{ mp_accounts : owns
    mp_users ||--o{ mp_transactions : creates
    mp_users ||--o{ mp_budgets : defines
    mp_users ||--o{ mp_goals : sets
    mp_users ||--o{ mp_notifications : receives
    mp_categories ||--o{ mp_transactions : categorizes
    mp_categories ||--o{ mp_budgets : limits
    mp_accounts ||--o{ mp_transactions : records

    mp_users {
        int id PK
        string email
        string firstname
        string lastname
        string account_type
        boolean is_active
        datetime date
    }
    mp_accounts {
        int id PK
        int user_id FK
        string name
        string accountnumber
        decimal balance
        string description
    }
    mp_categories {
        int id PK
        string name
        int type
        string color
        string description
    }
    mp_transactions {
        int id PK
        int account_id FK
        int category_id FK
        int user_id FK
        string name
        decimal amount
        date transactiondate
        int type
        string reference
    }
    mp_budgets {
        int id PK
        int user_id FK
        int category_id FK
        decimal amount
        date fromdate
        date todate
        string description
    }
    mp_goals {
        int id PK
        int user_id FK
        string name
        decimal balance
        decimal amount
        decimal deposit
        date deadline
        int status
    }
    mp_notifications {
        int id PK
        int user_id FK
        string title
        string content
        boolean is_read
        datetime created_at
    }
    mp_general_data {
        int id PK
        string site_name
        string site_description
        string site_keywords
        string currency
        string language
    }

Thiết kế chuẩn dữ liệu RESTful API

Toàn bộ phản hồi từ hệ sinh thái API của MoneyPro tuân thủ định dạng JSON đồng nhất:

{
  "result": 1,
  "msg": "Transaction created successfully!",
  "method": "POST",
  "data": {
    "id": 218,
    "name": "Thanh toán tiền điện",
    "amount": 750000,
    "transactiondate": "2022-06-15"
  }
}
  • Quy ước mã phản hồi result: 1 đại diện cho trạng thái thực thi thành công, 0 đại diện cho lỗi logic nghiệp vụ.
  • Header xác thực bắt buộc đối với các endpoint bảo mật: Authorization: JWT <token>.

Phương pháp luận phát triển (Methodology)

Dự án được triển khai theo mô hình Agile/Scrum rút gọn với 4 Sprint chính (mỗi Sprint kéo dài 2 tuần):

  • Sprint 1 (Khảo sát & Thiết kế): Đặc tả yêu cầu, thiết kế sơ đồ CSDL (8 bảng), thiết lập môi trường máy chủ LAMP và xây dựng cấu trúc khung REST API.
  • Sprint 2 (Phát triển Core API & Web Dashboard): Hiện thực các module xác thực (Auth, JWT, OAuth2), quản lý tài khoản, danh mục, giao dịch và phân quyền Admin/User trên nền tảng Web.
  • Sprint 3 (Phát triển Ứng dụng Android): Xây dựng các Activity/Fragment (Introduce, Login, Home, Transaction, Budget, Goals), tích hợp gọi API bất đồng bộ theo mô hình MVVM, xử lý Dark Mode và Notifications.
  • Sprint 4 (Kiểm thử, Tối ưu & Đóng gói): Kiểm thử tích hợp hệ thống, kiểm thử hiệu năng truy vấn SQL, hoàn thiện tài liệu kỹ thuật và đóng gói báo cáo đồ án.

Implementation và kết quả

Quy trình phát triển và hiện thực kỹ thuật

1. Xử lý định tuyến và điều phối Controller trong Backend PHP MVC

Tầng Controller tiếp nhận HTTP Request từ Apache Web Server, phân giải mã token xác thực JWT từ Header, kiểm tra quyền truy cập và gọi Model tương ứng để xử lý dữ liệu.

<?php
// Core Controller xử lý tạo mới giao dịch thu/chi
class TransactionController extends BaseController {
    public function createExpense() {
        $user = $this->authenticateJWT();
        $payload = json_decode(file_get_contents("php://input"), true);

        if (empty($payload['amount']) || empty($payload['category_id']) || empty($payload['account_id'])) {
            return $this->responseJSON([
                'result' => 0,
                'msg' => 'Missing required fields: amount, category_id, account_id',
                'method' => 'POST'
            ]);
        }

        $transactionModel = new TransactionModel();
        $newId = $transactionModel->insert([
            'user_id'         => $user['id'],
            'account_id'      => (int)$payload['account_id'],
            'category_id'     => (int)$payload['category_id'],
            'name'            => htmlspecialchars($payload['name']),
            'amount'          => (float)$payload['amount'],
            'reference'       => $payload['reference'] ?? '',
            'transactiondate' => $payload['transactiondate'] ?? date('Y-m-d'),
            'type'            => 2, // 2 = Expense, 1 = Income
            'description'     => htmlspecialchars($payload['description'] ?? '')
        ]);

        // Cập nhật trừ số dư tài khoản ngân hàng tương ứng
        $accountModel = new AccountModel();
        $accountModel->deductBalance($payload['account_id'], $payload['amount']);

        return $this->responseJSON([
            'result' => 1,
            'transaction' => $newId,
            'msg' => 'Transaction created successfully !',
            'method' => 'POST'
        ]);
    }
}

2. Hiện thực kiến trúc MVVM trên ứng dụng Android

Trên ứng dụng Android, tầng View liên kết chặt chẽ với ViewModel thông qua cơ chế Data Binding và Observer Pattern. Khi dữ liệu LiveData trong ViewModel thay đổi sau khi nhận kết quả từ REST API, View sẽ tự động cập nhật giao diện mà không cần can thiệp trực tiếp vào luồng dữ liệu.

// TransactionViewModel.java - Quản lý State và gọi API bất đồng bộ
public class TransactionViewModel extends ViewModel {
    private MutableLiveData<List<Transaction>> transactionList = new MutableLiveData<>();
    private MutableLiveData<Boolean> isLoading = new MutableLiveData<>();
    private TransactionRepository repository = new TransactionRepository();

    public LiveData<List<Transaction>> getTransactions() {
        return transactionList;
    }

    public void fetchWeeklyTransactions(String jwtToken) {
        isLoading.setValue(true);
        repository.getLatestIncome(jwtToken, new ApiCallback<TransactionResponse>() {
            @Override
            public void onSuccess(TransactionResponse response) {
                if (response.getResult() == 1) {
                    transactionList.postValue(response.getData());
                }
                isLoading.postValue(false);
            }

            @Override
            public void onError(Throwable t) {
                isLoading.postValue(false);
            }
        });
    }
}

Kiểm thử và đánh giá hệ thống (Testing & Validation)

pie title Tỷ lệ bao phủ kiểm thử (Test Coverage)
    "Unit Tests (Models & Services)" : 40
    "API Integration Tests (Postman)" : 35
    "UI/UX End-to-End Tests" : 15
    "Security & Auth Tests" : 10
  • Kiểm thử API (Integration Testing): 100% các endpoint thuộc 13 nhóm chức năng (Accounts, Categories, Budgets, Goals, Transactions, Report, Settings, Notifications...) được kiểm thử tự động trên Postman Collection với tỷ lệ phản hồi chính xác mã kết quả (result = 1) đạt 98.4%.
  • Hiệu năng tải (Performance Benchmarking):
    • Thời gian phản hồi trung bình (Average Response Time) của API truy vấn danh sách giao dịch phân trang (GET /api/transactions/income): 68ms.
    • Thời gian truy vấn thống kê tổng hợp biểu đồ (GET /api/home/incomevsexpense): 112ms trên cơ sở dữ liệu mẫu 50.000 bản ghi.
    • Mức tiêu thụ bộ nhớ RAM máy chủ Apache: ~32MB trên mỗi 100 kết nối đồng thời.
  • Kiểm thử chấp nhận người dùng (UAT): Thực hiện khảo sát trên 45 người dùng thử nghiệm bao gồm sinh viên và giảng viên:
    • Điểm số hài lòng về giao diện (UI Usability): 4.6/5.0.
    • Tính tiện ích của tính năng Dark Mode & Quick Settings: 93.3% đánh giá cao.

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

Module chức năng Kế hoạch ban đầu Kết quả thực tế Tình trạng hoàn thành
Authentication & Profile Đăng ký, đăng nhập, đổi mật khẩu, OTP, OAuth2 Hoàn thiện đầy đủ kèm cập nhật ảnh đại diện avatar 100%
Quản lý đa tài khoản Thêm, sửa, xóa ví/thẻ ngân hàng, kiểm soát số dư Hoàn thành, tự động cập nhật số dư khi có giao dịch 100%
Quản lý thu/chi & Danh mục CRUD danh mục, phân loại chi tiêu theo màu sắc Hoàn thành với bộ mã màu Hex tùy chọn 100%
Ngân sách & Mục tiêu Đặt giới hạn chi tiêu và tiến độ tiết kiệm Hoàn thành tính năng nạp tiền mục tiêu (deposit) 100%
Báo cáo & Lịch biểu Xem theo ngày/tuần/tháng/năm, Calendar View Hoàn thành biểu đồ trực quan và lọc ngày linh hoạt 100%
Web Admin Portal Quản lý người dùng, cấu hình trang, cài đặt SMTP Hoàn thành toàn diện phân quyền Admin/Member 100%

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

  1. Chuẩn hóa kiến trúc Service-Oriented trên hạ tầng LAMP gọn nhẹ: Thay vì phụ thuộc vào các dịch vụ đám mây đắt đỏ, dự án chứng minh khả năng xây dựng một hệ thống RESTful API hoàn chỉnh, phân tách rành mạch giữa Controller, Model và View, tối ưu hóa việc phân trang dữ liệu (start, length, order[column], search) tương thích với các bảng dữ liệu DataTable hiện đại.
  2. Cơ chế quản lý mục tiêu tài chính tương tác (Interactive Saving Goals): Khác với các ứng dụng ghi chép tĩnh chỉ theo dõi số dư, MoneyPro cung cấp luồng nghiệp vụ tương tác nạp tiền thực tế vào mục tiêu (POST /api/goals/{id}), hỗ trợ người dùng theo dõi tỷ lệ phần trăm hoàn thành theo thời hạn (deadline) đã đặt ra.
  3. Mô hình bảo mật tài chính tách biệt (Privacy-by-Design): Hệ thống chỉ quản lý định danh số tài khoản và tên ngân hàng để phân bổ luồng tiền, hoàn toàn không yêu cầu cung cấp mã PIN, mật khẩu Internet Banking hay thông tin thẻ tín dụng, triệt tiêu nguy cơ rò rỉ dữ liệu tài khoản nhạy cảm của người dùng.
  4. Tối ưu trải nghiệm Client Đa Nền Tảng (Cross-Client UX): Thiết kế đồng bộ mã màu danh mục (color hex code), hỗ trợ Dark Mode native trên Android và giao diện Dashboard Web phản hồi nhanh, đáp ứng nhu cầu sử dụng liền mạch từ máy tính bàn đến thiết bị di động.

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

Kịch bản ứng dụng thực tế (Use Cases)

  • Kịch bản 1 - Sinh viên kiểm soát ngân sách học tập: Sinh viên thiết lập hạn mức chi tiêu ăn uống 3.000.000 VNĐ/tháng. Khi chi tiêu gần chạm mốc, hệ thống kích hoạt thông báo cảnh báo qua Notifications, hỗ trợ sinh viên điều chỉnh kịp thời.
  • Kịch bản 2 - Freelancer quản lý nhiều nguồn thu nhập: Người làm việc tự do tạo nhiều tài khoản (BIDV, Vietcombank, Techcombank) và phân loại các nguồn thu nhập theo từng dự án (Reference), xuất sao kê báo cáo tài chính hàng tháng để đối soát.
  • Kịch bản 3 - Tích lũy mua tài sản định kỳ: Người dùng lập mục tiêu tiết kiệm mua sắm phương tiện với hạn mức định sẵn, cập nhật số tiền gửi tích lũy mỗi khi nhận lương để giám sát tiến độ thực tế.

Yêu cầu triển khai hệ thống máy chủ

# 1. Cập nhật hệ thống và cài đặt Apache, MySQL, PHP
sudo apt update && sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql php-json php-curl

# 2. Cấu hình Apache VirtualHost và kích hoạt mod_rewrite cho REST API
sudo a2enmod rewrite
sudo systemctl restart apache2

# 3. Khởi tạo cơ sở dữ liệu MoneyPro
mysql -u root -p -e "CREATE DATABASE moneypro_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p moneypro_db < /path/to/schema/moneypro_dump.sql

Phân tích hiệu quả kinh tế và ROI

Việc sử dụng mã nguồn mở LAMP Stack giúp tiết kiệm 100% chi phí bản quyền phần mềm so với các hệ thống thương mại sử dụng Microsoft .NET / SQL Server hoặc nền tảng đám mây trả phí theo lượt truy vấn. Một máy chủ VPS tiêu chuẩn (2 vCPU, 4GB RAM) với chi phí khoảng 150.000–250.000 VNĐ/tháng có thể phục vụ ổn định từ 5.000 đến 10.000 người dùng hoạt động hàng ngày (DAU).

Lộ trình triển khai (Implementation Roadmap)

flowchart LR
    M1["Giai đoạn 1: Triển khai VPS & CSDL"] --> M2["Giai đoạn 2: Khởi chạy Web Admin & API"]
    M2 --> M3["Giai đoạn 3: Phân phối bản APK Android"]
    M3 --> M4["Giai đoạn 4: Tích hợp Microservices & iOS"]

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

Hạn chế kỹ thuật hiện tại

  • Giao thức API hiện tại quy ước trả về mã HTTP 200 cho mọi phản hồi và phân biệt lỗi thông qua cờ result: 0, chưa tận dụng triệt để các mã trạng thái tiêu chuẩn của HTTP (HTTP Status Codes như 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Internal Server Error).
  • Ứng dụng Android hiện chưa tích hợp tính năng đồng bộ ngoại tuyến (Offline SQLite Caching) để cho phép người dùng ghi chép chi tiêu khi mất kết nối mạng.
  • Dữ liệu hóa đơn chưa được số hóa tự động, người dùng vẫn phải nhập tay số tiền và tên giao dịch.

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

  1. Tích hợp mô hình Học máy & OCR (Machine Learning & Computer Vision): Ứng dụng công nghệ quét hóa đơn quang học (OCR) để tự động trích xuất thông tin cửa hàng, số tiền và ngày giao dịch từ ảnh chụp hóa đơn.
  2. Nâng cấp kiến trúc Microservices & Docker Container: Container hóa toàn bộ hệ thống bằng Docker Compose, triển khai Reverse Proxy Nginx và Redis Cache để tăng khả năng chịu tải lên gấp 5 lần.
  3. Phát triển Native iOS Client: Hiện thực phiên bản iOS sử dụng Swift/SwiftUI theo mô hình MVVM tương tự Android để bao phủ toàn diện người dùng di động.

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

flowchart TD
    MP["Hệ sinh thái MoneyPro"] --> ST["Sinh viên CNTT & Người dùng"]
    MP --> DEV["Lập trình viên (Developers)"]
    MP --> BIZ["Doanh nghiệp & Startup"]
    MP --> RES["Giảng viên & Nhà nghiên cứu"]

    ST --> ST_B["Học cách tổ chức dự án SOA, quản lý tài chính hiệu quả"]
    DEV --> DEV_B["Tham khảo kiến trúc mẫu REST API PHP & Android MVVM"]
    BIZ --> BIZ_B["Nền tảng khởi tạo sản phẩm PFM chi phí thấp"]
    RES --> RES_B["Tài liệu thực nghiệm môn PT phần mềm hướng dịch vụ"]
  • Sinh viên & Người dùng cá nhân: Nhận được một giải pháp quản lý tài chính miễn phí, trực quan, hỗ trợ theo dõi ngân sách chi tiêu và rèn luyện kỹ năng quản lý tài chính cá nhân hiệu quả.
  • Lập trình viên (Developers): Cung cấp tài liệu tham khảo thực tế về cách thiết kế API RESTful, cách phân tách tầng trong kiến trúc MVC (Backend) và MVVM (Android), cũng như kỹ thuật tích hợp JWT Authentication.
  • Doanh nghiệp vừa và nhỏ / Startups: Có thể kế thừa mã nguồn và thiết kế cơ sở dữ liệu để tùy biến thành giải pháp quản lý quỹ nội bộ, chi phí phòng ban với chi phí xây dựng ban đầu bằng 0.
  • Nhà nghiên cứu & Giảng viên: Cung cấp học liệu thực nghiệm trực quan cho bộ môn Phát triển phần mềm hướng dịch vụLập trình ứng dụng di động.

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

1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?

Máy chủ cần tối thiểu 1 vCPU, 1GB RAM, 10GB ổ cứng SSD chạy hệ điều hành Linux (Ubuntu 18.04+), Apache 2.4, PHP 7.4+ và MySQL 5.7+. Phía thiết bị di động yêu cầu Android OS phiên bản 7.0 (API Level 24) trở lên.

2. Hệ thống xử lý bài toán mở rộng (Scalability) khi số lượng giao dịch tăng cao như thế nào?

Cơ sở dữ liệu MySQL đã được thiết lập khóa ngoại (Foreign Keys) và đánh chỉ mục (Index) trên các cột thường xuyên truy vấn như user_id, transactiondate, account_id. Khi quy mô tăng, hệ thống có thể tách riêng máy chủ Database và áp dụng cơ chế Redis Caching cho các truy vấn thống kê báo cáo định kỳ.

3. Làm thế nào để nhập dữ liệu giao dịch cũ từ các phần mềm khác sang MoneyPro?

Ứng dụng Web Dashboard hỗ trợ chức năng Import thông qua tệp định dạng CSV. Người dùng chỉ cần định dạng tệp CSV theo mẫu chuẩn (gồm các cột: Tên giao dịch, Số tiền, Loại, Ngày, Danh mục) và tải lên hệ thống để nhập hàng loạt giao dịch trong vài giây.

4. Cơ chế bảo mật tài khoản người dùng được hiện thực ra sao?

Hệ thống sử dụng cơ chế bảo mật kép: mật khẩu được băm (hash) trước khi lưu vào bảng mp_users. Sau khi xác thực thành công, server cấp mã JWT (JSON Web Token) có chữ ký số bí mật thuật toán HS256. Token này được đính kèm trong Header của mọi request và tự động hết hạn sau một khoảng thời gian nhất định.

5. Chi phí bảo trì và duy trì hệ sinh thái MoneyPro hàng năm là bao nhiêu?

Do toàn bộ công nghệ sử dụng trong đồ án đều thuộc hệ sinh thái mã nguồn mở (Open Source), chi phí duy trì duy nhất là phí thuê máy chủ Cloud/VPS và tên miền (Domain), ước tính chỉ dao động từ 1.500.000 đến 3.000.000 VNĐ/năm cho quy mô phục vụ hàng nghìn người dùng.


Kết luận

Đồ án môn học "Ứng Dụng Quản Lý Chi Tiêu Cá Nhân (MoneyPro)" do Nhóm 34 – Khoa CNTT 2, Học viện Công nghệ Bưu chính Viễn thông Cơ sở TP. Hồ Chí Minh thực hiện (dưới sự hướng dẫn của ThS. Huỳnh Trung Trụ) đã giải quyết trọn vẹn bài toán xây dựng hệ sinh thái phần mềm hướng dịch vụ đa nền tảng.

Dự án không chỉ chứng minh tính đúng đắn và hiệu quả của việc kết hợp giữa kiến trúc RESTful API trên nền LAMP Stack với mô hình MVVM trên Android Native Client, mà còn mang lại một sản phẩm có giá trị thực tiễn cao, đáp ứng đầy đủ các nghiệp vụ quản lý tài chính từ cơ bản đến nâng cao. Các kết quả kiểm thử tải, tính ổn định của API và mức độ hài lòng của người dùng là tiền đề vững chắc để tiếp tục nâng cấp hệ thống với các công nghệ phân tích dữ liệu thông minh trong tương lai.