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_registriesthông quaphone_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
- Là 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.
- Là 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.
- Là 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ạoAcceptance 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_registriestrước khi lưu contact. - AC-3: Contact mới phải lưu được
phone_registry_idkhi 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
- Phụ thuộc: phone-registries
- Ảnh hưởng: listing-crawl-external-sources