Giới thiệu dự án
Tốc độ đô thị hóa nhanh chóng tại Việt Nam đã thúc đẩy sự gia tăng mạnh mẽ của các khu chung cư cao tầng tại các đô thị lớn như TP. Hồ Chí Minh và Hà Nội. Theo thống kê của Bộ Xây dựng, tỷ lệ đô thị hóa cả nước đã vượt mức 40%, kéo theo hàng nghìn tòa nhà chung cư đi vào vận hành mỗi năm. Tuy nhiên, phần lớn các chung cư quy mô vừa và nhỏ (dưới 500 căn hộ) hiện nay vẫn áp dụng phương thức quản trị truyền thống: ghi nhận chỉ số điện nước thủ công bằng sổ sách, theo dõi phiếu thu - chi qua bảng tính Excel phân tán, và tiếp nhận khiếu nại của cư dân qua nhóm mạng xã hội hoặc bảng tin giấy.
THỰC TRẠNG QUẢN LÝ CHUNG CƯ TRUYỀN THỐNG
[Ghi chép sổ sách/Excel] ──> [Độ trễ xử lý 3-5 ngày] ──> [Thất thoát số liệu 12-15%]
[Giao tiếp rời rạc Zalo] ──> [Bỏ sót 20-30% phản ánh] ──> [Bất đồng Cư dân - BQL]
Phương thức vận hành thủ công này làm bộc lộ nhiều điểm nghẽn nghiêm trọng:
- Độ trễ thông tin cao: Thời gian tổng hợp dữ liệu phí dịch vụ, điện nước và phát hành hóa đơn kéo dài từ 3 – 5 ngày mỗi chu kỳ tính phí.
- Nguy cơ sai lệch dữ liệu: Thao tác nhập liệu thủ công dẫn đến tỷ lệ sai sót số liệu tài chính từ 10 – 15%, gây xung đột giữa Ban Quản lý (BQL) và Cư dân.
- Phân quyền trách nhiệm lỏng lẻo: Thiếu cơ chế phân chia quyền hạn minh bạch giữa BQL, Ban Quản trị (BQT), Kế toán, Kỹ thuật, An ninh và Vệ sinh.
- Phản hồi khiếu nại chậm trễ: Các sự cố kỹ thuật (thang máy, rò rỉ nước, PCCC) không được tiếp nhận và điều phối kịp thời theo quy trình chuẩn.
Đồ án khóa luận tốt nghiệp kỹ sư ngành Hệ thống Thông tin tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, thực hiện bởi sinh viên Nguyễn Tấn Tài dưới sự hướng dẫn của ThS. Mai Xuân Hùng, tập trung giải quyết triệt để các bài toán trên thông qua đề tài: "Xây dựng website vận hành chung cư".
graph TD
subgraph "Mục tiêu Dự án"
OB1["1. Chuẩn hóa quy trình nghiệp vụ chung cư"]
OB2["2. Tự động hóa tính toán & phát hành phiếu thu"]
OB3["3. Phân quyền RBAC đa cấp bậc"]
OB4["4. Tối ưu tương tác đa chiều thời gian thực"]
end
Mục tiêu dự án
- Chuẩn hóa quy trình nghiệp vụ: Số hóa toàn diện 18 quy trình vận hành cốt lõi, bao gồm: quản lý căn hộ, kỹ thuật - bảo trì, chỉ số nước, lịch trực an ninh - vệ sinh, kiểm soát gửi xe, sự kiện và phản ánh.
- Tự động hóa tài chính: Xây dựng cơ chế sinh phiếu thu tự động hàng tháng (Auto-batch Billing Engine) dựa trên biểu phí định mức và chỉ số tiêu thụ thực tế.
- Kiểm soát quyền truy cập chặt chẽ: Triển khai mô hình kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) cho 11 nhóm đối tượng người dùng.
- Tối ưu hóa tương tác đa chiều: Thiết lập kênh giao tiếp thông suốt giữa Cư dân, BQL và BQT với thời gian xử lý phản ánh dưới 24 giờ.
Chỉ số kỳ vọng (Measurable Metrics)
- Giảm 85% thời gian tổng hợp biểu phí và phát hành phiếu thu định kỳ.
- Giảm tỷ lệ sai sót số liệu tài chính và chỉ số tiện ích xuống mức 0%.
- Rút ngắn thời gian tiếp nhận và bàn giao phiếu sửa chữa kỹ thuật từ 2 ngày xuống dưới 15 phút.
- Đảm bảo thời gian phản hồi hệ thống (API Response Time) trung bình < 200ms cho 95% các tác vụ nghiệp vụ.
Phạm vi và giới hạn
- Phạm vi: Tập trung vào các quy trình nghiệp vụ quản lý nội bộ và cổng tương tác cư dân cho các khu chung cư quy mô vừa và nhỏ (từ 100 đến 1.000 căn hộ).
- Giới hạn: Hệ thống triển khai trên nền tảng Web Application; chưa tích hợp trực tiếp cổng thanh toán trung gian (Payment Gateway) và chưa kết nối phần cứng IoT đo chỉ số đồng hồ tự động trong phiên bản hiện tại.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Thị trường phần mềm quản lý chung cư tại Việt Nam hiện có một số sản phẩm thương mại như Landsoft Control, PiHome, Bee Home hay Lanber Building. Tuy nhiên, các giải pháp này thường có chi phí bản quyền định kỳ cao, cấu trúc phức tạp vượt quá nhu cầu của các chung cư quy mô vừa, hoặc hạn chế khả năng tùy biến quy trình theo thực tế ban quản lý.
| Tiêu chí phân tích |
Landsoft Control |
PiHome |
Hệ thống PERN Stack (Đề tài) |
| Mô hình triển khai |
On-premise / Enterprise Cloud |
SaaS Cloud |
Web Application (Self-hosted/Cloud) |
| Chi phí bản quyền |
Rất cao (>50 triệu VNĐ/năm) |
Phí thuê bao hàng tháng |
Mã nguồn mở, chi phí vận hành thấp |
| Khả năng tùy biến |
Khó tùy biến theo yêu cầu |
Cố định theo nền tảng |
Linh hoạt cấu hình RBAC & Biểu phí |
| Giao diện người dùng |
Phức tạp, cần đào tạo lâu |
Mobile-first |
Web SPA trực quan, chuẩn hóa UX |
| Độ phủ nghiệp vụ |
Đầy đủ cho đại đô thị |
Chuyên về cư dân |
Tối ưu cho BQL chung cư vừa và nhỏ |
MÔ HÌNH PHÂN HẠNG YÊU CẦU THEO MoSCoW
┌─────────────────────────────────────────────────────────────────────────┐
│ MUST HAVE: │
│ • Xác thực JWT & phân quyền 11 nhóm Actor (RBAC) │
│ • Quản lý căn hộ, cư dân, thiết bị, chỉ số nước │
│ • Tự động tính toán & sinh phiếu thu (Receipt Generation) │
├─────────────────────────────────────────────────────────────────────────┤
│ SHOULD HAVE: │
│ • Quy trình xử lý phản ánh đa cấp (Cư dân -> BQL/BQT) │
│ • Đăng ký/Hủy gửi xe, phê duyệt tổ chức sự kiện │
│ • Phân công kỹ thuật & đánh giá độ hài lòng dịch vụ │
├─────────────────────────────────────────────────────────────────────────┤
│ COULD HAVE: │
│ • Quản lý lịch ca trực an ninh/vệ sinh, đơn nghỉ phép nhân viên │
│ • Quản lý phiếu chi, báo cáo tài chính nội bộ │
├─────────────────────────────────────────────────────────────────────────┤
│ WON'T HAVE (Giai đoạn này): │
│ • Tích hợp cổng thanh toán trực tuyến VNPay/Momo │
│ • Tự động thu thập dữ liệu chỉ số nước qua cảm biến IoT │
└─────────────────────────────────────────────────────────────────────────┘
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình Client-Server 3 lớp (Three-Tier Architecture) sử dụng PERN Stack kết hợp TypeScript nhằm tối ưu hóa tính an toàn kiểu dữ liệu (Type Safety) và hiệu năng xử lý bất đồng bộ (Asynchronous I/O).
graph LR
subgraph "Presentation Layer (Client)"
UI["React 17.x (SPA)"]
ReduxStore["Redux State Manager"]
AxiosClient["Axios HTTP Client"]
UI <--> ReduxStore
ReduxStore <--> AxiosClient
end
subgraph "Application Layer (Server)"
ExpressApp["Express.js 4.x"]
JWTMiddleware["JWT Authentication & RBAC Middleware"]
Controllers["Business Logic Controllers"]
ExpressApp --> JWTMiddleware
JWTMiddleware --> Controllers
end
subgraph "Data Layer (Database)"
PG["PostgreSQL 13.x Database"]
Controllers <--> |SQL Queries / Transactions| PG
end
AxiosClient <--> |RESTful API / JSON| ExpressApp
Technology Stack và phiên bản chi tiết:
- Frontend: React.js v17.0.2, Redux Toolkit v4.1.0, TypeScript v4.3.5, Axios v0.21.1, Ant Design / Material-UI.
- Backend: Node.js v14.17.0 LTS, Express.js v4.17.1, JSON Web Token (JWT) v8.5.1, Bcrypt.js v2.4.3.
- Database Management System: PostgreSQL v13.3 (Hỗ trợ ACID, JSONB indexing, relational integrity).
- Công cụ phát triển & kiểm thử: Visual Studio Code v1.58, pgAdmin 4 v5.4, Postman v8.8.0.
Thiết kế cơ sở dữ liệu quan hệ (Physical Schema)
Cơ sở dữ liệu được chuẩn hóa ở dạng chuẩn 3 (3NF) với hơn 20 bảng thực thể liên kết chặt chẽ:
-- Thiết kế bảng Phân quyền và Người dùng
CREATE TABLE role (
role_id SERIAL PRIMARY KEY,
role_name VARCHAR(50) NOT NULL UNIQUE,
description TEXT
);
CREATE TABLE account (
account_id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
role_id INT REFERENCES role(role_id),
account_type VARCHAR(20) NOT NULL, -- 'STAFF' hoặc 'RESIDENT'
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Thiết kế bảng Quản lý Tài chính & Phiếu thu
CREATE TABLE receipt (
receipt_id SERIAL PRIMARY KEY,
apartment_id INT NOT NULL REFERENCES apartment(apartment_id),
billing_month DATE NOT NULL,
total_amount NUMERIC(12, 2) NOT NULL DEFAULT 0.00,
payment_status VARCHAR(20) NOT NULL DEFAULT 'UNPAID', -- 'UNPAID', 'PAID'
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
confirmed_by INT REFERENCES staff(staff_id)
);
CREATE TABLE receipt_detail (
detail_id SERIAL PRIMARY KEY,
receipt_id INT NOT NULL REFERENCES receipt(receipt_id) ON DELETE CASCADE,
fee_type_id INT NOT NULL REFERENCES fee(fee_id),
amount NUMERIC(12, 2) NOT NULL,
description TEXT
);
SƠ ĐỒ THỰC THỂ CỐT LÕI (ERD TRÍCH ĐOẠN)
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ account │ │ apartment │ │ receipt │
├──────────────────────┤ ├──────────────────────┤ ├──────────────────────┤
│ PK account_id │1 1│ PK apartment_id │1 *│ PK receipt_id │
│ FK role_id ├─────────┤ room_number ├─────────┤ FK apartment_id │
│ username │ │ floor_number │ │ billing_month │
│ password_hash │ │ area_sqm │ │ total_amount │
└──────────────────────┘ └──────────────────────┘ │ payment_status │
└──────────────────────┘
│ 1
│ *
┌──────────────────────┐
│ receipt_detail │
├──────────────────────┤
│ PK detail_id │
│ FK receipt_id │
│ FK fee_type_id │
│ amount │
└──────────────────────┘
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum với chu kỳ Sprint 2 tuần/lần, phân bổ trong tổng thời gian 16 tuần:
LỘ TRÌNH TRIỂN KHAI DỰ ÁN (16 TUẦN)
┌────────────────────────────────┬───────────────────────────────────────────────────────┐
│ Giai đoạn (Phases) │ Kết quả bàn giao chính (Milestone Deliverables) │
├────────────────────────────────┼───────────────────────────────────────────────────────┤
│ Sprint 1 - 2 (Tuần 1 - 4) │ Tài liệu đặc tả Use Case, Thiết kế ERD, Setup CI/CD │
│ Sprint 3 - 4 (Tuần 5 - 8) │ Module Core: Auth (JWT), Phân quyền RBAC, Quản lý Căn hộ│
│ Sprint 5 - 6 (Tuần 9 - 12) │ Module Kỹ thuật, Chỉ số nước, Auto-Billing, Phiếu thu │
│ Sprint 7 - 8 (Tuần 13 - 16) │ UAT Testing, Đo lường tải (Stress test), Đóng gói deploy│
└────────────────────────────────┴───────────────────────────────────────────────────────┘
Implementation và kết quả
Quy trình phát triển và mã nguồn
Hệ thống được phát triển tuân thủ kiến trúc tách biệt giữa Presentation Layer và Application Business Logic. Phía Server áp dụng Middleware-based Pipeline để kiểm soát xác thực và quyền hạn trước khi tiếp cận Controller.
// Middleware xác thực JWT và kiểm tra quyền hạn (Role-based Authorization)
const jwt = require('jsonwebtoken');
const verifyTokenAndRole = (allowedRoles = []) => {
return (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Bearer <Token>
if (!token) {
return res.status(401).json({ success: false, message: 'Access Denied: Token Missing' });
}
try {
const verified = jwt.verify(token, process.env.JWT_SECRET_KEY);
req.user = verified;
if (allowedRoles.length > 0 && !allowedRoles.includes(verified.role_name)) {
return res.status(403).json({ success: false, message: 'Permission Denied: Unauthorized Role' });
}
next();
} catch (error) {
return res.status(403).json({ success: false, message: 'Invalid or Expired Token' });
}
};
};
module.exports = verifyTokenAndRole;
Thuật toán tự động sinh phiếu thu hàng tháng (Batch Billing Generator Algorithm) xử lý tổng hợp các khoản phí cố định và phí biến đổi (chỉ số nước tiêu thụ) với độ phức tạp thời gian $\mathcal{O}(N)$, trong đó $N$ là tổng số lượng căn hộ:
// Thuật toán sinh phiếu thu tự động cho toàn bộ căn hộ trong tháng
exports.generateMonthlyReceipts = async (req, res) => {
const { billingMonth } = req.body; // Định dạng YYYY-MM-01
const client = await pool.connect();
try {
await client.query('BEGIN'); // Bắt đầu Transaction đảm bảo tính toàn vẹn dữ liệu
// 1. Lấy danh sách tất cả các căn hộ đang hoạt động
const apartments = await client.query('SELECT apartment_id, area_sqm FROM apartment WHERE status = $1', ['OCCUPIED']);
for (let apt of apartments.rows) {
let totalAmount = 0;
// 2. Tính tiền quản lý theo diện tích (10,000 VND/m2)
const managementFee = apt.area_sqm * 10000;
totalAmount += managementFee;
// 3. Tính tiền nước dựa trên chỉ số tiêu thụ đã chốt trong tháng
const waterRecord = await client.query(
`SELECT (end_index - start_index) AS consumption, unit_price
FROM water_index
WHERE apartment_id = $1 AND record_month = $2 AND status = 'LOCKED'`,
[apt.apartment_id, billingMonth]
);
let waterFee = 0;
if (waterRecord.rows.length > 0) {
const { consumption, unit_price } = waterRecord.rows[0];
waterFee = consumption * (unit_price || 15000);
totalAmount += waterFee;
}
// 4. Tạo bản ghi Master Receipt
const insertReceiptQuery = `
INSERT INTO receipt (apartment_id, billing_month, total_amount, payment_status)
VALUES ($1, $2, $3, 'UNPAID') RETURNING receipt_id;
`;
const receiptRes = await client.query(insertReceiptQuery, [apt.apartment_id, billingMonth, totalAmount]);
const receiptId = receiptRes.rows[0].receipt_id;
// 5. Thêm chi tiết các khoản phí vào receipt_detail
await client.query(
`INSERT INTO receipt_detail (receipt_id, fee_type_id, amount, description)
VALUES ($1, 1, $2, 'Phí quản lý vận hành'), ($1, 2, $3, 'Tiền nước sinh hoạt')`,
[receiptId, managementFee, waterFee]
);
}
await client.query('COMMIT'); // Hoàn tất Transaction
res.status(200).json({ success: true, message: `Generated receipts for ${apartments.rows.length} apartments successfully.` });
} catch (err) {
await client.query('ROLLBACK'); // Rollback nếu có lỗi xảy ra
res.status(500).json({ success: false, error: err.message });
} finally {
client.release();
}
};
Phía giao diện Client, Redux Toolkit quản lý Unidirectional Data Flow, xử lý trạng thái bất đồng bộ thông qua createAsyncThunk:
// Redux Slice quản lý state sửa chữa căn hộ (Repair State Management)
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import axiosInstance from '../../api/axiosClient';
export const fetchRepairRequests = createAsyncThunk(
'repairs/fetchRequests',
async (_, { rejectWithValue }) => {
try {
const response = await axiosInstance.get('/api/repairs');
return response.data;
} catch (error) {
return rejectWithValue(error.response.data);
}
}
);
const repairSlice = createSlice({
name: 'repairs',
initialState: { list: [], loading: false, error: null },
reducers: {},
extraReducers: (builder) => {
builder
.addCase(fetchRepairRequests.pending, (state) => {
state.loading = true;
})
.addCase(fetchRepairRequests.fulfilled, (state, action) => {
state.loading = false;
state.list = action.payload;
})
.addCase(fetchRepairRequests.rejected, (state, action) => {
state.loading = false;
state.error = action.payload;
});
}
});
export default repairSlice.reducer;
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Quá trình kiểm thử được thực hiện qua 3 tầng: Unit Testing, Integration Testing và Load Testing sử dụng công cụ Postman và Apache JMeter.
- Độ bao phủ kiểm thử (Test Coverage): Đạt 87.4% trên toàn bộ mã nguồn Backend controllers và API routes.
- Kiểm thử chấp nhận người dùng (UAT): Thực nghiệm với 50 người dùng thử nghiệm đại diện cho 11 nhóm Actor. Tỷ lệ hoàn thành tác vụ (Task Completion Rate) đạt 98.2%.
KẾT QUẢ KIỂM THỬ HIỆU NĂNG VỚI APACHE JMETER
┌────────────────────────────────┬───────────────────────────┬───────────────────────────┐
│ Tham số kiểm thử (Metric) │ Mức tải thường (50 CCU) │ Mức tải đỉnh (500 CCU) │
├────────────────────────────────┼───────────────────────────┼───────────────────────────┤
│ Throughput (Giao dịch/giây) │ 185 requests/sec │ 420 requests/sec │
│ Avg Response Time (Phản hồi) │ 68 ms │ 214 ms │
│ Error Rate (Tỷ lệ lỗi) │ 0.00% │ 0.04% │
│ CPU Utilization (Tải CPU máy chủ) 18% │ 62% │
│ RAM Consumption (Bộ nhớ RAM) │ 380 MB │ 720 MB │
└────────────────────────────────┴───────────────────────────┴───────────────────────────┘
Đổi mới và đóng góp
SO SÁNH CÁC CHỈ SỐ CẢI TIẾN HIỆU NĂNG VẬN HÀNH
Thủ công: [████████████████████████] 48 Giờ (Phát hành phiếu thu)
Hệ thống: [█] 10 Giây (-99.9%)
Thủ công: [████████████████████] 12 Giờ (Bàn giao xử lý sự cố)
Hệ thống: [█] 15 Phút (-97.9%)
Thủ công: [████████] 12% Tỷ lệ sai lệch số liệu
Hệ thống: [0%] Không xảy ra sai lệch (-100%)
- Ma trận phân quyền chi tiết (Granular RBAC Engine): Hệ thống hóa phân quyền cho 11 nhóm đối tượng (Trưởng/Phó BQL, BQT, Kế toán, Lễ tân, Tổ trưởng/Nhân viên Kỹ thuật, Tổ trưởng/Nhân viên Vệ sinh, Tổ trưởng/Nhân viên An ninh, Cư dân) với 18 nhóm Use Case chuyên biệt, giải quyết triệt để vấn đề chồng chéo chức năng trong ban quản lý.
- Cơ chế tính toán và kết xuất hóa đơn tự động (Automated Batch Billing): Thay thế toàn bộ quy trình nhập liệu thủ công bằng Transaction-safe SQL batch processing, giảm thời gian tính phí từ 48 giờ xuống dưới 10 giây cho 500 căn hộ.
- Mô hình khép kín quy trình bảo trì & tiếp nhận phản ánh: Tích hợp chu trình khép kín: Gửi yêu cầu $\rightarrow$ Phân công kỹ thuật viên $\rightarrow$ Tiến hành sửa chữa $\rightarrow$ Đóng phiếu sự cố $\rightarrow$ Cư dân chấm điểm mức độ hài lòng (CSAT), giúp tăng mức độ minh bạch lên 100%.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
Hệ thống sẵn sàng áp dụng trực tiếp tại các tòa nhà chung cư thương mại, chung cư nhà ở xã hội quy mô từ 1 đến 3 block (tương đương 200 – 800 căn hộ).
MÔ HÌNH TRIỂN KHAI PRODUCTION (DEPLOYMENT)
[Internet] ──> [Cloudflare CDN / SSL]
│
▼
[Nginx Reverse Proxy: Port 80/443]
│
┌────────────────┴────────────────┐
▼ ▼
[Client: React SPA] [Server: Node.js/Express API]
(Static Hosting/Nginx) (PM2 Cluster Mode: Port 5000)
│
▼
[PostgreSQL 13.x Instance]
(Connection Pool: Max 50)
Phân tích chi phí - lợi ích (Cost-Benefit Analysis & ROI)
- Chi phí triển khai ước tính:
- Máy chủ Cloud VPS (4 Core CPU, 8GB RAM, 100GB SSD): ~600.000 VNĐ/tháng.
- Tên miền & Chứng chỉ SSL: ~300.000 VNĐ/năm.
- Chi phí bản quyền phần mềm: 0 VNĐ (Mã nguồn mở hoàn toàn).
- Hiệu quả kinh tế mang lại:
- Giảm tối thiểu 1 nhân sự kế toán nhập liệu và 1 nhân sự lễ tân trực giấy tờ $\rightarrow$ Tiết kiệm ~15.000.000 – 20.000.000 VNĐ/tháng cho Ban Quản trị.
- Thời gian hoàn vốn đầu tư (ROI Break-even): Ngay trong tháng đầu tiên vận hành.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Giao diện hiện tại tối ưu tốt nhất cho Web Desktop/Tablet, chưa phát triển ứng dụng di động Native (Android/iOS) cho cư dân.
- Chưa tích hợp cổng thanh toán trực tuyến tự động (như VNPay, ZaloPay, MoMo) mà vẫn cần kế toán xác nhận ủy nhiệm chi/tiền mặt.
- Chưa có module tự động đọc dữ liệu từ đồng hồ nước thông minh qua giao thức IoT (Modbus/LoRaWAN).
Hướng phát triển trong tương lai
- Xây dựng Mobile Application: Sử dụng React Native để đồng bộ và chia sẻ Redux business logic hiện có, nâng cao trải nghiệm cư dân.
- Tích hợp Open Payment Gateway: Kết nối Webhook từ ngân hàng/cổng thanh toán để tự động cập nhật trạng thái phiếu thu sang
PAID tức thì.
- Mở rộng trí tuệ nhân tạo (AI): Tự động phân loại và định tuyến phản ánh của cư dân đến đúng bộ phận phụ trách bằng kỹ thuật NLP.
Đối tượng hưởng lợi
graph TD
System["Hệ thống Quản lý Vận hành Chung cư"]
System --> B1["Sinh viên / Nghiên cứu sinh"]
System --> B2["Lập trình viên / Developers"]
System --> B3["Ban Quản lý & Cư dân"]
System --> B4["Doanh nghiệp Vận hành BĐS"]
B1 --- D1["Tham khảo kiến trúc PERN Stack & Luận văn mẫu UIT"]
B2 --- D2["Kế thừa RESTful API patterns & RBAC Boilerplate"]
B3 --- D3["Tiết kiệm 85% thời gian xử lý thủ tục & Minh bạch phí"]
B4 --- D4["Cắt giảm 30-40% chi phí quản trị phần mềm định kỳ"]
- Sinh viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình phân tích thiết kế hệ thống thông tin (UML, Use Case, Sequence, ERD) chuẩn học thuật từ Trường ĐH Công nghệ Thông tin – ĐHQG-HCM.
- Lập trình viên (Developers): Cung cấp bộ khung Boilerplate mã nguồn chuẩn mực kết hợp React, TypeScript, Redux Toolkit, Node.js, Express và PostgreSQL.
- Ban Quản lý và Cư dân: Chuẩn hóa quy trình sống văn minh, tiết kiệm thời gian tiếp nhận dịch vụ, loại bỏ tranh chấp về số liệu tài chính.
- Doanh nghiệp quản trị BĐS: Sở hữu giải pháp vận hành chi phí thấp, chủ động mở rộng tính năng mà không bị phụ thuộc vào nhà cung cấp phần mềm thương mại.
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?
Hệ thống được tối ưu hóa cao nhờ kiến trúc Node.js non-blocking I/O và PostgreSQL. Yêu cầu cấu hình tối thiểu để phục vụ tòa nhà 500 căn hộ:
- Server: 2 Core CPU, 4GB RAM, 40GB SSD Storage, Hệ điều hành Ubuntu Server 20.04 LTS.
- Client: Bất kỳ thiết bị nào có trình duyệt web hiện đại (Google Chrome, Firefox, Safari, Edge).
2. Hệ thống có khả năng mở rộng (Scalability) phục vụ nhiều tòa nhà cùng lúc không?
Kiến trúc RESTful API Stateless cho phép hệ thống dễ dàng mở rộng theo chiều ngang (Horizontal Scaling). Bằng cách đặt Nginx làm Load Balancer phía trước nhiều Node.js instances chạy qua PM2, kết hợp kỹ thuật Database Read/Write Replica trên PostgreSQL, hệ thống có thể nâng ngưỡng chịu tải lên hơn 10.000 căn hộ mà không phải thay đổi cấu trúc mã nguồn.
3. Làm thế nào để nhập dữ liệu căn hộ và cư dân ban đầu vào hệ thống?
Hệ thống cung cấp API và giao diện hỗ trợ nạp dữ liệu hàng loạt (Batch Import) thông qua tệp tin Excel/CSV theo mẫu định sẵn, giúp khởi tạo toàn bộ danh sách căn hộ, cư dân và thông tin gửi xe chỉ trong vài phút.
4. Chi phí bảo trì và vận hành hệ thống định kỳ bao gồm những gì?
Hệ thống sử dụng 100% công nghệ mã nguồn mở, do đó không phát sinh phí duy trì bản quyền. Chi phí duy nhất là tiền thuê hạ tầng Cloud VPS (khoảng 300.000 – 600.000 VNĐ/tháng) và sao lưu cơ sở dữ liệu định kỳ.
5. Dữ liệu tài chính và thông tin cư dân được bảo mật như thế nào?
Mật khẩu người dùng được băm một chiều bằng thuật toán Bcrypt với salt round tiêu chuẩn. Mọi yêu cầu truy vấn API đều bắt buộc phải kèm theo JSON Web Token (JWT) có chữ ký số bí mật, đồng thời được kiểm soát qua tầng RBAC Middleware ngăn chặn triệt để lỗ hổng truy cập trái phép chéo dữ liệu (IDOR).
Kết luận
Đồ án khóa luận "Xây dựng website vận hành chung cư" của tác giả Nguyễn Tấn Tài (Khoa Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM) đã giải quyết trọn vẹn bài toán chuyển đổi số công tác quản trị tòa nhà. Bằng việc ứng dụng thành công ngăn xếp công nghệ hiện đại PERN Stack (PostgreSQL, Express, React, Node.js) cùng ngôn ngữ TypeScript, hệ thống đã số hóa 18 quy trình nghiệp vụ phức tạp thành một nền tảng trực tuyến thống nhất, bảo mật và hiệu năng cao.
Dự án không chỉ là một công trình nghiên cứu học thuật đạt chuẩn kỹ sư CNTT mà còn mang giá trị thực tiễn vượt trội, cung cấp giải pháp vận hành tối ưu chi phí cho các khu chung cư hiện đại trong kỷ nguyên đô thị thông minh. Quý độc giả, sinh viên và nhà phát triển có thể tham khảo kiến trúc này để ứng dụng, mở rộng cho các hệ thống ERP quản lý bất động sản quy mô lớn hơn trong tương lai.