Bỏ qua để đến nội dung

Gộp contact trùng lặp

Trùng lặp tạo ra từ nhiều nguồn:

Nhập tay

Một người có thể được tạo 2 lần nếu không tìm thấy liên hệ cũ hoặc gõ tên khác nhau (“Toại” vs “Trần Tiến Toại”).

Email đến

Khi email vào từ Helpdesk, nếu sender chưa có contact, hệ thống tạo tạm thời — có thể trùng người đã có nhưng tên khác.

SSO / Agent

Khi một agent login lần đầu, hệ thống tự tạo contact theo email SSO — nếu email người đó đã tồn tại dưới tên khác, sẽ có 2 bản ghi.

Import / Tích hợp

Data từ ngoài đưa vào qua upload hoặc tích hợp có thể chưa chuẩn hoá tên/email.

Hệ thống phát hiện trùng theo 3 mức độ:

  • Email/phone trùng đúng → Chắc chắn cùng người (level: exact)
  • Tên chuẩn hoá giống + cùng công ty / domain email → Cao (level: high hoặc medium)
  • Tên tương tự → Thấp (level: low)

Khi gõ email, phone hoặc tên trong drawer tạo/sửa contact:

  1. Hệ thống tìm kiếm trùng (debounce 400ms) — nếu tìm thấy ứng viên, cảnh báo hiện ngay, kèm:

    • Badge điểm số (0–100, màu theo mức độ)
    • Lý do (email trùng, phone trùng, tên tương tự…)
    • Link nhảy tới contact đó
  2. Trường hợp email/phone trùng chính xác (level exact): nút Merge contact kích hoạt, nút lưu (Save) bị vô hiệu — bắt buộc bạn giải quyết trùng lặp trước.

  3. Trường hợp tên tương tự (level thấp): cảnh báo hiển thị, nhưng cho phép bạn tiếp tục tạo mới nếu tin rằng là người khác.

  4. Nhấn Merge contact → wizard gộp mở ra.

  1. Chọn master (giữ lại)

    • Danh sách radio cards của các contact tham gia gộp
    • Badge “Suggested” hiển thị contact được hệ thống gợi ý là master (có nhiều thông tin nhất, contact cũ nhất, hoặc có liên kết agent)
    • Chọn một contact — đó sẽ là bản ghi “thắng”, giữ nguyên ID, mọi thông tin khác sẽ được merge vào
  2. Chọn giá trị từng field

    • Bảng với một hàng = một field, multiple cột = từng contact
    • Khi tạo mới contact (cảnh báo trong form): 2 cột = “Existing” + “New (form)”
    • Khi gộp từ danh sách/detail: N cột = các contact được chọn
    • Click vào một ô để chọn giá trị đó → ô bị highlight ring màu xanh
    • Chỉ những field có giá trị khác nhau mới xuất hiện trong bảng
    • Giá trị đã chọn của master được highlight mặc định
  3. Review & Gộp

    • Hiển thị số lượng:
      • Hội thoại sẽ chuyển sang master
      • Ghi chú, địa chỉ, email/phone (sẽ thành alias)
      • Employment và các liên kết khác
    • Nếu cả 2 contact đều là agent: một radio group “Giữ agent của …” cho phép bạn chọn agent nào — agent kia sẽ bị xoá cùng với contact của nó
    • Nút Merge — thực hiện gộp

4 cách vào wizard:

1. Cảnh báo trong form

Khi tạo hoặc sửa contact, gõ email/phone/tên trùng → nhấn Merge contact trên cảnh báo

2. Bulk bar (chọn 2–5 contact)

Chọn checkbox trên danh sách, thanh hành động nổi ở dáy có nút Merge → wizard với 2–5 contact đã chọn

3. Detail navbar

Đang xem chi tiết 1 contact, nút Merge… (icon git-merge) ở header → search picker chọn thêm contact → wizard

