Sơ đồ bàn¶
Sơ đồ dạng canvas tự do (kéo-thả trực quan), mỗi khu vực (tab) là 1 sơ đồ riêng. Toạ độ bàn tự do, không phải mô hình lưới ô — lưới nền chỉ để căn chỉnh hiển thị, không ảnh hưởng dữ liệu lưu. Va chạm 2 bàn đè nhau không bị chặn, chỉ để người dùng tự thấy trên sơ đồ.

- Kéo-thả 1 bàn để đổi vị trí.
- Bấm chọn 1 bàn để hiện khung chọn quanh bàn (kéo tay cầm để đổi kích thước) — bấm tiếp vào icon bút chì nhỏ hiện ra cạnh góc trên-phải khung chọn để mở modal sửa mã/tên/khu vực/số chỗ/hình dạng.
- Giữ Shift/Ctrl khi bấm, hoặc kéo 1 khung trên vùng trống, để chọn nhiều bàn cùng lúc (di chuyển/resize cả nhóm).
- 4 trạng thái bàn: ■ Trống · ■ Có khách · ■ Đã đặt trước · ■ Cần dọn.
Thêm khu vực¶
Nhấn Thêm khu vực.

- Mã khu vực, Tên khu vực (đều bắt buộc).
- Kích thước phòng — tính theo số ô lưới, chỉnh lại sau được (nút "Lưu kích thước phòng" ngay trên sơ đồ, chỉ áp dụng cho khu vực thật — không có ở khu vực ảo "Chưa gán khu vực").

Vẽ bàn mới¶
Nhấn Vẽ bàn mới, chọn hình dạng (Tròn/Chữ nhật), rồi kéo trên sơ đồ để vẽ vị trí + kích thước. Bấm nhẹ (không kéo) cũng tạo được bàn — dùng kích thước mặc định tại điểm bấm.

- Mã bàn (bắt buộc), Tên bàn (tuỳ chọn), Số chỗ ngồi.
- Hình dạng — khoá theo hình đã chọn lúc vẽ, muốn đổi phải huỷ và vẽ lại. Kích thước/vị trí vẫn chỉnh lại được bằng kéo-thả sau khi lưu.
Nhấn Lưu.

Sửa bàn đã chọn — đổi khu vực¶
Chọn 1 bàn rồi bấm icon bút chì (xem mục trên) để mở modal "Sửa bàn đã chọn" — ngoài mã/tên/số chỗ/hình dạng, có thêm trường Khu vực (dropdown): chọn khu vực khác để chuyển bàn sang khu vực đó, hoặc "Chưa gán khu vực" để bỏ gán. Bấm Lưu — bàn biến mất khỏi tab hiện tại và xuất hiện lại ở tab khu vực mới ngay lập tức.

Đổi trạng thái bàn (thủ công)¶
Không đổi trực tiếp trên sơ đồ — dùng form riêng phía dưới Card "Sơ đồ".
Chọn Bàn + Trạng thái mới, nhấn Cập nhật.

Ghi đè thủ công, không kiểm tra
Đổi trạng thái thủ công không kiểm tra bàn có đang phục vụ khách/đã đặt trước hay không — chỉ dùng khi chắc chắn. Đây là ghi đè trực tiếp, không có state machine bảo vệ luồng chuyển trạng thái hợp lệ.

Quan hệ với Đặt bàn¶
Sơ đồ bàn chỉ quản lý cấu trúc bàn thuần tuý — không tự thao tác được với
Đặt bàn & Waitlist. Việc gán bàn cho 1 đặt bàn diễn ra ở trang Đặt bàn (chọn
bàn khi tạo), không phải ở đây — table_id là soft-reference, không ràng buộc khoá ngoại.