Tải bản đầy đủ (.pdf) (110 trang)

Mạng xã hội bất động sản tích hợp chatbot thông minh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.26 MB, 110 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN QUANG HUY
PHẠM PHÚC KHẢI

KHÓA LUẬN TỐT NGHIỆP

MẠNG XÃ HỘI BẤT ĐỘNG SẢN TÍCH HỢP
CHATBOT THƠNG MINH
Real estate social network with chatbot integration

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP. HỒ CHÍ MINH, 2021


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN QUANG HUY - 17520584
PHẠM PHÚC KHẢI - 17520081

KHÓA LUẬN TỐT NGHIỆP

MẠNG XÃ HỘI BẤT ĐỘNG SẢN TÍCH HỢP
CHATBOT THƠNG MINH


Real estate social network with chatbot integration
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN

THS. TRẦN ANH DŨNG

TP. HỒ CHÍ MINH, 2021


DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số …………………
ngày ………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1. ………………………. – Chủ tịch.
2. ………………………. – Thư ký.
3. ………………………. – Ủy viên.


ĐHQG TP. HỒ CHÍ MINH
CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC
Độc Lập – Tự Do – Hạnh Phúc
CÔNG NGHỆ THÔNG TIN
TP. HCM, ngày … tháng … năm 202
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên khố luận:
MẠNG XÃ HỘI BẤT ĐỘNG SẢN
TÍCH HỢP CHATBOT THƠNG MINH
Nhóm SV thực hiện:

Nguyễn Quang Huy
Phạm Phúc Khải

17520583
17520081

Cán bộ hướng dẫn:
Thạc sĩ: Trần Anh Dũng
Thạc sĩ: Trần Anh Dũng

Đánh giá khoá luận:
1. Về cuốn báo cáo:
Số trang:

Số chương:

Số bảng số liệu:

Số hình vẽ:

Số tài liệu tham khảo:

Sản phẩm:

Một số nhận xét về hình thức cuốn báo cáo:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………

2. Về nội dung nghiên cứu:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
3. Về chương trình ứng dụng:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………


4. Về thái độ làm việc của sinh viên:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
Đánh giá chung:
·····································································································
·····································································································
·····································································································
·····································································································
Điểm từng sinh viên:
Nguyễn Quang Huy:
/10
Phạm Phúc Khải:
/10

Người nhận xét
(Ký tên và ghi rõ họ tên)


ĐHQG TP. HỒ CHÍ MINH CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC
Độc Lập – Tự Do – Hạnh Phúc
CÔNG NGHỆ THÔNG TIN
TP. HCM, ngày … tháng … năm 202
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN)
Tên khố luận:
MẠNG XÃ HỘI BẤT ĐỘNG SẢN
TÍCH HỢP CHATBOT THƠNG MINH
Nhóm SV thực hiện:
Nguyễn Quang Huy
Phạm Phúc Khải

Cán bộ phản biện:
17520583
17520081

Đánh giá khoá luận:
1 Về cuốn báo cáo:
Số trang



Số chương




Số bảng số liệu



Số hình vẽ



Số tài liệu tham khảo



Sản phẩm



Một số nhận xét về hình thức cuốn báo cáo:
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
2 Về nội dung nghiên cứu:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………

3 Về chương trình ứng dụng:
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………


…………………………………………………………………………………
…………………………………………………………………………………
4 Về thái độ làm việc của sinh viên:
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
Đánh giá chung: Khóa luận đạt / khơng đạt u cầu của một khóa luận tốt nghiệp
kỹ sư / cử nhân, xếp loại Giỏi / Khá / Trung bình
Điểm từng sinh viên:
Nguyễn Tiến Dũng:
/10
Nguyễn Việt Tiến:
/10
Người nhận xét
(Ký tên và ghi rõ họ tên)


LỜI CẢM ƠN
Thời gian trôi qua thật nhanh, nhớ những ngày đầu nhập học em và các bạn
cùng khóa ở lớp đều là những cô cậu tân sinh viên chưa có nền tảng kiến thức hay
những định hướng về tương lai do “IT” có vơ vàn con đường để theo nào là lập trình
web, nghiên cứu máy học, mobile, blockchain, …. Ấy vậy mà giờ đây những con

