Java Spring Boot

Một phần của tài liệu Hệ thống tư vấn lựa chọn bất động sản kết hợp chatbox (báo cáo cuối kì đồ án 2) (Trang 26)

4. Về thái độ làm việc của sinh viên

2.1. Java Spring Boot

2.1.1.Khái niệm

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. Nó giúp cho các lập trình viên chúng ta đơn giản hóa quá trình lập trình một ứng dụng với Spring, chỉ tập trung vào việc phát triển business cho ứng dụng..

2.1.2.Tại sao nên sử dụng JavaSpring Boot

− Khi sử dụng Java chúng ta không mất qua nhiều công đoạn và thời gian để tạo một web project đẻ chạy. Mọi thứ đã được Java tự động làm hết như sử dụng các framework PHP như Symfony, Laravel,… cái mà chúng ta quan tâm chỉ là develop Controller. Một quan điểm khác của mình là thấy Java web sau khi build chạy rất nhanh hơn tốc độ PHP sau khi 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.

2.2. Postgresql

2.2.1.Giới thiệu về Postgesql

− PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng (object- relational database management system) có mục đích chung, hệ thống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay.

− 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.

7

− PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX. Tuy nhiên, PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiều nền tảng khác nhau như Mac OS X, Solaris và Windows.

− PostgreSQL là một phần mềm mã nguồn mở miễn phí. Mã nguồn của phần mềm khả dụng theo license của PostgreSQL, một license nguồn mở tự do. Theo đó, bạn sẽ được tự do sử dụng, sửa đổi và phân phối PostgreSQL dưới mọi hình thức.

− PostgreSQL không yêu cầu quá nhiều công tác bảo trì bởi có tính ổn định cao. Do đó, nếu bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ 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: Ư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ó sẵn miễn phí theo giấy phép nguồn mở. Điều này cho phép bạn tự do sử dụng, sửa đổi và triển khai nó theo nhu cầu kinh doanh của bạn.

− PostgreSQL hỗ trợ các đối tượng địa lý để bạn có thể sử dụng nó cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý.

− PostgreSQL hỗ trợ các đối tượng địa lý để nó có thể được sử dụng làm kho lưu trữ dữ liệu không gian địa lý cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý.

− Dễ sử dụng

− Hạn chế việc bảo trì hệ thống

8

− Postgres không thuộc sở hữu của một tổ chức. Vì vậy, nó đã gặp khó khăn khi đưa tên của mình ra khỏi đó mặc dù có đầy đủ tính năng và có thể so sánh với các hệ thống DBMS 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 sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu lỗi fault-tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ. Bên cạnh hệ thống nguồn mở và miễn phí, PostgreSQL cũng có khả năng mở rộng tuyệt vời. Ví dụ, bạn có thể định nghĩa các kiểu dữ liệu riêng của bạn, xây dựng các hàm tùy chỉnh, hay viết mã từ các ngôn ngữ lập trình khác nhau mà không cần biên dịch lại cơ sở dữ liệu!

− PostgreSQL tuân theo tiêu chuẩn SQL nhưng không mâu thuẫn với các tính năng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại. Nhiều tính năng theo tiêu chuẩn SQL được hỗ trợ, tuy nhiên đôi khi có thể có cú pháp hoặc hàm hơi khác một chút.

2.2.4.Áp dụng PostgreSQL vào đề tài

− Nhờ những tính năng nổi trội của PostgreSQL, nhóm đã sử dụng PostgreSQL dùng làm hệ quản trị cơ sở dữ liệu chính. Server sử dụng PostgreSQL để lưu trữ toàn bộ dữ liệu, dữ liệu này sẽ được server sử dụng REST API để gọi lên.

9

2.3. Reactjs

2.3.1.Giới thiệu về Reactjs

− React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng Single Page Application. Trong khi những framework khác cố gắng hướng đến một mô hình MVC hoàn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác. Nếu như AngularJS là một Framework cho phép nhúng code javasscript trong code html thông qua các attribute như ng-model, ng-repeat...thì với react là một library cho phép nhúng code html trong code javascript nhờ vào JSX, có thể dễ dàng lồng các đoạn HTML vào trong JS.Tích hợp giữa javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn.

