🟡 DỮ LIỆU GIẢ — BẢN MÔ PHỎNG GIAO DIỆN · mọi con số dưới đây là số bịa để thử bố cục, KHÔNG phải số thật của xưởng

A · TỔ MAY — phân bổ & theo dõi

Loan · Điều phối sản xuất
6TỔ ĐANG CÓ VIỆC
430TỔNG ĐÃ GIAO
310CÒN PHẢI LÀM
12HỎNG / LÀM LẠI
⚠️ Một đơn vượt số lượng: LSX-517341-01 đã giao 130/120 cái. Chặn ở tầng ghi — không cho lưu. (Ràng buộc đã chốt ở Q1.)
⚠️ Tổ quá tải: Xưởng hoàn thiện đang giữ 140 cái, năng lực 100/ngày → 140%. Nguy cơ trễ hạn giao 27/09.

Phân bổ đơn cho tổ

Một đơn có thể chia cho nhiều tổ — đây là thứ hệ hiện tại chưa có.

Tổng giao của một đơn không được vượt số lượng đơn.

Đã phân bổ — theo tổ bấm được

Mỗi dòng = một lượt giao cho một tổ. Cột Tiến độ cho biết xong bao nhiêu trên đã giao.

Tải từng tổ bấm được

Đây là câu hệ hiện tại không trả lời được: “tổ nào đang giữ bao nhiêu, quá tải chưa”.

Nhật ký thao tác audit

Ghi cả lượt bị chặn — bằng chứng cho tình huống “sai số lượng”.

Ràng buộc bắt buộc (chốt ở Q1 ngày 23/09)

Ràng buộcKiểm ở đâu
SUM(so_luong_giao) của một đơn ≤ số lượng đơnTầng ghi (giao dịch) — KHÔNG kiểm ở giao diện
so_luong_xong + so_luong_hong ≤ so_luong_giaoTầng ghi, cùng chỗ với kiểm toàn vẹn WIP
Mã tổ không trùngUNIQUE(tenant_id, code)
Mọi lượt ghi có vếtAudit log cùng giao dịch

🔴 Không viết lại dispatch_service.py — tổ may là lớp bổ sung bên trên, không thay thế.