người ấy đều có những bước đi vững chắc trên con đường riêng của mình. Đó đều
nhờ một phần cơng lao rất lớn của thầy cô trường đại học Công Nghệ Thông Tin –
ĐHQG-TPHCM nói chung và đặc biệt hơn hết chính là thầy cô ở Khoa Công Nghệ
Phần mềm. Qua những ngày tháng rèn luyện gian nan, chúng em đã được thầy cô mài
giũa để trở thành những con người ưu tú với đầy đủ nền tảng kiến thức và lựa chọn
được những hướng đi đúng đắn phù hợp với bản thân. Em rất biết ơn và trân trọng
thầy cô.
Xin chân thành cảm ơn quý thầy cô, đặc biệt là thầy Trần Anh Dũng đã tận
tình hướng dẫn, cũng như giúp chúng em đưa ra những hướng đi đúng đắn để thực
hiện đề tài một cách thành cơng nhất.
Ngồi ra nhóm em cũng xin cảm ơn cô Huỳnh Hồ Thị Mộng Trinh – cố vấn
học tập của chúng em. Cô đã giúp nhóm em có những hướng đi đúng đắn nhất trong
4 năm vừa qua để nhóm có thể tiến đến thực hiện và hồn thành khóa luận như ngày
hơm nay.
Một lần nữa, thay mặt nhóm em rất cảm ơn tất cả q thầy cơ đã tận tình quan
tâm, hướng dẫn nhóm em trong suốt thời gian ngồi dưới mái trường đại học.
Đề tài đã được nhóm em nghiên cứu, thực hiện trong suốt khoảng thời gian
vừa qua với độ hoàn thiện cao. Tuy nhiên vẫn có thể cịn phát sinh một vài sai sót
khơng mong muốn, kính mong q thầy cơ có thể tạm thời bỏ qua.
Thành phố Hồ Chí Minh, ngày … tháng … năm 202
Nguyễn Quang Huy
Phạm Phúc Khải


Mục lục
Chương 1: TỔNG QUAN ĐỀ TÀI ..........................................................................1
1.1. Lý do chọn đề tài ............................................................................................1
1.2. Mục tiêu và phạm vi.......................................................................................2
1.2.1. Mục tiêu .................................................................................................... 2
1.2.2. Phạm vi và đối tượng ................................................................................ 2

1.3. Phương pháp thực hiện .................................................................................3
Chương 2: KIẾN THỨC NỀN TẢNG, KỸ THUẬT .............................................5
2.1. Flutter ..............................................................................................................5
2.1.1. Lý do chọn Flutter ..................................................................................... 6
2.2. Nodejs ..............................................................................................................7
2.2.1. Tổng quan về framework Expressjs .......................................................... 7
2.3. Hệ quản trị cơ sở dữ liệu Mongodb ..............................................................9
2.3.1. Giới thiệu về Mongodb ............................................................................. 9
2.3.2. Lý do lựa chọn .......................................................................................... 9
2.4. Google Cloud Platform ................................................................................10
2.4.1. Google Maps Platform ............................................................................ 10
2.4.2. Google Places Autocomplete .................................................................. 11
2.4.3. Firebase ................................................................................................... 12
2.4.4. Cloud run................................................................................................. 13
2.5. Docker ...........................................................................................................14
2.5.1. Container trong docker ........................................................................... 14
2.6. GraphQL .......................................................................................................15
2.7. Redis ..............................................................................................................16


Chương 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ..............................................18
3.1. Xây dựng kiến trúc hệ thống .......................................................................18
3.1.1. Xác định sơ đồ quy trình, chức năng hệ thống (Flowchart) ................... 18
3.1.2. Đối tượng tham gia ................................................................................. 18
3.1.3. Phân tích yêu cầu hệ thống ..................................................................... 20
3.2. Phân tích thiết kế hệ thống ..........................................................................22
3.2.1. Sơ đồ Use case ........................................................................................ 22
3.2.2. Danh sách các Actor ............................................................................... 27
3.2.3. Danh sách các Use case .......................................................................... 27
3.2.4. Sơ đồ lớp ................................................................................................. 30

3.3. Thiết kế giao diện .........................................................................................73
3.3.1. Giao diện ứng dụng Mobile .................................................................... 73
3.3.2. Giao diện trang admin quản lý ................................................................ 88
Chương 4: KẾT LUẬN, ĐÁNH GIÁ, HƯỚNG PHÁT TRIỂN .........................92
4.1. Kết quả đạt được ..........................................................................................92
4.1.1. Về mặt lý thuyết ...................................................................................... 92
4.1.2. Về mặt công nghệ ................................................................................... 92
4.1.3. Về mặt ứng dụng ..................................................................................... 93
4.2. Những thuận lợi và khó khăn .....................................................................93
4.3. Kết luận .........................................................................................................94
4.4. Hướng phát triển ..........................................................................................94


