Bỏ qua nội dung

Contacts - tạo contact

Feature URL
Module
contacts
Status
draft
Priority
P1
Platforms
fe · be
AC progress
0 / 6
Last reviewed
2026-05-29

Mục tiêu

Cho phép hệ thống tạo contact tập trung cho người liên hệ liên quan đến listings và CRM. Contact mới giúp tránh lưu lặp thông tin liên hệ trên nhiều listing, đồng thời làm nền cho broker quản lý nguồn liên hệ riêng.

Phạm vi

Trong phạm vi (In scope):

  • Tạo contact thủ công bởi broker trong CRM.
  • Tạo contact từ luồng crawl khi listing có số điện thoại liên hệ hợp lệ.
  • Gắn contact với phone_registries thông qua phone_registry_id.
  • Lưu thông tin nguồn tạo contact như thủ công, crawl hoặc hệ thống.
  • Xác định owner/broker khi contact được tạo thủ công cho CRM riêng.

Ngoài phạm vi (Out of scope):

  • Màn hình danh sách, tìm kiếm và lọc contact.
  • Cập nhật, xoá hoặc lưu trữ contact sau khi tạo.
  • Merge contact nâng cao ngoài rule trùng số điện thoại.
  • Thiết kế chi tiết schema vật lý, index hoặc migration.

User Stories

  • broker, tôi muốn tạo contact mới trong CRM, để lưu khách hàng, chủ nhà, môi giới khác hoặc nguồn liên hệ riêng.
  • hệ thống crawl, tôi muốn tạo contact mới khi số điện thoại liên hệ chưa tồn tại, để listing crawl có tham chiếu liên hệ rõ ràng.
  • Backend, tôi muốn contact trỏ tới phone_registries, để số điện thoại được chuẩn hoá và tái sử dụng tập trung.

Luồng chức năng

sequenceDiagram
    actor Broker
    participant App
    participant BE
    participant Phone as Phone Registries
    participant Contacts

    Broker->>App: Nhập thông tin contact
    App->>BE: Gửi yêu cầu tạo contact
    BE->>Phone: Tra hoặc tạo phone_registry
    Phone-->>BE: phone_registry_id
    BE->>Contacts: Tạo contact mới
    Contacts-->>BE: contact_id
    BE-->>App: Trả về contact đã tạo

Acceptance Criteria

  • AC-1: Broker có thể tạo contact mới với thông tin liên hệ tối thiểu theo rule nghiệp vụ.
  • AC-2: Nếu contact có số điện thoại, hệ thống phải tra hoặc tạo phone_registries trước khi lưu contact.
  • AC-3: Contact mới phải lưu được phone_registry_id khi có số điện thoại hợp lệ.
  • AC-4: Contact thủ công phải lưu được owner/broker để xác định dữ liệu CRM riêng.
  • AC-5: Luồng crawl có thể tạo contact mới khi chưa có contact tương ứng với số điện thoại.
  • AC-6: Hệ thống không tạo contact rỗng khi thiếu toàn bộ thông tin nhận diện tối thiểu.

Quy tắc nghiệp vụ

  • Số điện thoại liên hệ không lưu trực tiếp trên contact nếu đã dùng phone_registries.
  • Contact tạo thủ công thuộc phạm vi CRM của broker tạo ra.
  • Contact tạo từ crawl có thể là dữ liệu hệ thống và không suy ra user sở hữu listing.
  • Nếu số điện thoại đã có trong phone_registries, hệ thống tái sử dụng bản ghi đó.
  • Không tự động merge contact khác owner/broker chỉ vì trùng tên.

Dữ liệu & Trạng thái

Entity nghiệp vụ:

  • Contact: thông tin liên hệ tập trung, có thể gồm tên liên hệ, phone_registry_id, nguồn tạo, owner/broker và ghi chú nghiệp vụ.
  • PhoneRegistry: nơi lưu và chuẩn hoá số điện thoại mà contact tham chiếu.

Trạng thái user-facing:

  • created - contact đã được tạo thành công.
  • duplicate_phone - số điện thoại đã có contact tương ứng theo rule resolve.
  • invalid - dữ liệu tạo contact không đủ điều kiện.

Liên quan