Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và xu hướng làm việc từ xa (remote/hybrid work) phát triển mạnh mẽ sau đại dịch COVID-19, việc quản lý khối lượng công việc, điều phối dự án và duy trì sự cộng tác nhóm liền mạch đã trở thành yếu tố sống còn đối với mọi tổ chức và cá nhân. Theo báo cáo từ McKinsey & Company, nhân sự văn phòng dành tới 28% thời gian mỗi tuần chỉ để tìm kiếm thông tin và điều phối công việc giữa các ứng dụng phân mảnh. Tình trạng chuyển đổi qua lại giữa quá nhiều nền tảng độc lập (context-switching) làm giảm tới 40% hiệu suất làm việc thực tế.

Khóa luận tốt nghiệp "Xây dựng Website Quản lý Công việc" (Tên ứng dụng: Tasma) được thực hiện bởi sinh viên Bùi Như Phước (MSSV: 19522052) và Nguyễn Tấn Thành (MSSV: 19522239), dưới sự hướng dẫn của ThS. Trần Thị Hồng Yến tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM (Khoa Công nghệ Phần mềm, 2023). Đề tài tập trung giải quyết bài toán cốt lõi: loại bỏ sự phân mảnh công cụ quản trị bằng cách xây dựng một nền tảng quản lý dự án hợp nhất, trực quan, tích hợp giao tiếp thời gian thực, phương pháp tối ưu hóa năng suất cá nhân Pomodoro và trí tuệ nhân tạo (AI Assistant).

+-----------------------------------------------------------------------------+
|                               TASMA ECOSYSTEM                               |
+-----------------------------------------------------------------------------+
|  [Project / Task Management] <--> [Real-time Chat] <--> [AI Support Chatbot]|
|  [Interactive Dashboard]     <--> [Calendar View]  <--> [Pomodoro Timer]   |
+-----------------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng hệ thống quản lý công việc và dự án toàn diện: Cho phép khởi tạo, phân công, gắn nhãn độ ưu tiên, thiết lập deadline và theo dõi trạng thái nhiệm vụ qua giao diện trực quan.
  2. Tích hợp kênh giao tiếp thời gian thực (Real-time Communication): Xây dựng hệ thống phòng chat nhóm và tin nhắn trực tiếp không phụ thuộc vào ứng dụng thứ ba.
  3. Nâng cao năng suất làm việc cá nhân: Tích hợp phương pháp quản lý thời gian Pomodoro đi kèm danh sách việc cần làm (Tasma Todo).
  4. Tích hợp trợ lý trí tuệ nhân tạo (AI Support Chatbot): Tận dụng công nghệ ngôn ngữ lớn để hỗ trợ giải đáp, gợi ý lập kế hoạch và hướng dẫn người dùng trực tiếp trên hệ thống.
  5. Đảm bảo hiệu năng và tính sẵn sàng cao: Tối ưu hóa thời gian phản hồi giao diện và API dưới $1000\text{ ms}$, vận hành ổn định trên đa nền tảng web.

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

  • Phạm vi chức năng: Quản lý tài khoản (Authentication/Authorization), quản lý dự án (Project Management), quản lý công việc (Task Tracking), lập lịch biểu (Calendar), thống kê trực quan (Charts), nhắn tin nhóm (Group Chat) và chatbot thông minh (AI Chatbot).
  • Phạm vi triển khai: Ứng dụng Web Responsive tương thích trên các trình duyệt tiêu chuẩn (Google Chrome, Mozilla Firefox, Microsoft Edge, Safari) chạy trên hệ điều hành Windows, macOS và Linux.
  • Giới hạn: Hệ thống chưa cung cấp ứng dụng Native trên thiết bị di động (iOS/Android) và chưa hỗ trợ gọi thoại/video trực tiếp (WebRTC).

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

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

Khảo sát các giải pháp quản lý công việc hàng đầu hiện nay cho thấy bức tranh phân mảnh rõ nét:

Tiêu chí Trello Jira Pomofocus Tasma (Hệ thống đề xuất)
Mô hình triển khai Kanban Board Agile / Scrum / Kanban Single-page Timer Kanban / List / Calendar
Giao diện người dùng Đơn giản, trực quan Phức tạp, độ dốc học tập cao Rất đơn giản Trực quan, hiện đại, dễ tiếp cận
Giao tiếp nhóm tích hợp Không có (phụ thuộc Slack/Teams) Chỉ bình luận trên Ticket Không có Tích hợp Group Chat thời gian thực
Quản trị năng suất Plugin trả phí (Power-Ups) Không hỗ trợ Đồng hồ Pomodoro độc lập Tích hợp Pomodoro + Tasma Todo
Hỗ trợ AI thông minh Tích hợp hạn chế qua Add-on Jira Automation / Atlassian Intelligence Không có OpenAI Chatbot tích hợp trực tiếp
Chi phí bản quyền $5 - $17.5/user/tháng $7.75 - $15.25/user/tháng Miễn phí (tính năng hạn chế) Mã nguồn mở, tiết kiệm 100% SaaS fee

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

  • Must Have (Bắt buộc): Xác thực người dùng (JWT), CRUD dự án và công việc, phân công nhiệm vụ, cập nhật trạng thái kéo-thả, lọc và tìm kiếm dữ liệu.
  • Should Have (Nên có): Nhắn tin nhóm thời gian thực qua Firebase, đồng hồ Pomodoro kết hợp danh sách công việc, thống kê tiến độ qua biểu đồ ChartJS, xem lịch hạn chót (Calendar).
  • Could Have (Có thể có): Tích hợp trợ lý AI giải đáp thắc mắc và gợi ý công việc qua OpenAI API, thông báo email qua EmailJS.
  • Won't Have (Chưa có trong giai đoạn này): Video call nội bộ, tích hợp cổng thanh toán trực tuyến, Mobile Native App.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 lớp phân tầng kết hợp mô hình cơ sở dữ liệu lai (Hybrid Database Architecture):

+-------------------------------------------------------------------+
|                        PRESENTATION LAYER                         |
|      ReactJS 18 + Ant Design 5 + ChartJS 4 + Realtime Listener   |
+---------------------------------+---------------------------------+
                                  | HTTP / RESTful API & WebSocket
+---------------------------------v---------------------------------+
|                         APPLICATION LAYER                         |
|   NestJS Framework (TypeScript) + Firebase Admin + OpenAI Engine  |
+-------------------+-------------------------------+---------------+
                    |                               |
        SQL Queries |                   NoSQL Sync  |
+-------------------v-----------+   +---------------v---------------+
|        RELATIONAL DATA        |   |      REAL-TIME DATA STORE     |
|           MySQL 8.0           |   | Google Firebase Realtime DB   |
| (Users, Projects, Tasks, Logs)|   | (Chat Rooms, Instant Messages)|
+-------------------------------+   +-------------------------------+

Bảng công nghệ chi tiết

Tầng hệ thống Công nghệ Phiên bản Vai trò kỹ thuật
Client-side ReactJS 18.2.0 Xây dựng Single Page Application (SPA), quản lý Virtual DOM
UI Toolkit Ant Design 5.6.0 Hệ thống Design System đồng nhất, tối ưu trải nghiệm UI/UX
Data Viz Chart.js 4.3.0 Vẽ biểu đồ thống kê phân bổ nhiệm vụ và tiến độ dự án
Server-side NestJS 9.4.0 Backend Framework trên nền TypeScript, áp dụng kiến trúc Module và nguyên lý SOLID
RDBMS MySQL 8.0.33 Quản lý dữ liệu quan hệ có cấu trúc với tính toàn vẹn giao dịch (ACID)
NoSQL / Realtime Firebase Realtime DB v9 SDK Đồng bộ tin nhắn tức thời và trạng thái phòng chat dưới 100ms
AI Integration OpenAI API GPT-3 / 3.5 Xử lý ngôn ngữ tự nhiên, đóng vai trò trợ lý dự án thông minh

Thiết kế cơ sở dữ liệu (MySQL DDL Core Entities)

-- Bảng quản lý người dùng
CREATE TABLE `users` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `full_name` VARCHAR(100) NOT NULL,
  `email` VARCHAR(100) UNIQUE NOT NULL,
  `password` VARCHAR(255) NOT NULL,
  `avatar_url` VARCHAR(255) NULL,
  `phone_number` VARCHAR(20) NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý dự án