Danh mục hình ảnh
Hình 2.1.1: Hình minh họa Flutter ..............................................................................5
Hình 2.2.1: Hình minh họa Nodejs .............................................................................7
Hình 2.4.1: Logo Google Maps Platform .................................................................10
Hình 2.4.2: Minh hoạ Google Places Autocomplete ................................................11
Hình 2.4.3: Logo Firebase Realtime Database .........................................................12
Hình 2.5.1: Hình minh họa docker ............................................................................14
Hình 2.6.1: Hình minh họa GraphQL .......................................................................15
Hình 2.7.1: Hình minh họa Redis..............................................................................16
Hình 3.1.1: Sơ đồ chức năng (Flowchart) .................................................................18
Hình 3.2.1: Use case tổng quát..................................................................................22
Hình 3.2.2: Use case quản lý bài viết ........................................................................23
Hình 3.2.3: Use case quản lý người dùng .................................................................23
Hình 3.2.4: Use case chat ..........................................................................................24
Hình 3.2.5: Use case quản lý trang ...........................................................................24
Hình 3.2.6: Use case quản lý nhóm ..........................................................................25
Hình 3.2.7: Use case quản lý thơng báo ....................................................................25

Hình 3.2.8: Use case quản lý thơng tin cá nhân ........................................................26
Hình 3.2.9: Use case quản lý cơ sở dữ liệu ...............................................................26
Hình 3.2.10: Use case duyệt đối tác, doanh nghiệp ..................................................26
Hình 3.2.11: Use case báo cáo, thống kê ..................................................................27
Hình 3.2.12: Class diagram .......................................................................................30
Hình 3.2.13: Class diagram (bổ sung 1)....................................................................31
Hình 3.2.14: Class diagram (bổ sung 2)....................................................................32
Hình 3.3.1: Màn hình review app..............................................................................73
Hình 3.3.2: Màn hình đăng nhập ...............................................................................74
Hình 3.3.3: Màn hình đăng ký thành viên .................................................................75
Hình 3.3.4: Màn hình đăng ký doanh nghiệp ............................................................76
Hình 3.3.5: Màn hình chia sẻ, gợi ý kết bạn .............................................................77


Hình 3.3.6: Màn hình HomePage ..............................................................................77
Hình 3.3.7: Màn hình tìm kiếm .................................................................................78
Hình 3.3.8: Màn hình khung chat..............................................................................79
Hình 3.3.9: Màn hình quản lý Chat ...........................................................................79
Hình 3.3.10: Màn hình Chatbot hỗ trợ ......................................................................80
Hình 3.3.11: Màn hình Chatbot hỗ trợ ......................................................................80
Hình 3.3.12: Thơng tin thêm khi tạo bài viết ............................................................81
Hình 3.3.13: Màn hình tạo bài viết ...........................................................................81
Hình 3.3.14: Màn hình tọa độ bài viết trên google map và tính tốn .......................82
Hình 3.3.15: Màn hình bài viết chi tiết .....................................................................82
Hình 3.3.16: Màn hình cài đặt thơng báo ..................................................................83
Hình 3.3.17: Màn hình quản lý thơng báo ................................................................83
Hình 3.3.18: Màn hình quản lý lời mời nhóm ..........................................................84
Hình 3.3.19: Màn hình quản lý nhóm .......................................................................84
Hình 3.3.20: Màn hình tạo nhóm ..............................................................................85
Hình 3.3.21: Màn hình danh sách gợi ý nhóm ..........................................................85

Hình 3.3.22: Màn hình trang chi tiết .........................................................................86
Hình 3.3.23: Màn hình quản lý trang ........................................................................86
Hình 3.3.24: Màn hình thơng tin người dùng ...........................................................87
Hình 3.3.25: Màn hình xác minh đối tác...................................................................88
Hình 3.3.26: Màn hình tổng quan .............................................................................88
Hình 3.3.27: Màn hình thống kê cơ bản....................................................................89
Hình 3.3.28: Màn hình quản lý dữ liệu bài viết ........................................................89
Hình 3.3.29: Màn hình quản lý báo cáo bài viết .......................................................90
Hình 3.3.30: Màn hình report theo khoảng thời gian 30 ngày trở lại .......................90
Hình 3.3.31: Màn hình duyệt đối tác ........................................................................91
Hình 3.3.32: Màn hình duyệt doanh nghiệp..............................................................91