4. Trang Duplicates

Trang /contacts/duplicates liệt kê các cặp trùng → nhấn Merge trên một hàng → wizard với 2 contact đó

Mở /contacts/duplicates (menu Contacts, tab Duplicates):

  • Danh sách các cặp trùng (default: status open):

    • Badge điểm số (0–100), màu theo mức độ
    • Chip lý do (email, phone, tên, công ty…)
    • Cả 2 contact hiển thị dạng link → click vào xem chi tiết
    • Hành động:
      • Merge → wizard
      • Not a duplicate → đánh dấu dismissed, sẽ không gợi ý lại
  • Nút Scan now (header, cần quyền manage-settings):

    • Quét toàn bộ danh bạ (có thể mất vài giây tùy số lượng)
    • Tìm mọi cặp trùng, lưu vào DB
    • Chỉ tạo cặp open mới — không gợi ý lại những cặp đã dismissed
  • Filter theo trạng thái: Status dropdown để xem Open / Dismissed / All

Khi bạn nhấn Merge:

  1. Contact thua (loser) chuyển status thành Merged (mục đích: không phải xoá vĩnh viễn ngay, vẫn tra cứu được nếu cần)

  2. Contact loser bị ẩn khỏi danh sách mặc định — khi bạn vào /contacts, sẽ không thấy nó trừ khi cụ thể filter status=Merged

  3. Khi xem detail loser: banner “Merged into #210” (liên kết tới master), mọi nút sửa/xoá bị ẩn (read-only)

  4. Mọi liên kết chuyển sang master:

    • Hội thoại (Helpdesk) → contact_id = master
    • Ghi chú, email, phone alias → liên kết tới master
    • Employment (công việc) → merge, nếu cùng công ty chỉ giữ một
    • Mọi reference khác (activity, profile) → trỏ tới master
  5. Cũ email/phone của loser được thêm làm alias trên master — nếu có email cũ người dùng còn dùng, thư vẫn tới được contact master (không bị mất)

  6. Sau 30 ngày — job chạy đêm xoá vĩnh viễn contact Merged → không còn tra cứu được

Khi gộp contact A vào B:

  • Email A → thêm vào bảng c_contact_emails của B dạng alias (không phải primary)
  • Phone A → thêm vào c_contact_phones của B dạng alias
  • Khi có mail gửi tới email A, hệ thống vẫn tìm thấy contact B (lookup bao gồm alias)
  • Khi có tin nhắn SMS gửi tới phone A, cũng trỏ về B

Điểm tốt: không cần cấu hình redirect email, alias tự động hỗ trợ.

Giới hạn & trường hợp không gộp được

Phần tiêu đề “Giới hạn & trường hợp không gộp được”

Không thể gộp:

  • Contact người + contact công ty (kind mismatch)
  • Cả 2 là agent AND bạn không chọn giữ lại agent nào → 409 error

Cần chọn “giữ agent”:

  • Nếu 2 contact đều là agent, wizard bước Review sẽ hiện radio “Giữ agent của …” — bắt buộc chọn 1
  • Agent kia của contact loser sẽ bị xoá (tất cả conversation/message của agent đó re-point tới agent keep)

Detail table special handling:

  • c_contact_profiles (1:1) — giữ master, loser bị xoá
  • c_contact_social_links, c_contact_notes — tất cả copy sang master
  • c_contact_addresses — merge (nếu cùng địa chỉ chỉ giữ 1)
  • c_contact_employments — merge + dedupe (cùng org chỉ giữ 1)
Hành động Tips
Quick search wizard Ở detail navbar “Merge…”, gõ tên/email để tìm contact muốn gộp
Check trước gộp Xem trang Duplicates trước để hiểu điểm trùng (email / phone / tên)
Undo 30 ngày Trước khi job xoá, filter status=Merged vẫn xem contact loser
Email alias Bạn không cần làm gì — alias tự động sau gộp