CREATE TABLE `projects` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(150) NOT NULL,
  `description` TEXT NULL,
  `owner_id` INT NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`owner_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý công việc (Task)
CREATE TABLE `tasks` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `project_id` INT NOT NULL,
  `title` VARCHAR(200) NOT NULL,
  `description` TEXT NULL,
  `assignee_id` INT NULL,
  `priority` ENUM('LOW', 'MEDIUM', 'HIGH', 'URGENT') DEFAULT 'MEDIUM',
  `status` ENUM('TODO', 'IN_PROGRESS', 'REVIEW', 'DONE') DEFAULT 'TODO',
  `start_date` DATETIME NULL,
  `end_date` DATETIME NULL,
  `created_by` INT NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`assignee_id`) REFERENCES `users`(`id`) ON DELETE SET NULL,
  FOREIGN KEY (`created_by`) REFERENCES `users`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế giao diện lập trình ứng dụng (RESTful API Specifications)

Phương thức Endpoint Chức năng Phản hồi chuẩn
POST /api/v1/auth/login Xác thực người dùng, cấp phát JWT Bearer Token 200 OK + Token
POST /api/v1/auth/register Đăng ký tài khoản mới vào cơ sở dữ liệu 201 Created
GET /api/v1/projects Lấy danh sách dự án của người dùng hiện tại 200 OK + Array
POST /api/v1/projects Tạo mới một dự án và phân quyền Project Owner 201 Created
GET /api/v1/tasks/project/:id Lấy toàn bộ danh sách task theo bộ lọc dự án 200 OK + Task List
PUT /api/v1/tasks/:id/status Cập nhật trạng thái công việc (hỗ trợ kéo thả) 200 OK
POST /api/v1/ai/chat Gửi truy vấn ngôn ngữ tự nhiên tới OpenAI Engine 200 OK + AI Response

Methodology

Dự án áp dụng phương pháp luận phát triển phần mềm linh hoạt (Agile Scrum) kéo dài trong 16 tuần, chia làm 4 Sprint chính:

Tuần 1-4: Sprint 1 (Khảo sát, thiết kế hệ thống, khởi tạo NestJS + ReactJS)
Tuần 5-8: Sprint 2 (Xây dựng module Auth, Project & Task Management, Drag-Drop)
Tuần 9-12: Sprint 3 (Tích hợp Firebase Realtime Chat, Pomodoro Timer & ChartJS)
Tuần 13-16: Sprint 4 (Tích hợp OpenAI API, Kiểm thử hộp trắng/đen, UAT & Tối ưu)
  • Quản lý rủi ro (Risk Mitigation): Kiểm soát nguy cơ trễ hạn API OpenAI bằng cơ chế Retry logic và Fallback template; ngăn ngừa xung đột dữ liệu quan hệ bằng Transaction Isolation Level chuẩn trong MySQL.
  • Đảm bảo chất lượng (QA): Triển khai Linting đồng nhất (ESLint, Prettier), Unit Test với Jest trên Backend NestJS và kiểm thử tích hợp API tự động với Postman Test Scripts.

Implementation và kết quả

Development process

Cấu trúc mã nguồn được tổ chức theo kiến trúc phân tách rõ ràng của NestJS (Controller - Service - Module):

backend/src/
├── modules/
│   ├── auth/          # Authentication, Guard, JWT Strategy
│   ├── users/         # User profile, Avatar upload
│   ├── projects/      # Project logic & Member roles
│   ├── tasks/         # Task CRUD, Status update, Filter
│   ├── chat/          # Firebase Admin Service integration
│   └── ai/            # OpenAI API Service wrapper
├── common/            # Decorators, Interceptors, Pipes
└── main.ts            # Bootstrap & Global configurations

Thuật toán và đoạn mã tiêu biểu (NestJS Task Management Service)

import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Task, TaskStatus } from './entities/task.entity';
import { UpdateTaskStatusDto } from './dto/update-task-status.dto';

@Injectable()
export class TasksService {
  constructor(
    @InjectRepository(Task)
    private readonly taskRepository: Repository<Task>,
  ) {}

  async updateTaskStatus(
    taskId: number, 
    updateDto: UpdateTaskStatusDto, 
    userId: number
  ): Promise<Task> {
    const task = await this.taskRepository.findOne({ 
      where: { id: taskId },
      relations: ['project'] 
    });

    if (!task) {
      throw new NotFoundException(`Task với định danh #${taskId} không tồn tại.`);
    }

    // Cập nhật trạng thái phục vụ luồng kéo thả (Drag-and-Drop)
    task.status = updateDto.status;
    task.updatedAt = new Date();

    return await this.taskRepository.save(task);
  }
}

Xử lý tích hợp AI Chatbot (OpenAI Service Integration)

import { Injectable, InternalServerErrorException } from '@nestjs/common';
import { Configuration, OpenAIApi } from 'openai';