Danh mục bảng
Bảng 3.2.1: Bảng danh sách Actor ............................................................................27
Bảng 3.2.2: Bảng danh sách use case ........................................................................29
Bảng 3.2.3: Bảng tổng quát cơ sở dữ liệu .................................................................46
Bảng 3.2.4: Bảng actionLogs ....................................................................................47
Bảng 3.2.5: Bảng actionPoint....................................................................................48
Bảng 3.2.6: Bảng addresses ......................................................................................48
Bảng 3.2.7: Bảng brokerverifications .......................................................................49
Bảng 3.2.8: Bảng cadastrals ......................................................................................50
Bảng 3.2.9: Bảng categorypages ...............................................................................50
Bảng 3.2.10: Bảng comments ...................................................................................51
Bảng 3.2.11: companyverifications...........................................................................52
Bảng 3.2.12: Bảng counters ......................................................................................53
Bảng 3.2.13: Bảng deviceinfos .................................................................................53
Bảng 3.2.14: Bảng feedbacks ....................................................................................54
Bảng 3.2.15: Bảng followlogs ...................................................................................54
Bảng 3.2.16: Bảng groupactions ...............................................................................55

Bảng 3.2.17: Bảng groups .........................................................................................56
Bảng 3.2.18: Bảng invitepages..................................................................................57
Bảng 3.2.19: Bảng mediaposts ..................................................................................58
Bảng 3.2.20: Bảng notifications ................................................................................60
Bảng 3.2.21: Bảng pages ...........................................................................................61
Bảng 3.2.22: Bảng posts............................................................................................64
Bảng 3.2.23: Bảng replies .........................................................................................65
Bảng 3.2.24: Bảng reports .........................................................................................66
Bảng 3.2.25: Bảng templatehashtags ........................................................................66
Bảng 3.2.26: Bảng users............................................................................................70
Bảng 3.2.27: Bảng valuationhcms ............................................................................71
Bảng 3.2.28: valuationhcmstreets .............................................................................72


TĨM TẮT KHĨA LUẬN

Khóa luận với đề tài “Mạng xã hội bất động sản tích hợp Chatbot thơng minh”
nhằm mục đích cung cấp môi trường, sân chơi lành mạnh, đa dạng dành cho nhà môi
giới, nhà đầu tư bất động sản trong nước. Đề tài không chỉ kế thừa các tính năng cơ
bản của một mạng xã hội hoàn thiện mà còn cung cấp thêm nhiều tính năng mới mẻ
dành riêng cho bất động sản như: Chuyển định vị VN2000 từ sổ đỏ sang wgs84 trên
google Map, định giá bất động sản ở những khu vực hot hiện nay hay kiểm tra thông
tin quy hoạch dựa trên data từ trang web chính phủ, Chatbot thơng minh hỗ trợ phân
tích và tìm kiếm một cách chính xác….
Hệ thống được xây dựng trên nền tảng Mobile là chính do Smartphone đang
trở thành xu thế toàn cầu nên rất dễ tiếp cận người dùng. Các cơng nghệ được nhóm
sử dụng như Nodejs kết hợp với Graphql (giải pháp API query cho mạng xã hội được
cung cấp bởi Facebook) được sử dụng ở phía server-side, Flutter (cross platform được
sử dụng nhiều nhất hiện nay được cung cấp bởi Google) ở phía client-side, Reactjs
(Web UI được sử dụng rộng rãi) cho trang admin để quản lí, thống kê, phân tích dữ

liệu người dùng. Ngồi ra hệ thống được deploy bằng công nghệ Cloud Run hiện đại
do google cung cấp hạn chế tình trạng tắc nghẽn, quá tải, ….
Đồ án được nhóm em khảo sát chặt chẽ từ khách hàng, nắm bắt yêu cầu của
khách hàng, của những công ty chuyên cung cấp dịch vụ về lĩnh vực bất động sản.
Cơng nghệ được nhóm chọn lọc, tham khảo kỹ càng giúp đề tài không chỉ thân thiện,
gần gũi mà còn hiện đại.


