Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số và phát triển phần mềm linh hoạt (Agile), việc quản lý tiến độ và phân bổ nguồn lực đóng vai trò sống còn đối với hiệu suất của các doanh nghiệp công nghệ. Theo báo cáo Anatomy of Work Index, nhân viên văn phòng và kỹ sư phần mềm tiêu tốn tới 58% thời gian mỗi ngày cho các "công việc phụ trợ" (work about work) như tìm kiếm thông tin, theo dõi trạng thái công việc và chuyển tiếp tin nhắn qua các kênh phân mảnh.
Công ty TNHH Công nghệ phần mềm Lutech (thành lập ngày 30/09/2021) đang trong giai đoạn chuyển mình mạnh mẽ từ quy mô vừa và nhỏ lên doanh nghiệp quy mô lớn. Sự gia tăng nhanh chóng về nhân sự và số lượng phòng ban đã tạo ra thách thức lớn trong việc theo dõi, điều phối các đầu mục công việc giữa các bộ phận.
+-----------------------------------------------------------------------------------+
| HIỆN TRẠNG QUẢN LÝ TẠI LUTECH |
+-----------------------------------------------------------------------------------+
| [Phân công qua Skype/Discord] --> [Theo dõi thủ công trên Excel] |
| - Trôi tin nhắn, sót deadline - Xung đột phiên bản, thiếu real-time |
| - Không phân cấp vai trò - Tốn 25-30% thời gian tra cứu dữ liệu |
+-----------------------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------------------+
| GIẢI PHÁP ĐỀ TÀI: LUTECH TASK MANAGER |
+-----------------------------------------------------------------------------------+
| [Android Native (Kotlin)] <──> [Firebase Realtime BaaS Engine] |
| - Phân rã 3 cấp: Dự án > Nhiệm vụ > Công việc |
| - Đồng bộ đa điểm (< 200ms) - Kiểm soát phân quyền 4 vai trò (RBAC) |
+-----------------------------------------------------------------------------------+
Vấn đề thực tế và mục tiêu đề tài
Thực trạng quản lý tại Lutech bộc lộ nhiều điểm nghẽn nghiêm trọng:
- Giao tiếp phân mảnh: Phân công nhiệm vụ qua tin nhắn rời rạc (Skype, Discord) khiến thông tin bị trôi, tỷ lệ bỏ sót công việc lên đến 15-20%.
- Dữ liệu không đồng bộ: Ghi nhận tiến độ qua bảng tính Excel gây độ trễ cập nhật, xung đột chỉnh sửa đồng thời và thiếu tính minh bạch giữa các bên liên quan.
- Thiếu phân cấp trách nhiệm: Chưa có hệ thống kiểm soát quyền hạn phân tầng giữa Quản lý dự án (Project Manager - PM), Quản lý nhóm (Team Lead) và Nhân viên (Developer/Tester).
Đề tài "Xây dựng ứng dụng quản lý công việc của nhân viên tại công ty Lutech" (thực hiện bởi sinh viên Nguyễn Đăng Khoa, hướng dẫn bởi TS. Hoàng Thị Mỹ Lệ - Đại học Sư phạm Kỹ thuật, Đại học Đà Nẵng) được triển khai nhằm đạt các mục tiêu cụ thể:
- Chuẩn hóa quy trình phân rã công việc: Xây dựng cấu trúc phân tầng 3 cấp: Dự án (Project) $\rightarrow$ Nhiệm vụ (Task) $\rightarrow$ Công việc chi tiết (Job).
- Đồng bộ hóa thời gian thực (Real-time Synchronization): Triển khai kiến trúc Backend-as-a-Service (BaaS) với Firebase Realtime Database nhằm cập nhật trạng thái công việc tức thời đến toàn bộ nhân sự liên quan.
- Phân quyền và bảo mật dữ liệu: Thiết lập cơ chế kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) và bảo mật hai lớp (Mật khẩu cấp 1 + Câu hỏi bảo mật cấp 2).
- Tối ưu trải nghiệm di động: Xây dựng ứng dụng Android Native bằng ngôn ngữ Kotlin, đảm bảo giao diện trực quan, tiêu hao tài nguyên thấp và phản hồi nhanh.
Phạm vi và giới hạn dự án
- Phạm vi nghiên cứu: Toàn bộ chu trình quản lý đầu việc nội bộ tại Công ty Lutech từ khâu khởi tạo dự án, phân bổ thành viên, giao task, đính kèm tài liệu đến theo dõi tiến độ hoàn thành.
- Giới hạn kỹ thuật: Ứng dụng chạy trên nền tảng Android (hỗ trợ từ Android 9.0 Pie / API level 28 trở lên), yêu cầu kết nối Internet liên tục để thực hiện đồng bộ đám mây và xử lý tệp tin.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và yêu cầu người dùng
Để lựa chọn giải pháp phù hợp nhất với cấu trúc vận hành của Lutech, một ma trận phân tích so sánh giữa phương thức truyền thống và các công cụ thương mại đã được thiết lập:
| Tiêu chí đánh giá |
Quản lý thủ công (Skype + Excel) |
Jira Software / Asana |
Ứng dụng Lutech Task Manager |
| Chi phí bản quyền |
Miễn phí (rủi ro vận hành cao) |
Rất cao ($7 - $15/user/tháng) |
Miễn phí/Tối ưu theo hạ tầng Firebase |
| Độ phức tạp quy trình |
Thấp nhưng lộn xộn |
Quá phức tạp, tốn thời gian đào tạo |
Tinh gọn, thiết kế riêng cho Lutech |
| Cập nhật thời gian thực |
Không (phụ thuộc nhập tay) |
Có (Web/Mobile app) |
Có (Firebase Realtime WebSocket) |
| Cơ chế phân quyền |
Không có |
Phân quyền ma trận phức tạp |
4 cấp: Admin, PM, Team Lead, Member |
| Trải nghiệm Mobile |
Kém (File Excel khó đọc trên mobile) |
Nặng, độ trễ tải dữ liệu cao |
Native Android (Kotlin), nhẹ, mượt mà |
Áp dụng phương pháp phân loại MoSCoW, các yêu cầu chức năng của hệ thống được xác định:
- Must-have (Bắt buộc): Đăng nhập xác thực tài khoản; Phân quyền 4 tác nhân; Tạo/Cập nhật dự án; Phân rã Nhiệm vụ/Công việc; Tải lên tệp đính kèm (PDF, hình ảnh); Đổi mật khẩu và mật khẩu cấp 2.
- Should-have (Cần có): Cập nhật khoảng thời gian dự án có ràng buộc logic (Validation Rule); Tra cứu/Tìm kiếm công việc theo trạng thái; Theo dõi tiến độ công việc của từng nhân viên.
- Could-have (Có thể có): Tinh chỉnh giao diện từ xa qua Firebase Remote Config; Báo cáo lỗi ứng dụng tự động qua Firebase Crashlytics.
- Won't-have (Chưa triển khai ở phiên bản này): Gọi thoại/chat trực tiếp trong ứng dụng; Phân tích tiến độ bằng biểu đồ Gantt chuyên sâu.
Thiết kế kiến trúc hệ thống
+------------------------------------------------------------------------------------+
| LUTECH ANDROID CLIENT (KOTLIN NATIVE) |
| +------------------------+ +------------------------+ +-----------------------+ |
| | Presentation Layer | | Business Logic Layer | | Data Repository Layer | |
| | (XML Layouts, UI Views)| | (Validators, Handlers) | | (Firebase Adapters) | |
| +------------------------+ +------------------------+ +-----------------------+ |
+------------------------------------------------------------------------------------+
│ ▲
HTTPS / WebSocket (WSS) │ │ Data Snapshot Events
▼ │
+------------------------------------------------------------------------------------+
| FIREBASE CLOUD INFRASTRUCTURE (BaaS) |
| +----------------------+ +----------------------+ +-----------------------------+ |
| | Firebase Auth | | Realtime Database | | Cloud Storage | |
| | (Token-based Auth) | | (NoSQL JSON Tree) | | (Images, Project Documents) | |
| +----------------------+ +----------------------+ +-----------------------------+ |
| +-----------------------------------------------+ +-----------------------------+ |
| | Firebase Remote Config | | Firebase Crashlytics | |
| +-----------------------------------------------+ +-----------------------------+ |
+------------------------------------------------------------------------------------+
Hệ thống được xây dựng trên nền tảng 3-Tier BaaS Architecture:
- Presentation & Logic Tier (Client): Ứng dụng Android viết bằng Kotlin 1.9, sử dụng ViewBinding và kiến trúc hướng thành phần giúp tối ưu hóa bộ nhớ và ngăn ngừa rò rỉ bộ nhớ (Memory Leak).
- Cloud BaaS Tier (Backend): Cung cấp bởi Google Firebase:
- Firebase Authentication: Quản lý phiên đăng nhập và định danh người dùng.
- Firebase Realtime Database: Lưu trữ dữ liệu NoSQL dạng cây JSON với cơ chế đồng bộ 2 chiều (Bidirectional Sync).
- Firebase Cloud Storage: Lưu trữ tệp đính kèm nhị phân (PDF, PNG, JPG) với URL truy xuất an toàn.
- Firebase Crashlytics & Remote Config: Giám sát độ ổn định ứng dụng và cập nhật cấu hình động.
- Local Cache Tier: Lưu trữ offline tạm thời các thao tác khi mất kết nối mạng, tự động đồng bộ lại khi có Internet.
Thiết kế cơ sở dữ liệu NoSQL
Cơ sở dữ liệu được chuẩn hóa dưới dạng JSON Tree để tối ưu hóa tốc độ đọc (Read-heavy workload) và loại bỏ các phép JOIN tốn kém tài nguyên:
{
"DuAn": {
"DA001": {
"tenDuAn": "E-Commerce App Migration",
"moTa": "Nâng cấp hệ thống Backend sang Microservices",
"ngayBatDau": "2024-02-01",
"ngayKetThuc": "2024-06-30",
"quanLyDuAnId": "NV_PM_01"
}
},
"NhiemVu": {
"TASK_01": {
"duAnId": "DA001",
"tenNhiemVu": "Thiết kế API Gateway",
"moTa": "Xây dựng routing và authen filter",
"ngayBatDau": "2024-02-05",
"ngayKetThuc": "2024-02-28",
"quanLyNhomId": "NV_LEAD_02"
}
},
"CongViec": {
"JOB_01": {
"nhiemVuId": "TASK_01",
"tenCongViec": "Viết Unit Test cho JWT Middleware",
"nhanVienId": "NV_DEV_05",
"trangThai": "In_Progress",
"ngayBatDau": "2024-02-10",
"ngayKetThuc": "2024-02-15",
"tepDinhKemUrl": "gs://lutech-task.appspot.com/attachments/spec_jwt.pdf"
}
},
"NhanVien": {
"NV_DEV_05": {
"hoTen": "Nguyễn Đăng Khoa",
"email": "khoa.nd@lutech.vn",
"chucVuId": "DEV",
"matKhauCap2Hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
}
}
Phương pháp nghiên cứu và quy trình phát triển
Dự án áp dụng phương pháp luận phát triển phần mềm Agile/Scrum với 4 Sprint (chu kỳ 2 tuần/Sprint):
+-----------------------------------------------------------------------------------+
| QUY TRÌNH PHÁT TRIỂN AGILE |
+-----------------------------------------------------------------------------------+
| [Sprint 1: W1-W2] --> Khảo sát nghiệp vụ, phân tích Use Case & ERD |
| [Sprint 2: W3-W4] --> Xây dựng Auth, RBAC, Layouts XML & Navigation |
| [Sprint 3: W5-W6] --> Tích hợp Firebase Realtime Database & Cloud Storage |
| [Sprint 4: W7-W8] --> Kiểm thử trên LDPlayer 9, tối ưu hóa Crashlytics |
+-----------------------------------------------------------------------------------+
- Sprint 1 (Tuần 1 - 2): Khảo sát thực địa tại Lutech, mô hình hóa nghiệp vụ qua Use Case Diagram, Activity Diagram và lược đồ ERD bằng StarUML 5.0.
- Sprint 2 (Tuần 3 - 4): Khởi tạo Base Project trên Android Studio Hedgehog, thiết kế hệ thống giao diện XML theo chuẩn Material Design, xây dựng module xác thực và phân quyền RBAC.
- Sprint 3 (Tuần 5 - 6): Lập trình module nghiệp vụ lõi: Phân bổ dự án, giao nhiệm vụ, tạo công việc, tải tài liệu đính kèm và cấu hình bảo mật 2 lớp.
- Sprint 4 (Tuần 7 - 8): Kiểm thử toàn diện trên trình giả lập LDPlayer 9 (Android 9.0 kernel) và thiết bị thật; tinh chỉnh hiệu năng và đóng gói tài liệu tốt nghiệp.
Implementation và kết quả
Chi tiết quá trình phát triển mã nguồn
Mã nguồn ứng dụng được cấu trúc rõ ràng theo các nguyên tắc Clean Code và tận dụng tối đa các tính năng an toàn của Kotlin (Null-Safety, Smart Casting, Extension Functions).
Thuật toán kiểm tra tính hợp lệ thời gian đa cấp (Hierarchy Time Validation)
Một trong những thách thức lớn là đảm bảo tính toàn vẹn thời gian: Thời gian thực hiện của Công việc (Job) phải nằm trọn trong thời gian của Nhiệm vụ (Task), và thời gian của Nhiệm vụ phải nằm trong khoảng thời gian của Dự án (Project).
// ValidationUtil.kt - Kiểm tra tính hợp lệ thời gian phân tầng
package vn.lutech.taskmanagement.utils
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
object ValidationUtil {
private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
/**
* Xác thực khoảng thời gian của nhiệm vụ con nằm trong khoảng thời gian của nhiệm vụ cha
* @param childStart Ngày bắt đầu của Task/Job
* @param childEnd Ngày kết thúc của Task/Job
* @param parentStart Ngày bắt đầu của Project/Task
* @param parentEnd Ngày kết thúc của Project/Task
* @return Boolean: true nếu hợp lệ, false nếu vi phạm ràng buộc
*/
fun isTimeRangeValid(
childStart: String,
childEnd: String,
parentStart: String,
parentEnd: String
): Boolean {
return try {
val cStart: Date = dateFormat.parse(childStart) ?: return false
val cEnd: Date = dateFormat.parse(childEnd) ?: return false
val pStart: Date = dateFormat.parse(parentStart) ?: return false
val pEnd: Date = dateFormat.parse(parentEnd) ?: return false
// Ràng buộc 1: Ngày bắt đầu con phải trước hoặc bằng ngày kết thúc con
// Ràng buộc 2: Khoảng thời gian con phải nằm hoàn toàn trong khoảng thời gian cha
!cStart.after(cEnd) && !cStart.before(pStart) && !cEnd.after(pEnd)
} catch (e: Exception) {
false
}
}
}
Đồng bộ dữ liệu công việc thời gian thực với Firebase Realtime Database
Ứng dụng sử dụng mô hình lắng nghe sự kiện bất đồng bộ qua ValueEventListener, giúp cập nhật giao diện người dùng ngay khi có bất kỳ thay đổi nào trên máy chủ Firebase:
// TaskRepository.kt - Đồng bộ danh sách công việc thời gian thực
package vn.lutech.taskmanagement.repository
import com.google.firebase.database.*
import vn.lutech.taskmanagement.models.CongViec
class TaskRepository {
private val database: DatabaseReference = FirebaseDatabase.getInstance().getReference("CongViec")
fun observeTasksByEmployee(employeeId: String, onDataChanged: (List<CongViec>) -> Unit, onError: (String) -> Unit) {
val query: Query = database.orderByChild("nhanVienId").equalTo(employeeId)
query.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val taskList = mutableListOf<CongViec>()
for (child in snapshot.children) {
val job = child.getValue(CongViec::class.java)
job?.let {
it.id = child.key ?: ""
taskList.add(it)
}
}
onDataChanged(taskList)
}
override fun onCancelled(error: DatabaseError) {
onError(error.message)
}
})
}
}
Kiểm thử và đánh giá hiệu năng
Quá trình kiểm thử được tiến hành đồng thời trên môi trường giả lập LDPlayer 9 (cấu hình Android 9 x86_64, 2 Cores CPU, 2048MB RAM) và trên 3 thiết bị vật lý (Samsung Galaxy A52, Xiaomi Redmi Note 11, Vsmart Joy 4).
+-----------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ VÀ HIỆU NĂNG TẢI |
+-----------------------------------------------------------------------------------+
| [Độ trễ đồng bộ Realtime] ===> 180ms - 240ms (Rất nhanh) |
| [Thời gian khởi động lạnh] ===> 1.12 giây |
| [Mức chiếm dụng bộ nhớ RAM] ===> ~62MB - 68MB |
| [Mức tiêu thụ CPU (Idle/Load)] ===> 1.2% / 5.8% |
| [Tỷ lệ Test Case thành công] ===> 95.8% (23/24 Kịch bản kiểm thử) |
+-----------------------------------------------------------------------------------+
1. Kết quả kiểm thử chức năng (Functional Testing)
Hệ thống đã thực thi 24 kịch bản kiểm thử (Test Cases) bao gồm: Đăng nhập, phân quyền, kiểm tra ràng buộc ngày tháng, đính kèm file, đổi mật khẩu cấp 2.
- Kết quả: 23/24 test case đạt (Pass Rate: 95.8%).
- Lỗi phát hiện và xử lý: Đã xử lý triệt để lỗi người dùng đính kèm file dung lượng lớn gây nghẽn tiến trình bằng cách bổ sung cơ chế kiểm tra kích thước file ($\le 10\text{MB}$) trước khi tải lên Firebase Storage.
2. Kết quả đo lường hiệu năng kỹ thuật (Benchmarks)
| Thông số kỹ thuật |
Đo lường thực tế (LDPlayer 9 / Device) |
Tiêu chuẩn chất lượng Google Android |
| Thời gian khởi động lạnh (Cold Start) |
1.12s |
$< 2.0s$ (Đạt chuẩn mượt) |
| Thời gian khởi động nóng (Warm Start) |
0.35s |
$< 1.0s$ (Tức thời) |
| Độ trễ đồng bộ Firebase Realtime |
180ms - 240ms (Mạng 4G/WiFi) |
$< 500ms$ (Thời gian thực) |
| Mức chiếm dụng RAM trung bình |
64.2 MB |
$< 150 MB$ (Rất nhẹ) |
| Mức tiêu thụ CPU trung bình |
1.8% (Đỉnh điểm 5.8% khi tải file) |
$< 15%$ |
Kết quả đạt được
Ứng dụng đã hoàn thiện 100% các phân hệ chức năng đề ra theo đề cương nghiên cứu:
- Giao diện người dùng thuần Việt: Bố cục trực quan, hỗ trợ đầy đủ các màn hình: Danh sách dự án, Chi tiết nhiệm vụ, Tạo công việc, Cập nhật trạng thái và Hồ sơ cá nhân.
- Mức độ hài lòng của nhân viên Lutech: Thử nghiệm UAT (User Acceptance Testing) trên 30 nhân viên công ty ghi nhận điểm đánh giá trung bình 4.65/5.0, trong đó tiêu chí "Tính trực quan" và "Tốc độ cập nhật công việc" đạt điểm số tối đa.
Đổi mới và đóng góp
- Cơ chế phân cấp trách nhiệm 3 tầng (3-Tier Delegation Pattern): Khắc phục hoàn toàn tình trạng "dẫm chân quyền hạn". Quản lý dự án chỉ cần tập trung vào mục tiêu vĩ mô (Milestone), Quản lý nhóm chủ động phân bổ Task kỹ thuật, và Nhân viên tập trung xử lý dứt điểm từng Job cụ thể.
- Kiến trúc bảo mật hai lớp chuyên biệt: Tích hợp xác thực mật khẩu cấp 1 kết hợp với câu hỏi bảo mật cấp 2 (lưu dưới dạng SHA-256 Hash) giúp ngăn chặn rủi ro chiếm đoạt quyền thay đổi trạng thái dự án khi thiết bị làm việc bị truy cập trái phép.
- Mô hình dữ liệu phẳng tối ưu cho BaaS (Denormalized Realtime Architecture): Thiết kế lược đồ NoSQL trên Firebase giúp giảm 50% số lượng truy vấn đọc, tiết kiệm băng thông mạng và loại bỏ hoàn toàn hiện tượng nghẽn cổ chai khi hàng trăm nhân viên cùng đồng bộ dữ liệu vào đầu giờ làm việc.
- Cắt giảm 40% chi phí thời gian giao tiếp nội bộ: Loại bỏ các cuộc họp báo cáo tiến độ thủ công kéo dài, nâng cao tính tự giác và minh bạch trong toàn doanh nghiệp.
Ứng dụng thực tế và triển khai
Kịch bản vận hành thực tế tại doanh nghiệp
- Tình huống 1 - Tiếp nhận dự án mới: Quản lý dự án tạo dự án "Mobile Banking v2.0", thiết lập hạn chót (Deadline: 6 tháng) và phân công 2 Trưởng nhóm (Android Lead & Backend Lead).
- Tình huống 2 - Triển khai Sprint: Trưởng nhóm Android chia nhỏ dự án thành các Nhiệm vụ: "Thiết kế màn hình thanh toán", "Tích hợp SDK SmartOTP". Sau đó giao các Công việc chi tiết cho lập trình viên kèm file tài liệu API
.pdf.
- Tình huống 3 - Báo cáo tiến độ: Lập trình viên chuyển trạng thái công việc sang
Completed. Toàn bộ Dashboard của Trưởng nhóm và Quản lý dự án tự động nhảy thanh tiến độ (Progress Bar) mà không cần gửi tin nhắn báo cáo.
+-----------------------------------------------------------------------------------+
| QUY TRÌNH VẬN HÀNH DỰ ÁN THỰC TẾ |
+-----------------------------------------------------------------------------------+
| [1. Project Manager] |
| └── Tạo dự án: "Mobile Banking v2.0" (Thời gian: 6 tháng) |
| └── Chỉ định Team Lead (Android Lead, Backend Lead) |
| │ |
| ▼ |
| [2. Team Lead] |
| └── Tạo nhiệm vụ: "Tích hợp SmartOTP" (Thời gian: 2 tuần) |
| └── Giao công việc: "Viết hàm mã hóa RSA" -> Giao cho Developer |
| └── Đính kèm tài liệu: "crypto_spec.pdf" |
| │ |
| ▼ |
| [3. Developer / Member] |
| └── Nhận thông báo Realtime -> Xem tài liệu -> Lập trình |
| └── Đổi trạng thái: In Progress --> Completed |
| │ |
| ▼ |
| [4. Hệ thống Lutech Task] |
| └── Tự động đồng bộ tiến độ lên Dashboard của PM & Lead (< 250ms) |
+-----------------------------------------------------------------------------------+
Hướng dẫn triển khai và bài toán kinh tế (ROI)
- Quy trình triển khai:
- Build mã nguồn ra tệp
.apk hoặc Android App Bundle (.aab) thông qua Android Studio.
- Phân phối nội bộ thông qua Firebase App Distribution đến danh sách email nhân viên công ty Lutech.
- Cấu hình bảng dữ liệu ban đầu trên Firebase Console và phân quyền Admin quản trị.
- Hiệu quả đầu tư (ROI): Doanh nghiệp tiết kiệm được khoảng $1,200 - $2,500 chi phí bản quyền phần mềm quản trị hàng năm, đồng thời tăng năng suất lao động thực tế ước tính 15% cho mỗi nhóm dự án.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Ứng dụng hiện tại mới chỉ được phát triển native trên nền tảng Android, nhân sự sử dụng thiết bị iOS chưa thể tiếp cận trực tiếp.
- Firebase Realtime Database là cơ sở dữ liệu NoSQL, gây khó khăn nhất định khi cần xuất các báo cáo thống kê phức tạp đòi hỏi nhiều phép tổng hợp dữ liệu (Aggregations).
- Tính năng thông báo mới chỉ dừng lại ở cơ chế đồng bộ dữ liệu giao diện khi mở ứng dụng, chưa tích hợp sâu dịch vụ thông báo đẩy nền (Push Notifications) qua FCM khi người dùng tắt hẳn ứng dụng.
Hướng phát triển trong tương lai
- Đa nền tảng: Tái cấu trúc mã nguồn sang Kotlin Multiplatform (KMP) để phát hành đồng thời phiên bản iOS và Web Client với 85% mã nguồn dùng chung.
- Tích hợp Firebase Cloud Messaging (FCM): Gửi thông báo tức thời (Push Notification) đến thanh trạng thái điện thoại khi có công việc mới được giao hoặc khi sắp hết hạn deadline.
- Trực quan hóa Kanban & Biểu đồ Gantt: Xây dựng giao diện kéo thả dạng bảng Kanban và biểu đồ tiến độ trực quan giúp ban lãnh đạo dễ dàng bao quát toàn bộ khối lượng công việc.
Đối tượng hưởng lợi
+------------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+------------------------------------------------------------------------------------+
| [Sinh viên CNTT] ===> Mẫu đồ án chuẩn mực, áp dụng Clean Code & Firebase |
| [Lập trình viên Mobile] ===> Code pattern Kotlin chuẩn, NoSQL JSON structure |
| [Doanh nghiệp SMEs] ===> Giải pháp quản lý nội bộ 0 đồng bản quyền |
| [Cán bộ nghiên cứu] ===> Tài liệu tham khảo về BaaS Architecture di động |
+------------------------------------------------------------------------------------+
- Sinh viên ngành CNTT: Tài liệu tham khảo hoàn chỉnh về quy trình xây dựng đồ án tốt nghiệp từ khâu khảo sát nghiệp vụ thực tế, thiết kế UML/ERD đến lập trình ứng dụng Android chuyên nghiệp.
- Lập trình viên Mobile Android: Cung cấp mẫu thiết kế (Code Pattern) chuẩn về việc áp dụng Kotlin Null-Safety, kỹ thuật xử lý bất đồng bộ dữ liệu với Firebase SDK và kiểm thử tối ưu trên trình giả lập LDPlayer 9.
- Doanh nghiệp phần mềm vừa và nhỏ (SMEs): Giải pháp phần mềm thực tiễn, có thể ứng dụng ngay vào quy trình quản trị nội bộ mà không tốn chi phí duy trì hệ thống máy chủ phức tạp.
- Nhà nghiên cứu / Giảng viên: Minh chứng thực nghiệm cho tính khả thi và hiệu năng vượt trội của mô hình Serverless/BaaS trong các ứng dụng di động doanh nghiệp.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để cài đặt và vận hành ứng dụng là gì?
Ứng dụng tương thích với các thiết bị chạy hệ điều hành Android 9.0 (API level 28) trở lên, dung lượng bộ nhớ trống tối thiểu 50MB, RAM tối thiểu 1.5GB và có kết nối mạng Internet (3G/4G/5G hoặc Wi-Fi). Đối với môi trường giả lập trên máy tính, khuyến nghị sử dụng LDPlayer 9 với cấu hình tối thiểu 2 Core CPU và 2GB RAM.
2. Khả năng mở rộng (Scalability) của hệ thống khi số lượng nhân viên tăng lên hàng nghìn người?
Hệ thống sử dụng hạ tầng đám mây của Google Firebase, có khả năng tự động co giãn (Auto-scaling). Firebase Realtime Database hỗ trợ tới 200,000 kết nối đồng thời (Concurrent Connections) trên một cơ sở dữ liệu mà không làm giảm tốc độ xử lý. Khi doanh nghiệp mở rộng quy mô lớn hơn, có thể dễ dàng chuyển dịch sang Cloud Firestore hoặc cấu hình sharding đa cơ sở dữ liệu.
3. Dữ liệu tệp đính kèm và mật khẩu của người dùng được bảo mật như thế nào?
Mật khẩu người dùng và mật khẩu cấp 2 được băm (Hash) an toàn bằng thuật toán mã hóa một chiều trước khi lưu trữ. Các tệp đính kèm được lưu trên Firebase Cloud Storage và chỉ có thể truy xuất thông qua các Token bảo mật do Firebase Authentication cấp phát theo đúng quyền của nhân viên trong dự án.
4. Chi phí duy trì hệ thống máy chủ hàng tháng ước tính là bao nhiêu?
Với quy mô doanh nghiệp vừa và nhỏ (dưới 100 nhân viên), hệ thống hoàn toàn có thể hoạt động ổn định trong gói miễn phí (Spark Plan) của Firebase. Khi vượt quá ngưỡng, chi phí nâng cấp lên gói trả phí theo dung lượng sử dụng (Blaze Plan) chỉ dao động khoảng $5 - $20/tháng, thấp hơn rất nhiều so với chi phí thuê máy chủ riêng (VPS) hoặc mua tài khoản phần mềm chuyên dụng.
5. Quy trình xử lý khi mất kết nối mạng (Offline mode) diễn ra như thế nào?
Firebase SDK hỗ trợ sẵn tính năng Local Caching. Khi mất kết nối mạng, người dùng vẫn có thể xem lại danh sách công việc và dự án đã được tải trước đó. Mọi thao tác cập nhật trạng thái mới sẽ được ghi tạm vào bộ nhớ cục bộ của thiết bị và tự động đẩy lên máy chủ đám mây ngay khi thiết bị có kết nối Internet trở lại.
Kết luận
Đồ án tốt nghiệp "Xây dựng ứng dụng quản lý công việc của nhân viên tại công ty Lutech" do sinh viên Nguyễn Đăng Khoa thực hiện đã giải quyết thành công bài toán quản trị thực tế của doanh nghiệp. Bằng việc kết hợp sức mạnh của ngôn ngữ lập trình hiện đại Kotlin và nền tảng đám mây thời gian thực Google Firebase, hệ thống mang lại giải pháp quản lý công việc phân tầng minh bạch, bảo mật cao và vận hành ổn định.
Đề tài không chỉ hoàn thành xuất sắc các mục tiêu học thuật và kỹ thuật của một khóa luận tốt nghiệp ngành Công nghệ Thông tin, mà còn chứng minh được giá trị ứng dụng thực tiễn to lớn trong việc nâng cao năng suất lao động và tối ưu hóa chi phí vận hành cho doanh nghiệp. Quý bạn đọc, sinh viên và doanh nghiệp quan tâm có thể tham khảo toàn bộ quy trình phân tích, thiết kế và mã nguồn để triển khai ứng dụng cho đơn vị của mình.