@Injectable()
export class AiSupportService {
  private openai: OpenAIApi;

  constructor() {
    const configuration = new Configuration({
      apiKey: process.env.OPENAI_API_KEY,
    });
    this.openai = new OpenAIApi(configuration);
  }

  async generateTaskAdvice(prompt: string): Promise<string> {
    try {
      const completion = await this.openai.createChatCompletion({
        model: 'gpt-3.5-turbo',
        messages: [
          { 
            role: 'system', 
            content: 'Bạn là trợ lý ảo Tasma, chuyên gia tư vấn quản lý dự án và phân rã công việc hiệu quả.' 
          },
          { role: 'user', content: prompt }
        ],
        temperature: 0.7,
        max_tokens: 500,
      });
      return completion.data.choices[0].message?.content || 'Không thể tạo phản hồi.';
    } catch (error) {
      throw new InternalServerErrorException('Lỗi trong quá trình giao tiếp với OpenAI API');
    }
  }
}

Testing và validation

Quá trình kiểm thử được thực thi qua 3 cấp độ: Unit Testing, Integration Testing và User Acceptance Testing (UAT).

+-----------------------------------------------------------------------+
|                       TESTING SUMMARY METRICS                         |
+-----------------------------------------------------------------------+
|  Unit Test Coverage (Jest)          : 88.5% Code Coverage             |
|  Total Functional Test Cases        : 45 / 45 Passed (100%)           |
|  Average API Latency (Local/LAN)   : 142 ms                          |
|  Realtime Chat Sync Delay           : 85 ms                           |
|  System Usability Scale (SUS Score) : 84.5 / 100 (Grade A - Excellent)|
+-----------------------------------------------------------------------+
  1. Hiệu năng hệ thống: Thời gian thực thi trung bình của các truy vấn CRUD trên MySQL đạt dưới $180\text{ ms}$; độ trễ nhận/gửi tin nhắn qua Firebase Realtime Database dao động trong khoảng $70\text{ ms} - 110\text{ ms}$.
  2. Kiểm thử chấp nhận người dùng (UAT): Thực hiện khảo sát trên nhóm 30 người dùng thử nghiệm bao gồm sinh viên và kỹ sư phần mềm. 93.3% đánh giá giao diện Ant Design thân thiện, dễ làm quen hơn so với Jira; 90% đánh giá tính năng Pomodoro tích hợp trực tiếp giúp duy trì tập trung tốt hơn.

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

  • Hoàn thành $100%$ các mục tiêu đề ra ban đầu đúng tiến độ 16 tuần.
  • Xây dựng thành công hệ sinh thái quản lý công việc toàn diện với giao diện trực quan, hỗ trợ kéo thả thẻ nhiệm vụ mượt mà.
  • Khắc phục triệt để bài toán phân mảnh bằng việc tích hợp kênh Chat thời gian thực và đồng hồ Pomodoro ngay trên một trang hiển thị duy nhất.

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

  1. Mô hình hội tụ "Tất cả trong một" (All-in-One Convergence): Thay vì phải trả phí duy trì đồng thời Trello (quản lý bảng), Slack (giao tiếp nhóm) và Pomofocus (quản lý thời gian), Tasma tích hợp trọn vẹn 3 trụ cột này vào một giao diện đồng nhất.
  2. Kiến trúc dữ liệu lai tối ưu (Hybrid Database Architecture): Kết hợp linh hoạt MySQL (đảm bảo tính toàn vẹn dữ liệu dự án, quan hệ người dùng, phân quyền chặt chẽ) với Google Firebase Realtime Database (xử lý luồng tin nhắn tốc độ cao, không gây quá tải cho RDBMS chính).
  3. Ứng dụng AI thực tiễn vào hỗ trợ người dùng: Tích hợp OpenAI GPT-3/3.5 làm trợ lý đồng hành, hỗ trợ gợi ý cách phân rã công việc lớn thành các sub-task khả thi ngay trong quá trình lập kế hoạch.
  4. Cải thiện năng suất có thể định lượng: Giảm $35%$ thời gian luân chuyển giữa các tab làm việc của người dùng, tiết kiệm $100%$ chi phí mua bản quyền công cụ quản lý dự án cho các nhóm làm việc vừa và nhỏ.

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

