🧬 Mô Hình Cấu Trúc Các Lớp (Tactical Model)
Sơ đồ quan hệ nội bộ của Product Aggregate. Tất cả các thao tác thay đổi trạng thái linh kiện hoặc biến thể bắt buộc phải thông qua Aggregate Root Product để đảm bảo tính toàn vẹn giao dịch.
🛡️ Ràng Buộc Nghiệp Vụ Tĩnh (Invariants)
Các luật nghiệp vụ bắt buộc phải kiểm tra và thỏa mãn trước khi lưu dữ liệu hoặc phê duyệt bản vẽ kết cấu.
-
▪
Luật 1 (Ràng buộc FrameType):
Mọi Component thành phần của kết cấu gỗ bắt buộc phải khai báo thuộc tính
frameTypeIdhợp lệ. Đây là cơ sở tiên quyết để hệ thống MRP quy đổi đơn vị tính tồn kho WIP từ diện tích/thể tích sang số lượng khi chạy kế hoạch xưởng. -
▪
Luật 2 (Ràng buộc xóa Component):
Không được phép xóa Component khi đang có thực thể Variant ở trạng thái
ACTIVEliên kết đến kết cấu chứa Component đó. Hành động này sẽ gây lỗi mồ côi (orphaned config) trong MRP sản xuất. -
▪
Luật 3 (Ràng buộc Versioning & Approval):
Khi cập nhật kết cấu vẽ vật lý của Product, trạng thái bản vẽ phải chuyển về
DRAFThoặcPENDING_APPROVAL. Chỉ những bản vẽ ở trạng tháiAPPROVEDmới được phép sử dụng để cấu hình BOM cho Lệnh sản xuất.
🔄 Vòng Đời Trạng Thái (State Machine)
Quy trình luân chuyển trạng thái phê duyệt kết cấu vật lý và biến thể của Product.
💻 Cấu Trúc Khai Báo Model (TypeScript / NestJS Context)
Đoạn code định nghĩa Domain Entity của Product phục vụ AI định vị và lập trình chính xác logic nghiệp vụ.