Vấn đề còn bỏ ngỏ, nhận thấy cơ hội, khả năng phát triển, em nhận đề tài “Xây dựng website ứng dụng recommender system” nhằm mục đích đưa các giải pháp, triển khai thực tiến một số thuật
GIỚI THIỆU CƠ QUAN THỰC TẬP
Thông tin công ty
- Địa chỉ: Số 697 đường Phan Châu Trinh, phường Hoà Hương, thành phố Tam Kỳ, tỉnh Quảng Nam, Việt Nam
Lĩnh vực hoạt động
Công ty, được thành lập vào năm 2014, đã có nhiều năm kinh nghiệm trong lĩnh vực công nghệ thông tin, chuyên cung cấp giải pháp quản lý dựa trên nền tảng tích hợp hệ thống dữ liệu thông tin địa lý GIS và Viễn thám.
Sản phẩm của chúng tôi được phát triển dành cho các cơ quan, tổ chức cần quản lý dữ liệu theo tiêu chuẩn chuyên ngành, đồng thời tập trung vào việc xây dựng các hệ thống dữ liệu tập trung, hay còn gọi là Data Warehouse.
- Giải pháp quản lý hạ tầng đô thị
- Giải pháp quản lý tài nguyên và môi trường
- Giải pháp quản lý năng lượng
- Giải pháp quản lý nông nghiệp và lâm nghiệp
CÔNG NGHỆ SỬ DỤNG
Next.js
Next.js là một framework dựa trên React, được tối ưu hóa để phát triển các ứng dụng web hiệu suất cao và dễ dàng mở rộng Framework này tích hợp nhiều tính năng mạnh mẽ, giúp cải thiện trải nghiệm người dùng và tăng cường khả năng phát triển.
- Render phía máy chủ (Server-Side Rendering - SSR): Tối ưu hóa tốc độ tải trang và SEO
- Render tĩnh (Static Site Generation - SSG): Tạo các trang tĩnh với hiệu suất cao và bảo mật tốt hơn
- Hỗ trợ API Routes: Cho phép tạo các API endpoint trực tiếp trong ứng dụng
- Môi trường phát triển nhanh chóng: Hỗ trợ hot reload và phát triển dựa trên
Trong dự án này, Next.js được áp dụng để phát triển toàn bộ giao diện người dùng và một số chức năng cơ bản của hệ thống back-end, tận dụng sự kết hợp giữa SSR và CSR nhằm tối ưu hóa trải nghiệm người dùng.
Tailwind CSS
Tailwind CSS là một framework CSS tiện lợi với cách tiếp cận utility-first, giúp xây dựng giao diện nhanh chóng và nhất quán Nó cho phép tùy chỉnh dễ dàng thông qua file cấu hình tailwind.config.js, giúp điều chỉnh các giá trị mặc định như màu sắc và font chữ Bên cạnh đó, Tailwind CSS cung cấp khả năng tái sử dụng cao với các class CSS nhỏ gọn, thay vì phải viết CSS thủ công Đặc biệt, hiệu suất của nó được cải thiện nhờ vào công cụ PurgeCSS, chỉ giữ lại các class được sử dụng, giúp giảm dung lượng tệp CSS.
- Dự án sử dụng Tailwind CSS để phát triển giao diện người dùng, đảm bảo tính thân thiện và nhất quán trên nhiều loại thiết bị
MongoDB Cloud
- MongoDB Cloud là giải pháp cơ sở dữ liệu NoSQL hoạt động trên nền tảng đám mây Một số tính năng nổi bật:
- Quản lý linh hoạt: Lưu trữ dữ liệu dưới dạng JSON, dễ dàng mở rộng và thay đổi cấu trúc dữ liệu
- Khả năng mở rộng: Hỗ trợ phân vùng dữ liệu (sharding), đảm bảo hiệu suất trong các ứng dụng lớn
- Tích hợp tốt với hệ sinh thái web: Dễ dàng sử dụng với các công nghệ JavaScript như Next.js
MongoDB Cloud là giải pháp lý tưởng để lưu trữ dữ liệu sản phẩm, thông tin khách hàng và lịch sử mua sắm, đảm bảo truy cập nhanh chóng và bảo mật tối ưu.
Django
➢ Django là một framework web back-end mạnh mẽ dựa trên Python, được thiết kế để phát triển nhanh và dễ bảo trì Các tính năng chính:
▪ ORM mạnh mẽ: Quản lý cơ sở dữ liệu thông qua các model, giảm thiểu lỗi truy vấn thủ công
▪ Bảo mật tích hợp: Bao gồm các tính năng như chống CSRF, SQL Injection và XSS
▪ Cộng đồng lớn: Cung cấp nhiều thư viện mở rộng phục vụ đa dạng nhu cầu phát triển
Django là một framework mạnh mẽ được sử dụng để phát triển các API back-end, giúp xử lý dữ liệu phức tạp một cách hiệu quả Nó cũng hỗ trợ tích hợp với MongoDB thông qua các thư viện bổ sung, mang lại sự linh hoạt cho các ứng dụng web.
TypeScript
➢ TypeScript là một ngôn ngữ lập trình mở rộng của JavaScript, cung cấp hệ thống kiểu tĩnh và công cụ phát triển mạnh mẽ
Cải thiện chất lượng mã nguồn thông qua hệ thống kiểu giúp giảm thiểu lỗi khi viết code Hệ thống này hỗ trợ tốt cho IDE với tính năng gợi ý thông minh và kiểm tra lỗi trực tiếp trong quá trình lập trình Ngoài ra, nó còn tích hợp dễ dàng với Next.js, nâng cao khả năng bảo trì và mở rộng ứng dụng.
TypeScript được áp dụng trong dự án nhằm phát triển toàn bộ logic của ứng dụng, giúp mã nguồn trở nên dễ đọc, dễ bảo trì và giảm thiểu lỗi.
Kết hợp các công nghệ
- Dự án tận dụng sự kết hợp của các công nghệ hiện đại:
- Front-end: Next.js và Tailwind CSS cung cấp một trải nghiệm người dùng mượt mà và thẩm mỹ
- Back-end: Django đảm bảo hiệu năng và khả năng xử lý dữ liệu
- Cơ sở dữ liệu: MongoDB Cloud lưu trữ dữ liệu với khả năng mở rộng và độ tin cậy cao
- Ngôn ngữ lập trình: TypeScript đảm bảo sự an toàn và khả năng mở rộng cho mã nguồn.
Phân tích giải pháp đề xuất công nghệ xây dựng ứng dụng nền tảng Web
- Bảng so sánh các ngôn ngữ lập trình ứng dụng Web phổ biến hiện nay
Cộng đồng Phù hợp cho
HTML Cao Dễ Thấp Trung bình Rất cao Cao Tạo cấu trúc cơ bản của trang web
CSS Cao Dễ Thấp Trung bình Rất cao Cao Định dạng giao diện trang web
Trung bình Cao Trung bình Rất cao Tạo trang web năng động và hiệu quả
Cộng đồng Phù hợp cho
Python Cao Dễ Trung bình Cao Rất cao Cao Phát triển web back- end, API
Java Cao Trung bình Cao Cao Rất cao Cao Phát triển web front- end và ứng dụng
PHP Cao Dễ Trung bình
Phát triển web back- end và hệ thống CMS
Ruby Trung bình Dễ Trung bình
Phát triển web back- end, framework Rails
Dựa trên việc phân tích các ưu và nhược điểm của các nền tảng ngôn ngữ, chúng tôi khuyến nghị sử dụng ngôn ngữ lập trình Python cho việc triển khai.
HỆ THỐNG GỢI Ý
4.1 Tổng quan về hệ thống gợi ý
4.1.1 Giới thiệu về hệ thống gợi ý
Những hiện tượng dưới đây hiên nay đã trở nên phổ biến:
• Youtube tự động chuyển các clip liên quan đến clip bạn đang xem Youtube cũng tự gợi ý những clip mà có thể bạn sẽ thích
When you purchase an item on Amazon, the system automatically suggests products that are "Frequently bought together," or it identifies items you may like based on your purchase history.
• Facebook hiển thị quảng cáo những sản phẩm có liên quan đến từ khoá bạn vừa tìm kiếm
• Netflix tự động gợi ý phim cho người dùng
Hệ thống gợi ý sử dụng các thuật toán Machine Learning để tự động đề xuất sản phẩm phù hợp với sở thích của người dùng Bằng cách quảng cáo đúng đối tượng, hiệu quả marketing sẽ được nâng cao.
Recommendation Systems are a broad area of Machine Learning that has emerged more recently than Classification, primarily due to the internet's significant growth over the past 10 to 15 years.
Trong hệ thống gợi ý, có hai thực thể chính là người dùng (users) và sản phẩm (items) Người dùng là những cá nhân sử dụng dịch vụ, trong khi sản phẩm có thể là phim, bài hát, sách, video, hoặc thậm chí là những người dùng khác trong trường hợp gợi ý kết bạn Mục tiêu chính của các hệ thống gợi ý là dự đoán mức độ quan tâm của người dùng đối với một sản phẩm cụ thể, từ đó xây dựng chiến lược gợi ý phù hợp.
4.1.2 Hai chiến thuật hay dùng trong hệ gợi ý
Chiến thuật Lọc nội dung (Content Filtering) là phương pháp tạo ra hồ sơ cho từng người dùng hoặc sản phẩm, nhằm mô tả bản chất của chúng Chẳng hạn, hồ sơ phim có thể bao gồm các thuộc tính liên quan đến thể loại và các diễn viên tham gia.
Hồ sơ người dùng có thể chứa thông tin nhân khẩu học và câu trả lời từ bảng câu hỏi, giúp các chương trình liên kết người dùng với sản phẩm phù hợp Tuy nhiên, chiến lược dựa trên nội dung cần thu thập thông tin bên ngoài có thể gặp khó khăn trong việc thu thập hoặc không có sẵn.
Chiến thuật Lọc cộng tác (Collaborative Filtering) được định nghĩa bởi Tapestry, hệ gợi ý đầu tiên trên thế giới, là một phương pháp thay thế cho Lọc nội dung Chiến thuật này dựa vào hành vi người dùng trước đây, như giao dịch hoặc xếp hạng sản phẩm, mà không cần tạo hồ sơ rõ ràng Nó phân tích mối liên quan giữa người dùng và các thuộc tính sản phẩm để xác định quan hệ người dùng - sản phẩm Lọc cộng tác có ưu điểm là không bị giới hạn miền, giúp giải quyết các khía cạnh dữ liệu khó nắm bắt, trong khi Lọc nội dung lại hiệu quả hơn với dữ liệu mới được thêm vào.
4.1.3 Hai lĩnh vực trong Lọc cộng tác
Hai lĩnh vực chính của lọc cộng tác là các phương pháp lân cận và các mô hình yếu tố tiềm ẩn
Phương pháp vùng lân cận tập trung vào việc tính toán mối quan hệ giữa các items hoặc users, dựa trên cách người dùng đánh giá các “sản phẩm hàng xóm” Những sản phẩm này có xu hướng nhận được đánh giá tương tự từ cùng một người dùng Ví dụ, phim Giải cứu Binh nhì Ryan có thể có các sản phẩm hàng xóm như phim chiến tranh, phim của Spielberg và phim có Tom Hanks Để dự đoán xếp hạng của một người dùng cho Giải cứu Binh nhì Ryan, ta tìm kiếm những người hàng xóm gần nhất mà người dùng đã xếp hạng Cách tiếp cận này xác định những người dùng có sở thích tương đồng, giúp bổ sung cho các đánh giá của nhau.
Mô hình yếu tố tiềm ẩn là phương pháp đánh giá sản phẩm và người dùng thông qua 20 đến 100 yếu tố được suy ra từ các mẫu đánh giá Phương pháp này tương tự như mô hình hóa máy tính đối với các gen bài hát Đối với lĩnh vực điện ảnh, các yếu tố này có thể đo lường các khía cạnh rõ ràng như sự thiên về hài kịch so với bi kịch.
16 bộ phim hành động hay dành cho trẻ em thường có các yếu tố như nhân vật có chiều sâu và độc đáo, mặc dù một số yếu tố khác có thể khó xác định Những yếu tố này ảnh hưởng đến mức độ yêu thích của người xem và quyết định điểm số cao cho từng bộ phim.
Một trong những ứng dụng nổi bật của mô hình yếu tố tiềm ẩn là Phân tích ma trận thành nhân tử (Matrix Factorization) Kết quả từ cuộc thi Netflix Prize đã chứng minh rằng các mô hình này vượt trội hơn so với các kỹ thuật hàng xóm gần nhất trong việc đưa ra khuyến nghị sản phẩm, đồng thời cho phép tích hợp thông tin bổ sung như phản hồi ngầm, hiệu ứng thời gian và mức độ tin cậy.
Phương pháp phân tích ma trận thành nhân tử chuyển đổi mặt hàng và người dùng thành các vector yếu tố dựa trên mẫu xếp hạng Khi các yếu tố của người dùng và mặt hàng tương tự nhau, hệ thống sẽ đưa ra gợi ý Mỗi item có thể có các tính chất ẩn tương ứng với hệ số trong vector x, và người dùng cũng có tính chất ẩn tương ứng với vector w Không cần phải đặt tên cho các tính chất ẩn này; hệ số cao cho thấy item hoặc user thể hiện rõ tính chất ẩn đó Tính tương tự giữa item và user được thể hiện qua giá trị biểu thức xw, với giá trị cao cho thấy độ tương tự lớn, nghĩa là item có khả năng phù hợp với sở thích của người dùng, do đó nên gợi ý item này cho user.
Phương pháp này đã trở nên phổ biến trong những năm gần đây nhờ vào sự kết hợp hiệu quả giữa gợi ý chính xác và ước lượng tỉ lệ Hơn nữa, nó còn có khả năng ứng dụng linh hoạt trong việc mô hình hóa các tình huống thực tế.
Các hệ thống gợi ý thường sử dụng nhiều loại dữ liệu đầu vào khác nhau, được tổ chức trong một ma trận 2 chiều, với một chiều đại diện cho người dùng và chiều còn lại cho các mặt hàng mà họ quan tâm Dữ liệu hữu ích nhất thường là những phản hồi rõ ràng và chất lượng cao, như đánh giá của người dùng về sản phẩm Ví dụ, Netflix áp dụng hệ thống đánh giá sao (rating-star) cho các bộ phim.
Các mạng xã hội như Facebook, Twitter và YouTube thường có nút like (hoặc dislike) để người dùng thể hiện sự đánh giá về từng bài viết hoặc video Những phản hồi này được gọi chung là sự đánh giá của người dùng.
PHÂN TÍCH HỆ THỐNG
Tổng quan thiết kế
Chủ cửa hàng, công ty là người có quyền cao nhất: có thể xem thông tin về tình trạng, hoạt động cũng như mọi thay đổi thên website
Nếu chủ cửa hàng đồng thời là người quản trị website, thì tất cả thông tin trên website sẽ do chính họ quản lý Trong trường hợp thuê nhân viên quản trị, chủ cửa hàng cần cung cấp tài khoản và quyền hạn cho nhân viên đó để truy cập vào hệ thống.
Chủ cửa hàng nắm quyền cao nhất và có khả năng truy cập toàn bộ thông tin trên website, trong khi nhân viên và khách hàng chỉ được phép xem những thông tin được cấp quyền.
Nhiều trang bán hàng cao cấp tích hợp đa dạng phương thức thanh toán, nhưng việc này thường khó thực hiện đối với các website có quy mô nhỏ do điều kiện thực tế.
Sơ đồ tổng quan thiết kế hệ thống
5.2 Yêu cầu về hạ tầng triển khai
5.2.1 Network: Hạ tầng cần được thiết kế để đáp ứng lưu lượng truy cập cao, bao gồm:
- Sử dụng Content Delivery Network (CDN) như Vercel để cung cấp dữ liệu nhanh chóng tới người dùng
- Hệ thống firewall như Nginx để bảo vệ và quản lý truy cập
- Server: Có thể triển khai qua Azure để tận dụng tính mở rộng linh hoạt
- Database: Sử dụng MongoDB Cloud kết hợp Prisma cho truy vấn hiệu quả cao
- Framework: Website được phát triển trên nền tảng Next.js để tối ưu hiệu năng frontend và backend
- Thuê máy chủ: Thích hợp với nhu cầu ban đầu do chi phí thấp, linh hoạt mở rộng khi lưu lượng tăng
- Mua máy chủ: Phù hợp khi website đã đạt quy mô lớn và ốn định Tuy nhiên, chi phí ban đầu cao và cần đội ngũ quản trị
- Ubuntu: Thích hợp cho các server chạy web với hiệu năng cao, độ bảo mật tốt
- Windows Server: Dùng khi các ứng dụng yêu cầu tích hợp với phần mềm
5.5 Cơ chế sao lưu, phân tải và cân bằng tải
- Định kỳ sao lưu dữ liệu hàng ngày và hàng tuần
- Sử dụng công cụ MongoDB Atlas Backup
- Đóng gói file dữ liệu bằng Gzip và truyền về server sao lưu thứ hai
5.5.2 Phân tải và cân bằng tải
- Sử dụng Nginx hoặc Load Balancer trên Azure để phân bố lưu lượng giữa các server
- Cài đặt auto-scaling để đảm bảo khả năng mở rộng linh hoạt
5.6 Xử lý khi gặp lỗi hệ thống hoặc bị tấn công
- Sao lưu hệ thống: Tạo bản snapshot định kỳ để khôi phục nhanh khi xảy ra lỗi
- Khởi phục CSDL: Kết hợp sao lưu định kỳ và truyền dữ liệu tự động tới server dự phòng
- Bảo mật: Cài đặt Firewall và giải pháp chống DDoS như Azure DDoS
5.6.2 Phân tích nguyên nhân tấn công
- Kiểm tra log của Next.js và Nginx để xác định nguyên nhân
- Cập nhật bản vá để khắc phục các lỗi hổng
- Viết unit test và integration test với Django để bảo đảm logic hoạt động đúng
- Thực hiện load test để kiểm tra hiệu năng
- Kết hợp HTTPS và JWT để bảo vệ giao tiếp
- Mã hoá dữ liệu nhạy cảm trước khi lưu vào MongoDB
- Cài đặt quán lý truy cập IP để giới hạn người dùng không phép
5.8 Sao lưu dự phòng dữ liệu Để đảm bảo an toàn dữ liệu của phần mềm, hệ thống sẽ được thiết lập cơ chế sao lưu tự động (auto back-up) CSDL định kỳ (hàng ngày, hàng tuần, ) vào thiết bị lưu trữ dự phòng (dã cố gắn ngoài hoặc đám mây) hoặc người quản trị đề nghiệp vụ sao lưu một cách thủ công theo nhu cầu (manual back-up) Khi hết hạn gặp sự cố, CSDL sẽ được phục hồi nguyên vẹn vào thời điểm đã sao lưu
• Full Backup: Backup toàn bộ dữ liệu tại một thời điểm
• Differential Backup: Backup dữ liệu phát sinh sau thời điểm xảy ra Full
• File/Filegroup Backup: Backup những file và filegroup
Sao lưu Transaction Log là quá trình sao lưu các bản ghi log hiện có trong tệp log, tức là nó ghi lại các hành động và thao tác diễn ra đối với cơ sở dữ liệu mà không sao lưu dữ liệu thực tế.
• Partial Backup: Sao lưu một phần
Sao chép chỉ bản sao lưu là quá trình chỉ thực hiện sao chép các bản sao lưu đã được thực hiện trên cơ sở dữ liệu mà không làm ảnh hưởng đến chu kỳ sao lưu chính thức đã được thiết lập.
Dữ liệu phục hồi là bản sao của dữ liệu được khôi phục từ thời điểm tạo tệp sao lưu Chức năng phục hồi cơ sở dữ liệu (CSDL) của phần mềm cho phép khôi phục dữ liệu chính xác từ bản sao đó, nhằm phục vụ việc khôi phục tối đa thông tin từ tài khoản truy cập vào CSDL.
• Full Recovery Model: Tất cả dữ liệu sẽ được phục hồi Hiệu quả: Cân bằng giữa độ an toàn và hiệu suất
• Bulk-logged Recovery Model: Phù hợp với các giao dịch lớn Hiệu quả:
Tăng hiệu suất sao lưu
• Simple Recovery Model: Chỉ sao lưu một phần nhất định của dữ liệu
Biểu đồ Use Case
+ User: Người dùng đã đăng ký tài khoản trên ứng dụng
+ Guest: Những người dùng truy cập ứng dụng mà chưa đăng ký tài khoản
- Admin: Người quản lý và điều hành hệ thống ứng dụng bán hàng
Mô tả Use Case
STT Use Case Mô tả
1 Register Đăng ký tài khoản mới
2 ViewProducts Xem danh sách sản phẩm
3 SearchProduct Tìm kiếm sản phẩm
4 ViewProductDetails Xem thông tin chi tiết của sản phẩm
5 ViewCategories Xem danh sách danh mục
6 CreateCart Tạo giỏ hàng mới
7 ChangeCart Thay đổi nội dung trong giỏ hàng
8 ViewProfile Xem thông tin cá nhân
9 EditProfile Chỉnh sửa thông tin cá nhân
10 Login Đăng nhập vào hệ thống
11 ViewOrderHistory Xem lịch sử đơn hàng
12 OrderCart Đặt hàng từ giỏ hàng
13 SearchCategories Tìm kiếm danh mục
14 ViewCategories Xem danh mục sản phẩm
15 CreateCategory Tạo danh mục mới
16 UpdateCategory Cập nhật danh mục
18 CreateProducts Thêm sản phẩm mới
19 UpdateProduct Cập nhật sản phẩm
22 ViewImportHistory Xem lịch sử nhập hàng
23 ViewOrders Xem lịch sử mua hàng
24 ViewOrderDetails Xem chi tiết đơn hàng
25 ConfirmOrder Xác nhận đơn hang
26 ViewRecommend Xem gợi ý sản phầm ᐩ
Use Case & Actor Mapping
Phân tích UC
Name Manage product Code UC02
Description Cho phép actor xem toàn bộ sản phẩm
Actor Admin Trigger Actor click button [Quản trị sản phẩm]
Pre- condition Actor đã đăng nhập vào hệ thống quản trị
Post condition Chọn chức năng trong quản lý sản phẩm
Name Add new product Code UC03
Description Cho phép actor thêm sản phẩm mới
Actor Admin Trigger Actor click button [Create
Pre- condition Actor đã đăng nhập vào hệ thống quản trị
Post condition Thêm sản phẩm thành công
Name View recommend product Code UC01
Description Cho phép actor xem sản phẩm gợi ý
Pre-condition Actor đã đăng nhập vào hệ thống
Hiện thị sản phẩm gợi ý thành công
1 Dữ liệu về sản phẩm thêm phải thỏa mãn yêu cầu
Các trường dữ liệu phải thỏa mãn đúng yêu cầu về loại trường hoặc các điều kiện bên ngoài thêm
Name Edit product Code UC04
Description Cho phép actor sửa thông tin sản phẩm
Actor Admin Trigger Actor click button
Pre-condition Actor đã đăng nhập vào hệ thống
Post condition Sửa sản phẩm thành công
Name Delete product Code UC05
Description Cho phép actor xóa sản phẩm
Actor Admin Trigger Actor click button [Xóa sản phẩm]
Pre-condition Actor đã đăng nhập vào hệ thống
Post condition Xóa sản phẩm thành công
Name View product Code UC06
Description Cho xem thông tin sản phẩm
Actor Admin ,Customer,Guest Trigger Trên trang chủ của website
Name Manage static Code UC11
Description Cho phép actor quản lý thông kê theo mục chọn
Actor Admin Trigger Actor view màn hình quản lý thống kê
Pre-condition Actor đã đăng nhập vào hệ thống
Post condition Hiển thị chức năng quản lý thống kê trên màn hình
Name Statistic sales Code UC12
Description Cho phép actor thống kê doanh thu bán sản phẩm
Actor Admin Trigger Actor click button [Thống kê doanh thu]
Pre-condition Actor đã đăng nhập vào hệ thống
Post condition Hiển thị thống kê thành công
5.13.10 UC9: Statistic selling product Use Case Description
Name Statistic selling product Code UC12
Description Cho phép actor thống kê sản phẩm bán chạy
Actor Admin Trigger Actor click button [Thống kê sản phẩm bán chạy]
Pre-condition Actor đã đăng nhập vào hệ thống
Post condition Hiển thị thông tin thống kê thành công
Name Manage Manufacture Code UC10
Description Cho phép actor quản lý thông tin nhà sản xuất
Actor Admin Trigger Actor click button [Quản trị nhà sản xuất]
Pre-condition Actor đã đăng nhập vào hệ thống quản trị
Hiển thị thông tin các nhà sản xuất
Name Statistic selling product Code UC12
Description Cho phép actor hiển thị chi tiết nhà sản xuất
Actor Admin Trigger Actor click button [Detail]
Pre-condition Actor đã đăng nhập vào hệ thống
Hiển thị thông tin các nhà sản xuất
Name Statistic selling product Code UC12
Description Cho phép actor tạo mới 1 nhà sản xuất
Actor Admin Trigger Actor click button [Create
Pre-condition Actor đã đăng nhập vào hệ thống
Name Edit manufacture Code UC13
Description Cho phép actor sửa thông tin nhà sản xuất
Actor Admin Trigger Actor click button
Pre-condition Actor đã đăng nhập vào hệ thống
Post condition Hiển thị thông tin thống kê thành công.
THIẾT KẾ CƠ SỞ DỮ LIỆU
Bảng Category
Trường dữ liệu bao gồm: "id" là khóa chính kiểu String, "name" là tên danh mục kiểu String, "image" là đường dẫn hình ảnh kiểu String, "description" là mô tả kiểu String, "createdAt" là thời điểm tạo kiểu DateTime, và "updatedAt" là thời điểm cập nhật kiểu DateTime.
Bảng Product
The table outlines the structure of a product database, featuring key attributes such as an ID (String) as the primary key, a name (String) for the product title, and a description (String) for product details It includes pricing information (Int), quantity available (Int), and the number of items sold (Int) Additionally, it records timestamps for creation (DateTime) and updates (DateTime), along with a status indicator (Boolean) to denote whether the product is active Lastly, it contains an array of image URLs (String[]) for product visuals.
Bảng Card
Tên trường Kiểu dữ liệu Mô tả id String Khóa chính userId String Khóa ngoại: User
Bảng CardItem
Tên trường Kiểu dữ liệu Mô tả id String Khóa chính quantity Int Số lượng cartId String Khóa ngoại: Cart productId String Khóa ngoại: Product
Bảng Order
The table outlines the data structure for a school, including key fields such as the primary key "id" (String), the "phone" (String) for contact information, and the "address" (String) for location details It also records timestamps with "createdAt" and "updatedAt" (DateTime) to track creation and modification dates Additionally, the "userId" (String) serves as a foreign key linking to the user, while the "status" (String) indicates the current state of the record.
Bảng OrderItem
Tên trường Kiểu dữ liệu Mô tả id String Khóa chính quantity Int Số lượng price Int Giá orderId String Khóa ngoại: Order productId String Khóa ngoại: Product
Bảng UserData
Trường dữ liệu bao gồm: userId (String) là khóa chính, recentCare (String[]) là mảng các lần chăm sóc, recentAdd (String[]) là mảng các lần thêm, và recentBuy (String[]) là mảng các lần mua.
Bảng UserProduct
Tên trường Kiểu dữ liệu Mô tả id String Khóa chính productId String Khóa ngoại: Product quantity Int Số lượng createdAt DateTime Thời điểm tạo price Int
THIẾT KẾ GIAO DIỆN
Thiết kế giao diện
○ Hình 5.1.1.1: Giao diện trang chủ
○ Hình 5.1.3.1: Giao diện giỏ hàng
○ Hình 5.1.4.1: Giao diện chi tiết sản phẩm
○ Hình 5.1.5.1: Giao diện thông tin cá nhân
○ Hình 5.1.6.1: Giao diện lịch sử đặt hàng
7.1.7 Đăng nhập, đăng ký, quên mật khẩu
○ Hình 5.1.7.1: Giao diện Đăng nhập
7.1.8 Các sản phẩm gợi ý được đề xuất bằng dữ liệu người dùng kết hợp thuật toán học máy
○ Hình 5.1.8.1: Giao diện phần gợi ý sử dụng học máy
7.1.9 Quản lý danh mục sản phẩm
○ Hình 5.1.9.1: Giao diện Quản lý danh mục sản phẩm
7.1.10 Quản lý các sản phẩm
○ Hình 5.1.10.1: Giao diện Quản lý sản phẩm
7.1.11 Quản lý chi tiết sản phẩm
○ Hình 5.1.11.1: Giao diện Quản lý chi tiết sản phẩm
7.1.12 Thêm một sản phẩm mới
○ Hình 5.1.12.1: Giao diện thêm sản phẩm mới
○ Hình 5.1.13.1: Giao diện Quản lý nhập hàng
7.1.14 Trang danh mục sản phẩm
○ Hình 5.1.14.1: Giao diện xem danh mục sản phẩm
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong thời gian tìm hiểu, nghiên cứu cơ sở lý thuyết và triển khai ứng dụng công nghệ, báo cáo đã đạt được những kết quả sau:
Nhóm đã hiểu rõ các quy trình của một trang web thương mại điện tử và ứng dụng thành công các công nghệ xây dựng website như NextJS, Django, MongoDB Cloud và Hệ thống gợi ý.
Qua quá trình đào tạo của chương trình thực tập tốt nghiệp, nhóm đã nắm vững cách làm việc trong một dự án thực tế, bao gồm việc sử dụng Git và áp dụng nguyên tắc Scrum.
Nhóm đã thành công trong việc xây dựng website bán hàng online, đáp ứng nhu cầu người tiêu dùng với giao diện thân thiện và dễ sử dụng Điều này giúp người quản lý tiết kiệm thời gian và dễ dàng quản lý thông tin người dùng, sản phẩm và đơn hàng, từ đó thuận tiện cho việc giao nhận hàng.
Vấn đề thời gian: vẫn còn hạn chế về mặt thời gian vì thời gian thực tập chỉ diễn tra trong 2 tuần
Vấn đề làm việc nhóm: vẫn còn hạn chế về việc trao đổi vì nhóm chỉ trao đổi vấn đề qua các kênh tương tác online như zoom, message, …
2 KIẾN NGHỊ VÀ HƯỚNG PHÁT TRIỂN
2.1 Kiến nghị với cơ quan thực tập:
Về ứng dụng website bán hàng:
Nâng cấp giao diện website, tối ưu trải nghiệm người dùng trên di động Tích hợp thêm các phương thức thanh toán đa dạng, tiện lợi
Mở rộng hệ thống quản lý đơn hàng, tích hợp chatbot hỗ trợ khách hàng Tăng cường các hoạt động marketing, quảng bá website
Phân tích dữ liệu khách hàng, tối ưu hóa chiến lược bán hàng
Về quy trình thực tập:
Cung cấp tài liệu hướng dẫn thực tập chi tiết hơn
Tổ chức các buổi workshop, đào tạo chuyên sâu về các kỹ năng cần thiết cho công việc
Có hệ thống đánh giá, nhận xét cụ thể về kết quả thực tập của sinh viên
2.2 Ý kiến bản thân sau khi hoàn thành báo cáo thực tập tốt nghiệp:
Kiến thức và kỹ năng:
Nâng cao kỹ năng lập trình web, sử dụng các framework, thư viện phổ biến Nắm vững quy trình phát triển phần mềm, quản lý dự án
Kỹ năng giao tiếp, làm việc nhóm, giải quyết vấn đề được cải thiện
Có kiến thức về marketing online, SEO, SEM
Hiểu rõ về cách thức vận hành một website bán hàng
Có kinh nghiệm làm việc trong môi trường công ty chuyên nghiệp
Rèn luyện kỹ năng làm việc độc lập, chịu trách nhiệm
Có cơ hội tiếp xúc và học hỏi từ các chuyên gia trong ngành
2.3 Nguyện vọng sau khi hoàn thành chương trình thực tập tốt nghiệp:
Tìm kiếm cơ hội việc làm phù hợp với chuyên ngành và năng lực bản thân Tiếp tục học hỏi và trau dồi kiến thức, kỹ năng chuyên môn
Trở thành chuyên gia trong lĩnh vực phát triển phần mềm hoặc marketing online
Có khả năng tự khởi nghiệp và phát triển dự án riêng
Góp phần vào sự phát triển của ngành công nghệ thông tin Việt Nam.