Chương 1: TỔNG QUAN ĐỀ TÀI
1.1. Lý do chọn đề tài
Hưởng ứng định hướng của Bộ Thông tin & Truyền thông xây dựng một mạng
xã hội người Việt, một mạng xã hội made in VietNam từ đó nhóm em đã có định
hướng cho khóa luận. Tuy nhiên nhóm em nhận thấy mạng xã hội hiện nay đang đi
theo hướng đa người dùng, đa mục tiêu, vấn đề đó gây ra tình trạng thơng tin trên
mạng xã hội khá lỗng, khó quản lý dữ liệu cũng như người dùng, từ đó nhóm quyết
định tìm tịi, tập trung vào những chủ đề đang nóng cũng như được sự quan tâm,
khơng chỉ thế nhóm cịn đặt ra mục tiêu cao hơn đó là “Một thứ gì có thể đem lại lợi
nhuận cao cho nhà phát triển”. Qua định hướng nhóm đã khảo sát thơng tin của những
doanh nhân, những doanh nghiệp có tiếng trong nước và phát hiện ra “Bất động sản”
đang là một ngành nghề cũng như lĩnh vực đem lại nguồn lợi cực kì to lớn cho mọi
người. Nhiều “Shark”, nhiều tỷ phú đi lên từ con đường “Bất động sản”. Nên nhóm
đã quyết định tạo ra một mạng xã hội Bất động sản, tạo ra môi trường kết nối các nhà
mơi giới, các nhà đầu tư lại với nhau.
1.1.1 Tính mới và điểm nổi bật của đề tài
Các mạng xã hội lớn hiện nay ở Việt Nam như Facebook, Zalo được
nhiều người sử dụng, nó được phát triển cho mọi người dùng, mọi lĩnh vực do
đó các tính năng, dữ liệu của ứng dụng có thể bị pha lỗng về một lĩnh vực nào
đó như bất động sản.
Bên cạnh đó các mơi giới bất động sản như batdongsan.com,
cafeland.vn tuy có dữ liệu cô đặc về chủ đề bất động sản nhưng lại gây cảm

giác khá nhàm chán cho người dùng về khả năng tương tác cũng như giao diện
người dùng.

1


Thấy được điều đó, nhóm em tìm ra hướng giải quyết bằng cách tích
hợp hai vấn đề trên để ứng dụng vào đề tài của mình. Ứng dụng sẽ cung cấp
giao diện đẹp với đầy đủ tính năng hỗ trợ về lĩnh vực bất động sản cho người
dùng cũng như giúp mọi người có thể tương tác trao đổi với nhau trên nền tảng
di động.
Tuy nhiên vấn đề không dừng lại ở đó, để tăng tính tương tác cho ứng
dụng nhóm em quyết định làm và tích hợp thêm ChatBot thông minh. ChatBot
sẽ đưa ra gợi ý bất động sản khi được yêu cầu.
Khác biệt so với các ChatBot trên thị trường Việt Nam chỉ sử dụng
những kịch bản có sẵn, nhóm em sẽ ứng dụng các cơng nghệ từ NLP (Natural
Language Processing) để ChatBot như trở thành một người nhân viên hỗ trợ
thực sự.
1.2. Mục tiêu và phạm vi
1.2.1. Mục tiêu
• Tìm hiểu, ứng dụng những cơng nghệ được hỗ trợ các ơng lớn có
tiếng trong ngành như Facebook, Google như “Đứng trên vai của
những người khổng lồ”.
• Phân tích, nghiên cứu lĩnh vực bất động sản, một ngành nghề đã và
đang trở thành nguồn lợi nhuận khổng lồ.
• Tạo ra một sân chơi, một môi trường thuận tiện, hiện đại cho dân
chuyên ngành bất động sản cùng với Slogan của nhóm là “Tương
tác là số 1”.
1.2.2. Phạm vi và đối tượng
• Giúp các cá nhân, nhà đầu tư, mơi giới có thêm nền tảng để trao đổi

và tìm kiếm thông tin, được sử dụng nhiều tính năng mới mẻ chỉ
dành riêng cho bất động sản.

2


• Hỗ trợ doanh nghiệp quảng bá, truyền tải thông tin cho người dùng,
khảo sát nhu cầu người dùng.
• Thu thập dữ liệu người dùng từ nhà môi giới cũng như nhà đầu tư
để có thể dùng cho các mục đích phát triển sau này như kiến nghị
giá cho bất động sản.
1.3. Phương pháp thực hiện
Nhóm gồm 2 thành viên sẽ phân chia công việc, giao task và kiểm tra
định kỳ cho nhau. Nhóm ln trao đổi với giáo viên hướng dẫn thường
xuyên để nhận ra được những mặt tích cực và tiêu cực trong thời gian
phát triển.
Các công nghệ được sử dụng:
Mobile: Sử dụng Flutter phiên bản 2.0 mới nhất để tạo ra sản phẩm
khơng chỉ đẹp mà cịn tối ưu về hiệu suất. Xử lý những tính năng native
trên cả nền tảng Android lẫn IOS.
Back-end: Sử dụng framework expressjs của Nodejs tốc độ xử lí cực cao,
cải thiện hiệu suất đáng kể cho người sử dụng. Kết hợp với GraphAPI,
một trong những công nghệ API nổi tiếng do ông lớn mạng xã hội
Facebook cũng cấp. Không chỉ thế nhóm cịn áp dụng một số cơng nghệ
nổi bật như Redis (lưu cache cho server), Jest test (Javascript testing được
duy trì bởi Facebook), Firebase (Authenticate OTP, bucket upload, …),
Docker (build and deploy), …
Hệ quản trị cơ sở dữ liệu: nhóm sử dụng MongoDb, một hệ quản trị
CSDL NoSql với tốc độ đọc cực nhanh nhờ các Index, hỗ trợ nhiều query
với cấu trúc phức tạp như: Tìm các tọa độ phù hợp từ tọa độ gốc

