¢ Tim hiểu va sử dụng các mô hình máy học về xử ly hình ảnh và ngôn ngữ cho việc phân tích nội dung bìa sách lẫn hình ảnh để đưa ra dự đoán về thê loại trong những thể loại có sẵn ¢ Tich
Trang 1ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYÈN THÔNG DỮ LIỆU
LÊ TRỌNG HIẾU TRAN HOÀNG LONG
KHOA LUAN TOT NGHIEP
XAY DUNG NEN TANG THUONG MAI SACH DIEN
TU TICH HQP HE THONG PHAN LOAI THONG
QUA BIA SACH
Developing an e-book commerce platform with an automated
classification by book cover system
KY SU NGANH MANG MAY TINH VA TRUYEN THONG
TP HO CHÍ MINH, 2022
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA MANG MAY TINH VA TRUYEN THONG DU LIEU
LE TRỌNG HIẾU - 18520052 TRAN HOANG LONG - 18520093
KHOA LUAN TOT NGHIEP
XÂY DUNG NEN TANG THUONG MẠI SÁCH ĐIỆN TU
TÍCH HỢP HE THONG PHAN LOẠI THONG QUA BIA
SACH
Developing an e-book commerce platform with an automated
classification by book cover system
KY SU NGANH MANG MAY TINH VA TRUYEN THONG
GIANG VIEN HUONG DAN ThS DANG LE BAO CHUONG
TP HO CHI MINH, 2022
Trang 3THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
"— e eee eeeeeeaeeee ees ngay của Hiệu trưởng Trường Dai hoc Công nghệ
Trang 4LỜI CẢM ƠN
Đầu tiên, nhóm đề tài xin cảm ơn tat cả thầy cô trong khoa Mạng máy tính và
Truyền thông nói riêng và những thầy cô ở trường Dai học Công nghệ Thông tin —
Đại học Quốc gia TP Hồ Chí Minh nói chung Những người đã tận tâm giảng dạy,
truyền đạt cho chúng em những kiến thức quan trọng và cả lời khuyên chân thành
trong suốt thời gian học vừa qua.
Đặt biệt, cảm ơn sâu sắc đến thầy ThS.Đặng Lê Bảo Chương, người đã tận tình hướng dẫn, giúp đỡ cũng như định hướng, góp ý và cung cap nhiều kiến thức cần thiết cho nhóm trong suốt thời gian thực hiện khóa luận tốt nghiệp.
Kết quả khóa luận tốt nghiệp là quá trình cố gắng và nỗ lực của nhóm, tuy nhiên với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của nhóm thì những
thiết sót là điều không thê tránh khỏi, vì vậy nhóm rất mong nhận được những ý kiến
đánh giá khách quan, những góp ý chân thành từ quý thầy cô dé từ đó nhóm có thé rút ra những kinh nghiệm quý báu cho bản than và hoàn thành khóa luận tốt nghiệp
Trang 5ĐHQG TP HO CHÍMINH CONG HÒA XÃ HOI 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
DE CUONG CHI TIẾT
TEN DE TAI:
¢ Tên tiếng Việt: Xây dựng nén tảng thương mai sách điện tử tích hợp hệ thống
phân loại thông qua bìa sách
¢ Tên tiếng Anh: Developing an e-book commerce platform with an automated
classification by book cover system
Cán bộ hướng dẫn: ThS Đặng Lê Bao Chương
Thời gian thực hiện: Từ ngày 28/02/2022 đến ngày 12/06/2022
Sinh viên thực hiện:
e Lê Trọng Hiếu - 18520052
¢ Tran Hoàng Long - 18520093 Nội dung đề tài:
Mục tiêu
e_ Xây dựng được nén tảng thương mại sách điện tử với những chức năng cơ bản
dành cho người dùng và nhà sách/nhà xuât bản.
¢ Tim hiểu va sử dụng các mô hình máy học về xử ly hình ảnh và ngôn ngữ cho
việc phân tích nội dung bìa sách lẫn hình ảnh để đưa ra dự đoán về thê loại trong những thể loại có sẵn
¢ Tich hợp hệ thống phân loại tự động vào nền tảng dé tối ưu quá trình nhập liệu
cho nhà sách/nhà xuât bản
Trang 6Đối tượng
e_ Xây dựng nên tảng thương mại điện tử dành cho ebook Nền tảng phân quyền
chức năng giữa người dùng ân danh, người dùng đăng ký và người bán sách
¢ Nghiên cứu model về phân tích hình ảnh bìa sách đề phân loại theo những chủ
đê có san
¢ _ Tích hợp model vào nền tảng đề tối ưu việc phân loại sách theo những chủ đề
có săn
Pham vi nghiên cứu
e _ Nền tảng thương mại sẽ có những chức năng tìm kiến, lọc, đọc sách, đánh giá,
lưu sách cơ bản cho người dùng Nền tảng cung cấp chức năng thêm xóa sửa sách cho người bán.
e© Tìm hiểu và sử dụng lại model có sẵn về phân loại chủ đề dựa trên đặc trưng
bìa sách Dau vào model là hình anh bìa sách và dau ra là thê loại năm trong
những thê loại định nghĩa trước
Phương pháp thực hiện
¢ Tim hiểu kiến thức liên quan đến xây dựng nền tảng thương mại sách điện tử
e Tìm hiểu, thu gom và sử dụng thử những model có sẵn và xác định model phù
hợp cho đê tài
e _ Tích hợp model vào nên tảng.
¢ Đánh giá kết quả phân loại Kết quả mong đợi
e _ Xây dựng nên tảng thương mại điện tử về sách điện tử với những chức năng cơ
bản cho nhà sách và người dùng
¢ St dụng và tích hợp hệ thống phân loại tự động dựa trên bìa sách vào nền tang
Kế hoạch thực hiện:
Thời gian Nội dung
28/2 — 12/3 Tìm hiểu, lựa chọn đề tài và xây dựng đề cương khóa luận
14/3 — 10/4 Xây dựng ứng dụng web
11⁄4- 8/5 Tìm hiểu va ứng dụng máy học vào trang web
Trang 79/5 - 29/5 Tích hợp vào trang web và đánh giá mô hình
30/5 — 12/6 Viết báo cáo khóa luận
20/6 — 3/7 Phản biện khóa luận tốt nghiệp
4/7 — 10/7 Bảo vệ khóa luận tốt nghiệp
Xác nhận của CBHD TP HCM, ngày tháng năm 2022
(Ký tên và ghi rõ họ tên) Sinh viên 1
(Ký tên và ghi rõ họ tên)
Sinh viên 2 (Ký tên và ghi rõ họ tên)
Trang 8TOM TAT KHÓA LUẬN
Chương 1 = TONG QUAN DE TÀI -222-222222+22222++222222t22EExerrrrrkrcree 2
1.1 Đặt vấn GG oe cccccccsseeeecccccssssneeseccessssnneceeccessssnmseeeesessssmeseceesssnmecsecesssnuesses 2
In n o®o”^ 2
1.3 Đối tượng và phạm vi nghiên cứu
1.3.1 Đối tượng 55cvcerrrrrrrrrrrrrrrrrrrrrrrrrre.3
1.3.2 Phạm vi nghiên CỨU - - tt SE #E£vEeEekerekskrkrkrrrerrkerree 3
1.4 Cấu trúc khóa luận ¿-©2++++22E+++22EEE++222221122221112222112 2221 cee 3 Chương2 CƠ SỞ LÝ THUYET
0 9
2.4.1 Tính năng.
242 Uuđiểm à eo 0
U09) .ẻ 0 2.5.1 Khái niệm - c5 2 + TT HH HH re 0
2.5.2 Tính năng - 5+ St t1 rrrrrrrrkrrrrer 0
CLOUdINALY 1 ốc 1 PIN NNH‹ in 1
P "ng n 2
Trang 92.8.1 Tổng quan 2.8.2 Ứng dụng.
2.9 Mạng neural tích chập (CNN) thư 4
2.9.1 Khái niệm c5 TT HH Hay 4 2.9.2 Các lớp trong CNN ác ng tre 4
2.9.3 Mạng phan dư (ResNet) cccccssssssesssssssesssssseesesssseessesstesssssseeesssseeeeesse 5
2.10 Phương pháp đánh giá mô hình ¿-¿- 5 ¿52 5*2++x+£+£££zrzxzksrerre 5
2.10.1 mAẠP 5⁄2 n, 5
2.102 TOP-K QI gorse vccsscssssscsces Ngsrsessessscotpbesessssoassssacensessnsessesensonse 6
Chương 3 PHÂN TÍCH VA THIET KE HỆ THÓNG - 8
3.2.5 Dấu trang (Bookmark) -.-c -722cvccccrstrrceevsecrcecrrrrxv.c 35
3.2.6 Thêm nhiều ebook & tự động phân loại .-:- ¿+ 37
3.3 Thiết kế cơ sở dữ liệu chhnhhiHHe 44
3.3.1 Sơ đồ quan hệ các bảng -: 222222cccrstcccEEvvrrrrrrrrrrrrrrerree 44
3.3.2 Hệ thống cơ sở dit liệu c¿:©2222+ccSccvvrrrtrrkrrrrrrrrrrerrkev 45
Trang 10Chương 4 KÉT QUA THỰC NGHIỆM -¿-©2222c+2222+vcrscrvscez 48
4.1 Đánh giá mô hình ¿52-525 k2 2 2 1g ưn 48
4.1.1 Mô hình Keras c c2 ttiethtHHhheHeee 48 4.1.2 Mô hình PyTOrch ¿5 - + St S*Sk*k#kEEE 1111 te 50
4.1.3 Kết luận quá trình thử nghiệm ¿¿©2c++22v+ecerrrvscee 5s 4.2 Đánh giá hiệu năng trước và sau khi tối wu
4.2.1 Tối ưu phase l 2-++22222+22E22E112221122272112 222112 53
4.2.1.2 Thực hiện 3 request eee eee es eeeeseeseeeeseseassesseneseseeesneeneaeees 55
4.2.2 Tối ưu phase 2 -¿ 2222++222221222221112221112271112227112 221 e 57 4.2.3 Kết luận quá trình tối ưu hiệu năng - c¿:+222+szccczxscee 59
' tu n :tt 59
4.3.1 Xác thực 4⁄2 n 59
4.3.2 Tài khoản (pTOfil€) tt SEtskeesrrrrrrerreerkrrererrd 64 4.3.3 Ebook OP I x@ ” o.ceiniieieree 67 4.3.4 Đánh giá & bình luận 5-5: Scccsxertrtererirterrrreerrree 75
4.3.5 Dấu trang (bookmark).
4.3.6 Thêm nhiều ebook & tự động phân loại - : -+ 78
Chương 5 KÉT LUẬN VÀ HƯỚNG PHÁT TRIÊN - 83
5.1 Kết luận và đánh gia cccccccssssssssssseesssssssccssssesccsssseessssuseesssseseesssssecesssneeeease 83
5.1.1 Kếtluận
5.1.2 Đánh giá che 83
5.2 Hướng phát triển
5.2.1 Thực hiện nâng cấp và cải thiện những nhược điểm còn tồn tại 84
5.2.2 Nghiên cứu và tiếp tục phát triển ứng dụng -. - 85
5.3 Khó khăn và hướng giải quyẾt -¿¿:©222++2222+++t2vEEvrrerrrkrrrerrkee 85
5.3.1 Khó khan 5.3.2 Hướng giải QUyÊ( 5c tt ưên 85
TÀI LIEU THAM KHẢO 22222-2222S22222+2222E22Y222+ttEEEEEEYErrrerrrrrrrrrrrree §6
Trang 12DANH MỤC HÌNH
Hình 2.1: Framework ]NeX(.JS G1 HH HH TH HH HH HH 4 Hình 2.2: Cách hoạt động của server-side rendering .- - - 5+ +++sxs++ssssexess 5 Hình 2.3: Ngôn ngữ lập trình O - . G11 HH HH Hư, 7
Hình 2.4: Những tính năng nổi bật của ngôn ngữ GoO 2 ¿5+ s+c++£zzzzzez 8
Hinh 2.5: Framework Gin 000 ea 4 9
Hình 2.6: Hệ quan tri cơ sở dữ liệu PostgreSQL oe eeeecceeeeseeeneeeeeeseeeeceeeeeneeaeees 10 Hình 2.7: Dịch vụ lưu trữ trên đám mây CÏoudinary ¿ - s5 s++s++s+sexess 12 Hình 2.8: Micro framework FastALPÌ - - s s 19019111911 11 HH ngư 12
Hình 2.9: Nền tang ảo hoá Dockker - 2 s5 + 2+EE2EE£EE£EEE2EE2EEEEEerEErEkrrkerkrrex 13
Hình 2.10: Các lớp trong CNN - - LH HH HH HH HH 14
Hình 2.11: Công tính tính mAP - 5 1121011110111 11 11 1911 9v vn ve 16
Hình 2.12: Công thức tính Accuracy - - G5 + SE HH giết 16
Hình 3.2: Sơ đồ kiến trúc docker ccc:-cc2vcccctEttrrrttrrrrtrttrrrrrrrirrrrrrrieg 19
Hình 3.4: Sơ đồ tuần tự cho đăng ký - 2: ¿+S2+EE+EEEEEEEEEEEEEEEErrkerkerkrrex 22
Hình 3.5: Sơ đồ tuần tự cho § t0: 1 24
Hình 3.8: Sơ đồ tuần tự cho thêm 1 ebook mới ccc:+ccvecrsercvverrrrrrrer 28
Hình 3.9: Sơ đỗ tuần tự cho hiển thị dashboard -:-s¿2cxvvsvcxvvsrrversre 29Hình 3.10: Sơ đồ tuần tự cho hiền thị ebook chỉ tiẾt - -ccc-ccccc+ccvccere 30Hình 3.11: Sơ đồ tuần tự cho cập nhật thông tin ebook : ¿szs+=++ 31
Hình 3.15: Sơ đồ tuần tự cho xóa đánh giá - 2-2 s22+EE+EEeEEerEerrxsrkerkrrex 35
Trang 13Hình 3.16: Sơ đồ tuần tự cho thêm/xóa bookmark - ¿ - s+s+z++E+£x+Eerxzxezxzzs 36
Hình 3.19: Sơ đồ tuần tự cho chức năng thêm nhiều ebook -5:s 40Hình 3.20: So đồ luồng dự đoán và xử lí khi phân loại genre - 42
Hình 3.21: Sơ đồ tuần tự cho chức năng sửa những ebook lỗi - 43
Hình 3.23: Bảng US€TS Á- Ác HT HH TH kg 45
Ig0ii)i0 25011300000 ằ 45 Hình 3.25: Bảng DOOKS - - - c1 11.1 TH TH TH HH 46 Hình 3.26: Bang ð€TT€S G01 HH HH nh 46 Hình 3.27: Bảng boOK_ Ø€TT€S c G1 21112111 101 v1 HH HH 47
Hình 3.28: Bang bookmarks «5 <6 + 111938211 E3 11 1 nh ng ng 47
Hình 4.1: Kết qua training mô hình Keras với 10 thé loai cecccscceessesseessesssesseeseeee 49
Hình 4.3: Kết quả mAP và top-k của mô hình Keras với 8 thé loại - 50
Hình 4.6: Sơ đồ luồng hoạt động phase 1 khi thực hiện 1 request 53
Hình 4.9: CPU va Memory khi tối ưu hệ thống và chưa tôi ưu ở service 54Hình 4.10: CPU va Memory khi tối ưu hệ thống và chưa tối ưu ở service Python 54Hình 4.11: Sơ đồ luồng hoạt động phase 1 khi thực hiện 3 request 55Hinh 4.12: Log thoi gian thuc thi 3 request tao nhiều ebooks với chế độ tuần tự 55Hình 4.13: CPU và Memory khi thực hiện 3 request tạo nhiều ebooks với chế độ
Trang 14Sơ đồ luồng hoạt động phase 2 2-2 ©522S22EE+EEtEEcEEEEEerkerkeres 57
Giao diện trang chủ khi chưa đăng nhập - - 55s «<< <<++ 60 Giao dién trang dang KY 60 Giao diện trang đăng nhập - - - 2-2 3+ 19 31 1 re 61 Trang CHU 8u :021à 2n 61 Trang chủ CỦa SẨOTC óc HH ng 62 Giao diện trên điện thoại - - - + E232 1 11221232 E512 Exxxe 62
Giao điện khi mở menu - << 552333222 EEE++++eeEEEkeeesseeeeerxss 63
Giao diện cách truy cập vào trang prOfTÏ€ - - «+ +-s<++s++sesssess 64 Trang profile CỦA VI@WT G1 HH Hưng ngư 64 Trang profile CUa SEOTG - (2c 1191 HH ng 65 Trang profile trên kích cỡ điện thoại - - «5+ £+£+s£+se+se+sx 65 Cách truy cập vào trang chỉnh sửa profile -«<++s<++<s++ss+ 66
Giao diện trang chỉnh sửa thông tin pTrOfiÏe - «+ +-««++<+++ss++ 66
Nhập nội dung vào khung search dé tìm kiếm tựa sách 67
Giao diện trang kết quả tìm KiéM cece esseeseessesseesesssessesseestessessesseens 67
Giao diện lựa chọn thé lodi ceccccscscssessssesssseseesessessssesesssersesevsesevenseveees 68
Giao diện trang đọc €DOOK - sc + S311 2 1 911 1 ng ng re 70 Cách thức truy cập trang dashboard - - «+ +sx+sskksseeesseeeeeers 71 Giao diện trang dashboatd - - - 5 5 + x1 vn ng ng rư 71
Trang 15Giao diện trang thêm ©bOOK <6 + + + 1£ ***kEESsEE+eeeEseeeeeseeerere 72
Nhắn vào biéu tượng chỉnh sửa để tới trang chỉnh sửa ebook 73
Giao diện trang chỉnh sủa €bOOK - s5 + £++skE+veerseeeeeerereers 73
Nhắn biéu tượng xoá để xoá ebook -¿©2c++cx+zxczrzrxrrxeres 74
Giao diện danh sách đánh giá c3 1+2 trsirerrkrrrrree 75 Giao diện khi đang đánh giá Sach 5 + s + ++sesveexeeesseeers 75
Giao diện danh sách bookmarK - 22+ + s + ++++2+e++zeeeeeees 76
Bam vào biéu tượng lần nữa dé xoá bookmark 2-5552 77
Cách truy cập vào trang upload nhiều file ¿2 s2 s22 78
Giao diện trang upload nhiều file khi upload thumbnails 78Giao diện trang upload nhiều file khi chuyển sang PDF 79
Giao diện các file được Upload - 5s ++<s++sx+eexeeeeerssereeereeres 79
Giao diện modal chỉnh sửa ebook lỗi - - + 2 2 + s+s+S+S+E+E+Ez£zxez 82
Trang 16DANH MỤC BANG
Bang 4.1: So sánh kết quả thử nghiệm tốt nhất giữa 2 mô hình - 51Bang 4.2: So sánh kết quả khi thực hiện 1 request phase l -5 52 54Bảng 4.3: So sánh kết quả khi thực hiện 3 request phase 1 (trung bình) 57Bảng 4.4: So sánh kết quả tạo 3 request giữa phase 1 và phase 2 - 58
Bảng 4.5: Hiệu năng trung bình từng request ở phase 2 cceseeseeeeeteeeteeseeeteees 58
Trang 17DANH MỤC TỪ VIET TAT
CNN Convolutional Neural Network
CSV comma-separated values
HTML HyperText Markup Language
ResNet Residual Networks
REST API Prectannine Int Sine Transfer Application
SEO Search Engine Optimization
SSR Server Side Rendering
UI/UX User Interface/ User Experience
Trang 18TÓM TẮT KHÓA LUẬN
Hiện nay chúng ta đang chứng kiến sự bùng nổ của hàng loạt những nên tangthương mại điện tử như Tiki, Shopee, Lazada, dần dần trở thành một phần trongcuộc sống của chúng ta Những nên tảng này cho phép chúng ta có thé mua bán đủ
moi loại hàng hóa, sản phẩm từ quần áo giày dép tới những thiết bị điện tử như điện
thoại tivi, Có thé nói sự phát triển của những nên tảng trên đang dan thay đổi thói quen mua sắm của con người, kế cả thói quen đọc sách Việc tìm kiếm và đọc sách
online đang dan trở nên phổ biến hơn là minh chứng cho việc nay Vì thế, chúng em
quyết định xây dựng OpenBook nên tang thương mại điện tử về sách điện tử dé đáp ứng được nhu câu nay.
Khi xây dựng OpenBook, chúng em nhận thấy khi người bán muốn đăng một
số lượng lớn sách lên, việc nhập liệu băng tay trở nên khá khó khăn khi có rất nhiềusách và mỗi cuốn sách lại có nhiều thé loại khác nhau Ngoài ra,việc người ban cần
phải chọn trong những thê loại có sẵn của nền tảng cũng là một trở ngại Vì thế, chúng
em quyết định tích hợp hệ thống phân loại thé loại sách tự động bằng hình anh bìasách vào OpenBook đề giảm bớt thời gian nhập liệu cho người bán
Nền tảng OpenBook mang giao diện thân thiện với người dùng và người bán
từ web cho tới điện thoại OpenBook cũng có đây đủ chức năng phân loại và tìm kiêm
dé người dùng dé dàng tìm sách phù hợp với nhu cầu Cùng với hệ thống phân loại
tự động, OpenBook sẽ mang lại trải nghiệm tuyệt vời cho cả người đọc lần người bán
Trang 19Chương 1 TONG QUAN DE TÀI
1.1 Đặt van đề
Sự bùng nỗ của công nghệ cùng với dịch Covid-19 đang dan thay đổi mọi thói
quen trong cuộc sống hằng ngày của người tiêu dùng Khởi đầu từ việc sử dụng Grab
- ứng dụng đặt xe thay cho xe ôm truyền thống cho tới việc mua hàng online trên những ứng dụng thương mại điện tử Không khó dé có thê biết được độ phủ sóng cực
kỳ lớn của những ứng dụng này, minh chứng là con số hàng trăm nghìn lượt tải và
hàng trăm nghìn lượt truy cập mỗi ngày Việc mua hàng online giờ đây không còn quá xa lạ với người dùng hiện tại nữa, điều này cũng đồng nghĩa với việc thói quen mua, đọc sách cũng sẽ dân thay đồi Tiki là một nền tang thương mại điện tử rất phd
biến ở Việt Nam cũng bat dau từ việc bán sách Tuy nhiên, Tiki chỉ có thé bán sách
tiếp trang web dé đọc Việc này sẽ có những hạn chế như: phải chờ sách được ship
đến, chất lượng sách có thé không đảm bảo, Hơn nữa, sẽ có những người dùng rất yêu sách và có sở thích sở hữu nhiều sách, việc phải quản lí và lưu trữ hàng chục hay
thậm chí hang trăm cuốn sách khác nhau ở nhà cũng là một van đề khó Hay một van
đề đơn giản hơn là người dùng đang ở ngoài đường và muốn đọc sách, việc phải cầm
theo một cuốn sách khoảng 3-500 trang quả thật không phải là một ý tưởng hay Vì thế, người ding cần một nơi có thé tim mua và đọc sách online dé dang ở bat cứ đâu
và đó là lí do mà OpenBook ra đời.
Đề có thê bán sách trên OpenBook, người bán cần phải đăng những cuốn sách
mình có lên nền tảng trước đã Sách là một mặt hàng có số lượng rất lớn lên tới hàng
trăm, hàng nghìn cuôn Vậy nên một vân đề khác nảy sinh ra đó là việc phải tìm kiếm
và nhập tay quá nhiều thé loại khác nhau khi đăng tải sách cũng là một vân đề khó khăn Việc dự đoán thê loại thông qua bìa sách rất tiên lợi khi người bán chỉ cần đăng
hình ảnh mà không cần phải tải cả file sách lên rất tốn thời gian Nhận thấy vấn đềtrên, nhóm đã quyết định tìm hiểu và tích hợp thêm hệ thống phân loại tự động thôngqua hình ảnh bìa sách nhằm giảm bớt thời gian nhập liệu của người bán
1.2 Mục tiêu
Xây dựng nền tảng thương mại sách điện tử với những chức năng:
e Dang ký/Đăng nhập
e Phân quyền người dùng
e Đọc, thêm, xóa sửa ebook
e Lọc hoặc tìm kiếm ebook
e Đánh giá và bình luận
e Đánh dấu sách (bookmark)
Trang 20Ứng dụng hệ thống phân loại thông qua bìa sách vào nên tang dé tối ưu việc
nhập liệu thé loại khi đăng tải nhiều cuốn sách Giám sát và tôi ưu hiệu năng ở phan server sau khi tích hợp vào nền tảng
1.3 Đối tượng và phạm vi nghiên cứu
1.3.1 Đối tượng
Nghiên cứu việc xây dựng nền tảng thương mại điện tử sách sử dụng
Next.js, Go-Gin,
Nghiên cứu về CNN và những mô hình trong CNN sử dụng cho việc phân
loại thông qua hình ảnh bìa sách
Nghiên cứu và thực thi cách tích hợp hệ thống phân loại vào nền tảng
Giám sát hiệu năng và nghiên cứu phương pháp cải thiện 1.3.2 Phạm vi nghiên cứu
Xây dựng trên nền tảng web có giao diện thân thiện nhiều thiết bị như máy
tính, máy tính bảng, điện thoại thông minh
Nền tảng chỉ có những chức năng cơ bản dé người dùng đăng nhập, tìm
sách, đọc sách online, Nên tảng không tích hợp hệ thông thanh toán hay vận chuyên
Đề tài chỉ tìm hiểu va sử dụng lại những model có sẵn dé tích hợp vào nền
tảng
1.4 Cấu trúc khóa luận
Chương 1 TONG QUAN DE TÀI: Giới thiệu về dé tài, đưa ra những vấn
đê cũng như giải pháp mà đê tài này mang lại đê giải quyét vân những van
dé trên.
Chương 2 CƠ SỞ LÝ THUYET: Trình bày các kiến thức, nền tảng về
những công nghệ được dùng trong đê tài.
Chương 3 PHAN TÍCH VA THIET KE HE THONG: Trinh bày các chức
năng, luông hoạt động và co sở dữ liệu của ứng dụng.
Chương 4 KET QUÁ THUC NGHIỆM: Trình bày những kết quả của đề
tài như hình ảnh của nên tảng và kêt quả của việc tích hợp hệ thông phân loại.
Chương 5: KET LUẬN VÀ ĐÁNH GIA: Dua ra những kết luận về kết
quả đạt được so với dự tính ban đầu cũng như những định hướng phát triển trong tương lai.
Trang 21Chuong 2 CƠ SỞ LÝ THUYET
2.1 Tổng quan
Công nghệ sử dụng dé xây dựng nên tảng:
e Frontend: Next.js, Material UI
e Backend: Go-Gin
e Cơ sở dt liệu: ProgreSQL
e Lưu trữ file: Cloudinary
e Deployment: Docker
Lí thuyết và công nghệ dùng cho việc phân loại sách
e Mang neutral network: Convolutional neural network
e M6 hình: ResNet50
e Framework máy học: PyTourch
e Môi trường training mô hình: Google Colab
e Backend phân loại sách: FastAPI 2.2 Next.js
2.2.1 Khai niém
Next.js là một framework được xây dựng dựa trên React Next.js hỗ trợ
server-side rendering (SSR) mà không cần phải cau hình gì Next.js không tập trung nhiều
vào hiệu suất mà tập trung vào cải thiện trải nghiệm của các developer và giúp phát triển các ứng dụng web một cách dé dang hơn.
NEXT:
Hình 2.1: Framework Next.Js
Trang 222.2.2 Tính năng
2.2.2.1 Server-side rendering
Trước khi di vào tính năng nay ta cần phải hiểu server-side rendering là gì
Server Side Sendering (SSR) là cơ chế xử lý logic | nằm ở phía server Server sẽ xử lý
và thao tác với databse dé render ra HTML gửi về cho client Browser chỉ cần hiển thị HTML ra cho người dùng Đặc điểm của server-side rendering là việc trang web
sẽ được xử lí va render tại server trước khi hiển thị lên cho người dùng
Serverside Rendered
Client Server Database
GET /blogs
Retrieve clay render items ~~
< rendered HTML
Client Server Database
Hình 2.2: Cách hoạt động cua server-side rendering
Nextjs hỗ trợ 2 kiểu pre-rendering là static generation và server-side
rendering Sự khác biệt năm ở thời diém tạo HTML cho trang như sau:
e Static generation: đây là kiểu render khuyến nghị trong Next.js Trang web
sẽ được tạo ra trước trong quá trình build và sẽ được sử dụng lại trong môi
Trang 23Next.js chỉ load những polyfills cho những phần mềm sử dụng chúng Những trang web trên thế giới sẽ không cần phải tải những polyfills này.
2.2.2.4 Routing
Có thé xem là tính năng co ban nhất của Next.js Nếu như ở React phải sửdụng những thư viện ngoài khá phức tạp thì đối với Next.js sẽ làm giùm luôn việc đó
Dé có thé sử dung routing, don gian chi can sắp xếp thư mục và đặt tên file, folder là
đường dẫn mong muốn, Next.js sẽ tự động hiểu và điều hướng chính xác đến file đó tương ứng với đường dẫn trên URL Dé có thé điều hướng người dùng, đơn giản chỉ
cần sử dụng component Link do Next.js cung cấp
2.2.2.5 Lazy loading
Tinh nang lazy loading của Next.js giúp cho ứng dụng của bạn có được trai nghiệm người dùng tốt hơn Việc trang web can tốn thời gian dé load hon 10 giây, người dùng có thé rời khỏi trang web ngay lập tức Cách xử lí dé tránh được tình huống trên đó là cho người dùng biết trang web đang được load bằng cách hiền thị những biểu tượng loading Lazy loading là một element cho phép quan lý, điều khiển
và load những đoạn code cần thiết lên trước
2.2.2.6 Các tính năng khác
e Hot Code Reloading: Next.js sẽ tải lại trang khi phát hiện bat kỳ thay đổi
nào được lưu vào bộ nhớ
e Automatic Code Splitting: Các trang sẽ được render với những thư viện
và JavaScript mà chúng cân, sẽ không sử dụng những thư viện không cần thiết, từ đó tối ưu việc tải trang
e Prefetching: Link component sẽ được sử dụng dé liên kết các trang khác
nhau với nhau, hồ trợ phương thức tìm và nạp trước tài nguyên trang trước khi trả vê cho client.
e Dynamic Components: Cho phép import các JavaScript module và các
React Components tai day
e Static Exports: Next.js cho phép export một trang web tinh từ ứng dụng
React
2.2.3 Uu & nhuge diém
2.2.3.1 Uu điểm
e Xây dựng ứng dụng web tĩnh nhưng tích hợp động cực kỳ nhanh
e Tăng lượt tương tac và bán hàng thông qua SEO
e Tang khả năng quảng cáo
Trang 24e Tăng trải nghiệm người dùng
© Chỉ phí bảo trì thấp
e Dễ dàng mở rộng doanh nghiệp
e Tăng hiệu năng website hoặc ứng dụng web
e Linh động trong việc xây dựng UI UX
2.2.3.2 Nhược điểm
e Yêu cầu việc phát triển phải thay đổi
e Hệ sinh thái plugin chưa dược phong phú
e Không có thư viện state-manager sẵn
© Chi phí xây dựng dat hơn
2.3 Go
2.3.1 Khái niệm
Go là 1 ngôn ngữ lập trình mã nguồn mở được thiết kế dựa trên tư duy lập trình hệ thống được phát triển bởi Google Ngôn ngữ được xây dựng dựa trên sự
đơn giản, hiệu năng cao, dễ đọc và hiệu quả Go được phát hành vào năm 2009
bởi Robert Griesemer, Rob Pike và Ken Thompson.
Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời Go là
một ngôn ngữ biên dịch như C/C++, Java, Pascal, Phiên bản ồn định được
phát hành vào năm 2001 và phiên bản mới nhất ở thời điểm hiện tại là 1.17 phát
hành vào năm 2021.
Trang 252.3.2 Tính năng
2.3.2.1 Nhỏ gọn và đơn giản
Go đơn giản dé học, dé làm việc và dé dang đọc bởi các nhà phát triển khác
Và Go không hề có một bộ tính năng lớn, đặc biệt là khi so sánh với các ngôn ngữ
như C ++ Ngoài ra Go còn gợi nhớ đến C bởi cú pháp của nó, điều đó giúp các lập trình viên C lâu năm tương đối dé dàng học nó Điều đó nói rằng, nhiều tính năng của
Go, đặc biệt là tính năng concurrency.
2.3.2.2 Dành cho mọi người
Tài liệu về Go, mô tả Go là “một ngôn ngữ biên dịch nhanh, static type,
compiled language (ngôn ngữ biên dịch), nhưng lại giống như một dynamic,
interpreted language (ngôn ngữ thông dịch)” Ngay cả khi một chương trình Go lớn, cũng sẽ được biên dịch chỉ trong vòng vài giây Thêm vào đó, Go còn tránh được
những điểm hạn chế của C liên quan đến các file và thư viện Nói tóm lại, Go giúp
cuộc sống của lập trình viên trở nên dé dang bằng nhiều cách
Static Typing
Features
Package Management
Hình 2.4: Những tính năng nổi bat của ngôn ngữ Go
2.3.2.3 Tiện lợi
Go được so sánh với các scripting language (ngôn ngữ kịch bản) như Python với khả năng đáp ứng nhiều nhu cầu lập trình phô biến Một số tinh năng này được tích hợp vào trong chính ngôn ngữ, chang hạn như ‘ ‘goroutines” là một hàm cho concurrency và kiêu giống như behavior, ngoài ra các tính năng bổ sung được có sẵn trong các package thư viện Go chuẩn, như http package của Go Giống như Python,
Go cung cấp khả năng quản lý bộ nhớ tự động bao gồm việc garbage collection (đọn
file rác).
Trang 262.3.2.4 Hiệu năng
Chạy nhị phân chậm hơn so với C, nhưng sự khác biệt về tốc độ này không
đáng ké đối với hầu hết các ứng dụng Hiệu suất của Go tốt ngang với C trong phan
lớn công việc và nói chung là nhanh hơn so với các ngôn ngữ khác nổi tiếng về tốc
độ (ví dụ: JavaScript, Python và Ruby).
2.3.2.5 Tương thích
Go cung cấp tất cả những điều trên mà không bị mat quyền, truy cập vào hệ
thong bên dưới (underlying system) Phương mềm Go có thé liên kết với thư viện C
bên ngoài hoặc thực hiện các lệnh call hệ thống native Ví dụ trong Docker, Go
interface với các chức năng Linux low-level, cgroups và namespace (tạm dịch: không
gian tên), dé hoạt động với container
2.4 Gin
Hình 2.5: Framework Gin
Gin là 1 web framework được viet bang Go mã nguồn mở được phát triển với
mục đích đê xây dựng các ứng dụng web băng Go với hiệu năng cao Nó sở hữu API giông Martini nhưng với hiệu năng cao hơn gap 40 lân.
2.4.1 Tính năng
e Tốc độ nhanh
e Hỗ trợ middleware
e Hỗ trợ xử ly crash và hồi phục, đảm bảo server luôn sẵn sảng
e Hỗ trợ kiểm tra tính hợp lệ của yêu cầu HTTP
e Định tuyến theo nhóm: Tổ chức định tuyến theo cấu trúc tốt hơn mà không
ảnh hưởng lớn đên hiệu năng
e Thu thập tat cả các lỗi xảy ra trong 1 yêu cầu HTTP
Trang 27Dễ dàng mở rộng
2.4.2 Ưu điểm
Phù hợp xây dựng REST API: Gin là một framework rất tối giản Gin chỉ bao gồm những chức năng hoặc thư viện cần thiết nhất và điều này làm cho Gin trở thành framework có hiệu năng cao nhất cho việc xây dựng
REST API
Tài liệu phong phú: Tài liệu cho framework Gin rất nhiều và đầy đủ
Những công việc liên quan đên router đêu có thê dé dang tìm thay trong document
Middlewares đa dạng và kiểm tra kĩ lưỡng: Cộng đồng Gin đã tạo ra vô
vàn những middleware giúp cho việc phát triển với Gin thật dé dàng Những chức năng như gzip, middleware xác thực va sentry
Hiệu năng cao: Gin có toc độ cao gap 40 lân so với Martini và khi so sánh với những framework Go khác cũng không kém cạnh
2.5 ProgreSQL
2.5.1 Khái niệm
PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ và đối tượng
(object-relational database management system) miễn phi và nguồn mở (RDBMS)
tiên tiễn nhất hiện nay khả năng mở rộng cao và tuân thủ các tiêu chuẩn kỹ thuật Nó được thiết kế dé xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ Web có nhiều người dùng cùng một lúc.
Trang 28Các khung nhìn (view)
Tính toàn vẹn của các giao dich (integrity transactions)
Việc kiêm tra truy cập đồng thời đa phiên ban (multiversion concurrency
Ngôn ngữ thủ tục: PL / PGSQL, Perl, Python (và nhiều ngôn ngữ khác)
Trình wrapper dữ liệu ngoài: kêt nôi với các cơ sở dữ liệu hoặc luông khác với giao diện SQL chuân
Và nhiều tiện ích mở rộng cung cấp chức năng bổ sung, bao gồm cả
PostGIS
Tìm kiếm văn bản:
Hỗ trợ các bộ ký tự quốc tế, ví dụ: thông qua ICU collations
Tim kiém van ban day du
2.6 Cloudinary
2.6.1 Khai niém
Cloudinary là 1 giải pháp phần mềm hướng dịch vụ (Software-as-a-Service)
cho việc quản lý tất cả dữ liệu truyền thông (anh, video, file, ) của ứng dụng web
và di động trên đám mây Cloudinary cung cap | giải pháp về đầu cuối cho tất cả các nhu câu về hình ảnh và video, bao gôm tải lên, lưu trữ, quản lý, biến đổi và tối ưu truyền tải Xử lý, tải dữ liệu và truyền tải được xử lý ở máy chủ của Cloudinary, được
tự động mở rộng để xử lý tải cao và sự gia tăng truy cập đột ngột.
II
Trang 292.6.2 Tính năng
e Xây dựng các URL để chuyền đổi và thao tác với hình ảnh
e Rails view helper cho việc nhúng và thay đôi hình ảnh
e API wrappers: upload image, quản lý và nhiều thứ khác
e Upload image trực tiếp từ trình duyệt sử dụng một jQuery plugin
e Tích hợp với Active Record
e CarrierWave plugin
e Hinh anh tĩnh đồng bộ với CDN delivery
e Migration tool 2.7 FastAPI
Trang 302.7.2 Tính năng
e Nhanh: Hiệu suất cao ngang với NodeJS và Go
e Phat triển nhanh: Code nhanh hơn, tốc độ code các features tăng khoảng
200 đến 300 %
e Ít bug: do đơn giản nên giảm số bugs của developper đến 40%
© Gợi ý: hỗ trợ code dé hơn với tự động gợi ý, debug cần ít thời gian hơn
SO VỚI trƯỚC.
e_ Đơn giản: được thiết kế sao cho dé dùng dé học
e Ngan gọn: Tối thiêu việc lặp code Các tham số truyền vào có nhiều
tính năng Ít bugs
e Robust: hiệu năng mạnh mẽ, có thé tương tac API qua docs
2.8 Docker
2.8.1 Tổng quan
Docker là một nền tang dé cung cấp cách dé building, deploying và running
ứng dụng dễ dàng hơn bằng cách sử dụng các containers (trên nên tảng ảo hóa) Ban
đầu Docker được viết bằng Python nhưng sau này đã chuyên sang Golang Các
Container giúp đơn giản hóa việc vận chuyên và phân phối các ứng dụng, do đó chúng
ngày càng trở nên phô biến trong các tô chức, công ty khi muốn chuyên đổi lên môi trường Cloud hoặc môi trường hybrid.
Docker cung cấp các công cụ cần thiết, giúp các lập trình viên xây dựng, triển
khai, thực thi, cập nhật hoặc thậm chí là dừng các Container chỉ băng câu lệnh hoặc thông qua API.
ocker
Hình 2.9: Nền tảng ảo hoá Docker
2.8.2 Ứng dụng
e Triên khai kiên trúc Microservices.
e Khi xây dựng ứng dụng và cần scale một cách linh hoạt
13
Trang 31e Khi bạn muốn không tốn khá nhiều thời gian dé config máy local và
server cùng một môi trường dé chạy được ứng dụng Bạn chỉ cần build 1 lần chạy ở nhiều nơi mà thôi.
e Sản phẩm của công ty bạn cần một cách tiếp cận mới về xây dựng,
đây lên server, thực thi ứng dụng một cách nhanh chóng dê dàng.
2.9 Mang neural tích chập (CNN)
2.9.1 Khái niệm
Convolutional Neural Network (CNN) hay còn gọi là mang neural tích chập
là một trong những mô hình deep learning tiên tiến giúp nhận dạng và phân loại hìnhảnh CNN giúp xây dựng những hệ thống nhận diện thông minh với độ chính xác cao.Nhận diện khuôn mặt và xác định đối tượng là những lĩnh vực mà được CNN sử dụng
rộng rai.
Mạng neural tích chập là một tập hợp các lớp convolution (tích chập) chồnglên nhau và sử dụng các hàm nonlinear activation như ReLU dé kích hoạt các trọng
số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các
thông tin trừu tương được sử dụng cho các lớp tiếp theo
Lớp tích chập là lớp đầu tiên của mô hình Lớp tích chập có nhiệm vụ trích
xuất các tính năng (đặt trưng) của hình ảnh đầu vào như là các viền và màu sắc Tích chập duy trì mối quan hệ giữa các pixel bằng cách tìm hiểu các tính năng hình ảnh thông qua việc sử dụng các ô vuông nhỏ từ dữ liệu đầu vào Các layer liên kết với nhau thông qua cơ chế convolution Layer tiếp theo là kết quả convolution từ layter trước đó Thêm càng nhiều lớp tích chập vào CNN sẽ giúp model phân rã những đặc
trưng phức tạp và có được một sự am hiéu sâu về hình ảnh trong dataset
14
Trang 322.9.2.2 Lớp gộp (pooling layer)
Lớp gộp sẽ có trách nhiệm giảm bot số lượng tham số khi hình ảnh quá lớn
Lớp gộp sẽ giảm kích thước của mỗi map nhưng van giữ lại những thông tin quan trọng Lớp gộp có nhiều loại khác nhau như:
e Max pooling
e Average pooling
e Sum pooling
2.9.2.3 Lớp kết nói đầy đủ (fully connected layer)
Lớp kết nối đầy đủ được sử dụng dé học các đặc trưng đã được rút trích từ các
tầng trên với cơ chế lan truyền ngược (back-propagation) cùng với việc sử dụng hàm
softmax cho việc phân lớp Lớp kết nối day đủ là nơi xử lí việc phân loại của model
Cụm từ “kết nối đầy đủ” ám chỉ việc mỗi neuron ở lớp trước được kết nối với mỗi
neuron của lớp tiếp theo Đặc trưng được rút trích từ lớp trước sẽ được truyền tới hàm SoftMax activation dé xuất ra kết quả cuối cùng Kết qua cuối cùng là một vector có
độ dài ứng với số lượng nhãn.
2.9.3 Mạng phan dư (ResNet)
Mang phan dư hay còn gọi là residual neural network (ResNet) là một kiến
trúc mạng neural dược sử dụng cho thị giác máy tính học sâu như phát hiện vật thê hay phân tách hình ảnh ResNet có thể chứa sô lượng lớn các lớp tích chập, thông thường vào khoảng 18-152 nhưng thực tế có thé hỗ trợ lên tới hàng ngàn lớp Đề tai
sử dụng model ResNet-50 cho việc phân loại sách thông qua bìa.
2.10 Phương pháp đánh giá mô hình
Đề có thể đánh giá những mô hình học sâu sử dụng cho việc phân loại sách
thông qua bìa, nhóm sử dụng 2 phương pháp đánh giá là mAP và top-k.
2.10.1 mAP
Mean Average Precision (hay còn gọi là mAP) là một phương pháp ange cho việc đánh giá mô hình dự đoán vật thé như Fast R-CNN, YOLO, Mask-R-CNN.,
15
Trang 33precision + recall
Hình 2.11: Công tính tinh mAP
e Precision: đánh giá độ tin cậy của kết luận đưa ra (bao nhiêu % kết luận
model đưa ra là chính xác)
e Recall: đánh giá khả năng tìm kiếm toàn bộ các ground truth của mô hình
(bao nhiêu % mẫu tích cực mà model nhân diện được)
e Average Precision: trung bình các giá tri precision tại các diém có kết quả
đúng
e Mean Average Precision: trung bình của các Average Precision cho một
tập các queries
e loU (Intersection over Unit): đo độ trùng khớp giữa ground truth bouding
box và bouding box mà mô hình dự đoán
2.10.2 Top-k
Top-k là một phương pháp đánh giá mô hình phân loại dự đoán dựa trên kết quả đúng có nằm trong top k của kết quả dựa đoán hay không Accuracy là thước đo
dé đánh giá độ chính xác của một mô hình Accuracy được tính bang tổng số lượng
kết qua đúng Lấy ví dụ: nếu có 90 dự đoán đúng trên tổng 100 dự đoán thi accuracy
Top-1 accuracy la phuong phap danh gia phổ biết nhất Kết qua đúng phải là
dự đoán có phần trăm cao nhất của model Ví dụ: mô hình thực hiện dự đoán hình trái cây cherry và có kết quả như sau:
e cherry: 0.35
16
Trang 34_ Nhìn dự đoán trên thi cherry là kết quả có phần trăm cao nhất và trùng khớp
với kêt quả thực tê.
17
Trang 35Chương 3. PHAN TÍCH VA THIẾT KE HE THONG
Webapp: nền tảng web được xây dựng bang Next.js, nơi người dùng sử
dụng OpenBook Webapp sẽ gọi API thông qua các request và nhận dữ
liệu trả vê là các response.
Backend server: server dùng đề xử lí logic chính cho OpenBook, được xây
dựng bằng Go-Gin Server nhận các request từ webapp thông qua API, thực hiện lay dữ liệu từ cơ sở dữ liệu và xử lí, sau đó trả về cho webapp
dé hiển thi cho người dùng
Cơ sở dữ liệu: sử dụng PosgreSQL, nơi lưu trữ dữ liệu chính của OpenBook, là nơi dé backend server lay dữ liệu.
Cloudinary: là nơi lưu trữ hình ảnh và tài liệu trên đám mây Webapp sẽ
sử dụng link mà backend server trả vê đê gọi đên cloudinary lây hình ảnh hoặc file ebook
Server phân loại: server được xây dựng bằng ngôn ngữ Python sử dụngframework FastAPI Server này được sử dụng cho việc phân loại thể loại
tự động Server sẽ nhận ảnh bìa sách là input và trả về các thé loại dựa trên
việc phân tích bìa sách.
18
Trang 36OpenBook sử dung Docker dé đóng gói các server va database Việc này giúp
chuân bị môi trường trở nên nhanh và ôn định hơn Dưới đây là những phân được đóng gói thành container
e API server (backend server)
e Coso dữ liệu
e Classify service (server phan loai)
19
Trang 373.1.2 Phân rã chức năng
OpenBook
A ae ié Đánh giá & bình
Xác thực — Người dùng mm Sách Loc/Tim kiêm luận Bookmark
|—| pang ky |——>| Hiến thi thông tin >| Hiển thị danh sách >| Theoten [>] Them Gann giá + |»! Thêm bookmark
+—>| Đăngnhập L—>| Chỉnh sửa thông tin ——>| Hiến thị chỉ tiết ——Y[ Theogenres Xóa bình luận Xóa bookmark
sl phan quyền Xem PDF | CC“ ÿ Theo năm xuất bản Fi ty iden sách Hiễn thi đanh sách
[> Annonymous | Thêm 1 ebook —— Theo tac gid
L—>} vewr
[>| chinh sửa thông tin L—> Store Xóa
[>| Dashboard quản lý
——>| Thêm nhiều ebooks
——>| Upload nhiều file
Hình 3.3: Sơ đồ phân rã chức năng
3.1.3 Phân quyền
OpenBook có 3 loại người dùng là: anonymous, viewer và store Dưới đây là định nghĩa và quyên hạn của 3 loại người dùng này:
e Anonymous (an danh): người dùng truy cập vào trang web nhưng chưa
đăng nhập Đây là loại người dùng có ít quyên hạn nhất khi chỉ được tìm kiếm và xem thông tin sách
e Viewer (người dùng thông thường): day là người dùng đã đăng nhập vào
trang web, sử dụng OpenBook đê đọc ebook
e Store (cửa hàng): những người dùng quản lý cửa hàng sách, bán sách Cửa
hàng sẽ có những tính năng dành riêng cho việc quản lý và bán sách Đặc
biệt chỉ loại người dùng này được sử dụng tính năng phân loại thé loại
sách tự động.
Bảng 3.1: Phân quyền tính năng cho các loại người dùng
Loại người dùng Tính năng
Anonymous Viewer Store
20
Trang 38Xem thông tin cá nhân
Chỉnh sửa thông tin cá nhân
Đánh dấu ebook (bookmark)
Xem những ebook đã đánh dấu
Đánh giá & bình luận
Xóa bình luận
Đăng tải ebook
Sửa ebook
Xóa ebook
Quản lý danh sách ebook đã đăng
Tự động phân loại thê loại & thêm
nhiêu ebook
Upload nhiều file
21
Trang 393.2 So đồ tuần tự cho các tính năng
3.2.1 Xác thực
Tao người dùng
Trả response
Đăng nhập sử dụng = tài khoản vừa đẳng ký
Xắc thực tai khoản
Trả kết quả
Trả respone thành công
Điều hướng tới trang chủ
Hình 3.4: Sơ đồ tuần tự cho đăng ký
Đặc tả chức năng đăng ký:
e Chỉ có anonymous được truy cập chức năng này
22
Trang 40e Néu user va store cô găng truy cập vào trang đăng ky sẽ được điêu hướng
về trang chủ
e Anonymous nhập dữ liệu vào input và Open Book sẽ kiểm tra (trường bat
buộc, mật khâu quá ngăn hoặc quá dai )
e Nêu input phù hợp, server sẽ kiêm tra tài khoản có tôn tại chưa
o Có tồn tại: server trả response lỗi, trang web hién thị thông báo
người dùng
o Chưa tôn tại: server tiép tục thêm dữ liệu vào cơ sở dữ liệu va
trả về response thành công Sau đó, trang web tự động đăng nhập
và điêu hướng người dùng tới trang chủ
23