Các vấn đề của một số ứng dụng hiện nay: - Các ứng dụng hiện nay đa số đều có ý tưởng và phương thức hoạt động tươngđồng ở hầu hết các chức năng như: Tìm kiếm, đánh giá, bình luận, … và
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHATBOT Build application for evaluation and consultation to support
selection of food and drink stores by chatbot
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
TP HỒ CHÍ MINH, 2021ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHATBOT Build application for evaluation and consultation to support
selection of food and drink stores by chatbot
Trang 3Hộ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
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày tháng năm 2020
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN) Tên khóa luận:
Xây dựng ứng dụng đánh giá và tư vấn hỗ trợ lựa chọn cửa hàng ăn uống bằng
chatbot
Nhóm sinh viên thực hiện: Cán bộ hướng dẫn: DƯƠNG THẠNH TÍN
16521241 ThS TRẦN ANH DŨNG TẠ QUỐC KHÁNH 16521594
Đánh giá Khóa 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:
Trang 4CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập – Tự Do – Hạnh Phúc
TP HCM, ngày tháng năm 2020
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN) Tên khóa luận:
Xây dựng ứng dụng đánh giá và tư vấn hỗ trợ lựa chọn cửa hàng ăn uống bằng
chatbot
Nhóm sinh viên thực hiện: Cán bộ phản biện: DƯƠNG THẠNH
TÍN 16521241
TẠ QUÔC KHÁNH 16521594
Trang 5Đánh giá Khóa 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:
kỹ năng thực tế để có thể hoàn thành Khóa luận tốt nghiệp của mình
Để hoàn thành khóa luận này, chúng em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin
Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Anh Dũng đã tận tình giúp đỡ,định hướng cách tư duy và cách làm việc khoa học Đó là những góp ý hết sức quý báukhông chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếp bước chochúng em trong quá trình học tập và lập nghiệp sau này
Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa, bạn
Trang 6bè, tập thể lớp PMCL2016.3 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong họctập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm khóa luận này chúng em không tránh khỏi được những sai sót,chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để khóa luận đượchoàn thiện hơn
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hànhcùng mọi người
Thành phố Hồ Chí Minh, 24 tháng 12 năm 2020
Sinh viên DƯƠNG THẠNH TÍN
TẠ QUỐC KHÁNH
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng … năm ………
ĐỀ CƯƠNG CHI TIẾTTÊN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐÁNH GIÁ VÀ TƯ VẤN HỖ
TRỢ LỰA CHỌN CỬA HÀNG ĂN UỐNG BẰNG CHATBOT
TÊN ĐỀ TÀI (TIẾNG ANH): BUILD APPLICATION FOR EVALUATION AND CONSULTATION TO SUPPORT SELECTION OF FOOD AND
DRINK STORES BY CHATBOT
Cán bộ hướng dẫn: TS Nguyễn Đình Hiển và ThS Trần Anh Dũng
Thời gian thực hiện: Từ ngày 01/09/2020 đến ngày 31/12/2020
Trang 7Sinh viên thực hiện:
Dương Thạnh Tín - 16521241
Tạ Quốc Khánh - 16521594
Nội dung đề tài: (Lý do chọn đề tài,các vấn đề của một số ứng dụng hiện nay, mô
tả chi tiết mục tiêu, phạm vi, đối tượng sử dụng, điểm nổi bật của ứng dụng, phương pháp thực hiện, nền tảng công nghệ, các tiêu chí khác)
Lý do chọn đề tài:
Có thể nói, Thành phố Hồ Chí Minh là thành phố có sự phát triển mạnh nhất ở Việt Nam Vì lý do đó nên các học sinh hay những người lao động thường đến để làm việc và sinh sống ở đây Với sự tăng trưởng ấy, các cửa
Trang 8hàng địa điểm ăn uống ngày càng nhiều và tăng một cách chóng mặt
Nhưng để chọn một cửa hàng địa điểm ăn uống phù hợp với từng khẩu vị, giá cả hợp lý là vô cùng khó khăn Vì thế chúng em đã chọn đề tài này giúp cho người dùng có thể chọn ra những cửa hàng địa điểm ăn uống và
có thể tư vấn hỗ trợ cho người dùng chọn ra những cửa hàng địa điểm ăn uống phù hợp nhất
- Khách hàng chỉ cần với những thao tác đơn giản là có thể tìm được quán ăn phù hợp với nhu cầu của mình
Các vấn đề của một số ứng dụng hiện nay:
- Các ứng dụng hiện nay đa số đều có ý tưởng và phương thức hoạt động tươngđồng ở hầu hết các chức năng như: Tìm kiếm, đánh giá, bình luận, … vàkhông có gì khác biệt cho khách hàng trải nghiệm ở ứng dụng ngoài trừ kếthợp với những ứng dụng khác
⇨ Sau quá trình khảo sát thực tế và lắng nghe ý kiến của người dùng,giải pháp nhóm đề ra là thiết kế ứng dụng khác biệt so với các ứngdụng hiện nay nhưng phải dễ nhìn, dễ sử dụng và thể hiện đượcnhững thông tin cần thiết cho người dùng
- Nhóm đã tìm hiểu và dùng thử một số ứng dụng hàng đầu hiện nay ở Việt Nam như: Foody, Pasgo, Diadiemanuong và nhận thấy một số khuyết điểm của những ứng dụng ấy:
Về phần giao diện và chức năng:
• Foody: Giao diện khó phân biệt từng phần với nhau, không có lọc cửahàng về giá cả, không phân trang cụ thể
• Pasgo: Chọn loại hình ăn uống còn bị lỗi, không có lọc cửa hàng vềgiá cả, chức năng bình luận không đánh giá được thông số của cửahàng
• Diadiemanuong: Giao diện khó nhìn, khó sử dụng, ít thông tin
Trang 9⇨ Nhóm đã quyết định sẽ thay đổi sự khác biệt về giao diện làm chogiao diện dễ nhìn và trực quan hơn và làm thêm chức năng lọc cửahàng theo giá cả và theo điểm được đánh giá, top những cửa hàngđược đánh giá nhiều nhất và top những cửa hàng có điểm đánh giácao nhất, bình luận được số điểm của cửa hàng
Về phần chatbot:
• Foody: Không có chatbot
• Pasgo: Có chat nhưng người trực tiếp của hệ thống tư vấn chứ không phải chatbot
• Diadiemanuong: Không có chatbot
⇨ Vì muốn tạo ra sự khác biệt so với những ứng dụng hiện nay nênnhóm đã quyết định thêm chatbot mong muốn người dùng có thểđược chatbot hỗ trợ tư vấn những cửa hàng ăn uống phù hợp với nhucầu của người dùng
Mục tiêu:
- Xây dựng ứng dụng một cộng đồng cửa hàng, địa điểm ăn uống cho ngườidùng Người dùng có thể xem, tìm kiếm, đánh giá tiêu chuẩn và bình luậncác cửa hàng, địa điểm ăn uống
- Xây dựng một ứng dụng hỗ trợ, tư vấn cho người dùng nhằm tìm được nhữngcửa hàng, địa điểm một cách nhanh chóng và phù hợp nhất từ thông tin củacủa khách hàng đưa
- Ứng dụng sử dụng những công nghệ mới, phù hợp đáp ứng khả năng mở rộng
và tương tác cao
- Ứng dụng có giao diện trực quan, khác biệt so với các ứng dụng hiện nay, phù
hợp với nhu cầu của đối tượng người dùng
- Ứng dụng gợi ý cửa hàng cho người dùng.
- Phát triển ứng dụng có tính thực tiển cao, có khả năng triển khai ứng dụng vào
thực tế
Nhóm em hi vọng dựa trên nền tảng lý thuyết đã được thầy cô truyền dạy và
hỗ trợ, kết hợp với n hững công nghệ nhóm em đã tìm hiểu, mong rằng luận
Trang 10văn tốt nghiệp của nhóm em sẽ đạt được mục đích như mong đợi
- Hỗ trợ và tư vấn cho người dùng về tìm kiếm món ăn hay cửa hàng, địa điểm ănuống tại vị trí hiện tại của người dùng hoặc tìm kiếm tại đường hay khu vựcnào đó
- Tích hợp bản đồ để hỗ trợ xem địa chỉ cùng thông tin
Đối tượng sử dụng:
Khách hàng có nhu cầu tìm kiếm món ăn và cửa hàng, địa điểm ăn uống Đối tượng này thường tập trung từ độ tuổi 15 - 40
Điểm nổi bật của ứng dụng:
- Ứng dụng được xây dựng với giao diện khác biệt hoàn toàn với những ứng dụnghiện nay: Danh sách cửa hàng sẽ được hiển thị cùng với Google Map
- Ứng dụng sẽ có thêm chatbot tự động trả lời cho người dùng còn những ứngdụng nổi bật hiện nay hầu như không có chatbot hoặc có chat mà người trựctiếp nói chuyện với người dùng
Trang 11- Ứng dụng sẽ có danh sách các cửa hàng yêu thích cho người dùng
Phương pháp thực hiện:
- Làm việc nhóm với 2 thành viên, lên kế hoạch và thực hiện bằng cách trao đổitrực tiếp và gián tiếp cũng như nhờ sự tư vấn của giáo viên hướng dẫn
- Nhóm đã sử dụng các phương pháp nghiên cứu:
• Phương pháp đọc tài liệu
• Phương pháp thực nghiệm
• Phương pháp phân tích các ứng dụng liên quan nổi bật hiện nay
- Tham khảo các sản phẩm và công nghệ liên quan tới cửa hàng, địa điểm ăn uống
- Về mặt công nghệ thì nhóm xây dựng Restful API bằng Nodejs để làm việcvới dữ liệu Còn về phần giao diện thì nhóm sử dụng Nextjs giúp người dùng
có thể xem và tương tác trực tiếp trên đó
- Xây dựng chatbot tư vấn, hỗ trợ người sử dụng tìm kiếm cửa hàng ăn uống phù hợp nhất
- Tìm hiểu bài toán xử lí ngôn ngữ tự nhiên (Natural Language Processing)
Nền tảng công nghệ:
- Front-end: Reactjs, Nextjs
- Back-end: Nodejs
- Database: MongoDB
- Cào dữ liệu: Puppeteer
- Công cụ tìm kiếm: Elasticsearch
- Google Map API
Trang 12- Chatbot Facebook Messenger
- IDE: Visual Studio Code
• Srpint 1: Khảo sát và nghiên cứu
• Sprint 2: Phân tích thiết kế hệ thống, thiết kế chức năng và cơ sở dữ liệu ứng dụng
• Sprint 3: Xây dựng các API, xây dựng giao diện và phát triển ứng dụng
để thực hiện các chức năng ở Sprint 2
Trang 13- Khảo sát các ứng dụngtương tự
- Tìm hiểu về các công nghệ sử dụng trong khóa luận
- Giai đoạn 2: Hoàn thiện ứng dụng, kiểm thử và hoàn thành báo cáo Người dùng
có thể sử dụng dễ dàng và hiệu quả Gồm 3 Sprint:
• Sprint 4: Tìm hiểu hệ thống gợi ý cửa hàng, chatbot và ứng dụng • Sprint 5: Kiểm thử chức năng
• Sprint 6: Hoàn thành báo cáo
Trang 14- Nghiên cứu xây dựng chatbot.
Sprint 5: Kiểm
thử chức năng
11/12/2020 – 18/12/2020 - Kiểm thử các chức năng
của ứng dụngSprint 6: Hoàn
- Đánh giá và đóng góp
ý kiến cho Back-end
Trang 15Lý do chọn đề tài 2 Tínhnăng mới/ khác biệt 3 Đối tượngnghiên cứu 4 Phạm vi nghiêncứu 5 Phương pháp nghiêncứu 5 Chương 2 KIẾN THỨC NỀN
TẢNG 6 Tổng quan về mô hình
MVC 6 2.1.1 Kháiniệm 6 2.1.2 Cấu trúc môhình MVC 6 2.1.3 Tại sao dùng mô hình
MVC 7 Tổng quan vềNodejs 9 2.2.1 Giớithiệu 9 2.2.2 Tạo sao chọnNodejs để phát triển server 10 2.2.3 Các đặc tính củaNodejs 10 2.2.4 Áp dụng vào đềtài 11 Hệ quản trị cơ sở dữ liệu
MongoDB 11 2.3.1 Giớithiệu 11 2.3.2 Ưu điểm củaMongoDB 12 2.3.3 Nhược điểm của
Trang 16MongoDB 12
Elasticsearch 13 2.4.1 Khái niệm Elasticsearch 13
2.4.2 Cách hoạt động của Elasticsearch 13 2.4.3 Ưu điểm và nhược điểm của Elasticsearch 14 Một số khái niệm cơ bản trong Elasticsearch 15
Puppeteer .16
2.5.1 Giới thiệu 16 2.5.2 Những chức năng của Puppeteer 17 2.5.3 Một số khái niệm cơ bản 17
ReactJs 19
2.6.1 Giới thiệu 19 2.6.2 Những khái niệm cơ bản 20 2.6.3 Ưu nhược điểm của Reactjs 23
NextJs .24
2.7.1 Giới thiệu 24 2.7.2 Tại sao cần Server Side Rendering (SSR) 25
Google Map API 25
2.8.1 Giới thiệu 25 2.8.2 Một số ứng dụng 26
Flask 26
Giới thiệu 27
Ưu điểm của Flask 27
Chương 3 TÌM HIỂU VÀ LỰA CHỌN CÔNG NGHỆ ỨNG DỤNG CHATBOT 28
Tìm hiểu về chatbot 28
3.1.1 Chatbot là gì? 28 3.1.2 Tính ứng dụng 29 3.1.3
Xu hướng phát triển 30 Tìm hiểu
Trang 17về Facebook Messenger 31 Tổng quan 31 3.2.2 Đánh giá 32 Chatbot Facebook 33 3.3.1 Giới thiệu
về Chatbot Facebook 33 3.3.2 Cách hoạt động 34 3.3.3 Một số khái niệm
cơ bản 34 Áp dụng công nghệ vào
chatbot 35 3.4.1 Facebook Api 35 3.4.2 Facebook Graph
Api 36 3.4.3 Nhận dạng thực
thể 37
Wit.ai 39
Giới thiệu 39
Understanding 40
Intent 40
Entities 41
Utterances 43
Hướng dẫn cài đặt Build Facebook Messenger Bot với Nodejs và deploy lên Heroku 44
Giới thiệu 44
Thực hiện 44
Chương 4 TÌM HIỂU VÀ ÁP DỤNG THUẬT TOÁN PHÂN LOẠI ĐÁNH GIÁ 52
Giới thiệu 52 Một số khái niệm cơ bản 52 Mô
hình túi từ (bag-of-words) 52 TF-IDF 54 4.2.3 Naive Bayes 55 Xây dựng phân loại đánh giá 56 Chương 5 XÂY DỰNG HỆ
Trang 18THỐNG 60 Xây dựng kiến trúc hệ thống 60 5.1.1 Kiến trúc hệ thống Website
60 5.1.2 Kiến trúc hệ thống ChatBot 61 Phân tích thiết kế hệ thống 63 Sơ đồ use case 63 Sơ đồ lớp 84 Phân tích và thiết
kế CSDL 86 Thiết kế giao diện trang web 95 Sơ đồ thiết kế giao diện trang
web 95 Danh sách giao diện trang web 96 Mô tả chi tiết giao diện trang
web 100 5.4 Thiết kế giao diện chat bot 143 5.4.1 Danh sách giao diện chat bot 143 5.4.2 Mô tả chi tiết giao diện chat
bot 146 5.5 Sơ đồ kịch bản
chatbot 166
Chương 6 KẾT LUẬN, HƯỚNG PHÁT TRIỂN 167
Kết quả đạt được 167 Ưu điểm .167 Nhược điểm 167 Hướng phát triển 168
DANH MỤC HÌNH VẼ Hình 2.1 - Mô hình MVC 6
Hình 2.2 - Cách NodeJs hoạt động so với những server khác 9
Hình 2.3 - Sự phát triển và độ phổ biến của MongoDB 11
Hình 2.4 - Elasticsearch .13
Hình 2.5 - Cơ chế hoạt động của Elasticsearch 14
Hình 2.6 - Sơ đồ đơn giản của cluster trong Elasticsearch 15
Hình 2.7 - Puppeteer .16
Hình 2.8 - Cơ chế của DOM trong Puppeteer 18
Trang 19Hình 2.9 - Reactjs 19
Hình 2.10 - Vòng đời component reactjs 22
Hình 2.11 - Nextjs 24
Hình 2.12 - Flask 26
Hình 3.1 - Cách thức chatbot hoạt động 28
Hình 3.2 - Lượng người sử dụng Facebook Messenger theo thời gian 32
Hình 3.3 - Chatbot Facebook Messenger 33
Hình 3.4 - Cách hoạt động của Chatbot Facebook Messenger 34
Hình 3.5 - Graph API 36
Hình 3.6 - Facebook API .37
Hình 3.7 - Giao diện Wit.ai 38
Hình 3.8 - Công nghệ của Wit.ai 40
Hình 3.9 - Understanding wit.ai 40
Hình 3.10 - Intent .41
Hình 3.11 - Entities 41
Hình 3.12 - Chi tiết trong một Entities 42
Hình 3.13 - Utterances .43
Hình 3.14 - Tạo trang Fanpage Facebook 44
Hình 3.15 - Thêm nút gửi tin nhắn cho Fanpage 45
Hình 3.16 - Tạo ứng dụng trên Facebook developer 45
Hình 3.17 - Cập nhật code vào index.js 46
Hình 3.18 - Mã truy cập trang 46
Hình 3.19 - Cấu trúc file Procfile để chạy trên Heroku 47
Hình 3.20 - Khởi tạo app trên Heroku 47
Hình 3.21 - Cách push code lên Heroku 48
Hình 3.22 - Ứng dụng được khởi tạo trên Facebook developer 49
Hình 3.23 - Thêm trang Fanpage vào ứng dụng 49
Hình 3.24 - Đăng kí những chức năng Webhook vào Fanpage 50
Hình 3.25 - Kết nối thành công với Fanpage 50
Hình 3.26 - Ứng dụng trên Wit.ai 51
Hình 3.27 - Danh sách chức năng của Wit.ai 51
Hình 4.1 - Dữ liệu đầu vào để traian model 57
Hình 4.2 - Xây dựng mô hình và kết quả 59
Hình 4.3 - Tìm những nhãn được gán sai 59
Hình 5.1 - Kiến trúc hệ thống website 60
Trang 20Hình 5.2 - Kiến trúc hệ thống chatbot 61
Hình 5.3 - Biểu đồ use case người sử dụng mức tổng quát 63
Hình 5.4 - Biểu đồ use case quản trị viên mức tổng quát 64
Hình 5.5 - Biểu đồ use case đối tác mức tổng quát 64
Hình 5.6 - Biểu đồ lớp 84
Hình 5.7 - Sơ đồ thiết kế giao diện web 95
Hình 5.8 - Giao diện đăng ký 100
Hình 5.9 - Giao diện đăng nhập 101
Hình 5.10 - Giao diện trang chủ 102
Hình 5.11 - Giao diện tìm kiếm nhanh 105
Hình 5.12 - Giao diện bộ lọc tìm kiếm 107
Hình 5.13 - Giao diện quán ăn gần bạn 109
Hình 5.14 - Giao diện chi tiết quăn ăn 111
Hình 5.15 - Giao diện giới thiệu 114
Hình 5.16 - Giao diện FAQ 115
Hình 5.17 - Giao diện liên hệ 116
Hình 5.18 - Giao diện trang cá nhân 117
Hình 5.19 - Giao diện danh sách bình luận 119
Hình 5.20 - Giao diện danh sách quán ăn yêu thích 120
Hình 5.21 - Giao diện thay đổi thông tin cá nhân 121
Hình 5.22 - Giao diện đổi mật khẩu 122
Hình 5.23 - Giao diện kích hoạt tài khoản 123
Hình 5.24 - Giao diện quên mật khẩu 124
Hình 5.25 - Giao diện đổi mật khẩu mới 125
Hình 5.26 - Giao diện đăng nhập của quản trị viên 126
Hình 5.27 - Giao diện thống kê 127
Hình 5.28 - Giao diện quản lý danh mục 128
Hình 5.29 - Giao diện quản lý quán ăn 129
Hình 5.30 - Giao diện chi tiết quán ăn 130
Hình 5.31 - Giao diện chỉnh sửa quán ăn 131
Hình 5.32 - Giao diện thêm mới quán ăn 132
Hình 5.33 - Giao diện quản lý khu vực 133
Hình 5.34 - Giao diện quản lý khách hàng 134
Hình 5.35 - Giao diện chi tiết khách hàng 135
Hình 5.36 - Giao diện quản lý đối tác 136
Trang 21Hình 5.37 - Giao diện chi tiết đối tác 137
Hình 5.38 - Giao diện quản lý đặt bàn của quán ăn đối tác 138
Hình 5.39 - Giao diện đăng nhập đối tác 139
Hình 5.40 - Giao diện quản lý cửa hàng dành cho đối tác 140
Hình 5.41 - Giao diện danh sách đặt bàn dành cho đối tác 141
Hình 5.42 - Giao diện thông tin chi tiết cửa hàng của đối tác 141
Hình 5.43 - Giao diện chỉnh sửa cửa hàng của đối tác 142
Hình 5.44 - Giao diện bắt đầu 146
Hình 5.45 - Giao diện menu chính 147
Hình 5.46 - Giao diện menu hướng dẫn 148
Hình 5.47 - Giao diện menu chức năng 149
Hình 5.48 - Giao diện gợi ý hôm nay cho bạn 151
Hình 5.49 - Giao diện điạ chỉ liên hệ 152
Hình 5.50 - Giao diện danh sách quận 153
Hình 5.51 - Giao diện danh sách quận trung tâm 154
Hình 5.52 - Giao diện danh sách quận xunh quanh 155
Hình 5.53 - Giao diện cửa hàng bạn yêu thích 156
Hình 5.54 - Giao diện cửa hàng nổi bật 157
Hình 5.55 - Giao diện danh sách danh mục 158
Hình 5.56 - Giao diện danh sách quán ăn theo quốc gia 159
Hình 5.57 - Giao diện danh sách top quán ăn 160
Hình 5.58 - Giao diện danh sách quán ăn đánh giá nhiều nhất 161
Hình 5.59 - Giao diện danh sách quăn ăn có điểm đánh giá cao nhất 162
Hình 5.60 - Giao diện đặt bàn 163
Hình 5.61 - Giao diện danh sách cửa hàng 165
Hình 5.62 - Sơ đồ kịch bản chatbot 166
DANH MỤC BẢNG Bảng 5.1 - Danh sách actors 65
Bảng 5.2 - Danh sách use cases 67
Bảng 5.3 - Bảng đặc tả use-case “Đăng kí” 68
Bảng 5.4 - Bảng đặc tả use-case “Đăng nhập” 69
Bảng 5.5 - Bảng đặc tả use-case “Quản lý người dùng” 70
Bảng 5.6 - Bảng đặc tả use-case “Quản lý cửa hàng” 71
Bảng 5.7 - Bảng đặc tả use-case “Quản lý danh mục cửa hàng” 73
Bảng 5.8 - Bảng đặc tả use-case “Quản lý địa chỉ” 74
Trang 22Bảng 5.9 - Bảng đặc tả use-case “Quản lý bình luận cửa hàng” 75Bảng 5.10 - Bảng đặc tả use-case “Quản lý cửa hàng yêu thích” 76Bảng 5.11 - Bảng đặc tả use-case “Quản lý quận” 77Bảng 5.12 - Bảng đặc tả use-case “Quản lý đặt bàn” 78Bảng 5.13 - Bảng đặc tả use-case “Xem thông tin cá nhân” 78Bảng 5.14 - Bảng đặc tả use-case “Chỉnh sửa thông tin cá nhân” 79Bảng 5.15 - Bảng đặc tả use-case “Tìm kiếm cửa hàng” 80Bảng 5.16 - Bảng đặc tả use-case “Tìm kiếm cửa hàng với bộ lọc” 80Bảng 5.17 - Bảng đặc tả use-case “Xem thông tin cửa hàng” 81Bảng 5.18 - Bảng đặc tả use-case “Bình luận cửa hàng” 82Bảng 5.19 - Bảng đặc tả use-case “Yêu thích cửa hàng” 82Bảng 5.20 - Bảng đặc tả use-case “Nhắn tin với hệ thống thông qua Chatbot” 83Bảng 5.21 - Các lớp của sơ đồ lớp 85Bảng 5.22 - Các đối tượng và thuộc tính của đối tượng 87Bảng 5.23 - Bảng ‘User’ .88Bảng 5.24 - Bảng ‘Store’ .91Bảng 5.25 - Bảng ‘Category’ .91Bảng 5.26 - Bảng ‘Address’ 92Bảng 5.27 - Bảng ‘Comment’ 93Bảng 5.28 - Bảng Hóa đơn tổng 93Bảng 5.29 - Bảng ‘District’ 94Bảng 5.30- Bảng ‘Reserve’ 94Bảng 5.31 - Bảng danh sách giao diện 99Bảng 5.32 - Bảng mô tả thành phần của giao diện đăng ký 101Bảng 5.33 - Bảng mô tả thành phần của giao diện đăng nhập 101Bảng 5.34 - Bảng mô tả thành phần của giao diện trang chủ 105Bảng 5.35 - Bảng mô tả thành phần của giao diện tìm kiếm nhanh 106Bảng 5.36 - Bảng mô tả thành phần của giao diện bộ lọc tìm kiếm 108Bảng 5.37 - Bảng mô tả thành phần của giao diện quán ăn gần bạn 110Bảng 5.38 - Bảng mô tả thành phần của giao diện chi tiết quăn ăn 113Bảng 5.39 - Bảng mô tả thành phần của giao diện giới thiệu 115Bảng 5.40 - Bảng mô tả thành phần của giao diện FAQ 116Bảng 5.41 - Bảng mô tả thành phần của giao diện liên hệ 116Bảng 5.42 - Bảng mô tả thành phần của giao diện trang cá nhân 118Bảng 5.43 - Bảng mô tả thành phần của giao diện danh sách bình luận 119
Trang 23Bảng 5.44 - Bảng mô tả thành phần của giao diện danh sách quán ăn yêu thích 120Bảng 5.45 - Bảng mô tả thành phần của giao diện thay đổi thông tin cá nhân 121Bảng 5.46 - Bảng mô tả thành phần của giao diện đổi mật khẩu 122Bảng 5.47 - Bảng mô tả thành phần của giao diện kích hoạt tài khoản 123Bảng 5.48 - Bảng mô tả thành phần của giao diện quên mật khẩu 124Bảng 5.49 - Bảng mô tả thành phần của giao diện đổi mật khẩu mới 125Bảng 5.50 - Bảng mô tả thành phần của giao diện đăng nhập của quản trị viên 126Bảng 5.51 - Bảng mô tả thành phần của giao diện thống kê 128Bảng 5.52 - Bảng mô tả thành phần của giao diện quản lý danh mục 129Bảng 5.53 - Bảng mô tả thành phần của giao diện quản lý quán ăn 129Bảng 5.54 - Bảng mô tả thành phần của giao diện chi tiết quán ăn 130Bảng 5.55 - Bảng mô tả thành phần của giao diện chỉnh sửa quán ăn 131Bảng 5.56 - Bảng mô tả thành phần của giao diện thêm mới quán ăn 132Bảng 5.57 - Bảng mô tả thành phần của giao diện quản lý khu vực 133Bảng 5.58 - Bảng mô tả thành phần của giao diện quản lý khách hàng 134Bảng 5.59 - Bảng mô tả thành phần của giao diện chi tiết khách hàng 136Bảng 5.60 - Bảng mô tả thành phần của giao diện quản lý đối tác 136Bảng 5.61 - Bảng mô tả thành phần của giao diện chi tiết đối tác 138Bảng 5.62 - Bảng mô tả thành phần của giao diện quản lý đặt bàn của quán ăn đối tác .138Bảng 5.63 - Bảng mô tả thành phần của giao diện đăng nhập đối tác 139Bảng 5.64 - Bảng mô tả thành phần của giao diện quản lý cửa hàng dành cho đốitác 140Bảng 5.65 - Bảng mô tả thành phần của giao diện thông tin chi tiết cửa hàng của đốitác .141Bảng 5.66 - Bảng mô tả thành phần của giao diện chỉnh sửa cửa hàng của đối tác 142Bảng 5.67 - Bảng danh sách giao diện chatbot 145Bảng 5.68 - Bảng mô tả thành phần của giao diện bắt đầu 146Bảng 5.69 - Bảng mô tả thành phần của giao diện menu chính 147Bảng 5.70 - Bảng mô tả thành phần của giao diện menu chức năng 150Bảng 5.71 - Bảng mô tả thành phần của giao diện gợi ý hôm nay cho bạn 151Bảng 5.72 - Bảng mô tả thành phần của giao diện điạ chỉ liên hệ 152Bảng 5.73 - Bảng mô tả thành phần của giao diện danh sách quận 153Bảng 5.74 - Bảng mô tả thành phần của giao diện danh sách quận trung tâm 154
Trang 24Bảng 5.75 - Bảng mô tả thành phần của giao diện danh sách quận xunh quanh 155Bảng 5.76 - Bảng mô tả thành phần của giao diện cửa hàng bạn yêu thích 156Bảng 5.77 - Bảng mô tả thành phần của giao diện cửa hàng nổi bật 157Bảng 5.78 - Bảng mô tả thành phần của giao diện danh mục 158Bảng 5.79 - Bảng mô tả thành phần của giao diện quán ăn theo quốc gia 159Bảng 5.80 - Bảng mô tả thành phần của giao diện danh sách top quán ăn 160Bảng 5.81 - Bảng mô tả thành phần của giao diện danh sách quán ăn đánh giá nhiều nhất 161 Bảng 5.82 - Bảng mô tả thành phần của giao diện danh sách quăn ăn có điểm đánh giá cao nhất 162 Bảng 5.83 - Bảng mô tả thành phần của giao diện đặt bàn 164 Bảng 5.84 - Bảng mô tả thành phần của giao diện danh sách cửa hàng 165
DANH MỤC TỪ VIẾT TẮT
API Application Programming Interface Giao diện lập trình ứng dụng
HTTP HyperText Transfer Protocol Giao thức truyền siêu văn bản
JSON JavaScript Object Notation Định dạng trao đổi dữ liệu
NoSQL Non-Relational Database Cơ sở dư liệu phi quan hệ
CRUD Create, Read, Update And Delete 4 tính năng quan trọng nhất
để làm việc với Database
SEO Search Engine Optimization Tối ưu hóa công cụ tìm kiếm
Trang 25SSR Server-side Rendering Hoạt động bằng cách chuyển
đổi dữ liệu, thông tin trên máychủ thành các tệp HTML cho
trình duyệt có thể hiểu và sửdụng được
SPA Single Page Application Ứng dụng web hoặc trang web
tương tác với người dùng bằngcách tự động viết lại trang webhiện tại với dữ liệu mới từmáy chủ web
TÓM TẮT KHÓA LUẬN
Khóa luận “XÂY DỰNG ỨNG DỤNG ĐÁNH GIÁ VÀ TƯ VẤN HỖ TRỢ LỰA CHỌN CỬA HÀNG ĂN UỐNG BẰNG CHATBOT” gồm 06 chương:
Chương 1: Giới thiệu về đề tài, đưa ra các điểm nổi bật so với các ứng dụng trước.
Tiếp đến là đề xuất các giải pháp để giải quyết các vấn đề đã đặt ra Ngoài ra, chương 1cũng đề cập đến đối tượng nghiên cứu, phạm vi đề tài, phương pháp nghiên cứu
Chương 2: Trình bày các kiến thức nền tảng liên quan đến ứng dụng
Chương 3: Trình bày chi tiết kiến thức, áp dụng thuật toán và công nghệ liên quan đến
Chatbot Facebook
Chương 4: Trình bày thuật toán phân loại đánh giá về quán ăn của người sử dụng Các
kiến thức cần nắm, áp dụng và đánh giá
Chương 5: 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 yêu
cầu bài toán cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho úng dụng
Chương 6: Kết luận, rút ra được các ưu nhược điểm của ứng dụng và hướng phát triển
trong tương lai
Trang 26Song song với đó là sự phát triển tân tiến của công nghệ theo thời gian, nhằm đẩymạnh thị trường, bắt kịp xu thế và thu hút nhiều người quan tâm, đặc biệt giới trẻ là đốitượng được tập trung nhiều nhất Trong đó, công nghệ AI là một xu hướng không cònquá xa lạ, nhưng vẫn chưa bao giờ là chủ đề ngừng nóng lên trong những thập kỉ gầnđây
Với tinh thần đó, nhóm thực hiện quyết định xây dựng “Xây dựng ứng dụng đánhgiá và tư vấn hỗ trợ lựa chọn cửa hàng ăn uống bằng chatbot” nhằm mục đích cung cấpcác thông tin cần thiết cho khách hàng về các cửa hàng ăn uống, các danh mục đồ ăn, vịtrí thuận lợi, độ đo về chất lượng Ngoài ra, người dùng có thể xem chi tiết từng cửahàng, xem những từ khóa tiêu biểu và điểm đánh giá từ các bình luận của khách hàngđối với cửa hàng đó để khách hàng có cái nhìn chung, tổng quan nhất về chất lượng,dịch vụ, những ý kiến từ những khách hàng khác xem những đánh giá tiêu cực hay tíchcực về cửa hàng đó Bên cạnh đó phía chủ các cửa hàng có thể thông qua các thông số
đó để khắc phục những hạn chế, cải thiện và xây dựng chiến lược phù hợp nhằm gópphần quảng bá hình ảnh thương hiệu, cũng như cung cấp và tìm kiếm khách hàng ngàycàng nhiều hơn
Vì thế chúng em đã chọn đề tài này giúp cho người dùng có thể chọn ra những cửahàng địa điểm ăn uống và có thể tư vấn hỗ trợ cho người dùng chọn ra những cửa hàngđịa điểm ăn uống phù hợp nhất
Khách hàng chỉ cần với những thao tác đơn giản là có thể tìm được quán ăn phù hợpvới nhu cầu của mình
2
Tính năng mới/ khác biệt
Các ứng dụng hiện nay đa số đều có ý tưởng và phương thức hoạt động tương đồng
Trang 27ở hầu hết các chức năng như: Tìm kiếm, đánh giá, bình luận, … và không có gì khácbiệt cho khách hàng trải nghiệm ở ứng dụng ngoài trừ kết hợp với những ứng dụngkhác
Sau quá trình khảo sát thực tế và lắng nghe ý kiến của người dùng, giải pháp nhóm
đề ra là thiết kế ứng dụng khác biệt so với các ứng dụng hiện nay nhưng phải dễ nhìn,
dễ sử dụng và thể hiện được những thông tin cần thiết cho người dùng Đồng thời hệthống sẽ lấy những bình luận của người dùng để phân tích bình luận xem đó là bìnhluận tiêu cực hay tích cực về cửa hàng Để những cửa hàng có thể cải thiện chất lượngcửa cửa hàng đó
Chọn lọc các chức năng tiện dụng nhất của top các ứng dụng lớn hiện nay để đưa vào ứng dụng TikFood của mình
Sau khi khảo sát, tìm hiểu và dùng thử một số ứng dụng hàng đầu hiện nay ở ViệtNam như: Foody, Pasgo, Diadiemanuong, … và nhận thấy một số khuyết điểm củanhững ứng dụng ấy:
Về phần giao diện và chức năng:
- Foody: Giao diện khó phân biệt từng phần với nhau, không có lọc cửa hàng về giá
cả, không phân trang cụ thể
- Pasgo: Chọn loại hình ăn uống còn bị lỗi, không có lọc cửa hàng về giá cả, chức năng bình luận không đánh giá được thông số của cửa hàng - Diadiemanuong: Giaodiện khó nhìn, khó sử dụng, ít thông tin ⇨ Điều này đã làm dẫn đến sự hạn chế thoải mái lựa chọn và mua sắm của người dùng
✔Ứng dụng TikFood đã quyết định sẽ thay đổi sự khác biệt về giao diện làm chogiao diện dễ nhìn và trực quan hơn và làm thêm chức năng lọc cửa hàng theo giá
cả và theo điểm được đánh giá, top những cửa hàng được đánh giá nhiều nhất vàtop những cửa hàng có điểm đánh giá cao nhất, bình luận được số điểm của cửahàng
3
Về phần chatbot:
- Foody: Không có chatbot
- Pasgo: Có chat nhưng người trực tiếp của hệ thống tư vấn chứ không phải chatbot
- Diadiemanuong: Không có chatbot
⇨ Vì muốn tạo ra sự khác biệt so với những ứng dụng hiện nay nên nhóm đã quyếtđịnh thêm chatbot mong muốn người dùng có thể được chatbot hỗ trợ tư vấn
Trang 28những cửa hàng ăn uống phù hợp với nhu cầu của người dùng
Đối tượng nghiên cứu
Khoá luận này hướng đến nghiên cứu các đối tượng sau:
- Các công nghệ:
+Front-end: Reactjs, Nextjs
+Back-end: Nodejs
+Database: MongoDB
+Cào dữ liệu: Puppeteer
+Công cụ tìm kiếm: Elasticsearch
+Flask
+Google Map API
+Chatbot Facebook Messenger
+Phân tích ngôn ngữ tự nhiên và tính độ đo cảm xúc
+IDE: Visual Studio Code
- Thuật toán: bag of word, TF-IDF, Naive Bayes
- Đối tượng trong phạm vị đề tài hướng đến: Khách hàng có nhu cầu tìm kiếm món ăn và cửa hàng, địa điểm ăn uống Đối tượng này thường tập trung từ độ tuổi 15-30
Trang 29uống tại vị trí hiện tại của người dùng hoặc tìm kiếm tại đường hay khu vực nào
đó
- Tích hợp bản đồ để hỗ trợ xem địa chỉ cùng thông tin
Triển khai, đánh giá độ chính xác của từng phương pháp dựa trên dữ liệu thử
nghiệm Áp dụng hệ thống phân tích bình luận người dùng và chatbot
Phương pháp nghiên cứu
Cách tiếp cận: ứng dụng được xây dựng dựa theo mô hình MVC
Nhóm đã sử dụng các phương pháp nghiên cứu:
- Phương pháp đọc tài liệu
- Phương pháp phân tích các ứng dụng liên quan nổi bật hiện nay -
Phương pháp thực nghiệm
Tham khảo các sản phẩm và công nghệ liên quan tới cửa hàng, địa điểm ăn uống Về mặt công nghệ thì nhóm xây dựng Restful API bằng Nodejs để làm việc với dữ liệu Còn về phần giao diện thì nhóm sử dụng Nextjs giúp người dùng có thể xem và tương tác trực tiếp trên đó
Xây dựng chatbot tư vấn, hỗ trợ người sử dụng tìm kiếm cửa hàng ăn uống phù hợp nhất
Trang 306
Tầng logic dữ liệu – Model
Tầng logic dữ liệu - Model là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứngdụng Bộ phận này là một cầu nối giữa 2 thành phần bên dưới là View và Controller.Model thể hiện dưới hình thức là một cơ sở dữ liệu hoặc có khi chỉ đơn giản là một fileXML bình thường Model thể hiện rõ các thao tác với cơ sở dữ liệu như cho phép xem,truy xuất, xử lý dữ liệu,…
Tầng giao diện – View
Tầng giao diện - View là phần giao diện (theme) dành cho người sử dụng Nơi màngười dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấnnhư tìm kiếm hoặc sử dụng thông qua các website
Thông thường, các ứng dụng web sử dụng MVC View như một phần của hệ thống,
Trang 31nơi các thành phần HTML được tạo ra Bên cạnh đó, View cũng có chức năng ghi nhậnhoạt động của người dùng để tương tác với Controller Tuy nhiên, View không có mốiquan hệ trực tiếp với Controller, cũng không được lấy dữ liệu từ Controller mà chỉ hiểnthị yêu cầu chuyển cho Controller mà thôi
2.1.3 Tại sao dùng mô hình MVC
MVC đang là mô hình được ứng dụng rất nhiều trong lập trình
Hệ thống MVC phát triển tốt sẽ cho phép phát triển front – end, back – end cùngtrên hệ thống mà không có sự can thiệp, chia sẻ, chỉnh sửa các tập tin trong khi mộthoặc hai bên vẫn đang làm việc
Việc sử dụng mô hình tương đối đơn giản Chỉ cần hiểu rõ quy trình vận hành, nắmđược các chức năng của từng bộ phận thì việc triển khai mô hình MVC tương đối dễdàng
Mô hình MVC có ưu điểm với sự phát triển của ứng dụng như:
- Kiểm tra dễ dàng: Với MVC, bạn có thể dễ dàng kiểm tra, rà soát lỗi phần
mềm trước khi tới tay người tiêu dùng, đảm bảo chất lượng và độ uy tín caohơn
7
- Chức năng control: Trên các nền website thì ngôn ngữ lập trình như CSS,
HTML, Javascript có một vai trò vô cùng quan trọng Việc sử dụng mô hìnhMVC sẽ giúp bạn có một bộ control ưu việt trên nền tảng các ngôn ngữ hiện đạivới nhiều hình thức khác nhau
- View và size: View sẽ là nơi lưu trữ các dữ liệu Càng nhiều yêu cầu được thực
hiện thì kích thước càng tệp càng lớn Khi đó, đường truyền mạng cũng giảmtốc độ load Việc sử dụng mô hình MVC sẽ giúp bạn tiết kiệm được diện tíchbăng thông một cách tối ưu
- Chức năng Soc (Separation of Concern): Chức năng này cho phép bạn phân tách rõ ràng các phần như Model, giao diện, data, nghiệp vụ - Tính kết hợp: Việc
tích hợp ở mô hình MVC cho phép bạn thoải mái viết code trên nền tảng website
Khi đó, server của bạn sẽ được giảm tải khá nhiều - Đơn giản: Đây là một mô
hình với kết cấu tương đối đơn giản Dù bạn không có quá nhiều chuyên môn cũng có thể sử dụng được
- Nhẹ, tiết kiệm băng thông: MVC không sử dụng viewstate nên khá tiết kiệm
Trang 32diện tích băng thông Khi sử dụng, người dùng có thể sử dụng ứng dụng trênweb cần tương tác gửi và nhận dữ liệu một cách liên tục Do đó, việc giảm băngthông giúp cho website hoạt động tốt và ổn định hơn.
Trang 33Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ
NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8 Engine, nóđược sử dụng để xây dựng các ứng dụng web như các trang video clip, các forum vàđặc biệt là trang mạng xã hội phạm vi hẹp NodeJS là một mã nguồn mở được sử dụngrộng bởi hàng ngàn lập trình viên trên toàn thế giới NodeJS có thể chạy trên nhiều nềntảng hệ điều hành khác 33 nhau từ WIndow cho tới Linux, OS X nên đó cũng là một lợithế NodeJS cung cấp các thư viện phong phú ở dạng Javascript Module khác nhaugiúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất
V8 engine là một JavaScript engine mã nguồn mở chạy trên các trình duyệt Chrome,Opera và Vivaldi Nó được thiết kế tập trung vào hiệu năng và chịu trách nhiệm choviệc dịch mã JavaScript sang mã máy để máy tính có thể hiểu và chạy
9 được Nhưng bạn cũng nên tránh nhầm lẫn rằng Node chạy trên trình duyệt Cha đẻ củaNode dựa trên V8 engine, cải tiến một số tính năng chẳng hạn file system API, thư việnHTTP và một số phương thức liên quan đến hệ điều hành Điều đó có nghĩa là Node.js
là một chương trình giúp ta có thể chạy code JavaScript trên máy tính, nói cách khác nó
là một JavaScript runtime
Node.js có có thể làm việc với cơ sở dữ liệu như các ngôn ngữ lập trình vàframework khác Và Node.js hỗ trở các cơ sở dữ liệu nổi tiếng khác nhau: MySql, SqlServer, MongoDB, PostgreSQL, …
2.2.2 Tạo sao chọn Nodejs để phát triển server
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Event driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả
Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux,hơn nữa cộng đồng Nodejs rất lớn và hoàn toàn miễn phí, các package đều hoàntoàn miễn phí: https://www.npmjs.com/
Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị
2.2.3 Các đặc tính của Nodejs
Không đồng bộ: Tất cả các API của NodeJS đều không đồng bộ (none blocking), nó
Trang 34chủ yếu dựa trên nền của NodeJS Server và chờ đợi Server trả dữ liệu về Việc di chuyển máy chủ đến các API tiếp theo sau khi 34 gọi và cơ chế thông báo các sự kiện của Node.js giúp máy chủ để có được một phản ứng từ các cuộc gọi API trước
(Realtime)
Chạy rất nhanh: NodeJs được xây dựng dựa vào nền tảng V8 Javascript Engine
nên việc thực thi chương trình rất nhanh
Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mô hình luồng
duy nhất với sự kiện lặp cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng một
10 cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xử lý yêu cầu Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự có thể cung cấp dịch vụ cho một
số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thống như Apache HTTP
Server
Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này chủ
yếu là đầu ra dữ liệu
Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License
2.2.4 Áp dụng vào đề tài
Nodejs được áp dụng để xây dựng toàn bộ hệ thống Back-end cho hệ thống giúptăng tốc độ load dữ liệu Nodejs cung cấp những thư viện cần thiết trong quá trình pháttriển hệ thống Nodejs và Reactjs (Nextjs) là sự kết hợp vô cùng tốt để phát triển hệthống một cách tốt nhất
Hệ quản trị cơ sở dữ liệu MongoDB
2.3.1 Giới thiệu