(Geospatial Queries), Aggregation Queries phù hợp bậc nhất dành cho
các mạng xã hội.

3


Bố cục báo cáo
Báo cáo gồm có 4 chương:
Chương 1: TỔNG QUAN ĐỀ TÀI: Trình bày về lý do lựa chọn đề tài, tính
mới và điểm nổi bật của đề tài, đối tượng, phạm vi tiếp cận đề tài, phương pháp thực
hiện,
Chương 2: KIẾN THỨC, KỸ THUẬT: Trình bày các kiến thức, công nghệ,
kỹ thuật và cách hoạt động của kiến trúc phần mềm được sử dụng để xây dựng hệ
thống.
Chương 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG: Trình bày chi tiết quy trình
xây dựng hệ thống, từ xác định và phân tích u cầu bài tốn cho đến xây dựng CSDL,
cuối cùng là xây dựng giao diện cho trang web
Chương 4: KẾT LUẬN, ĐÁNH GIÁ, HƯỚNG PHÁT TRIỂN: Rút ra được
các ưu nhược điểm của ứng dụng và đưa ra hướng phát triển trong tương lai.

4


Chương 2: KIẾN THỨC NỀN TẢNG, KỸ THUẬT
2.1. Flutter

Hình 2.1.1: Hình minh họa Flutter
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do
Google phát triển. Flutter sử dụng ngôn ngữ DART cũng do Google phát triển và
flutter cũng đã được sử dụng để tạo ra các ứng dụng native cho Google.

Ưu điểm:
-

Mạnh về hiệu ứng, hiệu suất ứng dụng rất cao.

-

Giao tiếp gần như trực tiếp với hệ thống

-

Ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại (tương tự JS, Python, Java),
compiler linh động khi dùng AOT (cho sản phẩm cuối) và JIT (cho q trình
phát triển với hot reload)

-

Có thể chạy được giả lập mobile ngay trên web, tiện cho việc phát triển. Các
bộ đo lường chỉ số hiệu suất được hỗ trợ sẵn giúp lập trình viên kiểm sốt tốt
hiệu suất của ứng dụng.

-

Có thể dùng để xây dựng các nền tảng gắn vào ứng dụng native để tăng hiệu
suất.
Nhược điểm:

-

Hầu hết bộ render UI đã được viết lại, không liên quan đến UI sẵn có trong UI

Framework native nên memory sẽ dùng khá nhiều. Bên cạnh đó, UI khơng đi
cùng với OS mà được phát triển riêng.

5


-

Thường xuyên bổ sung các kiến thức về ngôn ngữ DART: Có rất ít lập trình
viên hiểu biết rõ về Dart. Có nhiều trường hợp sau khi học xong sẽ dính liền
ln với Dart trong mảng phát triển các ứng dụng trên mobile, chứ không thể
linh động như Python, JS có thể qua lại giữa AI, back, ….

-

Mơ hình dữ liệu rất mới: Nếu đã quen với Redux thì phải sẽ mất kha khá thời
gian để học hỏi thêm về mơ hình dữ liệu của Flutter mặc dù nó khơng quá khó.
2.1.1. Lý do chọn Flutter
Nhóm chúng em chọn flutter khơng chỉ vì nó là một ngơn ngữ lập trình cross
platform mà cịn có những ngun nhân sau:

-

Các phiên bản của Flutter khá ổn định, được hỗ trợ rộng rãi và được hậu thuẫn
mạnh mẽ bởi ông lớn Google.

-

Ngôn ngữ Dart khá thú vị, cấu trúc code cũng khá mới mẻ, hiện đại.


-

Cộng đồng Flutter cực lớn, kho package Dart cực lớn trên Pub.dev.

