📖 1. Ngôn Ngữ Chung (Ubiquitous Language)
Chuẩn hóa các thuật ngữ kinh doanh đơn hàng và đối tác khách hàng thống nhất trong codebase.
📐 2. Sơ Đồ Thiết Kế Domain Model
Sơ đồ mối quan hệ giữa các Aggregates, Entities, và Value Objects trong phân hệ Sales & Order.
📂 3. Các Aggregates & Ranh Giới Nghiệp Vụ
Bản đặc tả chi tiết quy tắc nghiệp vụ tĩnh và ranh giới giao dịch của từng Aggregate.
Order Aggregate (Giao dịch bán hàng)
Ranh giới quản lý các cam kết thương mại với khách hàng. Toàn bộ các dòng item đặt mua và thông số bao bì đi kèm được kiểm soát nhất quán bên trong ranh giới giao dịch này.
- Quy tắc 1: Không cho phép lưu đơn hàng nếu không có bất kỳ dòng chi tiết OrderItem nào.
- Quy tắc 2: Mỗi OrderItem bắt buộc phải tham chiếu đến một Biến thể thành phẩm thương mại (`Variant`) có sẵn.
- Quy tắc 3: Ngày mong muốn giao hàng của từng sản phẩm không được trước ngày thiết lập đơn.
Customer Aggregate (Quản lý đối tác)
Ranh giới quản lý dữ liệu đối tác thương mại, cách ly với các thay đổi giao dịch bán hàng.
- Quy tắc 1: Khách hàng được định danh độc nhất bằng Mã số thuế hoặc Số điện thoại.
- Quy tắc 2: Địa chỉ giao hàng mặc định được lưu làm giá trị Value Object khởi tạo cho đơn hàng mới.
🔌 4. Domain Events & Domain Services
Các sự kiện và dịch vụ nghiệp vụ liên vùng được tích hợp trong phân hệ.
Domain Events (Sự kiện nghiệp vụ)
- `OrderPlacedEvent`: Phát ra khi nhân viên kinh doanh tạo đơn. Kích hoạt giữ chỗ tạm thời tồn kho thành phẩm ảo để đảm bảo tính sẵn có của hàng hóa.
- `OrderApprovedEvent`: Phát ra khi ban giám đốc duyệt đơn hàng. Kích hoạt phân hệ Kế hoạch sản xuất (`production-planning`) tự động lên lịch WorkOrder.
Domain Services (Dịch vụ nghiệp vụ)
`LogisticsPackagingService` (Tính toán bao bì tự động)
Đọc thông số đóng gói định mức của biến thể sản phẩm R&D, tự động cộng dồn nhu cầu bao bì carton, màng co và pallet gỗ theo quy mô số lượng đơn hàng:
- Pallet: Nhu cầu = Số lượng Q × Định mức số pallet/bộ.
- Carton: Nhu cầu = Số lượng Q × Số lượng thùng đóng gói kèm/bộ.
- Lưu thông số kết quả vào bảng `OrderItemMaterial` của đơn hàng với phân loại `type = "PACKAGING"`.
🏁 5. Luồng Nghiệp Vụ Chính (Happy Path Flow)
Quy trình dòng chảy công việc chuẩn từ khi tạo đơn hàng đến khi được duyệt sẵn sàng sản xuất.
Khởi tạo đơn hàng
Chọn khách hàng, thêm các biến thể SKU thành phẩm và nhập số lượng Q.
Bóc tách bao bì
Hệ thống tự động chạy dịch vụ tính toán vật tư logistics cần dùng.
Ký duyệt đơn hàng
Ban giám đốc phê duyệt đơn, chuyển trạng thái Order sang APPROVED.
Chuyển tiếp sản xuất
Hệ thống phát sự kiện kích hoạt phân hệ hoạch định kế hoạch xưởng.