− React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được. React được sử dụng tại Facebook trong production, và Instagram được viết hoàn toàn trên React.

− Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau. React so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM.

2.4. Dịch vụ Dialogflow 2.4.1.Giới thiệu 2.4.1.Giới thiệu

Dialogflow (tiền thân là API.AI) là một dịch vụ sau khi được Google mua lại vào tháng 9 năm 2016. Tiền thân là một công ty nổi tiếng với trợ lý ảo Speaktoit, cung cấp nhằm giúp các lập trình viên dễ dàng hơn khi lập trình các sản phẩm có giao tiếp giữa người dùng với sản phẩm thông qua các đoạ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

2.4.2.Quá trình Understanding

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:

11

Hình 2.4.2. Training phrases Dialogflow

2.4.3.Ý định (Intent)

Intent là ý định của người dùng. Sau khi nhận một câu trả lời hoặc yêu cầu từ người dùng, Hệ thống Dialogflow sẽ phân tích và trả ra kết quả một intent phù hợp, intent này sẽ chứa bao gồm Context (ngữ cảnh ), Training phrase (các câu training cho bot), Response (Câu trả lời), Action (hành động kèm theo), parameters (các đối số mà người dùng đã định nghĩa trong phần traning pharse)

12

Hình 2.4.3. Intents

2.4.4.Thực thể (Entities)

Entities là các thực thể bổ nghĩa cho một Intent.

13

Ngoài ra người dùng cũng có thể tạo ra một entity cấu tạo từ những entities nhỏ hơn để tạo nên một câu training giúp chatbot dễ dàng phân tích dữ liệu để trả về cho lập trình viên. Việc kết hợp các entities lại với nhau tạo ra một thực thể mới sẽ giúp cho chatbot hiểu ngữ nghĩa cho những câu phức tạp hơn.

Hình 2.4.5. Chi tiết trong 1 entities

Việc thiết kế các intent entites phải được xác định rõ ràng vì việc gán nhãn các entities sẽ ảnh hưởng đến các intent. Chúng ta phải xác định rõ và gom nhóm cho các thực thể chung để cho chatbot dễ dàng phân tích và không bị rối loạn bởi nhiều câu ngữ nghĩa khác, càng nhiều intent trùng lặp thì chatbot sẽ xảy ra vấn đề khó phân tích được ngữ nghĩa dẫn đến không đưa đến kết quả intent chính xác cho người dùng.

14

2.4.5.Chức năng Fullfillments

Hình 2.4.6. Fullfillments

Cho phép người dùng tạo ra một hệ thống riêng cho lập trình viên tiếp nhận các intent rồi từ các data nhận được thông qua các intent có thể kết nối với các dịch vụ khác bên ngoài để phân tích phù hợp và trả ra kết quả cho người dùng

2.4.6.Chức năng Integration

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, ...)

15

2.4.7.Tại sao nên sử dụng Reactjs 2.4.7.1. Dễ sử dụng: 2.4.7.1. Dễ sử dụng:

− React là một thư viện GUI nguồn mở JavaScript tập trung vào một điều cụ thể; hoàn thành nhiệm vụ UI hiệu quả. Nó được phân loại thành kiểu “V” trong mô hình MVC (Model-View-Controller).

− Là lập trình viên JavaScript, bạn sẽ dễ dàng hiểu được những điều cơ bản về React. Bạn thậm chí có thể bắt đầu phát triển các ứng dụng dựa trên web bằng cách sử dụng react chỉ trong vài ngày.

− Để củng cố hiểu biết của mình, bạn hãy thử khám phá thêm nhiều hướng dẫn về React. Chúng mang đến nhiều thông tin về cách sử dụng công cụ: videos, hướng dẫn và dữ liệu làm phong phú góc nhìn của bạn.

2.4.7.2. Hỗ trợ Reusable Component:

− React cho phép bạn sử dụng lại components đã được phát triển thành các ứng dụng khác có cùng chức năng. Tính năng tái sử dụng component là một lợi thế khác biệt cho các lập trình viên.

− 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à một sự pha trộn tuyệt vời của JavaScript và HTML. Nó làm rõ toàn bộ quá trình viết cấu trúc trang web. Ngoài ra, phần mở rộng cũng giúp render nhiều lựa chọn dễ dàng hơn.

