KIẾN THỨC NỀN TẢNG, KĨ THUẬT
Java - Spring Boot
− Spring Boot là một dự án phát triển bởi JAV (ngôn ngữ java) trong hệ sinh thái
Spring Framework giúp lập trình viên đơn giản hóa quá trình phát triển ứng dụng, cho phép họ tập trung vào việc phát triển các chức năng kinh doanh mà không phải lo lắng về các vấn đề phức tạp khác.
2.1.2 Tại sao nên sử dụng JavaSpring Boot
Khi sử dụng Java để tạo dự án web, quá trình thực hiện trở nên đơn giản và nhanh chóng hơn, vì Java tự động xử lý nhiều công đoạn, tương tự như các framework PHP như Symfony và Laravel Điều này cho phép lập trình viên tập trung vào việc phát triển Controller Thêm vào đó, mình nhận thấy rằng ứng dụng web Java hoạt động nhanh hơn so với PHP ngay cả khi đã sử dụng APC Cache.
2.1.3 Áp dụng Java vào đề tài
− Nhóm chúng em sử dụng Java để làm Backend dễ dàng hơn và có nhiều chức năng phát triển hơn.
Postgresql
PostgreSQL is an advanced open-source object-relational database management system designed for general-purpose use.
− PostgreSQL được phát triển dựa trên POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, Đại học California
PostgreSQL được phát triển để hoạt động trên các hệ điều hành tương tự UNIX, nhưng cũng đã được điều chỉnh để tương thích với nhiều nền tảng khác như Mac OS X, Solaris và Windows.
PostgreSQL là phần mềm mã nguồn mở miễn phí, cho phép người dùng tự do sử dụng, sửa đổi và phân phối theo giấy phép PostgreSQL Với giấy phép này, bạn có quyền truy cập vào mã nguồn và tùy chỉnh phần mềm theo nhu cầu của mình.
PostgreSQL nổi bật với tính ổn định cao, giúp giảm thiểu công tác bảo trì Điều này mang lại lợi ích cho các ứng dụng phát triển trên nền tảng này, làm cho chi phí sở hữu thấp hơn so với các hệ thống quản trị dữ liệu khác.
2.2.2 Tại sao nên sử dụng hệ quản trị cơ sở dữ liệu Postgresql Ưu điểm:
− PostgreSQL có thể chạy các trang web và ứng dụng web động với LAMP
− Ghi nhật ký viết trước của PostgreSQL làm cho nó trở thành một cơ sở dữ liệu có khả năng chịu lỗi cao
Mã nguồn PostgreSQL được cung cấp miễn phí dưới giấy phép nguồn mở, cho phép người dùng tự do sử dụng, sửa đổi và triển khai theo nhu cầu kinh doanh của mình.
PostgreSQL cung cấp hỗ trợ cho các đối tượng địa lý, cho phép bạn phát triển các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý một cách hiệu quả.
PostgreSQL cung cấp khả năng hỗ trợ các đối tượng địa lý, cho phép nó hoạt động như một kho lưu trữ dữ liệu không gian địa lý, phục vụ cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý.
− Hạn chế việc bảo trì hệ thống
Postgres không thuộc sở hữu của một tổ chức nào, điều này đã tạo ra thách thức trong việc khẳng định tên tuổi của nó Mặc dù vậy, Postgres vẫn sở hữu đầy đủ tính năng và có thể cạnh tranh với các hệ thống quản lý cơ sở dữ liệu khác.
− Những thay đổi được thực hiện để cải thiện tốc độ đòi hỏi nhiều công việc hơn MySQL vì PostgreSQL tập trung vào khả năng tương thích
− Nhiều ứng dụng nguồn mở hỗ trợ MySQL, nhưng có thể không hỗ trợ PostgreSQL
− Về số liệu hiệu suất, nó chậm hơn MySQL
2.2.3 Tại sao nên sử dụng PostgreSQL:
PostgreSQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ với nhiều tính năng đa dạng, hỗ trợ các nhà phát triển xây dựng ứng dụng và giúp các quản trị viên bảo vệ toàn vẹn dữ liệu Hệ thống này cho phép tạo ra một môi trường chịu lỗi, giúp quản lý dữ liệu hiệu quả cho cả tập dữ liệu lớn và nhỏ Với mã nguồn mở và miễn phí, PostgreSQL còn nổi bật với khả năng mở rộng tuyệt vời, cho phép người dùng định nghĩa kiểu dữ liệu riêng, xây dựng hàm tùy chỉnh và viết mã từ nhiều ngôn ngữ lập trình khác nhau mà không cần phải biên dịch lại cơ sở dữ liệu.
PostgreSQL tuân thủ tiêu chuẩn SQL mà không làm mất đi các tính năng truyền thống, tránh các quyết định kiến trúc có hại Mặc dù nhiều tính năng theo tiêu chuẩn SQL được hỗ trợ, nhưng đôi khi cú pháp hoặc hàm có thể có sự khác biệt nhỏ.
2.2.4 Áp dụng PostgreSQL vào đề tài
Nhờ vào các tính năng vượt trội của PostgreSQL, nhóm đã chọn PostgreSQL làm hệ quản trị cơ sở dữ liệu chính Máy chủ sử dụng PostgreSQL để lưu trữ toàn bộ dữ liệu, và dữ liệu này sẽ được truy xuất qua REST API.
Reactjs
React.js là một thư viện Javascript đang phát triển mạnh mẽ trong xu hướng Single Page Application Khác với các framework khác tập trung vào mô hình MVC hoàn chỉnh, React nổi bật với sự đơn giản và khả năng tương tác dễ dàng với các thư viện Javascript khác Trong khi AngularJS cho phép nhúng mã Javascript vào HTML qua các thuộc tính như ng-model hay ng-repeat, React sử dụng JSX để nhúng HTML vào mã Javascript, giúp việc lồng ghép các đoạn HTML trong JS trở nên dễ dàng hơn Sự tích hợp giữa Javascript và HTML trong JSX làm cho các component trở nên dễ hiểu và dễ sử dụng hơn.
React là một thư viện UI do Facebook phát triển, giúp xây dựng các thành phần giao diện người dùng (UI components) tương tác, có trạng thái và có thể tái sử dụng Thư viện này được sử dụng trong môi trường sản xuất tại Facebook, và Instagram hoàn toàn được phát triển dựa trên React.
React là một thư viện hấp dẫn vì nó không chỉ hoạt động trên phía client mà còn có khả năng render trên server, cho phép kết nối linh hoạt giữa hai bên Thư viện này so sánh sự thay đổi giữa các giá trị của các lần render khác nhau và chỉ cập nhật những thay đổi tối thiểu trên DOM, giúp tối ưu hóa hiệu suất.
Dịch vụ Dialogflow
Dialogflow, trước đây là API.AI, là một dịch vụ được Google mua lại vào tháng 9 năm 2016 Nó xuất phát từ công ty nổi tiếng với trợ lý ảo Speaktoit, nhằm hỗ trợ các lập trình viên trong việc phát triển sản phẩm giao tiếp giữa người dùng và hệ thống một cách dễ dàng hơn.
10 hội thoại bằng văn bản (text) hoặc giọng nói (voice) Nói cách khác,
Dialogflow là một framework cung cấp các dịch vụ NLP / NLU (Natural
Language Processing / Natural Language Understanding) - xử lý ngôn ngữ tự nhiên
Hình 2.4.1 Các hoạt động của Dialogflow
Understanding là quá trình training từ cho bot hiểu được ý nghĩa từ câu trả lời của người dùng đã cung cấp:
Intent là ý định của người dùng, và sau khi nhận yêu cầu, Hệ thống Dialogflow sẽ phân tích để đưa ra một intent phù hợp Intent này bao gồm các thành phần quan trọng như Context (ngữ cảnh), Training phrase (câu training cho bot), Response (câu trả lời), Action (hành động kèm theo), và Parameters (các đối số mà người dùng đã định nghĩa trong phần training phrase).
Entities là các thực thể bổ nghĩa cho một Intent
Người dùng có thể tạo ra một thực thể mới từ việc kết hợp các entities nhỏ hơn, giúp chatbot phân tích dữ liệu hiệu quả hơn và trả về thông tin chính xác cho lập trình viên Sự kết hợp này sẽ nâng cao khả năng hiểu ngữ nghĩa của chatbot đối với những câu hỏi phức tạp.
Hình 2.4.5 Chi tiết trong 1 entities
Việc thiết kế các thực thể (entities) cho chatbot cần được xác định rõ ràng để đảm bảo quá trình gán nhãn không ảnh hưởng tiêu cực đến các ý định (intent) Cần nhóm các thực thể chung một cách hợp lý, giúp chatbot dễ dàng phân tích và tránh bị rối bởi nhiều câu có ngữ nghĩa tương tự Nếu có quá nhiều intent trùng lặp, chatbot sẽ gặp khó khăn trong việc phân tích ngữ nghĩa, dẫn đến việc không cung cấp kết quả intent chính xác cho người dùng.
Người dùng có thể xây dựng một hệ thống tùy chỉnh cho lập trình viên, cho phép tiếp nhận các intent và kết nối với dữ liệu từ các intent đó Hệ thống này có khả năng tích hợp với các dịch vụ bên ngoài để phân tích dữ liệu một cách hiệu quả, từ đó cung cấp kết quả chính xác cho người dùng.
Chức năng integrations của dialogflow cho phép ứng dụng kết hợp với lại nhiều nền tảng khác nhau như (Messenger, Skype, Telegram, Slack, )
2.4.7 Tại sao nên sử dụng Reactjs
React là một thư viện GUI mã nguồn mở bằng JavaScript, chuyên tập trung vào việc hoàn thành hiệu quả các nhiệm vụ giao diện người dùng (UI) Nó được xếp vào loại "V" trong mô hình MVC (Model-View-Controller).
Là một lập trình viên JavaScript, bạn sẽ nhanh chóng nắm vững các kiến thức cơ bản về React Chỉ trong vài ngày, bạn có thể bắt đầu phát triển các ứng dụng web sử dụng React một cách dễ dàng.
Để nâng cao kiến thức về React, hãy khám phá các hướng dẫn đa dạng như video, tài liệu và bài viết Những nguồn tài nguyên này sẽ cung cấp thông tin quý giá và giúp bạn làm phong phú thêm hiểu biết của mình về công cụ này.
React cho phép tái sử dụng các component đã phát triển cho các ứng dụng khác có chức năng tương tự, mang lại lợi thế nổi bật cho lập trình viên Tính năng này không chỉ tiết kiệm thời gian mà còn nâng cao hiệu quả phát triển phần mềm.
− Viết component dễ dàng hơn:
− React component dễ viết hơn vì nó sử dụng JSX, mở rộng cú pháp tùy chọn cho JavaScript cho phép kết hợp HTML với JavaScript
JSX là sự kết hợp hoàn hảo giữa JavaScript và HTML, giúp đơn giản hóa quá trình xây dựng cấu trúc trang web Bên cạnh đó, phần mở rộng này cũng hỗ trợ việc render nhiều lựa chọn một cách dễ dàng hơn.
JSX, mặc dù không phải là phần mở rộng cú pháp phổ biến nhất, nhưng đã chứng minh hiệu quả trong việc phát triển các components đặc biệt cũng như các ứng dụng quy mô lớn.
2.4.7.1 Hiệu suất tốt hơn với Virtual DOM:
React cải thiện hiệu quả cập nhật DOM (Mô hình đối tượng tài liệu), điều này thường gây thất vọng trong các dự án ứng dụng web Nhờ vào việc sử dụng virtual DOM, React giúp tránh những vấn đề liên quan đến quá trình này.
Công cụ này cho phép xây dựng các virtual DOM và lưu trữ chúng trong bộ nhớ, giúp cập nhật ngay lập tức khi có sự thay đổi trong DOM thực tế.
− Hệ thống này sẽ ngăn DOM thực tế để buộc các bản cập nhật được liên tục Do đó, tốc độ của ứng dụng sẽ không bị gián đoạn
Hình 2.4.7 Lí do vì sao nên sử dụng Reactjs
GIẢI QUYẾT VẤN ĐỀ
Đặt vấn đề
Qua khảo sát, nhóm nhận thấy thị trường hiện nay có nhiều hình thức quảng bá và tư vấn thông tin bất động sản Tuy nhiên, vẫn thiếu một giải pháp hiệu quả giúp người dùng tìm ra sản phẩm phù hợp với nhu cầu cá nhân của mình.
Việc nghiên cứu và tìm ra giải pháp phù hợp để tư vấn lựa chọn bất động sản cho từng người dùng là một thách thức lớn, đòi hỏi nhóm cần đầu tư thời gian để phát triển và thực hiện các ý tưởng sáng tạo.
Hướng giải quyết
Sau quá trình khảo sát và tìm hiểu, nhóm đã quyết định áp dụng một số phương pháp tư vấn để giúp khách hàng lựa chọn giải pháp phù hợp nhất với nhu cầu của họ.
3.2.1 Tính toán độ phù hợp của từng bất động sản đối với người dùng
Hệ thống sẽ tự động đánh giá độ phù hợp của từng bất động sản với người dùng dựa trên lịch sử tìm kiếm trước đó, bao gồm các hoạt động như lọc tìm kiếm, xem sản phẩm, đánh dấu yêu thích và tương tác qua chatbox.
Người dùng có thể đăng nhập để hệ thống xác định chính xác thông tin, đồng thời hệ thống cũng tự động lưu trữ dữ liệu dựa trên địa chỉ IP nhằm cung cấp tư vấn phù hợp cho người dùng.
Hệ thống đánh giá độ phù hợp của bất động sản sử dụng phương pháp tính trung bình cộng điểm, dựa trên các yếu tố quan trọng như thể loại, loại bất động sản và vị trí quận, huyện.
18 o Tỉnh, thành phố o Diện tích o Phòng ngủ o Phòng tắm o Hướng nhà o Số tầng o Giá
3.2.2 Tổng quát hóa số lượng bất động sản dưới dạng biểu đồ
Hệ thống cung cấp chức năng biểu đồ cho phép người dùng dễ dàng tổng hợp và khái quát hóa thông tin bất động sản, giúp họ nhanh chóng nhận diện các lựa chọn phù hợp với tiêu chí cá nhân Nhờ vào số lượng lớn bất động sản, người dùng có thể tìm kiếm và đưa ra quyết định tốt nhất cho nhu cầu của mình.
− Hệ thống hỗ trợ 3 dạng biểu đồ: o Biểu đồ cột o Biểu đồ đường o Biểu đồ radar
Hệ thống hỗ trợ thống kê bất động sản cung cấp các tiêu chí quan trọng, bao gồm: thống kê theo diện tích với điều kiện thành phố và giá cả, thống kê theo thành phố với điều kiện diện tích và giá cả, và thống kê theo giá cả với điều kiện diện tích và thành phố.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Sơ đồ Use Case
4.1.1 Sơ đồ Use Case tổng quát
Hình 4.1.1 Sơ đồ Use Case tổng quát
1 Đăng ký Người dùng truy cập vào trang web và đăng ký tài khoản khách hàng vào hệ thống
2 Đăng nhập Người dùng truy cập vào trang web và đăng nhập tài khoản vào hệ thống (có thể là admin hoặc khách hàng)
3 Đổi mật khẩu Người dùng truy cập vào trang web và chọn đổi mật khẩu thay vì đăng nhập
4 Đăng xuất Người dùng đã đăng nhập vào hệ thống và đăng xuất thông tin người dùng
Để tìm kiếm và lọc bất động sản hiệu quả, bạn có thể sử dụng các thông tin như từ khóa, tỉnh/thành phố, quận/huyện, loại bất động sản, mức giá và diện tích Việc này giúp bạn nhanh chóng tìm ra những lựa chọn phù hợp nhất với nhu cầu của mình.
6 Trang cá nhân Bao gồm các thông tin và chức năng của quản lý bài viết, chỉnh sửa thông tin, quản lý yêu thích bài viết
Quản lý bài viết bất động sản cá nhân cho phép người dùng chỉnh sửa, xóa thông tin các bài đã đăng và theo dõi những bài viết đang chờ duyệt.
8 Quản lý yêu thích, lưu lại thông tin bài viết
Quản lý danh sách yêu thích, lưu lại thông tin bài viết của tất cả người dùng khách hàng
9 Chỉnh sửa thông tin Chỉnh sửa thông tin cá nhân của người dùng
10 Tạo bđs Tạo bất động sản sau khi đăng nhập
11 Gợi ý bđs liên quan Hiển thị các bài viết liên quan phù hợp với các hoạt động của người dùng như xem, tìm kiếm, yêu thích,
Bảng 4.1.1 Thông tin các Use Case chính
Các đối tượng giao tiếp với hệ thống
Người dùng là tất cả những cá nhân có nhu cầu giao dịch các loại bất động sản và tận dụng đầy đủ các tính năng của hệ thống, bao gồm việc đăng tin giao dịch, tra cứu thông tin bất động sản, thực hiện giao dịch và đẩy tin bất động sản.
2 Admin Nắm trọn bộ quyền quản lý hệ thống, quản lý người dùng, quản lý bài đăng, thao tác đóng mở bất động sản,…
12 Xem thông tin bđs dưới dạng biểu đồ
Hiển thị thông tin tổng quát số lượng bất động sản dưới dạng biểu đồ đường, cột, radar
13 Tương tác với chatbox Tương tác tìm kiếm sản phẩm thông qua chatbox
14 Quản lý thể loại Quản lý danh sách thể loại như tìm kiếm, thêm mới, sửa, xóa thể loại
15 Quản lý bđs Quản lý danh sách bài viết bđs như tìm kiếm, lọc/xóa lọc trường thông tin, sắp xếp, xóa, sửa, thêm, duyệt bài viết
16 Làm nổi bật bđs Lựa chọn bài viết để làm bài nổi bật trên trang web
17 Quản lý người dùng khách hàng
Danh sách người dùng khách hàng sẽ hiển thị các thông tin chi tiết, bao gồm danh sách bài đăng và danh sách yêu thích của từng khách hàng Người dùng cũng có khả năng lọc danh sách theo từng trường thông tin để tìm kiếm dễ dàng hơn.
4.1.3 Đặc tả một số Use Case chính
4.1.3.1 Đặc tả use-case “Đăng Ký"
Tên chức năng Đăng ký
Tóm tắt Người dùng muốn đăng bất động sản hoặc lưu bài viết để xem lại cần đăng kí người dùng khách hàng để đăng nhập vào hệ thống
Actor Người dùng khách hàng
Dòng sự kiện chính Nhập đầy đủ thông tin
Dòng sự kiện khác Không thể đăng ký
• Trùng tên đăng ký người dùng
• Trùng email đã đăng ký
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case Đăng ký thành công, tự động trở lại trang đăng nhập
Các yêu câu đặc biệt Không có
Bảng 4.1.3 Đặc tả usecase “Đăng Ký”
4.1.3.2 Đặc tả use-case “Đăng Nhập"
Tên chức năng Đăng nhập
Tóm tắt Đăng nhập vào hệ thống để thực hiện những tính năng trong hệ thống
Dòng sự kiện chính Người dùng truy cập vào hệ thống
Người dùng nhấn đăng nhập để tiến hành đăng nhập vào hệ thống
Người dùng chưa đăng ký có thể truy cập trang web hệ thống như khách hàng bình thường, tuy nhiên sẽ không được sử dụng các chức năng đầy đủ của trang.
Dòng sự kiện khác Không thể đăng nhập
• Không thể kết nối đến server
• Người dùng nhập sai mật khẩu
• Người dùng chưa đăng ký tài khoản
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Người dùng đăng nhập thành công, truy cập vào trang chủ
Người dùng đăng nhập thất bại hiển thị thông báo ở trang đăng nhập
Các yêu câu đặc biệt Không có
Bảng 4.1.4 Đặc tả usecase “Đăng Nhập”
4.1.3.3 Đặc tả use-case “Đổi mật khẩu "
Tên chức năng Đổi mật khẩu
Tóm tắt Đăng mật khẩu hiện tại của người dùng
Dòng sự kiện chính Người dùng truy cập vào hệ thống
Người dùng nhấn đăng nhập để đăng nhập vào hệ thống
Sau khi đăng nhập thành công nhấn người dùng chọn Đổi mật khẩu
Dòng sự kiện khác Không thể đổi mật khẩu
• Sai mật khẩu hiện tại
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Người dùng đổi mật khẩu thành công xuất hiện thông báo
Các yêu câu đặc biệt Không có
Bảng 4.1.5 Đặc tả usecase “Đổi mật khẩu”
4.1.3.4 Đặc tả use-case “Đăng xuất "
Tên chức năng Đăng xuất
Tóm tắt Đăng xuất người dùng ra khỏi hệ thống
Dòng sự kiện chính Người dùng truy cập vào hệ thống
Người dùng nhấn đăng xuất để tiến hành đăng xuất khỏi hệ thống
Dòng sự kiện khác Không thể đăng xuất
• Chưa đăng nhập vào hệ thống
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Người dùng đăng xuất thành công hệ thống tải lại trang đăng nhập
Các yêu câu đặc biệt Không có
Bảng 4.1.6 Đặc tả usecase “Đăng xuất”
4.1.3.5 Đặc tả use-case “Lọc/Tìm kiếm bất động sản"
Tên chức năng Lọc/ Tìm kiếm bất động sản
Tìm kiếm và lọc bất động sản hiệu quả bằng cách sử dụng các thông tin quan trọng như từ khóa, tỉnh/thành phố, quận/huyện, loại hình bất động sản, mức giá và diện tích mong muốn.
Dòng sự kiện chính Người dùng truy cập vào hệ thống
Vào trang chủ chọn thể loại, thành phố, mức giá, quận huyện, diện tích hoặc nhập vào sau đó nhấn tìm kiếm để thực hiện chức năng
Dòng sự kiện khác Không thể tìm kiếm
• Không có bài đăng chứa từ khóa
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách tìm kiếm/lọc thành công cho người dùng
Các yêu câu đặc biệt Không có
Bảng 4.1.7 Đặc tả usecase “Lọc/Tìm kiếm bất động sản”
4.1.3.6 Đặc tả use-case “Trang cá nhân"
Tên chức năng Trang cá nhân
Tóm tắt Bao gồm các thông tin và chức năng của quản lý bài viết, chỉnh sửa thông tin, quản lý yêu thích bài viết
Dòng sự kiện chính Chọn thông tin người dùng
Hiển thị thông tin cơ bản của người dùng bao gồm:
• Đã cung cấp cmnd, email … hay chưa Hiển thị những bất động sản của người dùng đang đăng giao dịch trên hệ thống
Hiển thị những bất động sản của người dùng đã lưu
Dòng sự kiện khác Không thể truy xuất
Nguyên nhân : không thể kết nối đến server
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị đầy đủ thông tin người dùng, danh sách bài đăng, danh sách yêu thích
Các yêu câu đặc biệt Không có
Bảng 4.1.8 Đặc tả usecase “Trang cá nhân”
4.1.3.7 Đặc tả use-case “Quản lý bất động sản cá nhân"
Tên chức năng Quản lý bất động sản cá nhân
Tóm tắt Quản lý các bài viết bất động sản người dùng khách hàng đã tạo bao gồm sửa, xóa thông tin bài đã đăng và đang chờ duyệt
Dòng sự kiện chính Chọn thông tin người dùng
Để quản lý bất động sản, bạn cần nhấn vào chỉnh sửa bài viết đang ở trạng thái PENDING Sau khi thực hiện chỉnh sửa thông tin, bài viết vẫn sẽ giữ trạng thái PENDING và chờ sự phê duyệt từ người dùng admin.
Dòng sự kiện khác Không thể chỉnh sửa
• Chỉ những bài viết đang tình trạng PENDING mới được sửa
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách tất cả bài đăng bất động sản của người dùng
Các yêu câu đặc biệt Không có
Bảng 4.1.9 Đặc tả usecae “Quản lý bất động sản cá nhân”
4.1.3.8 Đặc tả use-case “Quản lý yêu thích, lưu lại thông tin bài viết"
Tên chức năng Quản lý yêu thích, lưu lại thông tin bài viết
Tóm tắt Quản lý danh sách yêu thích, lưu lại thông tin bài viết của tất cả người dùng khách hàng
Dòng sự kiện chính Người dùng đăng nhập
Người dùng có thể lưu bài đăng bất động sản vào danh sách yêu thích cá nhân bằng cách nhấn nút yêu thích ở góc bài viết.
Dòng sự kiện khác Không thể yêu thích bài viết
• Người dùng chưa đăng nhập
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Yêu thích bài viết thành công
Các yêu câu đặc biệt Không có
Bảng 4.1.10 Đặc tả usecase “Quản lý yêu thích, lưu lại thông tin bài viết”
4.1.3.9 Đặc tả use-case “Chỉnh sửa thông tin"
Tên chức năng Chỉnh sửa thông tin
Tóm tắt Chỉnh sửa thông tin cá nhân của người dùng
Dòng sự kiện chính Người dùng đăng nhập
Chọn người dùng, xuất hiện thông tin người dùng, chỉnh sửa thông tin cần thiết nhấn Lưu chỉnh sửa để cập nhật thông tin
Dòng sự kiện khác Không thể chỉnh sửa thông tin
• Người dùng chỉnh sửa email đã được đăng ký
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Chỉnh sửa thông tin người dùng thành công
Các yêu câu đặc biệt Không có
Bảng 4.1.11 Đặc tả usecase “Chỉnh sửa thông tin”
4.1.3.10 Đặc tả use-case “Tạo bất động sản"
Tên chức năng Tạo bất động sản
Tóm tắt Tạo bất động với đẩy đủ thông tin cần thiết để đăng giao dịch bất động sản lên hệ thống
Sau khi tạo bất động sản thành công cần chờ admin phê duyệt để hiển thị
Dòng sự kiện chính Người dùng đăng nhập
Tạo bất động sản mới
Khi tạo bất động sản trên hệ thống, bạn cần nhập đầy đủ thông tin cần thiết Bài viết sẽ ở trạng thái chờ duyệt và chỉ được đăng trên trang web sau khi được phê duyệt thành công Nếu admin không phê duyệt, bài viết sẽ không hiển thị trên hệ thống.
Trừ trường hợp nếu người dùng là admin sẽ không cần đợi sự phê duyệt mà tạo bất động sản thành công trên hệ thống
Dòng sự kiện khác Không thể tạo bất động sản
• Người dùng chưa đăng nhập
• Người dùng không được sự phê duyệt của admin
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Tạo bất động sản thành công Đợi xác nhận từ admin để được hiển thị trên hệ thống
Các yêu câu đặc biệt Không có
Bảng 4.1.12 Đặc tả usecase “Tạo bất động sản”
4.1.3.11 Đặc tả use-case “Gợi ý bất động sản liên quan"
Tên chức năng Gợi ý bất động sản liên quan
Tóm tắt Hiển thị các bài viết liên quan phù hợp với các hoạt động của người dùng như xem, tìm kiếm, yêu thích,…
Actor Người dùng khách hàng
Dòng sự kiện chính Truy cập vào trang web
Truy cập vào tab “Danh sách phù hợp”
Hiển thị danh sách gợi ý thông qua tìm kiếm/ lọc và xem
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách bài đăng được gợi ý
Các yêu câu đặc biệt Không có
Ngoại lệ Người dùng khách hàng không trực tiếp tác động tới usecase Chỉ gián tiếp sử dụng thông qua hệ thống
Bảng 4.1.13 Đặc tả usecase “Gợi ý bất động sản liên quan”
4.1.3.12 Đặc tả use-case “Xem thông tin bất động sản dưới dạng biểu đồ”
Tên chức năng Xem thông tin bất động sản dưới dạng biểu đồ
Tóm tắt Tổng quát số lượng bất động sản dưới dạng biểu đồ đường, cột, radar thông qua một số thông tin về địa điểm, giá cả, diện tích
Actor Người dùng khách hàng
Dòng sự kiện chính Truy cập vào trang web
Truy cập vào tab “Thống kê bất động sản” Lựa chọn điều kiện để hiển thị biểu đồ Biểu đồ hiển thị
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị biểu đồ theo yêu cầu của người dùng
Các yêu câu đặc biệt Không có
Bảng 4.1.14 Đặc tả usecase “Xem thông tin bđs dưới dạng biểu đồ”
4.1.3.13 Đặc tả use-case “Tương tác với chatbox”
Tên chức năng Tương tác với chatbox
Tóm tắt Tìm kiếm thông tin phù hợp để tương tác với người dùng
Actor Người dùng khách hàng
Dòng sự kiện chính Truy cập vào trang web
Chọn popup chatbox Tiến hành tìm kiếm, tương tác với chatbox
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị kết quả phù hợp với tìm kiếm của người dùng
Các yêu câu đặc biệt Chỉ trả lời các thông tin liên quan đến tìm kiếm bất động sản
Bảng 4.1.15 Đặc tả usecase “Tương tác với chatbox”
4.1.3.14 Đặc tả use-case “Quản lý thể loại"
Tên chức năng Quản lý thể loại
Tóm tắt Quản lý danh sách thể loại như tìm kiếm, thêm mới, sửa, xóa thể loại
Dòng sự kiện chính Đăng nhập vào tài khoản người dùng admin
Truy cập vào tab “Quản lý thể loại”
Hiển thị danh sách thể loại
Nhấn từng chức năng sửa, thêm, tìm kiếm, xuất hiện trang danh sách hoặc trang thông tin để nhập
Nhấn chức năng xóa xuất hiện thông báo xác nhận xóa
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách thể loại sau khi sử dụng chức năng
Các yêu câu đặc biệt Không có
Bảng 4.1.16 Đặc tả usecase “Quản lý thể loại”
4.1.3.15 Đặc tả use-case “Quản lý bất động sản"
Tên chức năng Quản lý bất động sản
Tóm tắt Hiển thị các bài viết liên quan phù hợp với các hoạt động của người dùng như xem, tìm kiếm, yêu thích,…
Dòng sự kiện chính Đăng nhập vào tài khoản người dùng admin
Truy cập vào tab “Quản lý căn hộ”
Hiển thị danh sách bài đăng bất động sản của người dùng
Nhấn từng chức năng sửa, thêm, tìm kiếm, xuất hiện trang danh sách hoặc trang thông tin để nhập
Nhấn chức năng xóa xuất hiện thông báo xác nhận xóa
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách bài đăng bất động sản sau khi sử dụng chức năng
Các yêu câu đặc biệt Không có
Bảng 4.1.17 Đặc tả usecase “Quản lý bất động sản”
4.1.3.16 Đặc tả use-case “Làm nổi bật bất động sản"
Tên chức năng Làm nổi bật bất động sản
Tóm tắt Lựa chọn bài viết để làm bài nổi bật trên trang web
Dòng sự kiện chính Đăng nhập vào tài khoản người dùng admin
Truy cập vào tab “Quản lý căn hộ”
Hiển thị danh sách bài đăng bất động sản của người dùng
Nhấn chọn bài đăng muốn làm tin nổi bật hiển thị trên trang web
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách bài đăng bất động sản sau khi sử dụng chức năng
Các yêu câu đặc biệt Không có
Bảng 4.1.18 Đặc tả usecase “Làm nổi bật bất động sản”
4.1.3.17 Đặc tả use-case “Quản lý người dùng khách hàng"
Tên chức năng Quản lý người dùng khách hàng
Bài viết tóm tắt việc hiển thị danh sách người dùng khách hàng, bao gồm thông tin chi tiết, danh sách bài đăng và danh sách yêu thích của từng khách hàng Người dùng cũng có khả năng lọc danh sách dựa trên các trường thông tin cụ thể.
Dòng sự kiện chính Đăng nhập vào tài khoản người dùng admin
Truy cập vào tab “Quản lý người dùng” Hiển thị danh sách người dùng
Xem danh sách bài đăng, bài yêu thích, thông tin của người dùng
Dòng sự kiện khác Không có
Trạng thái hệ thống trước khi thực hiện usecase
Actor: tất cả actor Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use case
Hiển thị danh sách người dùng
Các yêu câu đặc biệt Không có
Bảng 4.1.19 Đặc tả usecase “Quản lý người dùng khách hàng”
Thiết kế cơ sở dữ liệu
4.2.1 Sơ đồ Cơ sở dữ liệu
Hình 4.2.1 Sơ đồ cơ sở dữ liệu
4.2.2 Mô tả chi tiết các bảng
4.2.2.1 Bảng “user” – Tài Khoản người Dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng user
2 username varchar Bắt buộc nhập Tên đăng nhập của người dùng
3 password varchar Bắt buộc nhập Mật khẩu của người dùng
4 first_name varchar Tên người dùng
5 last_name varchar Họ người dùng
6 full_name varchar Họ tên đầy đủ của người dùng
7 gender varchar Giới tính của người dùng
8 email varchar Email của người dùng
9 avatar varchar Ảnh đại diện của người dùng
10 description varchar Mô tả người dùng
11 phone varchar Số điện thoại người
12 role_id int Khóa ngoại Role của người dùng
13 is_deleted boolean Xác định đối tượng đã xóa hay chưa
14 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
15 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
16 created_at date Thời gian khởi tạo đối tượng
17 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.1 Mô tả bảng “user” – Thông tin người dùng
4.2.2.2 Bảng “role” – Vai trò của người dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id varchar Khóa chính ID định danh của bảng role
2 description varchar Mô tả chi tiết vai trò
3 is_deleted boolean Xác định đối tượng đã xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối tượng
7 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.2 Mô tả bảng “role” – Vai trò của người dùng
4.2.2.3 Bảng “privilege” – Quyền hạn có trong hệ thống
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id varchar Khóa chính ID định danh của bảng privilege
2 description varchar Mô tả chi tiết quyền hạn
3 is_deleted boolean Xác định đối tượng đã xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối tượng
7 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.3 Mô tả bảng “privilege” – Quyền hạn có trong hệ thống
4.2.2.4 Bảng “role_privilege” – Quyền hạn của vai trò
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 role_id varchar Khóa chính, Khóa ngoại
ID định danh của bảng role_privilege, khóa ngoại trỏ tới bảng role
2 privilege_id varchar Khóa chính, Khóa ngoại
ID định danh của bảng role_privilege, khóa ngoại trỏ tới bảng privilege
3 is_deleted boolean Xác định đối tượng đã xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối tượng
7 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.4 Mô tả bảng “role_privilege” – Quyền hạn của vai trò
4.2.2.5 Bảng “user_address” – Địa chỉ của người dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính, Khóa ngoại
ID định danh của bảng user_address, quan hệ 1-1 với bảng user
2 address varchar Bắt buộc nhập Mô tả chi tiết địa chỉ người dùng
3 country_id varchar Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng country, cho biết người dùng thuộc quốc gia nào
4 province_id int Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng province, cho biết người dùng thuộc tỉnh, thành phố nào
5 district_id int Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng district, cho biết người dùng thuộc xã, huyện nào
Bảng 4.2.5 Mô tả bảng “user_address” – Địa chỉ của người dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 code varchar Khóa chính ID định danh của bảng country
2 name varchar Bắt buộc nhập Tên quốc gia
3 phone_code int Bắt buộc nhập Mã code điện thoại của quốc gia
Bảng 4.2.6 Mô tả bảng “country” – Quốc gia
4.2.2.7 Bảng “province” – Tỉnh, Thành Phố
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id id Khóa chính ID định danh của bảng province
2 is_city boolean Bắt buộc nhập Kiểm tra đối tượng có phải thành phố hay không
3 name varchar Bắt buộc nhập Tên của tỉnh, thành phố
4 short_name varchar Bắt buộc nhập Tên rút gọn của tỉnh, thành phố
5 country_id varchar Khóa ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng country, cho biết tỉnh, thành phố thuộc quốc gia nào
Bảng 4.2.7 Mô tả bảng “province” – Tỉnh, Thành Phố
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id id Khóa chính ID định danh của bảng district
2 name varchar Bắt buộc nhập Tên của xã, huyện
3 short_name varchar Bắt buộc nhập Tên rút gọn của xã, huyện
4 province_id int Khóa ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng province, cho biết xã, huyện thuộc tỉnh, thành phố nào
Bảng 4.2.8 Mô tả bảng “district” – Xã, Huyện
4.2.2.9 Bảng “apartment” – Thông tin bất động sản
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng apartment
2 area double Bắt buộc nhập Diện tích bất động sản
3 title varchar Bắt buộc nhập Tiêu đề bất động sản
4 expired_date date Bắt buộc nhập Ngày hết hạn (đóng bài viết) bất động sản
5 price_rent double Giá thuê bất động sản(dành cho thể loại thuê)
6 unit_rent varchar Giá bất động sản kèm đơn vị(dành cho thể loại thuê)(VD: 15 triệu/ tháng)
7 price double Giá bất động sản tính theo đơn vị m2(dành cho thể loại bán)
8 total_price double Tổng giá của bất động sản(dành cho thể loại bán)
9 type_apartment varchar Bắt buộc nhập Loại bất động sản
10 highlight boolean Bất động sản nổi bật
11 status varchar Trạng thái bất động sản
12 photos varchar Bắt buộc nhập Danh sách hình ảnh của bất động sản
13 author_id int Khóa ngoại Khóa ngoại trỏ đến bảng user, tác giả của bất động sản
14 category_id int Khóa ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng category, thể loại bất động sản
15 is_deleted boolean Xác định đối tượng đã xóa hay chưa
16 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
17 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
18 created_at date Thời gian khởi tạo đối tượng
19 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.9 Mô tả bảng “apartment” – Thông tin bất động sản
4.2.2.10 Bảng “apartment_detail” – Thông tin chi tiết bất động sản
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính, khóa ngoại
ID định danh của bảng apartment_detail, quan hệ 1-1 với bảng apartment
2 bathroom_quantity int Số lượng phòng tắm của bất động sản
3 bedroom_quantity int Số lượng phòng ngủ của bất động sản
4 description varchar Mô tả chi tiết bất động sản
5 floor_quantity int Số lượng tầng của bất động sản
6 house_direction varchar Hướng nhà bất động sản
7 toilet_quantity int Số phòng vệ sinh của bất động sản
8 more_info varchar Thông tin thêm về bất động sản
Bảng 4.2.10 Mô tả bảng “apartment_detail” – Thông tin chi tiết bất động sản
4.2.2.11 Bảng “apartment_address” – Địa chỉ bất động sản
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính, Khóa ngoại
ID định danh của bảng apartment_address,
49 quan hệ 1-1 với bảng apartment
2 address varchar Bắt buộc nhập Mô tả chi tiết địa chỉ bất động sản
3 country_id varchar Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng country, cho biết bất động sản thuộc quốc gia nào
4 province_id int Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng province, cho biết bất động sản thuộc tỉnh, thành phố nào
5 district_id int Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng district, cho biết bất động sản thuộc xã, huyện nào
Bảng 4.2.11 Mô tả bảng “apartment_address” – Địa chỉ của bất động sản
4.2.2.12 Bảng “category” – Thể loại bất động sản
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id varchar Khóa chính ID định danh của bảng category
2 name varchar Mô tả tên của thể loại
3 is_deleted boolean Xác định đối tượng đã xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối tượng
7 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.12 Mô tả bảng “category” – Thể loại bất động sản
4.2.2.13 Bảng “favourite” – Danh sách bất động sản yêu thích của người dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 apartment_id int Khóa chính, Khóa ngoại
ID định danh của bảng favourite, khóa ngoại trỏ tới bảng apartment
2 user_id int Khóa chính, Khóa ngoại
ID định danh của bảng favourite, khóa ngoại trỏ tới bảng user
3 is_deleted boolean Xác định đối tượng đã xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối tượng
7 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.13 Mô tả bảng “favourite” – Người dùng yêu thích bất động sản
4.2.2.14 Bảng “tracking_category” – Danh sách thông tin tracking của người dùng đối với thể loại
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_category
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với thể loại này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 category_id int Khóa ngoại Khóa ngoại trỏ đến bảng category
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.14 Mô tả bảng “tracking_category” – Thông tin tracking của người dùng đối với category
4.2.2.15 Bảng “tracking_district” – Danh sách thông tin tracking của người dùng đối với huyện/xã
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_ district
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với huyện, xã này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 district_id int Khóa ngoại Khóa ngoại trỏ đến bảng district
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.15 Mô tả bảng “tracking_ district” – Thông tin tracking của người dùng đối với xã, huyện
4.2.2.16 Bảng “tracking_province” – Danh sách thông tin tracking của người dùng đối với quận/thành phố
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 province_id int Khóa ngoại Khóa ngoại trỏ đến bảng province
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.16 Mô tả bảng “tracking_ province” – Thông tin tracking của người dùng đối với tỉnh, thành phố
4.2.2.17 Bảng “tracking_area” – Danh sách thông tin tracking của người dùng đối với diện tích
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 area double Thông tin tracking về diện tích
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.17 Mô tả bảng “tracking_ area” – Thông tin tracking của người dùng đối với diện tích
4.2.2.18 Bảng “tracking_bathroom” – Danh sách thông tin tracking của người dùng đối với phòng tắm
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 bathroom int Thông tin tracking về số lượng phòng tắm
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.18 Mô tả bảng “tracking_ bathroom” – Thông tin tracking của người dùng đối với phòng tắm
4.2.2.19 Bảng “tracking_bedroom” – Danh sách thông tin tracking của người dùng đối với phòng ngủ
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 bedroom int Thông tin tracking về số lượng phòng ngủ
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.19 Mô tả bảng “tracking_ bedroom” – Thông tin tracking của người dùng đối với phòng ngủ
4.2.2.20 Bảng “tracking_direction” – Danh sách thông tin tracking của người dùng đối với hướng nhà
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm
59 đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 direction varchar Thông tin tracking về hướng nhà
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.20 Mô tả bảng “tracking_ province” – Thông tin tracking của người dùng đối với hướng nhà
4.2.2.21 Bảng “tracking_floor” – Danh sách thông tin tracking của người dùng đối với số lượng tầng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 floor int Thông tin tracking về số lượng tầng
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.21 Mô tả bảng “tracking_ floor” – Thông tin tracking của người dùng đối với số lượng tầng
4.2.2.22 Bảng “tracking_price” – Danh sách thông tin tracking của người dùng đối với giá
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 price double Thông tin tracking về số lượng giá
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.22 Mô tả bảng “tracking_ price” – Thông tin tracking của người dùng đối với giá
4.2.2.23 Bảng “tracking_toilet” – Danh sách thông tin tracking của người dùng đối với nhà vệ sinh
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 toilet int Thông tin tracking về nhà vệ sinh
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.23 Mô tả bảng “tracking_ toilet” – Thông tin tracking của người dùng đối với nhà vệ sinh
4.2.2.24 Bảng “tracking_type_apartment” – Danh sách thông tin tracking của người dùng đối với thể loại
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm
64 đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 type_apartment varchar Thông tin tracking về số lượng thể loại
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.24 Mô tả bảng “tracking_ type_apartment” – Thông tin tracking của người dùng đối với số lượng thể loại
4.2.2.25 Bảng “tracking_temporary_chat” – Tracking lại thông tin tạm thời đối với chatbox
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 key varchar unique Key tự động để tìm kiếm
3 value varchar Danh sách bất động sản phù hợp
Bảng 4.2.25 Mô tả bảng “tracking_ temporary_chat” – Thông tin tracking tạm thời của chatbox
4.2.2.26 Bảng “log_scraping” – Danh sách thông tin lịch sử cào dữ liệu
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng tracking_province
2 ip varchar Bắt buộc nhập Địa chỉ IP của người dùng
3 rating int Bắt buộc nhập Tổng số điểm của người dùng quan tâm đối với quận thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến bảng user
5 type_apartment varchar Thông tin tracking về số lượng thể loại
6 is_deleted boolean Xác định đối tượng đã xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối tượng
10 updated_at date Thời gian cập nhật đối tượng
Bảng 4.2.26 Mô tả bảng “log_scraping” – Danh sách thông tin lịch sử cào dữ liệu
Thiết kế giao diện
4.3.1 Danh sách các màn hình
Tên màn hình Ý nghĩa, ghi chú
1 Đăng ký Màn hình đăng ký tài khoản dành cho người dùng chưa có tài khoản
2 Đăng nhập Màn hình hiện nơi đăng nhập cho người dùng
3 Đổi mật khẩu Màn hình đổi mật khẩu dành cho người dùng
4 Trang chủ Màn hình hiển thị tìm kiếm theo 2 danh mục: nhà đất bán và nhà đất cho thuê
Có những chức năng chính như:
• Tìm kiếm theo một số tiêu chí như: thể loại, thành phố, huyện, diện tích, mưc giá ,…
• Vào trang quản lý thông tin cá nhân
• Vào trang tìm kiếm tất cả danh mục
• Hiển thị danh sách bất động sản phù hợp
• Hiển thị các thể loại
• Hiển thị danh sách bất động sản mới nhất, bất động sản nổi bật
Hiển thị thông tin cơ bản của hệ thống
5 Tạo bất động sản Màn hình để người dùng có thể thêm mới một bất động sản
6 Cập nhập bất động sản
Màn hình cập nhật bất động sản của người dùng sau khi đã thêm mới
7 Cập nhập thông tin cá nhân
Màn hình chỉnh sửa thông tin cá nhân của người dùng
Ngoài ra ở màn hình thông tin cá nhân còn có:
• Danh sách bất động sản đã đăng
• Danh sách bất động sản yêu thích
8 Danh sách nhà đất bán
Màn hình hiển thị danh sách nhà đất bán, lọc, tìm kiếm một số thông tin cơ bản
9 Danh sách nhà đất cho thuê
Màn hình hiển thị danh sách nhà đất cho thuê, lọc, tìm kiếm một số thông tin cơ bản
10 Danh sách bất động sản phù hợp
Màn hình hiển thị danh sách các bất động sản phù hợp với người dùng
11 Chi tiết bất động sản Màn hình hiển thị đầy đủ thông tin của bất động sản giúp người dùng dể dàng tham khảo, kèm theo đó là
68 thông tin của người bán và những gợi ý bất động sản liên quan hoặc gần như tương tự
12 Màn hình quản lý bất động sản
Màn hình quản lý căn hộ dành cho quản trị viên Bao gồm các tính năng:
• Duyệt, Xóa, Sửa, Khôi phục bất động sản
13 Màn hình quản lý người dùng
Màn hình quản lý người dùng dành cho quản trị viên Bao gồm các tính năng:
• Quản lý thông tin người dùng
• Danh sách các bài đăng của người dùng
• Danh sách các bài yêu thích của người dùng
14 Màn hình quản lý thể loại
Màn hình quản lý, thêm, xóa, sửa thể loại
15 Màn hình thống kê bất động sản
Màn hình thống kê bất động sản dưới dạng biểu đồ: đường, cột, radar
Bảng 4.3.1 Danh sách các màn hình
4.3.2 Hình ảnh một số màn hình chính
Hình 4.3.1 Giao diện trang “Đăng ký”
Hình 4.3.2 Giao diện trang “Đăng nhập”
Hình 4.3.3 Giao diện trang “Trang chủ”
4.3.2.4 Màn hình “Tạo bất động sản”
Hình 4.3.4 Giao diện trang “Tạo bất động sản”
4.3.2.5 Màn hình “Cập nhật thông tin cá nhân”
Hình 4.3.5 Giao diện trang “Chỉnh sửa thông tin cá nhân”
4.3.2.6 Màn hình “Danh sách bất động sản”
Hình 4.3.6 Giao diện trang “Danh sách bất động sản”
4.3.2.7 Màn hình “Chi tiết bất động sản”
Hình 4.3.7 Giao diện trang chi tiết bất động sản
4.3.2.8 Màn hình “Biểu đồ thống kê bất động sản”
Hình 4.3.8 Giao diện trang “Thống kê biểu đồ”
4.3.2.9 Màn hình “Quản lý bất động sản”
Hình 4.3.9 Giao diện trang “Quản lý bất động sản”
4.3.2.10 Màn hình “Quản lý người dùng”
Hình 4.3.10 Giao diện trang “Quản lý người dùng”
4.3.2.11 Màn hình “Quản lý thể loại”
Hình 4.3.11 Giao diện trang “Quản lý thể loại”