Skip to content

toilact/CourierDeliveryManagementSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📦 Hệ thống Quản lý Giao hàng (Courier Delivery Management System - CDMS) v2.0

Java Maven Gson N-Tier

CDMS là một ứng dụng Java dòng lệnh (Console-based) toàn diện, sẵn sàng cho môi trường thực tế, được thiết kế để quản lý toàn bộ quy trình vận hành của một dịch vụ chuyển phát nhanh hiện đại. Dự án được xây dựng với sự tuân thủ nghiêm ngặt các nguyên lý Lập trình hướng đối tượng (OOP), Clean Architecture (Kiến trúc sạch), và các nguyên lý SOLID, cung cấp cơ chế kiểm tra logic nghiệp vụ mạnh mẽ, xử lý máy trạng thái (state machine), và bộ nhớ đệm (in-memory caching) cực nhanh kết hợp lưu trữ dữ liệu dưới dạng JSON.


✨ Tính năng nổi bật

  • 🛡️ Kiến trúc vững chắc (Bulletproof Architecture): Thiết kế N-Tier nghiêm ngặt phân tách rõ ràng các lớp Dữ liệu (Data), Nghiệp vụ (Business), và Hiển thị (Presentation).
  • ⚡ Lưu trữ và Đệm dữ liệu trong bộ nhớ (In-Memory Data Grid): Sử dụng LinkedHashMap cho các thao tác CRUD với độ phức tạp O(1). Dữ liệu được tự động lưu xuống file JSON không đồng bộ thông qua JVM Shutdown Hooks, đảm bảo không bị nghẽn cổ chai I/O khi ứng dụng đang chạy.
  • 🔄 Máy trạng thái hữu hạn (FSM): Chuyển đổi trạng thái có tính xác định cho Đơn hàng (PENDING → PICKED_UP → IN_TRANSIT → DELIVERED) và Hóa đơn (UNPAID → PARTIALLY_PAID → PAID).
  • 🧬 Đa hình nâng cao (Advanced Polymorphism): Tùy biến Gson RuntimeTypeAdapterFactoryLocalDateTimeAdapter để tuần tự hóa/giải tuần tự hóa (serialize/deserialize) mượt mà các cây kế thừa phức tạp (ví dụ: phân biệt DocumentParcelGoodsParcel).
  • 📊 Phân tích & Chỉ số KPI thời gian thực: Tự động xếp hạng những Người gửi hàng hàng đầu (Top-Shipper leaderboards) dựa trên hiệu suất giao hàng.
  • 💸 Quản lý thanh toán mạnh mẽ: Hỗ trợ xử lý thanh toán từng phần, tự động xuất hóa đơn (chỉ áp dụng cho các đơn hàng đã chuyển trạng thái DELIVERED), và theo dõi doanh thu chính xác.
  • 🚀 Trải nghiệm người dùng Fail-Fast: Giao diện dòng lệnh (CLI) tương tác thông minh, tự động điều chỉnh các bước chuyển trạng thái hợp lệ và kiểm tra dữ liệu đầu vào ngay lập tức.

🏗 Cấu trúc dự án

src/main/java/com/courier/
├── exceptions/         # Các ngoại lệ tùy chỉnh của domain (ví dụ: DuplicateIdentifierException)
├── models/             # Thực thể domain (Domain entities) và Enum (OrderStatus, InvoiceStatus)
├── repositories/       # Giao diện lưu trữ bộ nhớ và ánh xạ dữ liệu JSON (In-memory storage & JSON mapping)
├── services/           # Logic nghiệp vụ, quy tắc FSM, và kiểm tra tính hợp lệ (validations)
├── ui/                 # Giao diện CLI tương tác với lớp định dạng ConsoleTableFormatter
├── utils/              # Các tiện ích I/O, kiểm tra định dạng regex, và Gson adapter
└── Main.java           # Điểm khởi chạy ứng dụng (Entry Point)

🚀 Hướng dẫn bắt đầu

Yêu cầu hệ thống

  • JDK 17 trở lên
  • Apache Maven 3.8+

Cách chạy ứng dụng (Khuyến nghị)

Sao chép (clone) kho lưu trữ và chạy các lệnh sau từ thư mục gốc của dự án:

# Dọn dẹp và biên dịch dự án
mvn clean compile

# Chạy ứng dụng với menu tương tác
mvn exec:java -Dexec.mainClass="com.courier.Main"

Lưu ý: Khi thoát ứng dụng bằng tùy chọn 0. Thoat, hệ thống sẽ kích hoạt một shutdown hook để lưu trữ an toàn toàn bộ dữ liệu từ bộ nhớ RAM vào thư mục data/*.json.

Chạy các bộ kiểm thử (Test Suites)

Dự án đi kèm với các bộ kiểm thử tùy chỉnh siêu nhẹ, bao phủ 100% của 20 Quy tắc Nghiệp vụ (BR1-BR20) mà không cần phụ thuộc vào các khung kiểm thử bên ngoài như JUnit:

# Chạy Smoke Test cho tầng Repository (Kiểm tra lưu trữ & I/O)
mvn exec:java -Dexec.mainClass="com.courier.repositories.RepositorySmokeTest"

# Chạy Test Suite cho tầng Service (Kiểm tra Logic lõi & FSM)
mvn exec:java -Dexec.mainClass="com.courier.services.ServiceTestSuite"

# Chạy mô phỏng kiểm thử cho tầng UI (Tự động giả lập phím nhấn)
mvn exec:java -Dexec.mainClass="com.courier.ui.UITestHarness"

💾 Lưu trữ dữ liệu

Dữ liệu được lưu trữ cục bộ trong thư mục data/ dưới dạng các tệp tin JSON được định dạng đẹp mắt. Khi khởi động, hệ thống tự động tải dữ liệu này vào bộ nhớ RAM. Các dữ liệu bị lỗi hoặc sai định dạng sẽ được xử lý bằng cơ chế giảm cấp nhẹ nhàng (graceful degradation) (bỏ qua các đối tượng bị hỏng thay vì làm sập toàn bộ hệ thống), đảm bảo khả năng chịu lỗi cực cao của ứng dụng.

About

A production-ready Courier Delivery Management System built in Java. Features strict N-Tier architecture, Finite State Machines (FSM) for order/billing workflows, in-memory caching (O(1) CRUD), and bulletproof JSON persistence. Designed for high performance and fail-fast UX.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages