Files
hqland-app/ASSESSMENT.md

8.0 KiB

HQLAND - ĐÁNH GIÁ HIỆN TRẠNG & ĐỀ XUẤT PHÁT TRIỂN

Đánh giá khách quan sau phiên làm việc 24/04/2026
Ngườ đánh giá: AI Assistant (Kimi)
Lưu ý: Đây là đánh giá tự phê bình để cải thiện chất lượng hệ thống


I. ĐIỂM MẠNH (Đã hoàn thành tốt)

1. Kiến trúc kỹ thuật

  • Schemas Architecture: Tách biệt Form/Table ra khỏi Resource → code gọn gàng, dễ bảo trì
  • UUID 100%: Phù hợp với hệ thống phân tán, khó đoán ID
  • PostgreSQL + JSONB: Tận dụng tốt khả năng lưu trữ linh hoạt của Postgres
  • Testing: PHPUnit cấu hình đúng PostgreSQL, test tự động chạy được

2. Nghiệp vụ tài chính

  • Calculation Pipeline: Tính toán step-by-step có làm tròn tại mỗi bước → đúng chuẩn kế toán
  • PaymentObserver: Tự động tính công nợ + khấu trừ dư → giảm sai sót thủ công
  • Lịch thanh toán: Tạo từ template, hỗ trợ nhiều đợt với ngày đến hạn linh hoạt
  • Form Templates: Mail Merge Engine cho phép admin tự tạo mẫu in → giảm phụ thuộc dev

3. Import dữ liệu

  • Import Excel cho Products, Customers, Contracts đều hoạt động
  • Xử lý được ngày tháng Excel (serial number), số điện thoại phức tạp
  • Logic "bắc cầu" 2 file hợp đồng khá thông minh

II. ĐIỂM YẾU & LỖI TIỀM ẨN (Cần sửa gấp)

🔴 Nghiêm trọng - Có thể crash/mất dữ liệu

# Vấn đề Mô tả Hệ quả
1 MailMergeService dùng eval() safeEval() execute string bằng eval('return ' . $expression) Nếu sanitize lỗi → Remote Code Execution. Hiện filter regex chưa đủ chặt
2 Contract::saved() gọi saveQuietly() Sau khi save HĐ, trigger tính toán rồi save lại Nếu logic thay đổi → infinite loop. Hiện tại may mắn không loop vì chỉ update calculation_log nhưng rủi ro cao
3 Không có Transaction ImportContractsComplex dùng DB::beginTransaction nhưng các service khác không Nếu tạo HĐ thành công nhưng tạo lịch TT lỗi → dữ liệu lệch
4 Không có Soft Delete Tất cả model dùng Model::delete() cứng Xóa nhầm HĐ/Thu tiền → mất vĩnh viễn, không audit được

🟡 Trung bình - Ảnh hưởng trải nghiệm

# Vấn đề Mô tả
5 Chưa có phân quyền Chỉ có 1 loại user, ai cũng vào được mọi chức năng
6 Chưa có API Hiện chỉ có Filament Admin Panel
7 ContractForm chưa hiển thị calculation_log đúng Khi create HĐ mới, final_value_display dùng DiscountEngine cũ thay vì Pipeline
8 Payment chưa liên kết người thu Payment chỉ có contract_id, không có collected_by
9 Chưa có sổ quỹ Thu tiền nhưng không ghi nhận vào quỹ tiền mặt/ngân hàng

🟢 Thấp - Cần cải thiện lâu dài

# Vấn đề Mô tả
10 Chưa có CRM Pipeline Không quản lý khách hàng tiềm năng (Lead)
11 Không có đợt mở bán Sản phẩm chỉ có status "Đang mở bán", không có đợt/bLOCK mở bán riêng
12 Chưa có báo cáo BCTC Chỉ có Dashboard widget đơn giản
13 Không có quản lý hạ tầng sau bán infrastructure_status chỉ là JSONB tĩnh

III. SO SÁNH VỚI CHUẨN NGÀNH BĐS VIỆT NAM

