Giới thiệu dự án
Trong bối cảnh chuyển đổi số và tự động hóa quy trình quản trị doanh nghiệp, việc tối ưu hóa nguồn lực nhân sự trong các dự án công nghệ thông tin đóng vai trò then chốt đối với năng suất và chi phí vận hành. Theo báo cáo từ Project Management Institute (PMI), hơn 38% dự án công nghệ gặp tình trạng trễ tiến độ hoặc vượt ngân sách xuất phát từ khâu điều phối nhân sự không đồng bộ và quản lý chi phí phát sinh thiếu minh bạch.
Tại Công ty Cổ phần Công nghệ số Thông minh SDTECH, hoạt động quản trị lịch công tác (business trip) và đăng ký làm việc ngoài giờ (overtime - OT) trước đây chủ yếu thực hiện qua bảng tính Excel phân tán, biểu mẫu giấy và chuỗi email thủ công. Phương thức này bộc lộ nhiều điểm nghẽn:
- Quy trình phê duyệt phê duyệt công tác phí và lịch OT kéo dài từ 3 đến 5 ngày làm việc.
- Dữ liệu lịch trình phân tán, gây khó khăn cho Quản lý dự án (Project Manager - PM) trong việc nắm bắt nhân sự khả dụng tại các điểm onsite.
- Thất thoát chứng từ, sai lệch số liệu tạm ứng và hoàn ứng công tác phí giữa người phụ trách và bộ phận quản lý.
- Thiếu kênh tương tác nội bộ tập trung để khảo sát ý kiến và cập nhật tin tức dự án.
Đề tài "Xây dựng hệ thống Website quản lý lịch công tác của nhân viên trong dự án công ty SDTECH" do sinh viên Phạm Ngọc Anh thực hiện dưới sự hướng dẫn của TS. Hoàng Thị Mỹ Lệ tại Trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng tập trung giải quyết triệt để các bài toán trên thông qua giải pháp cổng thông tin doanh nghiệp hợp nhất.
Mục tiêu cụ thể của dự án:
- Số hóa 100% quy trình lập kế hoạch, phân công và theo dõi lịch công tác của nhân viên theo từng dự án cụ thể.
- Tự động hóa chu trình xét duyệt chi phí công tác: từ dự toán tạm ứng, cập nhật hóa đơn thực tế đến quyết toán hoàn ứng.
- Tích hợp module đăng ký – phê duyệt làm việc ngoài giờ (OT) kèm hệ thống thông báo tức thời qua thư điện tử (Email Notification Service).
- Xây dựng phân hệ tương tác nội bộ: tin tức, sự kiện, tuyển dụng và hệ thống bình chọn (polling) trực quan hóa bằng biểu đồ.
Giải pháp được xây dựng trên nền tảng Liferay Portal 7.2 kết hợp khung phát triển Spring Boot (ngôn ngữ Java) và hệ quản trị cơ sở dữ liệu quan hệ MySQL. Sự kết hợp này mang lại khả năng phân quyền mạnh mẽ theo chuẩn doanh nghiệp (Role-Based Access Control - RBAC), tính mở rộng theo kiến trúc module OSGi và khả năng bảo mật cấp cao.
+-------------------------------------------------------------------------+
| KẾT QUẢ KỲ VỌNG |
+------------------------------------+------------------------------------+
| Chỉ số vận hành | Mục tiêu định lượng |
+------------------------------------+------------------------------------+
| Thời gian phê duyệt công tác / OT | Giảm từ 72h xuống < 4h |
| Độ chính xác hạch toán chi phí | Đạt 99.5% (loại bỏ sai sót thủ công)|
| Mức độ hài lòng của nhân sự | > 90% đánh giá tích cực |
| Tốc độ truy xuất dữ liệu báo cáo | < 500ms cho tập dữ liệu lớn |
+------------------------------------+------------------------------------+
Phạm vi đề tài tập trung vào việc quản lý nội bộ các dự án tại SDTECH. Giới hạn kỹ thuật hiện tại là hệ thống xử lý đối soát hóa đơn chứng từ dựa trên dữ liệu nhập và ảnh chụp đính kèm, chưa tích hợp trực tiếp cổng Open Banking thanh toán chi tự động.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, quy trình quản lý tại SDTECH được đặt lên bàn cân so sánh với các giải pháp phổ biến trên thị trường:
| Tiêu chí |
Quản lý thủ công (Excel + Email) |
Phần mềm SaaS rời rạc (Trello, Base) |
Hệ thống SDTECH Portal (Đề tài) |
| Chi phí bản quyền |
Thấp (sẵn có) |
Cao (tính theo user/tháng) |
Tối ưu (Mã nguồn mở Liferay/Spring) |
| Tính đồng bộ quy trình |
Rất thấp, rời rạc |
Trung bình (cần tích hợp nhiều app) |
Cao (thiết kế may đo theo quy trình SDTECH) |
| Bảo mật & Phân quyền |
Kém, dễ lộ dữ liệu |
Phụ thuộc bên thứ ba |
Phân quyền 4 lớp nghiêm ngặt (RBAC) |
| Quản lý tài chính công tác |
Thủ công, dễ sai sót |
Cần plugin bổ sung phức tạp |
Khép kín: Dự toán -> Tạm ứng -> Quyết toán |
| Khả năng tùy biến |
Không |
Bị giới hạn bởi nhà cung cấp |
Toàn quyền mở rộng qua OSGi Bundle |
Yêu cầu người dùng được phân loại theo mô hình MoSCoW:
- Must Have (Bắt buộc): Xác thực người dùng; Phân quyền 4 vai trò (Quản trị viên, Quản lý dự án, Người phụ trách công tác, Nhân viên); CRUD dự án và nhân viên; Đăng ký và duyệt OT; Quản lý đợt công tác và chi phí công tác; Thông báo qua Email.
- Should Have (Nên có): Hệ thống bình chọn trực quan hóa bằng biểu đồ tròn (Pie chart) và biểu đồ cột (Bar chart); Quản lý tin tức, sự kiện, tuyển dụng nội bộ.
- Could Have (Có thể có): Xuất báo cáo lịch trình và bảng kê chi phí ra định dạng Excel/PDF; Bộ lọc đa tiêu chí theo khoảng thời gian và dự án.
- Won't Have (Chưa thực hiện ở giai đoạn này): Nhận diện hóa đơn tự động bằng OCR; Ứng dụng di động Native iOS/Android.
Thiết kế hệ thống
Kiến trúc hệ thống được thiết kế theo mô hình phân tầng hướng dịch vụ (Multi-tier Architecture) tích hợp chuẩn Portlet JSR 286 / OSGi của Liferay Portal 7.2:
flowchart TD
subgraph Presentation_Layer [Tầng Giao Diện - Presentation Layer]
UI_User[Giao diện Người dùng: Tin tức, Sự kiện, Bình chọn]
UI_Admin[Giao diện Quản trị: Dự án, Nhân sự, Phân quyền]
UI_PM[Giao diện Quản lý dự án: Phê duyệt OT, Lịch công tác]
UI_Officer[Giao diện Phụ trách công tác: Cập nhật chi phí, Hóa đơn]
end
subgraph Portal_Layer [Tầng Cổng thông tin - Liferay Portal 7.2 Engine]
Portlet_Container[Portlet Container / OSGi Runtime Modules]
Auth_RBAC[Liferay RBAC Security & User Management Engine]
end
subgraph Service_Layer [Tầng Xử lý Nghiệp vụ - Spring Boot MVC Services]
Trip_Service[Business Trip & Expense Service]
OT_Service[Overtime Management Service]
Project_Service[Project & Role Assignment Service]
Mail_Service[JavaMail Asynchronous Notification Service]
end
subgraph Data_Layer [Tầng Dữ liệu - Persistence & Database]
JPA_Hibernate[Spring Data JPA / Hibernate ORM]
MySQL_DB[(Hệ quản trị CSDL MySQL 8.0)]
end
Presentation_Layer --> Portal_Layer
Portal_Layer --> Service_Layer
Service_Layer --> Data_Layer
Tech Stack chi tiết:
- Ngôn ngữ nền tảng: Java SE Development Kit (JDK) 8 / 11.
- Khung ứng dụng: Spring Boot Framework 2.6.x (triển khai mô hình MVC), Spring Data JPA.
- Nền tảng Cổng điện tử: Liferay Portal Community Edition 7.2 GA1 (kiến trúc OSGi, tuân thủ tiêu chuẩn kỹ thuật Cổng thông tin JSR 168/286).
- Hệ quản trị CSDL: MySQL Community Server 8.0.28 với InnoDB Engine (hỗ trợ đầy đủ giao dịch ACID, khóa mức dòng Row-level Locking).
- Công cụ thiết kế & lập trình: StarUML 4.x, IntelliJ IDEA Ultimate, XAMPP / MySQL Workbench.
- Giao thức truyền thông: HTTP/HTTPS, JavaMail API qua giao thức SMTP.
Thiết kế Cơ sở Dữ liệu (Database Schema Entities):
Hệ thống sử dụng mô hình cơ sở dữ liệu quan hệ được chuẩn hóa ở mức 3NF:
users (user_id [PK], username, password_hash, email, full_name, department_id, status)
projects (project_id [PK], project_name, start_date, end_date, budget, manager_id [FK])
project_members (member_id [PK], project_id [FK], user_id [FK], role_in_project)
business_trips (trip_id [PK], project_id [FK], leader_id [FK], destination, start_time, end_time, purpose, advance_amount, status)
trip_expenses (expense_id [PK], trip_id [FK], expense_name, amount, receipt_image_url, status, approved_by [FK])
overtime_registrations (ot_id [PK], user_id [FK], project_id [FK], ot_date, hours, task_description, status, approver_id [FK])
poll_questions & poll_answers (poll_id, question_text, answer_text, vote_count)
Thiết kế API Endpoints nội bộ tiêu biểu:
| Phương thức |
Endpoint URI |
Actor cho phép |
Chức năng nghiệp vụ |
POST |
/api/v1/overtime/register |
Nhân viên |
Đăng ký ca làm ngoài giờ và gửi mail cho PM |
PUT |
/api/v1/overtime/{id}/approve |
Quản lý dự án |
Phê duyệt/Từ chối yêu cầu OT kèm lý do |
POST |
/api/v1/trips |
Quản lý dự án |
Tạo đợt công tác mới cho dự án |
POST |
/api/v1/trips/{id}/expenses |
Phụ trách công tác |
Cập nhật các khoản mục chi phí thực tế |
PUT |
/api/v1/trips/{id}/expenses/settle |
Quản lý dự án / Admin |
Phê duyệt quyết toán chi phí công tác |
GET |
/api/v1/polls/results/{id} |
Tất cả Actor |
Trả về dữ liệu biểu đồ bình chọn JSON |
Phương pháp nghiên cứu và phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm lặp (Iterative Software Development Lifecycle) kết hợp các nguyên tắc linh hoạt của Agile:
- Khảo sát & Phân tích (Tuần 1 - 3): Phỏng vấn trực tiếp các bên liên quan tại SDTECH, xây dựng sơ đồ Use-Case và đặc tả kịch bản (2.1 - 2.19).
- Thiết kế kiến trúc & CSDL (Tuần 4 - 6): Lập sơ đồ Class, Sequence Diagram, thiết kế cơ sở dữ liệu trên StarUML và MySQL.
- Phát triển module (Tuần 7 - 12): Xây dựng các Portlet, triển khai nghiệp vụ Spring Boot, tích hợp giao diện Bootstrap/Liferay Theme.
- Kiểm thử & Đóng gói (Tuần 13 - 16): Kiểm thử chức năng, kiểm thử luồng gửi email, đo lường hiệu năng và viết tài liệu hướng dẫn.
Implementation và kết quả
Development Process & Code Implementation
Toàn bộ hệ thống tuân thủ nghiêm ngặt nguyên lý Clean Code và cấu trúc chuẩn MVC. Dưới đây là hiện thực hóa nghiệp vụ quan trọng: Xử lý phê duyệt chi phí công tác, kiểm tra ngân sách tạm ứng và tự động kích hoạt luồng gửi mail phản hồi.
package com.sdtech.portal.service.impl;
import com.sdtech.portal.model.BusinessTrip;
import com.sdtech.portal.model.TripExpense;
import com.sdtech.portal.repository.BusinessTripRepository;
import com.sdtech.portal.repository.TripExpenseRepository;
import com.sdtech.portal.service.EmailService;
import com.sdtech.portal.service.TripExpenseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
@Service
public class TripExpenseServiceImpl implements TripExpenseService {
@Autowired
private TripExpenseRepository expenseRepository;
@Autowired
private BusinessTripRepository tripRepository;
@Autowired
private EmailService emailService;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean approveTripExpense(Long tripId, Long approverId, boolean isApproved, String rejectReason) {
BusinessTrip trip = tripRepository.findById(tripId)
.orElseThrow(() -> new IllegalArgumentException("Không tìm thấy đợt công tác mã: " + tripId));
List<TripExpense> expenses = expenseRepository.findByBusinessTrip_TripId(tripId);
BigDecimal totalActualExpense = expenses.stream()
.map(TripExpense::getAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
if (isApproved) {
trip.setStatus("APPROVED_SETTLEMENT");
expenses.forEach(e -> e.setStatus("APPROVED"));
expenseRepository.saveAll(expenses);
tripRepository.save(trip);
// Gửi email thông báo cho Người phụ trách công tác và Kế toán Admin
String emailContent = String.format(
"Đợt công tác tại [%s] của dự án [%s] đã được duyệt quyết toán.\nTổng chi: %s VNĐ | Tạm ứng: %s VNĐ",
trip.getDestination(), trip.getProject().getProjectName(),
totalActualExpense.toString(), trip.getAdvanceAmount().toString()
);
emailService.sendAsyncMail(trip.getLeader().getEmail(), "[SDTECH] Thông báo duyệt chi phí công tác", emailContent);
return true;
} else {
trip.setStatus("REJECTED");
tripRepository.save(trip);
String emailContent = "Chi phí công tác đợt [" + trip.getDestination() + "] bị từ chối duyệt. Lý do: " + rejectReason;
emailService.sendAsyncMail(trip.getLeader().getEmail(), "[SDTECH] Từ chối duyệt chi phí công tác", emailContent);
return false;
}
}
}
Kiểm tra xung đột thời gian khi nhân viên đăng ký lịch làm việc ngoài giờ (Algorithm: Interval Overlap Check):
$$\text{Overlap} = (\text{NewStart} < \text{ExistingEnd}) \land (\text{NewEnd} > \text{ExistingStart})$$
@Query("SELECT COUNT(ot) FROM OvertimeRegistration ot WHERE ot.user.userId = :userId " +
"AND ot.status IN ('PENDING', 'APPROVED') " +
"AND ot.otDate = :otDate " +
"AND ((:startTime < ot.endTime) AND (:endTime > ot.startTime))")
Long countOverlappingOvertime(@Param("userId") Long userId,
@Param("otDate") LocalDate otDate,
@Param("startTime") LocalTime startTime,
@Param("endTime") LocalTime endTime);
Testing và Validation
Hệ thống trải qua các giai đoạn kiểm thử nghiêm ngặt bao gồm Unit Test (JUnit 5 / Mockito), Integration Test và User Acceptance Testing (UAT) tại môi trường SDTECH:
+-------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ HỆ THỐNG |
+------------------------+------------+------------+-----------+----------------+
| Phân hệ kiểm thử | Tổng ca test| Thành công | Thất bại | Tỷ lệ bao phủ |
+------------------------+------------+------------+-----------+----------------+
| Quản lý dự án & Role | 35 | 35 | 0 | 94.2% |
| Đăng ký & Duyệt OT | 42 | 42 | 0 | 98.0% |
| Chi phí công tác | 50 | 50 | 0 | 96.5% |
| Hệ thống Mail Alert | 20 | 19 (1 trễ) | 0 | 92.0% |
| Phân hệ bình chọn | 18 | 18 | 0 | 100.0% |
| TỔNG CỘNG | 165 | 164 | 0 | 96.1% (Avg) |
+------------------------+------------+------------+-----------+----------------+
Đo kiểm hiệu năng thực tế (Performance Benchmark) với công cụ Apache JMeter:
- Tải đồng thời: 200 người dùng truy cập mô phỏng gửi request cùng lúc.
- Thời gian đáp ứng trung bình (Average Response Time): 285ms (thấp hơn nhiều so với ngưỡng tiêu chuẩn 1000ms).
- Throughput: 142 requests/second trên máy chủ thử nghiệm tiêu chuẩn.
- Tỷ lệ lỗi phát sinh (Error Rate): 0.00%.
Kết quả đạt được
Hệ thống đã bàn giao đầy đủ các chức năng theo đúng mục tiêu:
- Giao diện trang công khai: Cổng thông tin giới thiệu SDTECH, tin tức công nghệ, sự kiện nội bộ, cổng thông tin tuyển dụng và module bình chọn thăm dò ý kiến với biểu đồ thời gian thực.
- Giao diện trang quản trị nội bộ: Quản lý danh mục dự án, hồ sơ nhân sự, phân vai trò thành viên trong dự án.
- Quy trình công tác & tài chính khép kín: Cho phép PM tạo chuyến công tác $\rightarrow$ Admin duyệt tạm ứng $\rightarrow$ Phụ trách cập nhật chi tiết hóa đơn $\rightarrow$ PM duyệt quyết toán $\rightarrow$ Tự động gửi email thông báo trạng thái tại từng bước.
Đổi mới và đóng góp
- Đổi mới kiến trúc tích hợp Liferay 7.2 và Spring Boot: Đề tài đã khai thác triệt để mô hình module OSGi trên Liferay 7.2. Các phân hệ chức năng (Portlets) được đóng gói dưới dạng các bundle độc lập, cho phép nâng cấp, bảo trì hoặc thêm mới chức năng mà không làm gián đoạn (zero-downtime) toàn bộ hệ thống.
- Tự động hóa luồng nghiệp vụ tài chính công tác: Thay vì tách rời giữa quản lý tiến độ dự án và kế toán chi phí, hệ thống liên kết trực tiếp chi phí công tác vào ngân sách của từng dự án cụ thể. Điều này giúp loại bỏ 100% tình trạng vượt ngân sách mà không có cảnh báo.
- Hiệu quả định lượng vượt trội:
- Cắt giảm 78% thời gian xử lý hồ sơ đi công tác của nhân viên.
- Giảm thiểu 100% hiện tượng thất lạc chứng từ nhờ tính năng lưu trữ hóa đơn điện tử đính kèm.
- Nâng cao 65% tốc độ tổng hợp báo cáo định kỳ cho ban lãnh đạo công ty.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế (Use Case Scenario)
Khi dự án "Core Banking SDTECH" cần cử 3 kỹ sư đi onsite tại khách hàng ở Hà Nội trong 5 ngày:
- Quản lý dự án (PM): Truy cập hệ thống $\rightarrow$ Tạo lịch công tác mới cho 3 nhân sự $\rightarrow$ Chỉ định 1 Kỹ sư trưởng làm "Người phụ trách công tác" $\rightarrow$ Nhập đề xuất tiền tạm ứng 15.000.000 VNĐ.
- Quản trị viên (Trưởng phòng/Kế toán): Nhận thông báo $\rightarrow$ Xem xét ngân sách dự án $\rightarrow$ Duyệt chi tạm ứng.
- Người phụ trách công tác: Trong quá trình công tác, chụp ảnh vé máy bay, hóa đơn khách sạn và nhập trực tiếp lên website.
- Kết thúc công tác: Người phụ trách ấn "Hoàn thành quyết toán". PM và Kế toán kiểm tra tổng chi (ví dụ: 14.200.000 VNĐ), ấn "Duyệt" $\rightarrow$ Hệ thống tự động tính số tiền hoàn ứng (800.000 VNĐ) và gửi email tổng hợp cho tất cả các bên.
Hướng dẫn triển khai hạ tầng (Deployment Guide)
Yêu cầu hệ thống tối thiểu:
- Hệ điều hành: Ubuntu Server 20.04 LTS / Windows Server 2019.
- Phần cứng: 4 vCPU, 8GB RAM (khuyến nghị 16GB cho môi trường Production Liferay), 50GB SSD.
- Phần mềm môi trường: OpenJDK 11, MySQL Server 8.0, Liferay DXP/Portal 7.2 CE Bundled with Apache Tomcat 9.
Các bước triển khai:
# 1. Cài đặt môi trường Java và MySQL trên máy chủ Linux
sudo apt update && sudo apt install -y openjdk-11-jdk mysql-server
# 2. Khởi tạo Cơ sở dữ liệu cho Liferay và Ứng dụng Quản lý công tác
mysql -u root -p -e "CREATE DATABASE lportal CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p -e "CREATE DATABASE sdtech_worktrip CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 3. Cấu hình file portal-ext.properties trong thư mục Liferay
cat <<EOF > /opt/liferay-ce-portal-7.2.0-ga1/portal-ext.properties
jdbc.default.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost:3306/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=root
jdbc.default.password=YourSecurePassword
EOF
# 4. Build và Deploy các Module Spring Boot Portlet
mvn clean package
cp target/sdtech-worktrip-portlet-1.0.0.jar /opt/liferay-ce-portal-7.2.0-ga1/deploy/
# 5. Khởi động máy chủ Liferay Portal Tomcat
cd /opt/liferay-ce-portal-7.2.0-ga1/tomcat-9.0.17/bin
./startup.sh
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại:
- Hệ thống chưa có ứng dụng di động độc lập (Mobile Native App), người dùng di động phải thao tác qua trình duyệt web responsive.
- Tính năng kiểm tra hóa đơn chưa tích hợp trí tuệ nhân tạo (AI OCR) để tự động đọc mã số thuế, tổng tiền trên hóa đơn VAT.
- Phụ thuộc vào dịch vụ máy chủ mail ngoài (SMTP Server), dễ bị trễ nếu nghẽn mạng bên ngoài.
Hướng phát triển trong tương lai:
- Xây dựng ứng dụng di động đa nền tảng bằng Flutter hoặc React Native cho phép chụp hóa đơn và định vị GPS điểm check-in công tác.
- Tích hợp module AI OCR (sử dụng Tesseract / Google Vision API) để trích xuất dữ liệu hóa đơn tự động với độ chính xác trên 95%.
- Tích hợp hệ sinh thái Open Banking để tự động giải ngân tiền tạm ứng ngay sau khi Admin bấm duyệt.
Đối tượng hưởng lợi
+---------------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI & GIÁ TRỊ |
+-------------------+-------------------------------------------------------------------+
| Nhóm đối tượng | Lợi ích & Giá trị thực tế mang lại |
+-------------------+-------------------------------------------------------------------+
| Sinh viên / IT | Tài liệu tham khảo chuẩn mực về tích hợp Liferay Portal 7.2, |
| | kiến trúc OSGi và khung ứng dụng Spring Boot trong bài toán thật.|
+-------------------+-------------------------------------------------------------------+
| Lập trình viên | Mã nguồn mẫu rõ ràng về việc xây dựng Role-Based Access Control, |
| | phân chia Portlet độc lập, xử lý Transactional và JavaMail. |
+-------------------+-------------------------------------------------------------------+
| Doanh nghiệp SME | Bộ giải pháp phần mềm quản trị lịch trình - tài chính công tác |
| | khép kín, sẵn sàng áp dụng giúp tiết kiệm 15-20% chi phí quản trị.|
+-------------------+-------------------------------------------------------------------+
| Giảng viên / NC | Đề tài ứng dụng thực tiễn cao, đáp ứng các tiêu chuẩn kỹ thuật |
| | CNTT doanh nghiệp và quy định của Bộ Thông tin & Truyền thô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 để vận hành hệ thống là gì?
Máy chủ cần cài đặt Java JDK 8 hoặc 11, MySQL 8.0, dung lượng RAM tối thiểu 8GB (khuyến nghị 16GB vì Liferay Portal chạy kèm JVM chiếm tài nguyên đáng kể), ổ cứng tối thiểu 50GB SSD để lưu trữ ảnh hóa đơn chứng từ.
2. Hệ thống có khả năng chịu tải và mở rộng (Scalability) như thế nào?
Nhờ kiến trúc mô-đun hóa OSGi của Liferay 7.2 và Spring Boot, hệ thống dễ dàng cấu hình chạy Cluster đa máy chủ (Multi-node Clustered Environment), kết hợp cơ chế Load Balancing với Nginx và MySQL Master-Slave Replication khi quy mô nhân sự tăng lên hàng nghìn người.
3. Làm thế nào để tích hợp hệ thống với phần mềm nhân sự hoặc kế toán hiện có của công ty?
Hệ thống cung cấp sẵn các giao tiếp chuẩn Web Services (RESTful API / JSON). Các phần mềm kế toán như MISA, FAST hay hệ thống ERP có thể dễ dàng gọi API để đồng bộ dữ liệu quyết toán chi phí công tác.
4. Chi phí duy trì và bảo trì hệ thống hàng năm ước tính bao nhiêu?
Hệ thống sử dụng hoàn toàn các giải pháp mã nguồn mở (Liferay CE, Spring Boot, MySQL Community) nên không tốn chi phí bản quyền phần mềm định kỳ. Doanh nghiệp chỉ chi trả chi phí thuê máy chủ đám mây (Cloud VPS khoảng 500.000 – 1.000.000 VNĐ/tháng).
5. Thời gian hoàn vốn đầu tư (ROI) cho doanh nghiệp khi triển khai hệ thống là bao lâu?
Với việc giảm thiểu sai sót tài chính, tiết kiệm 70% thời gian hành chính của PM và Kế toán, hệ thống giúp doanh nghiệp quy mô 50-100 nhân sự thu hồi chi phí triển khai chỉ sau 3 đến 6 tháng vận hành.
Kết luận
Đồ án tốt nghiệp "Xây dựng hệ thống Website quản lý lịch công tác của nhân viên trong dự án công ty SDTECH" do sinh viên Phạm Ngọc Anh thực hiện đã giải quyết trọn vẹn và chuyên nghiệp bài toán thực tiễn tại doanh nghiệp. Bằng cách kết hợp linh hoạt giữa cổng thông tin Liferay Portal 7.2, khung phát triển hiện đại Spring Boot và hệ quản trị CSDL MySQL, hệ thống mang lại một nền tảng quản trị phân quyền đa cấp, minh bạch hóa tài chính và tự động hóa quy trình công tác.
Đề tài không chỉ đáp ứng xuất sắc các yêu cầu học thuật của một đồ án tốt nghiệp ngành Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng, mà còn là sản phẩm có tính ứng dụng cao, sẵn sàng triển khai thực tế tại các doanh nghiệp vừa và nhỏ trong kỷ nguyên số hóa. Quý độc giả, giảng viên và sinh viên quan tâm có thể tiếp cận mã nguồn và tài liệu thiết kế để làm tiền đề phát triển các hệ thống cổng thông tin doanh nghiệp thế hệ mới.