Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và xu hướng làm việc linh hoạt (Hybrid Work), nhu cầu quản lý thông tin cá nhân kết hợp điều phối công việc nhóm trở thành yếu tố sống còn đối với hiệu suất làm việc. Theo các báo cáo nghiên cứu về năng suất doanh nghiệp từ Asana Anatomy of Work, nhân sự hiện đại tiêu tốn trung bình 58% thời gian làm việc vào các công việc phối hợp phân tán (work coordination) thay vì xử lý chuyên môn, và việc phân mảnh thông tin giữa các công cụ ghi chú cá nhân (như Apple Notes, Google Keep) với các hệ thống quản lý dự án phức tạp (như Jira, Redmine) gây ra tổn thất nhận thức đáng kể do hiện tượng phân mảnh ngữ cảnh (context switching).

Đề tài "Xây dựng ứng dụng ghi chú, quản lý tiến độ công việc cá nhân và nhóm" (Notes Taking and Tasks Tracking Management Application) được thực hiện bởi nhóm nghiên cứu sinh viên Khoa Công nghệ Phần mềm – Trường Đại học Công nghệ Thông tin, ĐHQG-HCM, dưới sự hướng dẫn của ThS. Thái Thụy Hàn Uyên. Đề tài tập trung giải quyết bài toán hội tụ: tích hợp không gian ghi chú linh hoạt (dành cho cá nhân) với môi trường quản lý tiến độ, phân bổ công việc thông minh theo mô hình nhóm quy mô vừa và nhỏ (30–50 thành viên).

+-------------------------------------------------------------------------------+
|                             PROBLEM DEFINITION                                |
+-------------------------------------------------------------------------------+
|  1. Phân mảnh dữ liệu: Ghi chú ý tưởng tách biệt khỏi luồng thực thi task.   |
|  2. Khó khăn phân bổ: Trưởng nhóm thiếu cơ sở định lượng để giao việc đúng sở |
|     trường chuyên môn của từng thành viên.                                    |
|  3. Trải nghiệm cồng kềnh: Các công cụ Enterprise (Jira, Redmine) quá phức    |
|     tạp cho các nhóm agile 30-50 người.                                       |
+-------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng nền tảng ứng dụng di động đa nền tảng (iOS và Android) với trải nghiệm người dùng (UI/UX) tối ưu, cho phép thao tác ghi chú ngoại tuyến (offline-first) và đồng bộ thời gian thực khi có kết nối Internet.
  2. Thiết kế hệ thống quản trị dự án toàn diện: Hỗ trợ quản lý dự án, phân rã công việc (task tracking), biểu đồ Gantt, quản lý tài liệu nội bộ (Wiki), trao đổi thảo luận và theo dõi cột mốc (Milestones).
  3. Hiện thực hóa thuật toán đề xuất thành viên (Content-Based Recommendation System): Tự động phân tích lịch sử đánh giá kỹ năng của nhân sự theo ma trận đặc trưng công việc để gợi ý người nhận việc (assignee) phù hợp nhất.
  4. Tích hợp kênh giao tiếp thời gian thực và trợ lý ảo: Xây dựng hệ thống chat nhóm dựa trên WebSocket (Socket.io) kết hợp trợ lý trí tuệ nhân tạo (OpenAI GPT API) hỗ trợ tự động hóa giải đáp thắc mắc.

Phạm vi và giới hạn hệ thống

  • Phạm vi chức năng: 12 phân hệ chính bao gồm: Xác thực (Authentication), Quản lý ghi chú (Note & Category), Quản lý nhắc nhở (Reminder), Quản lý dự án (Project), Quản lý công việc (Task), Lịch sử cập nhật (Update History), Bình luận (Comment), Đề xuất nhân sự (Recommendation Engine), Chatbot & Nhóm chat thời gian thực (Real-time Messaging), Quản lý tệp tin (File Storage), Báo cáo tuần (Weekly Report) và Thiết lập tài khoản (App Settings).
  • Phạm vi người dùng: Tối ưu hóa cho các cá nhân, đội ngũ kỹ thuật, sinh viên và doanh nghiệp quy mô nhóm từ 30–50 người, đáp ứng tải thử nghiệm đồng thời khoảng 100 người dùng trực tuyến (Concurrent Users).
  • Giới hạn hệ thống: Hệ thống chưa hỗ trợ phân quyền theo vai trò sâu nhiều cấp (Multi-level RBAC) phức tạp và chưa áp dụng mô hình xử lý ngôn ngữ tự nhiên (NLP) học sâu để tự động bóc tách từ khóa từ nội dung task.

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

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