Kịch bản ứng dụng thực tế

  • Đội ngũ phát triển phần mềm / Đồ án sinh viên: Phân chia sprint, quản lý backlog, thảo luận lỗi ngay trong giao diện mà không cần rời trình duyệt.
  • Doanh nghiệp vừa và nhỏ (SMEs): Điều phối công việc phòng ban, phân công nhân sự, theo dõi tiến độ tổng thể qua Dashboard biểu đồ mà không tốn chi phí đầu tư hạ tầng phức tạp.
  • Freelancers & Chuyên gia làm việc tự do: Tận dụng module Tasma Todo kết hợp Pomodoro để quản lý kỷ luật cá nhân và theo dõi deadline dự án của nhiều khách hàng cùng lúc.

Chiến lược triển khai và yêu cầu hệ thống

+-------------------------------------------------------------+
|                     PRODUCTION DEPLOYMENT                   |
|                                                             |
|  [Client Browser]                                           |
|        │                                                    |
|        ▼ (HTTPS :443)                                       |
|  [Nginx Reverse Proxy / SSL Termination]                    |
|        │                                                    |
|        ├──► [/]          ──► [ReactJS Static Build (SPA)]   |
|        └──► [/api/v1/*]  ──► [NestJS Server (PM2 Cluster)]  |
|                                     │                       |
|                                     ├──► [MySQL 8.0 Engine] |
|                                     └──► [Firebase Cloud]   |
+-------------------------------------------------------------+
  • Cấu hình phần cứng máy chủ tối thiểu: 2 vCPU, 4GB RAM, 40GB SSD Storage.
  • Môi trường phần mềm: Ubuntu 20.04/22.04 LTS, Node.js v18 LTS, MySQL 8.0, Nginx, PM2 Process Manager.

Phân tích chi phí - lợi ích (Cost-Benefit & ROI Analysis)

Hạng mục Sử dụng bộ công cụ thương mại (Jira + Slack + Pomodoro Pro) Triển khai hệ thống Tasma (Tự lưu trữ)
Phí bản quyền (10 thành viên) ~$120/tháng ($1,440/năm) $0 (Mã nguồn mở)
Chi phí máy chủ VPS $0 ~$10/tháng ($120/năm)
Chi phí vận hành API AI Tích hợp sẵn gói Enterprise đắt đỏ Chi trả theo thực tế token (~$5/tháng)
Tổng chi phí ước tính năm đầu $1,440 USD ~$180 USD (Tiết kiệm 87.5%)

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

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

  • Hệ thống chỉ hoạt động tốt nhất khi có kết nối Internet liên tục; chưa hỗ trợ chế độ Offline-First với Service Workers.
  • Module AI Chatbot phụ thuộc hoàn toàn vào OpenAI API bên thứ ba, có thể phát sinh độ trễ nếu mạng quốc tế gặp sự cố.
  • Chưa tích hợp hệ thống gọi thoại hoặc video trực tiếp giữa các thành viên.

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

  1. Phát triển ứng dụng di động đa nền tảng: Sử dụng React Native để chia sẻ logic mã nguồn với phiên bản web hiện tại.
  2. Nâng cấp tính năng giao tiếp đa phương tiện: Tích hợp giao thức WebRTC để hỗ trợ họp trực tuyến và chia sẻ màn hình.
  3. Mô hình AI tự huấn luyện (Self-hosted LLM): Tích hợp các mô hình ngôn ngữ mã nguồn mở (như Llama 3, Mistral) cục bộ nhằm tăng tính bảo mật dữ liệu nội bộ của doanh nghiệp.
  4. Hỗ trợ Offline Synchronization: Ứng dụng IndexedDB và Background Sync API để cho phép thao tác công việc ngay cả khi mất mạng.

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

+-----------------------------------------------------------------------+
|                         BENEFICIARY ECOSYSTEM                         |
+-----------------------------------+-----------------------------------+
|  SINH VIÊN & NGHIÊN CỨU SINH      |  LẬP TRÌNH VIÊN & KỸ SƯ PHẦN MỀM  |
|  - Tài liệu tham khảo đồ án       |  - Kiến trúc mẫu NestJS + React   |
|  - Mẫu phân tích Use-Case chuẩn  |  - Kỹ thuật tích hợp Hybrid DB    |
+-----------------------------------+-----------------------------------+
|  DOANH NGHIỆP & STARTUP VỪA & NHỎ |  CÁC NHÀ PHÁT TRIỂN SẢN PHẨM (PM) |
|  - Cắt giảm 87.5% chi phí SaaS    |  - Công cụ quản lý trực quan      |
|  - Nâng cao tính tự chủ dữ liệu   |  - Tối ưu hóa chu kỳ làm việc     |
+-----------------------------------+-----------------------------------+
  • Sinh viên ngành CNTT/Phần mềm: Cung cấp tài liệu tham khảo chi tiết từ đặc tả Use-case, thiết kế CSDL thực thể, đến cách thức phân chia module chuyên nghiệp trong NestJS.
  • Lập trình viên Full-stack: Nắm bắt kỹ thuật kết hợp hài hòa giữa RDBMS (MySQL) và NoSQL Realtime (Firebase) cùng phương pháp tích hợp OpenAI API chuẩn mực.
  • Doanh nghiệp và Startups: Tiếp cận một giải pháp phần mềm quản trị công việc toàn diện, tiết kiệm ngân sách bản quyền hàng tháng và dễ dàng tùy biến mã nguồn theo quy trình nội bộ.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai dự án lên máy chủ là gì?

Để triển khai hệ thống Tasma, máy chủ cần cài đặt sẵn môi trường Node.js (phiên bản 18 LTS trở lên), hệ quản trị cơ sở dữ liệu MySQL 8.0 và web server Nginx đóng vai trò Reverse Proxy. Dự án yêu cầu kết nối mạng ổn định để đồng bộ dữ liệu với Firebase Realtime Database và OpenAI API.

2. Hệ thống có khả năng mở rộng (Scalability) phục vụ số lượng người dùng lớn không?

Có. Nhờ thiết kế tách biệt giữa Client (ReactJS SPA) và Server (NestJS REST API không lưu trạng thái - Stateless), hệ thống có thể mở rộng theo chiều ngang (Horizontal Scaling) bằng cách nhân bản các Node instance phía sau Nginx Load Balancer. Dữ liệu tin nhắn chat được phân tải hoàn toàn sang máy chủ thời gian thực của Google Firebase.

3. Tại sao hệ thống lại sử dụng đồng thời cả MySQL và Firebase Realtime Database?

MySQL chịu trách nhiệm lưu trữ các dữ liệu có cấu trúc, quan hệ phức tạp và yêu cầu tính toàn vẹn giao dịch cao (như thông tin tài khoản, dự án, quyền hạn, công việc). Trong khi đó, Firebase Realtime Database giải quyết bài toán giao tiếp thời gian thực (chat nhóm, thông báo tức thì) với chi phí tài nguyên máy chủ thấp nhất và độ trễ dưới 100ms.

4. Chi phí duy trì hệ thống bao gồm những khoản nào?

Chi phí vận hành định kỳ chỉ bao gồm tiền thuê máy chủ ảo VPS (khoảng $5 - $10/tháng tùy cấu hình) và phí tiêu thụ API của OpenAI (tính theo số lượng token thực tế sử dụng cho Chatbot, thông thường dưới $5/tháng cho nhóm nhỏ). Gói Firebase cơ bản (Spark Plan) hoàn toàn miễn phí cho lưu lượng nhắn tin vừa phải.

5. Dữ liệu dự án trên hệ thống có được bảo mật an toàn không?

Hệ thống áp dụng cơ chế xác thực thông qua mã hóa mật khẩu bằng thuật toán Bcrypt kết hợp phân cấp quyền hạn theo chuỗi Token JWT (JSON Web Token). Các truy vấn tới cơ sở dữ liệu đều được tham số hóa thông qua ORM để chống tấn công SQL Injection, đi kèm cấu hình bảo mật tiêu chuẩn CORS và Helmet.


Kết luận

Khóa luận tốt nghiệp "Xây dựng Website Quản lý Công việc" đã nghiên cứu và phát triển thành công một giải pháp công nghệ toàn diện, giải quyết trọn vẹn bài toán phân mảnh công cụ quản lý trong thời đại số. Bằng việc kết hợp sức mạnh của các công nghệ hiện đại bao gồm ReactJS, NestJS, MySQL, Firebase và OpenAI API, sản phẩm không chỉ đáp ứng xuất sắc các tiêu chuẩn kỹ thuật của một ứng dụng web cấp doanh nghiệp mà còn mở ra hướng tiếp cận mới trong việc tối ưu hóa năng suất lao động cá nhân và cộng tác nhóm. Dự án khẳng định tính thực tiễn cao, đóng góp một nền tảng mã nguồn mở giá trị cho cộng đồng học thuật và doanh nghiệp.