-

Thư viện Widgets đa dạng, hiện đại.

-

Cực nhanh, cực mạnh so với các đối thủ như React Native.

-

Cộng đồng Flutter luôn tăng lên không ngừng, đã và đang là xu hướng của nhà
phát triển Mobile tại Việt Nam và thế giới

6


2.2. Nodejs

Hình 2.2.1: Hình minh họa Nodejs
Nodejs là một nền tảng được phát triển độc lập trên V8 Javascript Engine – trình
thơng thực thi mã Javascript. Nhờ Nodejs mà việc xây dựng các ứng dụng Web
trở nên đơn giản và dễ dàng hơn rất nhiều. Ngồi ra, Nodejs cịn được biết tới là
một mã nguồn mở và là một môi trường cho các máy chủ và ứng dụng mạng.
Theo số liệu thống kê của Stack Overflow về các Framework, Nodejs đã xuất
sắc giành vị trí số 1 với số lượng người dùng lên tới 50%. Nếu học tốt Nodejs,
cơ hội việc làm cùng sự thăng tiến trong tương lai sẽ vô cùng rộng mở.

2.2.1. Tổng quan về framework Expressjs
Expressjs hay còn được viết là Express js, Express.js. Đây là một framework
mã nguồn mở miễn phí cho Nodejs. Express.js được sử dụng trong thiết kế và xây
dựng các ứng dụng web một cách đơn giản và nhanh chóng.
Vì Expressjs chỉ u cầu ngơn ngữ lập trình Javascript nên việc xây dựng các
ứng dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển.
Expressjs cũng là một khn khổ của Node.js do đó hầu hết các mã code đã được viết
sẵn cho các lập trình viên có thể làm việc.
Nhờ có Expressjs mà các nhà lập trình có thể dễ dàng tạo các ứng dụng 1 web,
nhiều web hoặc kết hợp. Do có dung lượng khá nhẹ, Expressjs giúp cho việc tổ chức

7


các ứng dụng web thành một kiến trúc MVC có tổ chức hơn. Để có thể sử dụng được
mã nguồn này, chúng ta cần phải biết về Javascript và HTML.
Expressjs cũng là một phần của công nghệ giúp quản lý các ứng dụng web một
cách dễ dàng hơn hay còn được gọi là ngăn xếp phần mềm MEAN. Nhờ có thư viện
Javascript của Expressjs đã giúp cho các nhà lập trình xây dựng nên các ứng dụng
web hiệu quả và nhanh chóng hơn. Expressjs cũng được sử dụng để nâng cao các
chức năng của Node.js.
Trên thực tế, nếu không sử dụng Express.js, ta sẽ phải thực hiện rất nhiều bước
lập trình phức tạp để xây dựng nên một API hiệu quả. Expressjs đã giúp cho việc lập
trình trong Node.js trở nên dễ dàng hơn và có nhiều tính năng mới bổ sung.
Ưu điểm của Nodejs và Expressjs:
-

Có tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non-blocking). Ta có thể
dễ dàng xử lý hàng ngàn kết nối trong khoảng thời gian ngắn nhất.


-

Giúp ta dễ dàng mở rộng khi có nhu cầu phát triển website.

-

Nhận và xử lý nhiều kết nối chỉ với một single-thread. Nhờ đó, hệ thống xử lý
sẽ sử dụng ít lượng RAM nhất và giúp quá trình xử Nodejs lý nhanh hơn rất
nhiều.

-

Có khả năng xử lý nhiều Request/s cùng một lúc trong thời gian ngắn nhất.

-

Có khả năng xử lý hàng ngàn Process cho hiệu suất đạt mức tối ưu nhất.

-

Phù hợp để xây dựng những ứng dụng thời gian thực như các ứng dụng chat,
mạng xã hội …

Nhược điểm của Nodejs và Expressjs
-

Nodejs gây hao tốn tài nguyên và thời gian. Nodejs được viết bằng C++ và
JavaScript nên khi xử lý cần phải trải qua một quá trình biên dịch. Nếu ta cần
xử lý những ứng dụng tốn tài nguyên CPU thì khơng nên sử dụng Nodejs.


-

Nodejs so với các ngôn ngữ khác như PHP, Ruby và Python sẽ không có sự
chênh lệch quá nhiều. Nodejs có thể sẽ phù hợp với việc phát triển ứng dụng

8