Khảo sát thị trường cho thấy các giải pháp quản lý công việc và ghi chú hiện tại đang tồn tại những khoảng cách công nghệ rõ rệt:

Giải pháp hiện có Ưu điểm nổi bật Nhược điểm & Rào cản kỹ thuật Mức độ phù hợp với nhóm nhỏ
Notion Tùy biến trang linh hoạt, hỗ trợ database mạnh Không hỗ trợ thuật toán gợi ý giao việc tự động; trải nghiệm di động nặng nề khi offline Trung bình
Trello Trực quan hóa Kanban dễ tiếp cận Thiếu không gian ghi chú tự do; phân tích báo cáo nâng cao phụ thuộc Power-ups trả phí Khá
Redmine Mã nguồn mở, quản lý issue chi tiết Giao diện lỗi thời; không tối ưu hóa ứng dụng di động; cấu hình triển khai phức tạp Thấp
Backlog iOS Hỗ trợ biểu đồ Gantt, giao diện native Độc quyền hệ điều hành iOS; chi phí bản quyền cao; không tích hợp AI Chatbot Thấp
Giải pháp Đề xuất Kết hợp Note + Task, gợi ý phân việc Content-Based, Chat Realtime + AI Cần kết nối mạng ổn định cho các module realtime Rất cao

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must-Have (Bắt buộc):
    • Hệ thống xác thực bảo mật JWT, mã hóa mật khẩu bằng bcrypt, xác thực OTP qua SMTP Mailer.
    • Quản lý CRUD ghi chú (Text & Sketch Draw), gắn thẻ phân loại, quản lý Reminder.
    • Quản lý tiến độ dự án: Tạo task, thay đổi trạng thái (To Do, In Progress, Resolved, Closed), gán deadline và phân bổ độ ưu tiên.
    • Thuật toán Content-based Recommendation gợi ý thành viên dựa trên trọng số điểm số công việc quá khứ.
  • Should-Have (Nên có):
    • Chat nhóm thời gian thực qua WebSocket, ghim tin nhắn, chia sẻ tệp đa định dạng.
    • Tích hợp trợ lý trí tuệ nhân tạo OpenAI GPT phục vụ tra cứu thông tin nhanh.
    • Biểu đồ Gantt trực quan hóa tiến độ và báo cáo tuần (Weekly Productivity Analytics).
  • Could-Have (Có thể có):
    • Hỗ trợ tạo ghi chú từ các Template mẫu có sẵn (Meeting Notes, Brainstorming, Daily Plan).
    • Chế độ tự động ghi nhớ tài khoản và cấu hình thông báo cá nhân hóa.
  • Won't-Have (Chưa triển khai trong phiên bản này):
    • Gọi thoại/video trực tiếp (WebRTC) trong nhóm chat.
    • Đồng bộ lịch với Google Calendar / Apple Calendar qua OAuth 2.0.

Thiết kế kiến trúc hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc phân lớp (Layered Client-Server Architecture), tách biệt giữa tầng Client di động, tầng RESTful API Gateway kết hợp Realtime Broker, và tầng lưu trữ dữ liệu phân tán.

+-----------------------------------------------------------------------------------+
|                              MOBILE CLIENT LAYER                                  |
|   Framework7 UI (v8.0) + ReactJS (v18.2) + TypeScript | Apache Cordova (v12.0)   |
|   - Offline Storage (LocalStorage/IndexedDB for Notes & Reminders)                |
+----------------------------------------+------------------------------------------+
                                         | HTTPS / WebSocket (WSS)
                                         v
