- 18120144 - Nguyễn Đình Thiên Phúc
- 18120606 - Trần Thị Trang
- 18120609 - Hồ Khắc Minh Trí
- 18120634 - Nguyễn Lê Anh Tuấn (Nhóm trưởng)
- Management System: https://cp-management.herokuapp.com
- Payment System: https://cp-payment.herokuapp.com
-
Server: NodeJS, ExpressJS MVC
-
View Engine (Template Engine): Pug
-
Dependencies:
-
Frontend:
- Boostrap v4.6.1 - Static File
- Jquery v3.6 - Static File
- Bootstrap Icon v1.7.0 - CDN
- Popper.js - Static File
-
Backend:
- NodeJs framework - ExpressJs v4.17.1
- Read, write cookie - Cookie-parser v1.4.6
- Connect PostgreSQL database
- Rest API - Axios 0.24.0
- Read env file - dotenv v10.0.0
- View engine - Pug v3.0.2
- Encrypt password - bcryptjs v2.4.3
- Upload photo - cloudinary v1.27.1
- Server logging - Morgan v1.10.0
- Hot reload - nodemon (devDep)
-
-
Database: PostgreSQL
-
Môi trường phát triển:
-
Team work:
- Slack
- Github, Github Project
-
Cloud, Hosting
- Hosting: Heroku.
- PostgreSQL DB Cloud: ElephantSQL.
- Photo Cloud: Cloudinary.
- Dùng IDE là
Visual Studio Code
. - Format với
Prettier
extension. - Tên file, folder là các chữ viết thường, cách nhau bằng dấu
-
(nếu có nhiều từ) - Consistent coding với
Editor Config
extension. - Tên bảng trong database và model là
PascalCase
- Tên thuộc tính trong bảng (model), tên biến, hàm là
camelCase
- Không sử dụng hard code (magic number - là những chuỗi hoặc con số cứng). Hãy đặt nó trong
constants
. - Đặt tên file đi kèm với tên module của nó (bỏ
s
), trừ views và public. Ví dụ (name.controller.js, name.route.js) - Pull code trước khi push (báo conflict cho team nếu nó quá phức tạp).
- Kiểm tra các template, mixin, helper trước khi code 1 chức năng (nhằm tái sử dụng lại chức năng).
- Cố gắng tách các module, mixin nếu có thể.
- Dùng async / await (nếu không bắt buộc phải dùng Promise).
- dùng
exports.funcName
để export ra một module (nhầm dễ tìm định nghĩa hàm). - Đặt kiểu method trước mối hàm của controller. Ví dụ
getController, postController
. - Lưu đặt
try catch
trong controller để bắt lỗi (hoặc trong những hàm có connect DB). Log lỗi kèm với tên hàm.
Xây dựng ứng dụng “Quản lý thông tin Covid-19” gồm 2 hệ thống với các chức năng sau:
-
Khi chương trình khởi động thì cần yêu cầu đăng nhập. Tùy thuộc vào phân quyền của tài khoản mà mở màn hình với các chức năng thích hợp.
-
Nếu Hệ thống khởi tạo lần đầu tiên thì cần cho phép tạo tài khoản admin.
-
Nếu là tài khoản của Người được quản lý đã có trong hệ thống nhưng chưa từng đăng nhập thì yêu cầu tạo password.
- Người liên quan Covid-19 bao gồm các thông tin cơ bản sau:
- Họ tên
- Số CMND / Căn cước công dân
- Năm sinh
- Địa chỉ nơi ở (Tỉnh / Thành phố, Quận / Huyện và Phường / Xã)
- Trạng thái hiện tại (F0 / F1 / F2 / F3)
- Nơi đang điều trị / cách ly (cơ sở điều trị / cách ly).
- Có liên quan với Người liên quan Covid-19 nào.
- Lịch sử quá trình được quản lý (thay đổi trạng thái, chuyển nơi điều trị,…).
- Hiển thị danh sách
- Xem chi tiết thông tin của người liên quan bao gồm danh sách người liên đới.
- Tìm kiếm
- Sắp xếp theo nhiều tiêu chí.
- Form thêm với đầy đủ thông tin cần thiết
- Có validation đầy đủ
- Chuyển trạng thái cần thiết như: F2 -> F1, F2 -> F0,… với các thông tin phù hợp (người liên quan phải thay đổi trạng thái theo).
- Chuyển nơi điều trị / cách ly (ràng buộc về sức chứa).
-
Sản phẩm nhu yếu phẩm gồm các thông tin cơ bản
- Tên sản phẩm
- Hình ảnh sản phẩm (nhiều hình)
- Giá tiền
- Đơn vị định lượng
-
Hiển thị danh sách
-
Tìm kiếm, Sắp xếp, Lọc
-
Thêm, xóa, sửa (luôn kiểm tra ràng buộc)
-
Gói Nhu yếu phẩm gồm các thông tin cơ bản sau:
- Tên gói
- Danh sách các sản phẩm trong gói (tối thiểu 2 sản phẩm)
- Mức giới hạn số lượng mỗi sản phẩm trong gói
- Mức giới hạn gói cho mỗi người theo thời gian
- Thời gian giới hạn (ngày, tuần, tháng)
-
Hiển thị danh sách
-
Xem chi tiết: có thể xem chi tiết mỗi sản phẩm trong gói
-
Tìm kiếm, sắp xếp, lọc
-
Thêm, xóa, sửa (luôn kiểm tra ràng buộc)
- Thống kê số lượng người ở từng trạng thái theo thời gian.
- Thống kê các thông tin có thể như: số chuyển trạng thái, khỏi bệnh,…
- Thống kê tiêu thụ các gói Nhu yếu phẩm
- Thống kê tiêu thụ sản phẩm
- Thống kê dư nợ, thanh toán
- Thay đổi hạn mức thanh toán tối thiểu
- Duyệt danh sách và gửi thông báo nhắc thanh toán
- Tạo tài khoản người quản lý với xử lý password lưu trữ hợp lý (không lưu trữ password bản rõ trong database).
- Chỉ cần thông tin username, password và phân quyền.
- Khóa tài khoản.
- Xem lịch sử hoạt động của tài khoản.
- Thêm mới, điều chỉnh.
- Địa điểm điều trị / cách ly chỉ cần thông tin Tên, Sức chứa và Số lượng tiếp nhận hiện tại.
- Các thông tin cơ bản
- Lịch sử được quản lý
- Lịch sử tiêu thụ gói Nhu yếu phẩm
- Xem dư nợ
- Lịch sử thanh toán
- Thông báo nhắc thanh toán (nếu có)
- Chỉ cho thay đổi mật khẩu (quy trình hợp lý)
- Liên kết sang Hệ thống thanh toán để nạp tiền
- Xem danh sách các gói Nhu yếu phẩm
- Tìm kiếm, sắp xếp, lọc
- Thay đổi số lượng sản phẩm trong gói (trong phạm vi ràng buộc)
- Chọn mua gói Nhu yếu phẩm (có kiểm tra các ràng buộc).
- Thanh toán dư nợ theo hạn mức tối thiểu (có kiểm tra số dư từ Hệ thống thanh toán
- Liên kết sang Hệ thống thanh toán để nạp tiền
- Hệ thống khởi tạo với 1 tài khoản chính để nhận thanh toán từ Người được quản lý.
- Tài khoản chỉ gồm ID và số dư hiện tại.
- Thiết kế database để hệ thống thực hiện được chức năng thanh toán (chuyển khoản) từ các tài khoản Người được quản lý sang tài khoản chính.
- Cần có chức năng thêm tài khoản cho Người được quản lý mới (tương ứng khi được đưa vào hệ thống quản lý).
- Khi người dùng đã được tạo tài khoản, đăng nhập lần đầu sẽ yêu cầu tạo mật khẩu (có chức năng thay đổi mật khẩu với quy trình hợp lý)
- Chức năng nạp tiền, kiểm soát số dư
- Cần có giải pháp để có thể đối soát giao dịch thanh toán
- Sử dụng WebAPI
- Cần đề xuất quy trình hợp lý.
- Cần có sẵn ít nhất 5 Tỉnh thành, mỗi Tỉnh thành có ít nhất 5 Quận / Huyện, mỗi Quận / Huyện có ít nhất 5 Phường / Xã (tên không cần chính xác thực tế).
- Cần có sẵn ít nhất 5 điểm điều trị / cách ly.
- Chỉ hoàn thành đúng các chức năng được yêu cầu.
- Tuân thủ nghiêm ngặt các yêu cầu nộp bài (sẽ có thông báo cụ thể)