mới. Tuy nhiên khi xây dựng và triển khai dự án quan trọng thì Nodejs khơng
phải là sự lựa chọn hoàn hảo nhất.
2.3. Hệ quản trị cơ sở dữ liệu Mongodb
2.3.1. Giới thiệu về Mongodb
MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở được thiết kế
theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho
phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất
định nào. Chính do cấu trúc linh hoạt này nên MongoDB có thể được dùng để lưu
trữ các dữ liệu có cấu trúc phức tạp và đa dạng và khơng cố định (hay còn gọi là Big
Data).
2.3.2. Lý do lựa chọn
-

Ít Schema hơn: MongoDB là một cơ sở dữ liệu dựa trên Document, trong đó
một Collection giữ các Document khác nhau. Số trường, nội dung và kích cỡ
của Document này có thể khác với Document khác.

-

Cấu trúc của một đối tượng là rõ ràng.

-


Khơng có các Join phức tạp.

-

Khả năng truy vấn sâu hơn. MongoDB hỗ trợ các truy vấn động trên các
Document bởi sử dụng một ngôn ngữ truy vấn dựa trên Document mà mạnh
mẽ như SQL.

-

MongoDB dễ dàng để mở rộng.

-

Việc chuyển đổi/ánh xạ của các đối tượng ứng dụng đến các đối tượng cơ sở
dữ liệu là không cần thiết.

-

Sử dụng bộ nhớ nội tại để lưu giữ phần công việc, giúp truy cập dữ liệu nhanh
hơn.

-

Là một dạng NoSQL phù hợp để phát triển các mạng xã hội phức tạp.

-

Hỗ trợ không gian địa lý (Geospatial)

Ưu điểm:

-

Kho lưu định hướng Document: Dữ liệu được lưu trong các tài liệu kiểu JSON.

9


-

Lập chỉ mục trên bất kỳ thuộc tính nào, truy vấn nhanh hơn.

-

Các truy vấn đa dạng.

-

Cập nhật nhanh hơn.

-

Hiệu suất cao, tính sẵn sàng cao, dễ mở rộng,
Nhược điểm:

-

Một nhược điểm của NoSQL là hầu hết các giải pháp đều không tuân thủ
ACID mạnh mẽ (Atomic, Consistency, Isolation, Durability) như các hệ thống

RDBMS được thiết lập tốt hơn.

-

Giao dịch phức tạp (các transaction trong ngân hàng).

-

Khơng có chức năng hoặc thủ tục lưu trữ tồn tại nơi ta có thể liên kết logic.

2.4. Google Cloud Platform
2.4.1. Google Maps Platform

Hình 2.4.1: Logo Google Maps Platform
Google Maps Platform (tên gọi cũ là Google Maps API ) là tổng hợp các dịch
vụ, sản phẩm bản đồ web do Google phát triển. Nó cung cấp hình ảnh vệ tinh, bản đồ
đường phố, chế độ xem tồn cảnh tịa nhà, đường phố (Google Street View), điều
kiện giao thông thời gian thực và routing tuyến đường dành cho người đi bộ, ô tô, xe
máy, phương tiện giao thông công cộng,..Nền tảng này được chia ra làm 3 nhóm
chính và các nhà phát triển thơng qua các API, SDK để sử dụng, thao tác với nền tảng
này: Maps, Routes, Places.
Trong các nghiệp vụ sẽ được triển khai của đề tài, nghiệp vụ định vị tọa độ bất
động sản trên bản đồ là nghiệp vụ cần phải có sự hỗ trợ của Google Maps Platform
nhờ sự chính xác, mạnh mẽ của Google.

10


2.4.2. Google Places Autocomplete


Hình 2.4.2: Minh hoạ Google Places Autocomplete
Google Place API là một trong những API tuyệt vời mà Google cung cấp cho
nhà phát triển phần mềm, với thông tin chi tiết về hơn 100 triệu địa điểm. Google
Place API gồm có 3 cơng cụ: Place Picker, Place Autocomplete, Place Details:
• Place Picker cho phép người dùng tìm kiếm các địa điểm xung quanh
vị trí hiện tại của họ.
• Place Autocomplete giúp người dùng dễ dàng nhập tên địa điểm và địa
chỉ, tự động hoàn thành các truy vấn của người dùng khi họ nhập.
• Place Detail cho phép người dùng lấy thông tin chi tiết về một địa điểm
như địa chỉ, số điện thoại, trang web, hình ảnh,...
Trong phạm vi đề tài, Google Place Autocomplete giúp người quản lý tìm
kiếm địa điểm làm việc của văn phịng cơng ty, tính năng quản lý địa điểm làm việc.

11


×