+-----------------------------------------------------------------------------------+
|                               BACKEND API LAYER                                   |
|   Node.js (v18 LTS) + Express.js Framework (v4.18)                                |
|   +--------------------------+-----------------------+------------------------+   |
|   |  JWT Authentication      |  Task & Project Core  |  Recommendation Engine |   |
|   |  (Bcrypt, NodeMailer)    |  (CRUD & History)     |  (TF-IDF/Vector Score) |   |
|   +--------------------------+-----------------------+------------------------+   |
|   |  Socket.io Server (Real-time Messaging Engine)   |  OpenAI GPT Middleware |   |
|   +--------------------------------------------------+------------------------+   |
+----------------------------------------+------------------------------------------+
                                         | Mongoose ODM / TCP Socket
                                         v
+-----------------------------------------------------------------------------------+
|                                PERSISTENCE LAYER                                  |
|   MongoDB Atlas (v6.0 NoSQL Cloud Database) + Firebase Cloud Storage (Files/Media)|
+-----------------------------------------------------------------------------------+

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

  • Client-side Framework: ReactJS 18.2.0 kết hợp Framework7 8.0.0, đóng gói ứng dụng di động thông qua Apache Cordova 12.0.0.
  • Ngôn ngữ lập trình: TypeScript 5.0 (đảm bảo tính toàn vẹn kiểu dữ liệu) và JavaScript (ES6+).
  • Server-side Runtime: Node.js 18.x LTS kết hợp Express.js 4.18.2.
  • Cơ sở dữ liệu: MongoDB Atlas 6.0 (NoSQL) quản lý lược đồ dữ liệu linh hoạt thông qua Mongoose 7.x ODM.
  • Giao tiếp & Dịch vụ ngoài: Socket.io 4.6.1 (WebSocket), Nodemailer 6.9.3 (SMTP Service), Firebase Cloud Services (File Storage), OpenAI API (gpt-3.5-turbo).

Thiết kế cơ sở dữ liệu (Database Schema)

Hệ thống triển khai trên nền tảng MongoDB với 16 Collections được chuẩn hóa:

+-----------------------------------------------------------------------------+
|                          CORE DATABASE COLLECTIONS                          |
+-----------------------------------------------------------------------------+
| 1. User: _id, username, email, passwordHash, avatarUrl, status, createdAt   |
| 2. VerifyCode: _id, userId, email, otpCode, expiresAt                       |
| 3. Note: _id, userId, categoryId, title, content, type(text/draw), isPinned |
| 4. Category: _id, userId, categoryName, colorCode                           |
| 5. Reminder: _id, userId, title, dueDateTime, repeatType, isCompleted      |
| 6. Project: _id, projectName, description, managerId, status, createdAt     |
| 7. Task: _id, projectId, title, description, topics[], status, priority,    |
|          assigneeId, reporterId, points, dueDate, completedAt               |
| 8. TaskReview: _id, taskId, memberId, score, feedback, evaluatedBy         |
| 9. RecommendAssignee: _id, taskId, memberId, matchingScore, calculatedAt   |
| 10. Wiki: _id, projectId, title, content, version, lastUpdatedBy            |
| 11. Activity: _id, projectId, actorId, actionType, targetEntity, timestamp  |
| 12. Milestone: _id, projectId, title, targetDate, isReached                 |
| 13. File: _id, projectId, uploaderId, fileUrl, fileType, fileSize           |
| 14. Message: _id, projectId, senderId, messageText, attachments[], isPinned |
| 15. Comment: _id, taskId, authorId, commentText, taggedUserIds[]            |
| 16. Notification: _id, recipientId, senderId, title, content, isRead        |
+-----------------------------------------------------------------------------+

Thiết kế API Endpoints chính

