Với lí do trên, em quyết định chọn đề tài này để phát triển một ứng dụng trực tuyến kết nối giữa mentor người hướng dẫn và mentee người cần hướng dẫn có tên là urMentor Your Mentor, sử d
TỔNG QUAN
Đặt vấn đề
Trong lĩnh vực công nghệ thông tin (CNTT), việc học hỏi và phát triển là vô cùng quan trọng Tuy nhiên, với sự phát triển nhanh chóng của ngành, việc tự học và tự phát triển có thể gặp nhiều khó khăn Trong bối cảnh đó, mô hình mentorship (cố vấn - học trò) trở thành một giải pháp hiệu quả để hỗ trợ sinh viên ngành CNTT trong quá trình học tập và phát triển.
Lý do chọn đề tài
Hiện nay có rất nhiều ứng dụng mô hình mentorship, nhưng trong trường học CNTT vẫn chưa có một ứng dụng cụ thể về mô hình này để kết nối những sinh viên có nhu cầu học tập, học hỏi kinh nghiệm từ những sinh viên giỏi, có kinh nghiệm hơn cả trong học tập và sự nghiệp
Với lí do trên, em quyết định chọn đề tài này để phát triển một ứng dụng trực tuyến kết nối giữa mentor (người hướng dẫn) và mentee (người cần hướng dẫn) có tên là urMentor (Your Mentor), sử dụng trong môi trường trường học CNTT
Mục tiêu đề tài
Xây dựng được một nền tảng giúp sinh viên hoặc giảng viên trong trường có thể kết nối được với nhau, giúp đỡ mentee phát triển trong vấn đề học tập và sự nghiệp của họ
Đối tượng nghiên cứu
• Front-end: ReactJS, Typescript, Zustand, React-query, Tailwind-css
• Back-end: Nestjs, Typescript, TypeORM
• Người cố vấn (mentor): sinh viên, giảng viên muốn chia sẻ kiến thức, kinh nghiệm cho sinh viên khác
• Người được hướng dẫn (mentee): sinh viên muốn tìm một người mentor có thể giúp họ có phát triển kiến thức, kinh nghiệm, định hướng nghề nghiệp
• Quản trị viên (admin): người thực hiện các tác vụ quản lý hệ thống (tài khoản mentor, mentee, lĩnh vực, kỹ năng, giao dịch, mã quà tặng)
CƠ SỞ LÝ THUYẾT
Lý thuyết về phương pháp cố vấn
Một vài cách tiếp cận phổ biến về phương pháp cố vấn:
Cố vấn 1-1: Phương pháp này bao gồm một người cố vấn làm việc chặt chẽ với từng người được cố vấn, hỗ trợ và cung cấp các hướng dẫn, lời khuyên được cá nhân hóa phù hợp với nhu cầu và mục tiêu của người được cố vấn
Cố vấn theo nhóm: Trong phương pháp này, một người cố vấn làm việc với một nhóm nhỏ những người được cố vấn cùng một lúc Tư vấn nhóm khuyến khích việc học tập lẫn nhau, sự hợp tác và ý thức chung giữa những người được cố vấn
Cố vấn đảo ngược: Phương pháp này hướng đến việc kết nối một cá nhân trẻ hoặc ít kinh nghiệm hơn với một người cố vấn cao cấp và sở hữu nhiều kinh nghiệm hơn Thông qua phương pháp này, người cố vấn có thể hiểu rõ hơn về các xu hướng và công nghệ mới nổi trội, trong khi người được cố vấn được hưởng lợi từ sự kiến thức và kinh nghiệm của người cố vấn
Cố vấn ảo: Bằng việc sử dụng công nghệ, người cố vấn và người được cố vấn có thể tham gia vào các mối quan hệ cố vấn bất kể các vấn đề liên quan đến vị trí địa lý.
ReactJS
ReactJS là một thư viện JavaScript mã nguồn mở và miễn phí để xây dựng giao diện người dùng dựa trên các thành phần UI riêng lẻ Nó được phát triển và duy trì bởi Meta và cộng đồng các nhà phát triển và công ty cá nhân
ReactJS được sử dụng để xây dựng các ứng dụng web, ứng dụng di động và các ứng dụng web cho thiết bị di động Nó là một trong những thư viện JavaScript phổ biến nhất hiện nay, được sử dụng bởi các công ty lớn như Facebook, Instagram, Netflix, Airbnb,
Hình 2.1: ReactJs ReactJS có một số tính năng nổi bật, bao gồm:
• Khả năng tái sử dụng cao: ReactJS sử dụng mô hình component- based, cho phép các nhà phát triển tạo các thành phần UI có thể tái sử dụng trong nhiều ứng dụng khác nhau
• Tốc độ nhanh: ReactJS sử dụng virtual DOM để tối ưu hóa việc cập nhật giao diện người dùng, giúp các ứng dụng chạy nhanh và mượt mà
• Dễ học: ReactJS có cú pháp đơn giản và dễ hiểu, giúp các nhà phát triển mới bắt đầu dễ dàng học hỏi.
Typescript
TypeScript là một ngôn ngữ lập trình mã nguồn mở được phát triển và duy trì bởi Microsoft Nó là một tập hợp siêu cú pháp nghiêm ngặt của JavaScript và thêm tính năng kiểu tĩnh tùy chọn vào ngôn ngữ TypeScript được thiết kế để phát triển các ứng dụng lớn và chuyển đổi sang JavaScript Đặc điểm nổi bật của TypeScript
• Kiểu dữ liệu tĩnh: TypeScript cho phép bạn xác định kiểu dữ liệu của biến, tham số, và giá trị trả về từ hàm Điều này giúp phát hiện lỗi nhanh chóng trong quá trình phát triển và tăng tính rõ ràng của mã nguồn
• Tính mở rộng của JavaScript: TypeScript là một superset của
JavaScript, điều này có nghĩa là mã nguồn JavaScript hợp lệ cũng là mã nguồn TypeScript hợp lệ Bạn có thể chuyển từ JavaScript sang TypeScript dần dần trong dự án mà không cần phải chuyển đổi toàn bộ mã nguồn cùng một lúc
• Tích hợp với các công cụ phát triển: TypeScript có thể tích hợp dễ dàng với các công cụ phát triển như Visual Studio Code, Sublime Text, và các trình biên dịch khác để cung cấp trải nghiệm phát triển tốt hơn
• Kiểm tra kiểu tại thời điểm biên dịch: TypeScript thực hiện kiểm tra kiểu tại thời điểm biên dịch, giúp phát hiện lỗi trước khi chạy chương trình, giảm số lượng lỗi xảy ra tại thời điểm chạy
React Query
Hình 2.3: React Query React Query là một thư viện quản lý trạng thái và dữ liệu cho ứng dụng React
Nó được thiết kế để giải quyết các vấn đề liên quan đến việc tương tác với dữ liệu
9 từ các nguồn khác nhau, như API, và giúp quản lý trạng thái ứng dụng một cách hiệu quả
Dưới đây là một số đặc điểm nổi bật của React Query:
• Quản lý trạng thái dữ liệu dễ dàng: React Query giúp bạn quản lý trạng thái dữ liệu của ứng dụng một cách dễ dàng và hiệu quả Việc sử dụng các hooks như useQuery và useMutation giúp tối ưu hóa quá trình quản lý trạng thái và tương tác với dữ liệu
• Giảm boilerplate code: Thư viện này giảm bớt số lượng boilerplate code cần thiết để xử lý các tác vụ phổ biến như lấy dữ liệu từ API, caching, và tự động làm mới dữ liệu Điều này giúp mã nguồn trở nên ngắn gọn, dễ đọc, và dễ bảo trì hơn
• Tích hợp mạnh mẽ với React: React Query được thiết kế để hoạt động chặt chẽ với React, sử dụng các hooks để cung cấp khả năng quản lý trạng thái và tương tác dữ liệu Điều này giúp đơn giản hóa quá trình tích hợp và sử dụng trong dự án React
• Hỗ trợ caching và làm mới dữ liệu: React Query có hệ thống caching mạnh mẽ, giúp tránh việc gửi các yêu cầu dữ liệu lặp lại và tối ưu hóa hiệu suất ứng dụng Nó cũng hỗ trợ tự động làm mới dữ liệu để đảm bảo rằng trạng thái dữ liệu luôn được cập nhật
• Xử lý side effects dễ dàng: React Query cung cấp các hooks như useMutation để xử lý các tác vụ phụ (side effects) như tạo mới, cập nhật, xóa dữ liệu một cách dễ dàng và có tổ chức
• DevTools hỗ trợ: React Query đi kèm với DevTools giúp theo dõi và debug trạng thái dữ liệu và các yêu cầu từ API một cách hiệu quả.
Zustand
Zustand là một thư viện quản lý trạng thái cho ứng dụng React Nó giúp quản lý trạng thái ứng dụng một cách dễ dàng và linh hoạt, đặc biệt được thiết kế để đơn giản hóa việc quản lý trạng thái trong các ứng dụng React
Dưới đây là một số đặc điểm nổi bật của Zustand:
• Kích thước nhỏ: Zustand có kích thước nhỏ và tập trung vào việc cung cấp một API dễ sử dụng mà không làm tăng kích thước của ứng dụng nhiều
• Cú pháp đơn giản: API của Zustand rất đơn giản, giúp giảm bớt boilerplate code và làm cho việc quản lý trạng thái trở nên thuận tiện hơn Điều này làm cho zustand được ưu tiên tích hợp vào các dự án nhỏ và trung bình hơn so với redux
• Tích hợp tốt với React: Zustand được xây dựng để tích hợp tốt với
React, sử dụng React Hooks để quản lý trạng thái Điều này giúp tận dụng các lợi ích của React Hooks và làm cho việc sử dụng Zustand trở nên tự nhiên trong môi trường React
• Hỗ trợ middleware: Zustand hỗ trợ middleware, giúp bạn mở rộng chức năng và tùy chỉnh quy trình xử lý trạng thái.
NestJs
Hình 2.4: NestJs NestJS là một framework phát triển web back-end cho Node.js, được thiết kế để tạo ra ứng dụng server-side hiệu quả và dễ bảo trì NestJS kết hợp các đặc điểm của TypeScript (hoặc JavaScript) với các kiến trúc và ý tưởng từ Angular, tạo ra một môi trường phát triển mạnh mẽ cho xây dựng ứng dụng web
Dưới đây là một số điểm nổi bật của NestJS:
• Kiến trúc modular: NestJS thúc đẩy việc sử dụng kiến trúc modular, giúp tạo ra mã nguồn dễ bảo trì và linh hoạt Ứng dụng có thể được chia thành các module độc lập với các thành phần như controllers, providers, và middleware
• Sử dụng TypeScript: NestJS được xây dựng hoàn toàn bằng
TypeScript, một ngôn ngữ lập trình mở rộng của JavaScript với kiểu dữ liệu tĩnh Điều này giúp giảm lỗi trong quá trình phát triển và tăng tính rõ ràng của mã nguồn
• Decorator-based syntax: NestJS sử dụng cú pháp dựa trên decorator để đánh dấu các thành phần như controllers, modules, routes, và middleware Điều này giúp mã nguồn trở nên rõ ràng và dễ đọc hơn
• Dependency Injection: NestJS hỗ trợ Dependency Injection (DI), giúp quản lý và đưa các phụ thuộc vào ứng dụng một cách hiệu quả Điều này cũng tạo điều kiện cho việc kiểm thử và tái sử dụng mã nguồn
• Middleware-based approach: NestJS sử dụng middleware để xử lý các yêu cầu HTTP trước khi đến đối tượng xử lý chính Điều này cung cấp khả năng kiểm soát cao và tối ưu hóa quá trình xử lý.
TypeORM
TypeORM là một thư viện ORM (Object-Relational Mapping) cho TypeScript và JavaScript, được sử dụng để tương tác với cơ sở dữ liệu trong các ứng dụng Node.js và TypeScript ORM giúp quản lý truy vấn cơ sở dữ liệu và tương tác với dữ liệu một cách trừu tượng hóa, sử dụng các đối tượng và lớp thay vì các truy vấn SQL trực tiếp
Dưới đây là một số đặc điểm và lợi ích của TypeORM:
• Hỗ trợ nhiều cơ sở dữ liệu: TypeORM hỗ trợ nhiều loại cơ sở dữ liệu như MySQL, PostgreSQL, MariaDB, SQLite, Microsoft SQL Server, Oracle, và nhiều hệ thống cơ sở dữ liệu khác
• Kiểu dữ liệu tĩnh với TypeScript: TypeORM được thiết kế để hoạt động tốt với TypeScript, cho phép sử dụng kiểu dữ liệu tĩnh trong quá trình phát triển để giảm lỗi và tăng tính rõ ràng của mã nguồn
• Object-Relational Mapping (ORM): TypeORM giúp ánh xạ giữa các đối tượng trong mã nguồn và các bảng trong cơ sở dữ liệu Điều này giúp làm giảm cú pháp và tăng sự trừu tượng hóa, cho phép sử dụng đối tượng để thao tác dữ liệu thay vì trực tiếp với SQL
• Quản lý migrations: TypeORM cung cấp các công cụ để quản lý quá trình migration, giúp duy trì và cập nhật cấu trúc cơ sở dữ liệu khi ứng dụng phát triển
Video call và chat sdk
Hình 2.6: video call và chat sdk ZegoCloud là một công ty cung cấp dịch vụ đám mây toàn cầu, chuyên về các giải pháp truyền phát trực tiếp, hội nghị truyền hình và trò chuyện Video Call SDK và Chat SDK của ZegoCloud là hai sản phẩm chính của công ty, được sử dụng bởi hàng triệu nhà phát triển trên toàn thế giới để xây dựng các ứng dụng giao tiếp trực tiếp
Video Call SDK của ZegoCloud cung cấp các tính năng cần thiết để xây dựng các ứng dụng video call chất lượng cao, bao gồm:
• Gọi video 1-1 và gọi video nhóm: Hỗ trợ gọi video 1-1 và gọi video nhóm lên đến 100 người
• Chất lượng video và âm thanh cao: Sử dụng công nghệ mã hóa và giải mã video và âm thanh tiên tiến để mang lại chất lượng video và âm thanh cao, ngay cả trong điều kiện mạng kém
• Tính năng đa nền tảng: Hỗ trợ đa nền tảng, bao gồm
Android, iOS, web, Flutter và React Native
• Tính năng bảo mật cao: Sử dụng mã hóa TLS và AES256 để bảo vệ dữ liệu người dùng
Chat SDK của ZegoCloud cung cấp các tính năng cần thiết để xây dựng các ứng dụng chat chất lượng cao, bao gồm:
• Gửi và nhận tin nhắn: Hỗ trợ gửi và nhận tin nhắn văn bản, hình ảnh, GIF, tệp và các loại nội dung khác
• Tạo cuộc trò chuyện 1-1 và nhóm: Hỗ trợ tạo cuộc trò chuyện 1-1 và cuộc trò chuyện nhóm
• Tính năng đa nền tảng: Hỗ trợ đa nền tảng, bao gồm
Android, iOS, web, Flutter và React Native
• Tính năng bảo mật cao: Sử dụng mã hóa TLS và AES256 để bảo vệ dữ liệu người dùng
XÂY DỰNG HỆ THỐNG
Kiến trúc
Hình 3.1: Tổng quan kiến trúc hệ thống urMentor
Hệ thống sử dụng kiến trúc Client – Server với client và server riêng biệt:
Server: API chính được xây dựng bằng NestJS framework và TypeORM, sử dụng Server Sent Event để gửi thông báo cho người dùng, UploadThing dùng để lưu avatar và file
Client: Ứng dụng web được xây dựng bằng ReactJS, quản lý Client State bằng Zustand và Server State (dữ liệu trả về từ server) bằng React Query
Authentication: token-based authentication sử dụng JWT Refresh token, verify mail code được lưu trên redis để truy cập nhanh hơn
Phân tích hệ thống
Hình 3.2: Sơ đồ Usecase người dùng vãng lai
17 Hình 3.3: Sơ đồ usecase mentee
18 Hình 3.4: Sơ đồ usecase mentor
19 Hình 3.5: Sơ đồ usecase admin
STT Tác nhân Mô tả
1 Người dùng vãng lai Người dùng chưa đăng nhập vào hệ thống nhưng vẫn có thể sử dụng một số tính năng cơ bản của web
2 Người hướng dẫn (mentor) Người dùng có nhu cầu muốn truyền đạt kiến thức và kinh nghiệm thực tế với người khác
3 Người cần hướng dẫn (mentee) Người dùng có mong muốn được học hỏi
4 Quản trị viên (admin) Người thực hiện quản lý hệ thống, bao gồm: quản lý các loại tài khoản, kỹ năng, lĩnh vực và giao dịch
Bảng 3.1: Danh sách tác nhân
Tên usecase Đăng ký tài khoản
Mô tả Người dùng vãng lai muốn đăng ký tài khoản
Tác nhân Người dùng vãng lai Điều kiện Phải có kết nối mạng
Dòng sự kiện chính 1 Truy cập vào trang web
2 Chọn vào nút “Đăng ký” ở trang chủ
3 Hiển thị màn hình đăng ký
4 Nhập thông tin email, mật khẩu, tên
5 Chọn vào nút “Đăng ký”
Dòng sự kiện phụ Chọn nút “Đã có tài khoản? Đăng nhập” ở màn hình đăng ký tài khoản sẽ hiển thị màn hình đăng nhập
Dòng sự kiện lỗi Thông tin đăng ký không hợp lệ, hoặc email đã được đăng ký thông báo lỗi cho người dùng Bảng 3.2: Mô tả usecase đăng ký tài khoản
Mô tả Cho phép người dùng đăng nhập vào hệ thống
Tác nhân Mentee Điều kiện Phải có kết nối mạng
Dòng sự kiện chính 1 Chọn nút “Đăng nhập”
2 Chọn tài khoản đăng nhập là mentee
3 Nhập thông tin email và mật khẩu
Dòng sự kiện phụ Chọn nút “Bạn chưa có tài khoản? Đăng ký” ở màn hình đăng ký tài khoản sẽ hiển thị màn hình đăng ký Dòng sự kiện lỗi Nếu thông tin nhập vào không hợp lệ thì sẽ hiển thị thông báo lỗi và yêu cầu người dùng nhập lại Bảng 3.3: Mô tả usecase đăng nhập
Mô tả Đăng xuất khỏi hệ thống
Tác nhân Mentee, mentor, admin Điều kiện Phải có kết nối mạng Đã đăng nhập vào hệ thống Điều kiện kết quả Người dùng thoát khỏi ứng dụng và có thể thực hiện việc đăng nhập lạ
Dòng sự kiện chính 1 Chọn vào biểu tượng avatar trên thanh header
2 Hiển thị danh mục cá nhân
3 Chọn vào nút “Đăng xuất”
4 Hiển thị màn hình trang chủ khi chưa đăng nhập Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.4: Mô tả usecase đăng xuất
Tên usecase Đăng ký làm mentor
Mô tả Người dùng đã có tài khoản muốn đăng ký làm mentor
Tác nhân Mentee Điều kiện Phải có kết nối mạng Đã đăng nhập vào hệ thống Điều kiện kết quả Tạo một đơn đăng ký làm mentor, chờ admin duyệt
Dòng sự kiện chính 1 Click vào nút đăng ký làm mentor ở trang chủ hoặc trang dashboard
2 Hiển thị popup form đăng ký 3.Điền thông tin
4 Click vào nút đnawg ký Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Hiển thị lỗi khi người dùng nhập thông tin không hợp lệ hoặc chưa cập nhật profile theo điều kiện tối thiểu
Bảng 3.5: Mô tả usecase đăng ký làm mentor
Tên usecase Tìm kiếm mentor
Mô tả Cho phép người dùng tìm kiếm mentor một cách dễ dàng và thuận lợi, hoạt động như một công cụ giúp lọc và hiển thị những mentor tương ứng với từ khóa và bộ lọc
Tác nhân Mentee, mentor, người dùng vãng lai Điều kiện Phải có kết nối mạng
23 Điều kiện kết quả Hiển thị các mentor phù hợp với thông tin tìm kiếm
Dòng sự kiện chính 1.Nhập thông tin, chọn bộ lọc ở thanh tìm kiếm trong trang chủ
3 Hiển thị danh sách mentor Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.6: mô tả usecase tìm kiếm mentor
Tên usecase Xem hồ sơ mentor
Mô tả Cho phép người dùng xem thông tin chi tiết của 1 mentor Tác nhân Mentee, mentor, người dùng vãng lai Điều kiện Phải có kết nối mạng Điều kiện kết quả Hiển thị đầy đủ thông tin mentor trên màn hình hồ sơ
Dòng sự kiện chính 1 Chọn nút “Xem chi tiết” trên bất kỳ màn hình nào có các item hiển thị thông tin về mentor đó
2 Hiển thị trang thông tin chi tiết của mentor
Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.7: mô tả usecase xem hồ sơ mentor
3.2.2.7 Xem chi tiết chương trình cố vấn
Tên usecase Xem chi tiết chương trình cố vấn
Mô tả Cho phép người dùng xem thông tin chi tiết của một chương trình do mentor tạo ra Tác nhân Mentee, mentor, người dùng vãng lai Điều kiện Phải có kết nối mạng Điều kiện kết quả Hiển thị đầy đủ thông tin chi tiết của chương trình cố vấn
Dòng sự kiện chính 1 Chọn vào nút “Xem ngay” của chương trình mentor được hiển thị trên màn hình hồ sơ Mentor
2 Hiển thị trang thông tin chi tiết của chương trình mentor
Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.8: mô tả usecase xem chương trình cố vấn
3.2.2.8 Đăng ký phiên cố vấn với mentor
Tên usecase Đăng ký phiên cố vấn
Mô tả Cho phép mentee gửi yêu cầu để đặt lịch cho một phiên cố vấn với Mentor
Tác nhân Mentee, mentor Điều kiện Phải có kết nối mạng Đăng nhập vào hệ thống Đang ở trang xem chi tiết phiên cố vấn hoặc ở trang hồ sơ mentor Điều kiện kết quả Hiển thị phiên cố vấn chờ duyệt
Dòng sự kiện chính 1 Nhấn nút đăng ký ở trên trang cố vấn
2 Nhấn nút đăng ký Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Nếu thông tin nhập vào không đúng yêu cầu thì sẽ hiển thị thông báo lỗi và yêu cầu người dùng nhập lại
Bảng 3.9: mô tả usecase đăng ký phiên cố vấn
3.2.2.9 Hủy đăng ký phiên cố vấn với mentor
Tên usecase Hủy đăng ký phiên cố vấn
Mô tả Cho phép mentee, mentor hủy đặt lịch một phiên
Tác nhân Mentee, mentor Điều kiện Phải có kết nối mạng Đăng nhập thành công vào hệ thống Mentee đã đăng ký chương trình cố vấn Điều kiện kết quả Hiển thị thông báo hủy lịch thành công và trạng thái của phiên cố vấn chuyển thành “Đã hủy”
Dòng sự kiện chính 1 Vào trang xem chi tiết phiên cố vấn
2 Nhấn nút hủy lịch Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.10: mô tả usecase hủy đăng ký phiên
3.2.2.10 Xác nhận hoàn thành phiên cố vấn
Tên usecase Xác nhận hoàn thành phiên cố vấn
Mô tả Cho phép mentee xác nhận phiên cố vấn đã hoàn thành
Tác nhân mentee Điều kiện Phải có kết nối mạng Đăng nhập thành công vào hệ thống Người dùng đã được mentor chấp nhận phiên cố vấn và quá trình mentoring đã diễn ra trên thực tế và hoàn thành Điều kiện kết quả Hiển thị thông báo xác nhận thành công và trạng thái phiên cố vấn trở thành hoàn thành
Dòng sự kiện chính 1 Vào trang dashboard
2 Chọn vào nút “Phiên cố vấn”
3 Chọn vào nút “Hoàn thành” ở phiên cố vấn đã hoàn thành xong
4 Hiển thị thông báo xác nhận hoàn thành
6 Hiển thị thông báo phiên cố vấn đã hoàn thành xong Dòng sự kiện phụ Chọn vào nút “Hủy” để từ chối xác nhận hoàn thành phiên cố vấn Dòng sự kiện lỗi Không có
Bảng 3.11: Xác nhận hoàn thành phiên cố vấn
3.2.2.11 Đánh giá phiên cố vấn
Tên usecase Đánh giá phiên cố vấn
Mô tả Cho phép mentee thực hiện đánh giá phiên cố vấn đã hoàn thành
Tác nhân mentee Điều kiện Phải có kết nối mạng Đăng nhập thành công vào hệ thống Mentee đã chọn hoàn thành phiên cố vấn tương ứng Điều kiện kết quả Thực hiện đánh giá mentor thành công
Dòng sự kiện chính 1 Vào trang dashboard
2 Chọn nút “Phiên cố vấn”
3 Chọn nút “Đánh giá” tại các phiên cố vấn đã hoàn thành
4 Chọn số sao đánh giá
5 Nhập bình luận đánh giá
7 Hệ thống hiển thị kết quả đánh giá thành công và thay đổi trạng thái của phiên cố vấn
Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.12: mô ta usecase đánh giá phiên cố vấn
3.2.2.12 Nạp xu qua ngân hàng
Tên usecase Nạp xu qua ngân hàng
Mô tả Cho phép mentee thực hiện nạp xu vào hệ thống thông qua ngân hàng
Tác nhân Mentee, mentor Điều kiện Phải có kết nối mạng Đăng nhập thành công vào hệ thống Điều kiện kết quả Số dư xu tăng lên đúng số xu đã nạp
Dòng sự kiện chính 1 Chọn vào biểu tượng hiển thị số dư xu
2 Chọn vào nút “Nạp token”
3 Chọn hình thức nạp tiền qua ngân hàng hoặc ví điện tử
4 Nhập thông tin số xu cần nạp, ghi chú
5 Chọn nút “Thanh toán” để gửi yêu cầu thanh toán đến hệ thống
6 Hiển thị các thông tin thanh toán để người dùng thực hiện thanh toán
7 Số dư xu cộng thêm số xu tương ứng Dòng sự kiện phụ Không có
Dòng sự kiện lỗi Không có
Bảng 3.13: mô tả use case Nạp xu qua ngân hàng
3.2.2.13 Duyệt phiên cố vấn của mentee
Tên usecase Duyệt phiên cố vấn của mentee
Mô tả Cho phép mentor xem xét và kiểm duyệt các phiên cố vấn của mentee
Tác nhân Mentor Điều kiện Phải có kết nối mạng Đã đăng nhập thành công vào hệ thống Mentee đã gửi yêu cầu tham gia phiên cố vấn do mentor này tổ chức Điều kiện kết quả Hiển thị thông báo kiểm duyệt thành công và trạng thái phiên cố vấn chuyển thành “Đã xác nhận”
Dòng sự kiện chính 1 Vào trang dashboard
2 Chọn vào tab “Phiên cố vấn”
3 Hiển thị danh sách các phiên cố vấn
5 Hệ thống gửi thông báo chấp nhận và thay đổi trạng thái giao dịch sang thành công
Dòng sự kiện phụ Hệ thống gửi thông báo cho mentee
Dòng sự kiện lỗi Không có
Bảng 3.14: mô tả use case duyệt phiên cố vấn
3.2.2.14 Tạo nội dung cố vấn
Tên usecase Tạo nội dung cố vấn
Mô tả Cho phép mentor cung cấp nội dung cố vấn, bao gồm: tiêu đề, mô tả chi tiết, thời gian bắt đầu, link meeting)
Tác nhân Mentor Điều kiện Phải có kết nối mạng Đăng nhập thành công vào hệ thống Xác nhận phiên cố vấn được đăng ký bởi mentee Điều kiện kết quả Hiển thị danh sách các nội dung sẽ cố vấn
Dòng sự kiện chính 1 Vào trang dashboard
2 Chọn vào tab “Phiên cố vấn”
3 Hiển thị danh sách các phiên cố vấn
4 Chọn vào thẻ “Nội dung”
5 Chọn nút “Tạo nội dung”
6 Nhập các thông tin cần thiết
8 Hiển thị thông báo tạo nội dung cố vấn thành công Dòng sự kiện phụ Hệ thống gửi thông báo cho mentee
Dòng sự kiện lỗi Nếu thông tin nhập vào không hợp lệ sẽ hiển thị thông báo lỗi và yêu cầu người dùng nhập lại
Bảng 3.15: mô tả use case Tạo nội dung cố vấn
3.2.2.15 Quản lý chương trình cố vấn
Tên usecase Quản lý chương trình cố vấn
Mô tả Cho phép xem và chỉnh sửa các chương trình cố vấn của mình