− JSX có thể không là phần mở rộng cú pháp phổ biến nhất, nhưng nó được chứng minh là hiệu quả trong việc phát triển components đặc biệt hoặc các ứng dụng có khối lượng lớn.

16

− React sẽ cập nhật hiệu quả quá trình DOM (Document Object Model – Mô hình đối tượng tài liệu). Như đã biết, quá trình này có thể gây ra nhiều thất vọng trong các dự án ứng dụng dựa trên web. May mắn là React sử dụng virtual DOMs, vì vậy có thể tránh được vấn đề này.

− Công cụ cho phép xây dựng các virtual DOMs và host chúng trong bộ nhớ. Nhờ vậy, mỗi khi có sự thay đổi trong DOM thực tế, thì virtual sẽ thay đổi ngay lập tức.

− 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.

17

Chương 3. GIẢI QUYẾT VẤN ĐỀ

3.1. Đặt vấn đề

− Thông qua quá trình khảo sát, nhóm nhận thấy trên thị trường hiện tại đã có rất nhiều hình thức quảng bá, tư vấn thông tin bất động sản. Tuy nhiên vẫn chưa thật sự có một biện pháp có thể cho người dùng tìm ra được cụ thể sản phẩm thực sự phù hợp với bản thân

− Do đó việc để nghiên cứu tìm ra một 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 vấn đề vô cùng khó khăn mà nhóm cần dành nhiều thời gian để đưa ra những ý tưởng và thực thi những ý tưởng đó.

3.2. Hướng giải quyết

Qua quá trình khảo sát tìm hiểu, nhóm quyết định để giải quyết vấn đề tư vấn cho khách hàng, nhóm sẽ thực hiện 1 số phương pháp để dẫn dắt người dùng tìm đến sự lựa chọn phù hợp cho riêng mình

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

− Dựa trên lịch sử tìm kiếm trước đó của người dùng trên website (Tìm kiếm bằng lọc, xem sản phẩm, yêu thích, chatbox,..) hệ thống sẽ tự động tính toán độ phù hợp của từng bất động sản đối với người dùng

− Người dùng có thể đăng nhập để hệ thống xác định chính xác hơn thông tin, tuy nhiên hệ thống cũng tự động lưu lại thông tin dựa trên địa chỉ IP để tư vấn cho người dùng

− Hệ thống tính toán độ phù hợp của bất động sản dựa trên hình thức tính trung bình cộng điểm, dựa trên các yếu tố:

o Thể loại

o Loại bất động sả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 đồ

− Với số lượng lớn bất động sản, hệ thống cung cấp chức năng biểu đồ giúp khái quát hóa để người có cái nhìn tổng quát bất động sản đáp ứng với tiêu chí mà mình mong muốn. Từ đó đưa ra được lựa chọn phù hợp với bản thân

− 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 với một số tiêu chí

o Thống kê theo diện tích với điều kiện thành phố và giá cả

o Thống kê theo thành phố với điều kiện diện tích và giá cả

19

Chương 4. PHÂN TÍCH THIẾT KẾ HỆ THỐNG

4.1. Sơ đồ Use Case

4.1.1.Sơ đồ Use Case tổng quát

20

STT Usecase Mô 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

5 Lọc/Tìm kiếm bđs Tìm kiếm/lọc bất động sản theo những thông tin như từ khóa tìm kiếm, tỉnh/thành phố, quận/huyện, loại bất động sản, khoản giá, khoản diện tích... 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.

7 Quản lý bđs cá nhân 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

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, …

21

Bảng 4.1.1. Thông tin các Use Case chính

4.1.2.Danh sách các Actor

Các đối tượng giao tiếp với hệ thống

STT Actor Ý nghĩa

1 Người dùng Là tất cả người dùng có nhu cầu giao dịch tất cả các loại bất động sản và sử dụng tất cả những tính năng của hệ thống như đăng giao dịch bất động sản, tra cứu bất động sản, giao dịch bất động sản, đẩ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,…

Bảng 4.1.2. Danh sách Actor

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

Hiển thị danh sách người dùng khách hàng, bao

Một phần của tài liệu Hệ thống tư vấn lựa chọn bất động sản kết hợp chatbox (báo cáo cuối kì đồ án 2) (Trang 26)