Endpoint Method Middleware Chức năng chi tiết
/api/v1/auth/register POST Validation Đăng ký tài khoản mới & gửi OTP qua Nodemailer
/api/v1/auth/login POST Rate Limiter Xác thực tài khoản, trả về JWT Access/Refresh Token
/api/v1/notes GET/POST Verify JWT Lấy danh sách hoặc tạo mới ghi chú cá nhân
/api/v1/projects POST Verify JWT Khởi tạo dự án mới và gán quyền Project Manager
/api/v1/projects/:id/tasks POST Verify Project Role Tạo task mới, kích hoạt sự kiện tính điểm đề xuất
/api/v1/tasks/:id/recommend GET Verify Project Role Lấy danh sách thành viên được xếp hạng theo thuật toán
/api/v1/ai/chat POST Verify JWT Gửi prompt đến OpenAI API và trả kết quả streaming

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

Đề tài áp dụng Mô hình lặp (Iterative Model) kết hợp các nguyên lý của Agile. Kế hoạch triển khai kéo dài 20 tuần (06/02/2023 – 25/06/2023), chia thành các chặng chuyển giao có cấu trúc:

Timeline 20 tuần thực hiện dự án (06/02/2023 - 25/06/2023):
[W1 - W2]  : Nghiên cứu công nghệ, khảo sát hiện trạng, phác thảo Figma UI/UX.
[W3 - W4]  : Thiết kế ERD (dbdiagram.io), kiến trúc source code, đặc tả 49 Use Cases.
[W5 - W10] : Hiện thực giao diện Frontend (Framework7/React), màn hình Authentication.
[W11 - W18]: Phát triển Backend (Express/Node.js), tích hợp Socket.io, Core Algorithm.
[W19 - W20]: Tích hợp hệ thống, kiểm thử Testcase, sửa lỗi, hoàn thiện báo cáo và demo.

Implementation và kết quả

Chi tiết thuật toán đề xuất phân bổ nhân sự (Content-Based Recommendation)

Vấn đề cốt lõi trong phân bổ công việc là: Với một công việc mới $T_{new}$ có tập hợp các chủ đề chuyên môn $Topics(T_{new})$, làm sao để tự động xác định thành viên $M$ trong dự án có năng lực phù hợp nhất dựa trên lịch sử làm việc?

Mô hình hóa toán học

  1. Không gian đặc trưng (Feature Space): Giả sử hệ thống có tập $D$ chủ đề kỹ thuật: $T = {t_1, t_2, \dots, t_d}$ (ví dụ: JS, React, Node, Flutter).
  2. Mã hóa công việc (One-Hot Encoding): Mỗi task $k$ được biểu diễn bằng vector nhị phân $\mathbf{v}k = [w{k1}, w_{k2}, \dots, w_{kd}]$, trong đó: $$w_{kj} = \begin{cases} 1 & \text{nếu } t_j \in Topics(Task_k) \ 0 & \text{ngược lại} \end{cases}$$
  3. Ma trận đánh giá (Input Member Ratings): Điểm đánh giá năng lực của thành viên trên các task đã hoàn thành: $\mathbf{R} = [r_1, r_2, \dots, r_m]^T$.
  4. Hồ sơ năng lực thành viên (Member Profile Vector): Ma trận trọng số các chủ đề (Weighted Topic Matrix) được tính bằng tích ma trận điểm đánh giá với ma trận mã hóa đặc trưng: $$\mathbf{P}{member} = \sum{k=1}^{m} r_k \cdot \mathbf{v}k$$ Chuẩn hóa vector hồ sơ năng lực về khoảng $[0, 1]$: $$\hat{\mathbf{P}}{member} = \frac{\mathbf{P}{member}}{\sum{j=1}^{d} P_{member, j}}$$
  5. Tính toán điểm tương đồng (Recommendation Score): Với task mới $T_{new}$ có vector mã hóa $\mathbf{v}{new}$, điểm số phù hợp $Score(M, T{new})$ là tích vô hướng: $$Score(M, T_{new}) = \hat{\mathbf{P}}{member} \cdot \mathbf{v}{new}^T$$
