# Travel Itinerary ##### tags: `project` `nodejs` > Bài viết này sẽ phân tích cơ bản các chức năng và cấu trúc có trong đồ án của môn học **Thiết kế phần mềm** có tên gọi **Travel Itinerary**. ::: warning Toàn bộ giao diện dành cho người dùng là Tiếng Việt ::: ## Mô hình phần mềm Phần mềm sẽ sử dụng mô hình ==Model View Controller== (MVC). ![mô hình mvc](https://hoclamgiau.com.vn/wp-content/uploads/2019/12/mvc-l%C3%A0-g%C3%AC.png) ## Phân hệ người dùng Ứng dụng gồm các loại người dùng như sau: 1. Admin 2. Contributor 3. User 4. Guest Tương ứng với mỗi loại người dùng sẽ có các quyền khác nhau. ## 1. Phân hệ người dùng nặc danh - <span style="color: red">Guest</span> ### 1.1. Trang chủ - [ ] Hiển thị những khu vực hot nhất *(nhiều plan nhất)* - [ ] Hiển thị những plan được nhiều người xem nhất ### 1.2. Tìm kiếm - [ ] Tìm kiếm thông tin một địa điểm - [ ] Tìm kiếm thông tin một khu vực - [ ] Tìm kiếm một lịch trình của người dùng khác ::: success Sử dụng kĩ thuật <span style="color: red;">full-text search</span> để tìm kiếm ::: ### 1.3. Đăng ký Người dùng đăng ký tài khoản để có thể sử dụng các chức năng khác. Nên có xác thực email bằng OTP. ### 1.4. Đăng nhập Đăng nhập sử dụng: - [x] Tài khoản có sẵn - [x] Google ## 2. Phân hệ người dùng cơ bản - <span style="color: red">User</span> Người dùng cơ bản có các tính năng bao gồm <span style="color: green">Trang chủ và Tìm kiếm</span>. ### 2.1. Lịch trình - [ ] Người dùng chọn thời gian và khu vực, số lượng người từ đó tạo lịch trình tại khu vực đó - [ ] Cho phép chỉnh sửa lịch trình - [ ] Lịch trình tự động lưu vào trong profile - [ ] Gợi ý chuyến bay, nơi ở - [ ] Gửi feedback về lịch trình - [ ] Chọn các filter gồm những hoạt động muốn đi và không muốn đi. - [ ] Nếu không đủ địa điểm để lập thành một plan thì thông báo cho người dùng ### 2.2. Xem chi tiết một khu vực - [x] Danh sách các địa điểm tại khu vực đó - [ ] Bản đồ khu vực có đánh dấu các địa điểm - [x] Giới thiệu - [x] Hình ảnh minh họa - [ ] Gợi ý những khu vực khác (bao gồm các hoạt động tương tự) - [x] Đánh giá một khu vực ### 2.3. Xem chi tiết một địa điểm - [ ] Bản đồ khu vực có đánh dấu các địa điểm - [x] Giới thiệu - [x] Hình ảnh minh họa - [x] Số lượng chuyến đi tại địa điểm này - [ ] Gợi ý những địa điểm khác có hoạt động tương tự - [x] Đánh giá một địa điểm - [x] Địa điểm có còn mở cửa hay không (disable/available) - [x] Thời gian mở/đóng cửa - [x] Thời gian vui chơi thích hợp cho địa điểm đó (mins) ### 2.4. Quản lý thông tin cá nhân - [x] Thay đổi email - [x] Thay đổi mật khẩu - [x] Cập nhập thông tin cá nhân (dob/fullname) ::: success Cần phải xác nhận lại email mỗi khi người dùng thay đổi ::: ## 3. Người đóng góp - <span style="color: red">Contributor</span> ## 4. Phân hệ người quản lý - <span style="color: red">Admin</span> :::info ==Quản lý== bao gồm các thao tác sau: 1. Xem danh sách 1. Xem chi tiết 1. Thêm 1. Xoá 1. Cập nhật 1. Và các thao tác chuyên biệt khác ::: ### 4.1 Quản lý khu vực - Các chức năng ==quản lý== cơ bản - Không được xoá lĩnh vực đã có địa điểm ### 4.2 Quản lý địa điểm - Gỡ bỏ đại điểm ### 4.3 Quản lý danh sách người dùng và người đóng góp - Các chức năng ==quản lý== cơ bản :::warning - Tài khoản user có được từ chức năng đăng ký tài khoản - Tài khoản contributor do ban quản trị cung cấp :::