Chương 1: Kiến thức nền tảng Trong phần này sẽ đề ra các nền tảng tổng quan được áp dụng trong khóa luận, bao gôm các công nghệ, thư viện. Chương 2: Phân tích và thiết kế hệ thống 20 Chương này sẽ bao gồm các mô tả chỉ tiết về hệ thống từ kiến trúc đến các thành phan usecase, các sơ đồ tuần tự hay sơ đồ hoạt động được sử dụng dé hình thành nên ứng dụng. Ngoài ra còn có các thiết kế về UX/UI hay thiết kế về CSDL cũng được nêu ra trong phần này. Chương 3: Hệ thống quản lý multi tenant Chương nay sẽ bao gồm các mô tả chi tiết về hệ thống quản lý mô hình da người thuê, đồng thời diễn giải về kiến trúc và các công nghệ được dùng cho việc quản lý và triển khai hệ thống cho bên thuê mới.
Chương 4: Hệ thống tra cứu văn bản pháp quy Chương này sẽ diễn giải về hệ thống tra cứu luật dựa trên bài báo khoa học đã được công bó. Tổng kết: Đánh giá và nghiệm thu kết quả. CÔNG NGHỆ SU DUNG 1. Ngôn ngữ lập trình 1.
Java Lý do sử dụng: e Đơn giản và dé học e© Đanên tảng e Bảo mật e Thu viện lớn e_ Hỗ trợ đa luồng e_ Cộng đồng và tài liệu phong phú Trong phạm vi khoá luận, Java được dùng cho việc lập trình framework SpringBoot. Kotlin Lý do sử dụng: e_ Cú pháp súc tích và dé hiểu, giảm số lượng mã nguồn so với Java e Tương thích ngược với Java e An toàn và bảo mat e Tích hợp lập trình hướng chức năng e_ Cộng đồng và tài liệu phát triển Trong phạm vi khoá luận, Kotlin được dùng cho việc lập trình ứng dụng Android. Python Lý do sử dụng: e Cú pháp đơn giản và dễ đọc e Hỗ trợ đa nén tang e_ Cộng đồng lớn và tài liệu phong phú e Hỗ trợ OOP giúp tái sử dụng dễ dàng. Trong phạm vi khoá luận, Python được dùng cho việc lập trình framework FastAPI.
JavaScript Ly do su dung: e Tính tương tác và phản hồi e Độ linh hoạt cao 22 e Thư viện phong phú e H6 trợ tích hợp và tương tác với HTML, CSS, JSON va RESTful API,. Trong phạm vi khoá luận, JavaScript được dùng cho việc lập trình framework ReactJs và NestJs. Android Trong dé tài nay, ứng dụng dành cho tài xế sẽ được chạy trên nền tang Android nhằm tận dụng framework mạnh mẽ của Android. Trong đồ án này còn sử dụng thêm thư viện Google Maps dé hỗ trợ theo dõi vị trí phương tiện vận chuyền.
Spring Boot Spring boot sử dụng tích hợp Spring Data JPA, một công nghệ trên nền tảng ORM và Hibernate cho phép tạo các database tự động với nhiều kiểu database phù hợp cho việc thay đổi CSDL sau này. Hon thé, Spring boot còn hỗ trợ: e Kiến trúc hệ thống rõ ràng, dé dàng tiếp cận. e Hé sinh thái xoay quanh Spring Boot: o Giảm bớt việc phải viết lớp DAO. o Có thé dé dang custom các câu truy vấn.
o Dê dàng tạo kết nôi với server sử dụng Java config. Chúng tôi sử dung Spring Boot framework dé phát triển phan lớn các service liên quan đên nghiệp vụ vận tải. FastAPI Một trong các framework mới và mạnh mẽ của Python FastAPI là một lựa chọn tuyệt vời dé phát trién RESTful API bằng ngôn ngữ Python bởi tính nhanh gon và tiện lợi như chính cái tên của nó. FastAPI đã tích hợp cực tốt với Swagger từ đó cung cấp một khả năng phát triển API nhanh, đầy đủ tính năng và chuẩn OpenAPI.
Hệ sinh thái xoay quanh FastAPI cũng hỗ trợ rất tốt bao gồm các nguồn tài liệu và bảo mật API bằng cách tích hợp với JWT. Chúng tôi sử dụng FastAPI framework dé phát triển service phụ trách xác thực và phân quyền. NestJs NestJS là một framework phát trién ứng dụng web dựa trên Node. Nó được xây dựng trên cơ sở của TypeScript và sử dụng các khái niệm từ Angular để xây dựng các ứng dụng server-side hiệu quả và dé bảo trì.
Nó cung cấp các tính năng như dependency injection, module-based architecture, decorators và các công cu phát triển mạnh mẽ khác đề tăng hiệu suất và sự linh hoạt trong quá trình phát triển. Với NestJS, ta có thê xây dựng các ứng dụng web RESTful, gRPC, Graphquan lý và cả ứng dụng thời gian thực. Nó cũng hỗ trợ kết nối với CSDL bằng ORM (Object-Relational Mapping) như TypeORM và Sequelize. NestJS cung cấp một cộng đồng lớn và sự hỗ trợ đa dạng từ cộng đồng phát triển.
Nó được coi là một framework mạnh mẽ, đáng tin cậy và phù hợp cho việc xây dựng ứng dụng web đa nền tảng trong môi trường Node. Chúng tôi sử dụng NestJs framework để phát triển service phụ trách quan lý hệ thống multi tenant. ReactJs ReactJS là một framework JavaScript phố biến được phát triển bởi Facebook. Nó được sử dụng rộng rãi để xây dựng UI động và tương tác trong các ứng dụng web.
ReactJS cũng có cộng đồng lớn mạnh, cung cấp nhiều thư viện và công cụ. Nó cũng được tích hợp với Redux để quan lý trạng thái UI. ReactJS là lựa chọn phổ biến dé phát trién ứng dụng web đa nền tang. Chúng tôi sử dụng ReactJs framework để phát triển UI cho các ứng dụng Web.
PostgreSquan lý PostgreSquản lý là một hệ quản trị CSDL quan hệ mã nguồn mở pho biến. PostgreSquản lý có nhiều tính năng cao cấp, bao gồm hỗ trợ đa người dùng, giao dịch ACID (Atomicity, Consistency, Isolation, Durability), chuỗi công cụ quản lý và truy vấn mạnh mẽ. Nó cũng hỗ trợ nhiều kiểu dữ liệu như số nguyên, số thực, chuỗi, ngày tháng và các kiểu dữ liệu đặc biệt khác. PostgreSquan lý cung cấp một ngôn ngữ truy van mạnh mẽ là Squản lý dé truy vấn và chỉnh sửa dữ liệu.
Nó cũng hỗ trợ các tính năng mở rộng như các chức năng do người dùng định nghĩa, chỉ mục không gian và các phần mở rộng bên ngoài. Nó được sử dụng trong các ứng dụng doanh nghiệp và hệ thống quan trọng, đặc biệt là trong các môi trường cần bảo đảm về đồng thời truy cập và khả năng chịu lỗi. Tóm lai, PostgreSquan lý là một hệ quản trị CSDL mạnh mẽ, được ưa chuộng trong cộng đồng. MongoDB MongoDB là một hệ quản trị CSDL phi quan hệ (NoSquản lý) với dữ liệu không có câu trúc rõ ràng và mở rộng dê dàng.
Điều này cho phép tương tác các dit liệu có cau trúc khác nhau mà không cần tuân thủ một cấu trúc cô định. Với MongoDB, bạn có thé lưu trữ phân tán trên nhiều máy chủ. Nó hỗ trợ các truy van linh hoạt và mạnh mẽ, bao gồm truy van tìm kiêm, truy vân theo điêu kiện, truy vân theo phạm vi và nhiêu hơn nữa. MongoDB cũng cung cấp các tính năng như replica set (bộ sao chép) dé đảm bảo khả năng cao và sao lư, và sharding nhằm phân tán dữ liệu trên nhiều máy chủ.
Với khả năng mở rộng, MongoDB phù hợp với cấu trúc dữ liệu thay đổi thường xuyên và có yêu câu về mở rộng. Docker Docker là một công cụ ảo hoá cho việc đóng gói và triên khai các ứng dụng trong một môi trường độc lập và cô lập gọi là container. Containers cho phép ban đóng gói tất cả phụ thuộc và cài đặt cần thiết vào một gói duy nhất. Docker giúp quan lý và triển khai các container, bao gồm Docker Compose dé định nghĩa và quản lý nhiều container cùng lúc.
Tóm lại, Docker là một công nghệ ảo hóa nhẹ, dễ sử dụng và tiêu chuẩn hóa, cho phép bạn đóng gói và chạy các ứng dụng trong các container độc lập. Nó giúp tạo ra môi trường phát triển, thử nghiệm và triển khai nhất quán, đồng thời cung cấp tính di động cho ứng dụng của bạn. Chúng tôi sử dụng Docker dé đóng gói các ứng dụng nhằm phục vụ cho mục đích deploy và triển khai hệ thống multi tenant. THIẾT KE HE THONG 2.
Thiết kế hệ thống Ở phần này, sẽ là phân tích và thiết kế hệ thống từ usecase đến sơ đồ lớp, sơ đồ trình tự, sơ đồ tiến trình, sơ đồ triển khai hay thiết kế về UX/UI, CSDL của khoá luận. Use-case view Bên dưới bao gồm hình ảnh cho thiết kế sơ đồ use-case và Diễn giải chỉ tiết từng use-case, tác nhân của use-case. So đồ use-case (Use-case diagram) (a) Sơ đồ bên phía người quan lý vận tai iy vy _ ili Quan ty hàng hoá `. Guan lý phương tie vận tải tdude>> ii ‘Quan lý đơn hàng vận tải <cinclude>>c==~~~~~~~=~~-F: tải} -- -- - ---~*==~ vận g (Xem thkêốn = => yy Hình 2-1.
So đồ use-case bên phía người quản lý vận tải *Chú thích: Use-case quan lý bao gồm 4 chức năng (tao, xem danh sách, tim kiêm, xoá, sửa) 27 (b) Sơ đồ bên phía tài xế <<include>> Chọn đơn hàng Thay đổi trạng thái vận chuyển Theo dõi trạng thái Đăng nhập vận chuyển Tài xế Xác nhận trạng thái phương tiện Xem lịch sử đơn hàng Hình 2-2. Sơ đồ use-case bên phía tài xế (c) Sơ đồ bên phía quan lý hệ thống multi tenant ¬ Xem danh sách <<include>> tenant Crmtenant ) ¬sdincuder> lt is Quan ly hé théng Xem thông tin tenant <<include>> Đăng nhập. x multi tenant Cap nhat trang thai <<include>> tenant ` Hình 2-3. Sơ đồ bên phía quản lý hệ thống multi tenant 28 2.
Danh sách tác nhân ID Tên tác nhân Diễn giải ; La những người quan lý các nghiệp vu van tải 1 quản lý vận tải , (đơn hang, phương tiện, tuyên đường, .) " Là người sử dụng ứng dụng Android để thao 2 Tài xê ; tac đơn hàng và phương tiện. 3 quản lý hệ thống multi | Là người quản lý hệ thống, infrastructure va tenant dịch vụ của các bên thuê 2. Danh sách use-case Tác nhân Use-case Diễn giải Tác nhân có quyền truy cập vào hệ Đăng nhập thống thông qua số điện thoại và mật khâu Tác nhân có quyền đăng ký tài Đăng ký khoản bằng số điện thoại Quản lý vận tải ; Tác nhân có quyền quản lý thông Quan ly nhan vién tin nhân viên Quản lý địa điểm giao, Tác nhân có quyền quản lý thông nhận tin địa diém giao, nhận Tác nhân có quyền quan lý thông Quan ly garage tin garage 29 Tác nhân có quyền quản lý thông Quản lý tuyến đường tin tuyến đường Tác nhân có quyền quản lý thông Quản lý hàng hoá tin hàng hoá Quản lý phương tiện vận Tác nhân có quyền quản lý thông tải tin phương tiện van tải Tác nhân có quyền quản lý thông Quản lý đơn hàng vận tải tin đơn hàng vận tải Tác nhân có quyên xem thông kê Xem thống kê vận tải chi tiét vê doanh thu của các đơn hàng theo từng mục Tác nhân có quyên đăng nhập vào Đăng nhập hệ thông bằng số điện thoại và mật khẩu.