// Implementation of Content-Based Recommendation Algorithm in Node.js
interface TaskFeature {
  taskId: string;
  topicVector: number[]; // e.g. [1, 1, 0, 0] for JS, React, Node, Flutter
}

interface MemberCompletedTask {
  taskId: string;
  ratingScore: number;   // e.g. Scale 1 to 10
  topicVector: number[];
}

export class TaskRecommendationEngine {
  /**
   * Tính toán vector hồ sơ năng lực chuẩn hóa của thành viên
   */
  public static calculateMemberProfile(completedTasks: MemberCompletedTask[], vectorSize: number): number[] {
    const rawProfile: number[] = new Array(vectorSize).fill(0);

    // Tính tổng trọng số: Profile = sum(Rating_i * Vector_i)
    completedTasks.forEach(task => {
      task.topicVector.forEach((val, idx) => {
        rawProfile[idx] += val * task.ratingScore;
      });
    });

    const sumScore = rawProfile.reduce((acc, curr) => acc + curr, 0);
    if (sumScore === 0) return rawProfile;

    // Chuẩn hóa vector thành phân phối trọng số
    return rawProfile.map(val => Number((val / sumScore).toFixed(4)));
  }

  /**
   * Tính toán điểm phù hợp của thành viên đối với task mới
   */
  public static calculateMatchScore(normalizedProfile: number[], newTaskVector: number[]): number {
    return normalizedProfile.reduce((score, weight, idx) => {
      return score + weight * (newTaskVector[idx] || 0);
    }, 0);
  }
}

MINH HỌA TÍNH TOÁN THEO DỮ LIỆU ĐỒ ÁN:
Tập chủ đề: [JS, React, Node, Flutter]
- Task 1: [1, 1, 0, 0] | Điểm: 4   => Trọng số: [4,  4,  0,  0]
- Task 2: [1, 1, 1, 1] | Điểm: 10  => Trọng số: [10, 10, 10, 10]
- Task 3: [1, 0, 0, 1] | Điểm: 6   => Trọng số: [6,  0,  0,  6]
-----------------------------------------------------------------
Tổng vector hồ sơ (Raw Profile):              [20, 14, 10, 16] (Tổng = 60)
Vector chuẩn hóa (Normalized Profile):        [0.333, 0.233, 0.167, 0.267]

Xét Task 4 mới có yêu cầu [React, Node, Flutter] => Vector = [0, 1, 1, 1]
=> Match Score = (0.333 * 0) + (0.233 * 1) + (0.167 * 1) + (0.267 * 1) = 0.667 (66.7%)

Hiện thực hóa phân hệ Realtime & Chatbot OpenAI

Giao tiếp thời gian thực được thiết lập thông qua Socket.io Server kết hợp MongoDB Room Mapping. Khi người dùng gửi tin nhắn trong dự án, Gateway phát sự kiện room:broadcast_message, đảm bảo độ trễ truyền thông điệp $<80\text{ms}$.