Tiêu chí HQLand hiện tại Phần mềm BĐS chuyên nghiệp (Landsoft, REE) Khoảng cách
CRM Lead Không có Quản lý khách đến từ Facebook, sàn... 🔴 Thiếu
Pipeline bán hàng Không có Lead → Chăm sóc → Giữ chỗ → HĐMB 🔴 Thiếu
Đợt mở bán Không có Mở bán Phase 1, 2, 3 với giá/chính sách khác nhau 🔴 Thiếu
Chính sách giá động Chiết khấu tĩnh Chiết khấu theo đợt, theo khách hàng VIP, theo số lượng 🟡 Cơ bản
Tài chính Thu tiền + công nợ BCTC, dòng tiền, đối soát ngân hàng 🟡 Cơ bản
In ấn Form Template In HĐ, phiếu thu, phiếu tính giá 🟢 Tương đương
Phân quyền Không có Role: Admin, Sales, Kế toán, Thu ngân... 🔴 Thiếu
Mobile App Không có App cho sales, app cho khách hàng 🔴 Thiếu

Nhận xét: HQLand hiện tại mới đạt 30-40% so với phần mềm BĐS chuyên nghiệp. Phù hợp làm hệ thống nội bộ quản lý dữ liệu + thu tiền, nhưng chưa đủ để làm phần mềm bán hàng toàn diện.


IV. ĐỀ XUẤT LỘ TRÌNH PHÁT TRIỂN

Giai đoạn 1: Sửa lỗi & An toàn (1 tuần - Ưu tiên CAO NHẤT)

  1. Thay thế eval() trong MailMergeService bằng symfony/expression-language hoặc thư viện math an toàn
  2. Thêm DB::transaction cho tất cả service tạo HĐ, tạo lịch, ghi nhận thu tiền
  3. Thêm Soft Delete cho Contract, Payment, Customer + model DeletedBy để audit
  4. Thêm collected_by vào bảng payments + hiển thị người thu trong Form/Table
  5. Fix Contract::saved() - tránh loop, dùng cách lưu calculation_log an toàn hơn

Giai đoạn 2: Quyền hạn & Báo cáo (2 tuần)

  1. Cài Spatie Permission - Phân quyền: Admin, Sales Manager, Sales, Kế toán, Thu ngân
  2. Báo cáo công nợ chi tiết - Theo khách hàng, theo dự án, theo đợt TT
  3. Báo cáo thu chi - Sổ quỹ tiền mặt, sổ quỹ ngân hàng
  4. Export Excel báo cáo - Báo cáo doanh thu, công nợ cho kế toán

Giai đoạn 3: Mở rộng nghiệp vụ (1 tháng)

  1. CRM Pipeline - Lead → Opportunity → Contract với các stage tùy chỉnh
  2. Quản lý đợt mở bán - Mỗi đợt có giá bán, chính sách chiết khấu riêng
  3. Chính sách bán hàng động - Chiết khấu theo thời điểm, theo số lượng, theo CTV
  4. Notification đợt TT - Email/SMS nhắc thanh toán tự động

Giai đoạn 4: Tích hợp & Tối ưu (2 tháng)

  1. API REST cho mobile app / website bán hàng
  2. Đối soát ngân hàng - Import sao kê ngân hàng, tự động match với phiếu thu
  3. Quản lý bảo hành - Theo dõi sửa chữa hạ tầng, bàn giao nhà
  4. Báo cáo BCTC - Theo chuẩn kế toán Việt Nam, có thể xuất cho thuế

V. KHUYẾN NGHỊ CHO BẠN

Nên làm NGAY (tuần tới):

Sửa lỗi nghiêm trọng #1, #2, #3. Không sửa → hệ thống có thể crash hoặc mất dữ liệu khi dữ liệu lớn lên.

Nên làm TIẾP THEO (tháng tới):

Phân quyền + Báo cáo tài chính. Đây là yêu cầu tối thiểu để kế toán và ban giám đốc sử dụng được.

Có thể ĐỂ SAU:

Mobile app, CRM Pipeline, đối soát ngân hàng. Các tính năng này tốn nhiều thời gian nhưng chưa ảnh hưởng đến vận hành cơ bản.


Đánh giá này dựa trên code review thực tế và so sánh với best practices trong ngành BĐS Việt Nam. Cần cập nhật định kỳ.