Tab theo Kind
All / Person / Organization — đếm số lượng ngay trên tab (từ endpoint
counts, không phụ thuộc trang đang xem).

Tab theo Kind
All / Person / Organization — đếm số lượng ngay trên tab (từ endpoint
counts, không phụ thuộc trang đang xem).
Lọc theo Type
Lọc theo quan hệ (customer/lead/vendor…) qua query ?rel= — có thể
deep-link từ nơi khác (vd sidebar) vào một type cụ thể.
Tìm kiếm
Debounce 300ms, khớp display_name, primary_email, primary_phone.
Nhấn / để focus nhanh vào ô tìm kiếm.
Cột tuỳ biến
Ẩn/hiện, kéo resize, double-click để auto-fit độ rộng cột — cấu hình ở Thiết lập › Listing.
Phân trang server-side (25/50/100 dòng/trang), tổng số lấy từ meta.filter_count của backend — không đếm ở client.
Chọn checkbox một hoặc nhiều dòng để hiện thanh hành động nổi ở đáy màn hình:
Đổi Status
Áp status mới cho tất cả contact đã chọn.
Gắn Tag / Type
Thêm (không thay thế) tag hoặc type cho các contact đã chọn — mở modal chọn nhiều giá trị.
Xoá
Xoá vĩnh viễn — có hộp thoại xác nhận. Xoá contact sẽ xoá luôn mọi bản ghi con (email/phone/address/profile/notes/social links/employment) — xem Data model.
Nút đổi status/gắn tag/gắn type chỉ hiện nếu bạn có quyền contacts:update; nút xoá chỉ hiện nếu có contacts:delete.
Nhấn Add (hoặc phím tắt N) — mở drawer bước 1: chọn kind (Person / Organization), hiển thị dạng thẻ lớn kèm icon.
Sau khi chọn kind, drawer chuyển sang form theo tab:
Khi tạo mới, field Organization ở tab Details là một dropdown chọn được (không giống lúc sửa) — chọn một organization ở đây sẽ tự tạo một bản ghi Employment hiện tại (is_current: true) ngay khi lưu.
Gõ email, phone hoặc tên trùng với contact đã có → cảnh báo trùng lặp hiện ngay trong drawer (debounce 400ms), kèm badge điểm số, lý do trùng, và link nhảy tới contact đó. Nếu trùng chính xác, nút “Merge contact” cho phép bạn chọn gộp ngay (xem Gộp contact trùng lặp).
Lưu — contact mới xuất hiện đầu danh sách (mặc định sort theo date_created giảm dần).
Sửa từ trang chi tiết (nút bút chì trên từng section) hoặc mở lại drawer edit — form giống lúc tạo nhưng có thêm tab Profile (hồ sơ CRM: phong cách giao tiếp, mức ưu tiên quan hệ, sở thích, điều cần tránh…).
| Phím | Hành động |
|---|---|
N |
Mở drawer tạo contact mới |
/ |
Focus vào ô tìm kiếm |
? |
Mở bảng phím tắt |
Esc |
Đóng bảng phím tắt đang mở |
Phím tắt tự vô hiệu khi con trỏ đang ở trong input/textarea/select để không can thiệp lúc gõ chữ.
/contacts/:id