Đối với phân hệ Chatbot, backend thiết lập proxy giao tiếp an toàn với OpenAI endpoint (https://api.openai.com/v1/chat/completions), lưu trữ ngữ cảnh hội thoại ngắn hạn (short-term session memory) giúp giải đáp các thắc mắc về kỹ thuật và tổ chức công việc trực tiếp trong ứng dụng.

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

Hệ thống đã trải qua quy trình kiểm thử toàn diện với 49 Use Cases được đặc tả chi tiết và hơn 50 Test Cases kiểm thử chức năng:

  • Độ bao phủ kiểm thử (Test Coverage): 100% các chức năng cốt lõi (Xác thực, Quản lý ghi chú, Quản lý dự án, Phân bổ task, Chat nhóm) vượt qua các kịch bản kiểm thử luồng chính (Happy Path) và luồng ngoại lệ (Alternative/Exception Path).
  • Hiệu năng hệ thống (Performance Benchmark):
    • Thời gian phản hồi trung bình các API CRUD: 120ms – 210ms.
    • Thời gian thực thi thuật toán gợi ý thành viên trên tập dữ liệu 50 nhân sự: $<15\text{ms}$.
    • Tải người dùng đồng thời: Đạt mức ổn định ở 100 Concurrent Connections mà không xảy ra hiện tượng tràn bộ nhớ (Memory Leak) trên môi trường máy chủ Node.js.

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

  1. Hội tụ Ghi chú cá nhân và Điều hành dự án nhóm trong một điểm chạm: Khắc phục triệt để khoảng cách giữa không gian tư duy cá nhân (Note/Reminder) và không gian cộng tác tập thể (Task/Wiki/Gantt Chart), giúp giảm thiểu thời gian chuyển đổi ứng dụng lên tới 40%.
  2. Cơ chế phân bổ công việc dựa trên dữ liệu định lượng: Không dựa vào cảm tính của Quản lý dự án, thuật toán Content-Based Recommendation đưa ra gợi ý phân việc chính xác dựa trên điểm đánh giá kỹ năng thực tế qua các task hoàn thành, giúp nâng cao độ chính xác khi giao việc lên 35%.
  3. Mô hình lưu trữ Hybrid (Local-first & Cloud-sync): Ghi chú và nhắc nhở được xử lý tức thời tại bộ nhớ cục bộ trên thiết bị, cho phép truy xuất ngoại tuyến với độ trễ xấp xỉ 0ms, đồng bộ tự động lên MongoDB Atlas khi phát hiện kết nối Internet.

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

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

  • Nhóm phát triển phần mềm Agile (10–30 thành viên): Sử dụng hệ thống để phân rã User Story thành các task kỹ thuật, quản lý tài liệu kiến trúc qua Wiki dự án, nhận diện lập trình viên phù hợp với từng mảng công nghệ (Frontend, Backend, DevOps) thông qua tính năng gợi ý thông minh.
  • Đội ngũ đồ án sinh viên: Theo dõi cột mốc bảo vệ đồ án (Milestones), phân chia công việc theo tuần, thảo luận giải pháp kỹ thuật qua chat nhóm có sự hỗ trợ của Chatbot GPT.
+-------------------------------------------------------------------------------+
|                            DEPLOYMENT PIPELINE                                |
+-------------------------------------------------------------------------------+
| [Code Repository: GitHub / Bitbucket]                                         |
|       |                                                                       |
|       +--> [Backend CI/CD]: Build Node.js TS -> Deploy to Cloud Hosting       |
|       |                     Connect MongoDB Atlas Cluster & Firebase Storage  |
|       |                                                                       |
|       +--> [Mobile Client]: Build ReactJS bundle -> Apache Cordova CLI        |
|                             -> Compile APK (Android Studio) / IPA (Xcode)     |
+-------------------------------------------------------------------------------+

Yêu cầu triển khai hệ thống (System Requirements)

  • Server Environment: Node.js v18.x+, RAM tối thiểu 2GB, CPU 2 Cores, 20GB SSD Storage.
  • Database: MongoDB Atlas Cluster (Tier M0 hoặc M10+).
  • Client Environment: Android 8.0 (API Level 26) trở lên hoặc iOS 13.0 trở lên.

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

Hạn chế kỹ thuật

  • Vấn đề khởi đầu lạnh (Cold Start): Khi thành viên mới tham gia hệ thống và chưa có lịch sử đánh giá task hoàn thành, ma trận đặc trưng rỗng dẫn đến thuật toán đề xuất chưa thể đưa ra gợi ý tối ưu.
  • Mã hóa đặc trưng thủ công: Các nhãn chủ đề (Topics) của công việc hiện tại vẫn phụ thuộc vào việc gán nhãn thủ công khi tạo task.

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

  1. Tích hợp mô hình nhúng ngữ nghĩa (Semantic Embedding): Sử dụng mô hình text-embedding-3-small của OpenAI để tự động trích xuất vector đặc trưng từ mô tả công việc không cấu trúc thay cho kỹ thuật One-Hot Encoding truyền thống.
  2. Mở rộng thuật toán Hybrid Recommendation: Kết hợp lọc dựa trên nội dung (Content-Based) với lọc cộng tác (Collaborative Filtering) để giải quyết triệt để bài toán Cold Start.
  3. Chuyển đổi sang kiến trúc React Native / Flutter: Tối ưu hóa hiệu năng render giao diện native thay thế cho giải pháp WebView của Cordova.

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

  • Sinh viên & Đội ngũ học thuật: Tiếp cận một kiến trúc tham chiếu mẫu mực (Reference Architecture) kết hợp giữa công nghệ Fullstack JavaScript (React, Node.js, MongoDB) với ứng dụng thuật toán học máy giải quyết bài toán thực tế.
  • Lập trình viên & Kỹ sư phần mềm: Nắm vững phương pháp tích hợp Socket.io để xử lý realtime đa kênh và kỹ thuật xây dựng thuật toán đề xuất dựa trên đại số tuyến tính ma trận.
  • Doanh nghiệp & Đội nhóm vừa/nhỏ: Sở hữu giải pháp quản lý tinh gọn, giảm chi phí bản quyền phần mềm quản lý từ các nền tảng thương mại nước ngoài.

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

1. Ứng dụng xử lý việc mất kết nối mạng (Offline mode) như thế nào?

Đối với phân hệ Ghi chú và Nhắc nhở cá nhân, hệ thống ghi nhận trực tiếp vào bộ nhớ cục bộ của thiết bị thông qua LocalStorage. Khi thiết bị có kết nối Internet trở lại, hệ thống sẽ kích hoạt tiến trình đồng bộ nền (Background Sync) để đẩy dữ liệu lên cơ sở dữ liệu MongoDB Atlas.

2. Thuật toán đề xuất xử lý như thế nào khi hai thành viên có cùng điểm số phù hợp?

Khi có sự trùng lặp về điểm số tương đồng ($MatchScore$), hệ thống sẽ áp dụng bộ lọc thứ cấp (Secondary Tie-breaker): ưu tiên thành viên có số lượng task đang trong trạng thái In Progress ít hơn (Workload Balancing) để tránh quá tải cho nhân sự.

3. Việc tích hợp OpenAI API có gây chậm tiến trình xử lý của server không?

Không. Tiến trình gọi OpenAI API được xử lý bất đồng bộ (Asynchronous Non-blocking I/O) thông qua cơ chế Event Loop của Node.js, không gây tắc nghẽn luồng xử lý của các API quản lý công việc khác.

4. Chi phí vận hành hạ tầng của hệ thống ước tính như thế nào?

Ở quy mô thử nghiệm và vận hành nhóm nhỏ (dưới 500 người dùng), hệ thống có thể tận dụng hoàn toàn các gói dịch vụ miễn phí (Free Tier) của MongoDB Atlas, Firebase Storage và máy chủ lưu trữ đám mây, giúp tối ưu chi phí ở mức tối thiểu.

5. Mã nguồn có thể mở rộng để phân quyền nhiều cấp (RBAC) không?

Có. Cơ sở dữ liệu đã thiết kế trường role và liên kết quan hệ chặt chẽ giữa UserProject. Lập trình viên có thể dễ dàng mở rộng Middleware phân quyền để bổ sung các vai trò như Viewer, Contributor, Project Manager, Super Admin.


Kết luận

Khóa luận tốt nghiệp "Xây dựng ứng dụng ghi chú, quản lý tiến độ công việc cá nhân và nhóm" của sinh viên Đặng Duy Bằng và Nguyễn Nhựt Tân đã hoàn thành xuất sắc toàn bộ các mục tiêu nghiên cứu và phát triển đặt ra. Bằng việc kết hợp hài hòa giữa công nghệ di động đa nền tảng (Framework7, ReactJS, Cordova), kiến trúc backend hiệu năng cao (Node.js, Express, MongoDB) và thuật toán đề xuất thông minh (Content-Based Recommendation), đề tài mang lại một giải pháp công nghệ có giá trị thực tiễn cao, hỗ trợ đắc lực cho công tác quản trị năng suất làm việc trong kỷ nguyên số.