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

Thiết lập hệ thống (Admin)

  1. Truy cập /contacts/setup (chuyển hướng tự động nếu module chưa cài và bạn có quyền admin).

  2. Wizard chạy 2 bước tuần tự khai báo trong schema: schema (tạo collection + field + relation) rồi seed (chèn dữ liệu mặc định).

  3. Xong, wizard điều hướng về /contacts.

Kinds (bắt buộc)

person, organization — vào shared_kinds, dùng chung toàn hệ thống.

Statuses (bắt buộc)

contacts:active, contacts:inactive, contacts:lead.

Types (bắt buộc)

contacts:customer, contacts:lead, contacts:vendor, contacts:partner, contacts:investor.

Activity types (bắt buộc)

note, call, email, meeting — dùng cho bảng c_contact_activities (nhật ký hoạt động).

Ngoài dữ liệu bắt buộc, wizard còn seed dữ liệu mẫu (tuỳ chọn khi chạy wizard): 5 contact mẫu (3 person, 2 organization) và 3 intake mẫu (từ helpdesk, web_form, sales) để xem giao diện có dữ liệu ngay sau khi cài.

Yêu cầu quyền contacts:manage-settings — không có quyền sẽ bị điều hướng ngược về /contacts. Có 4 tab:

General

default_status (status gán mặc định khi tạo contact mới, nếu form không chọn) và name_composition — cách ghép tên hiển thị: first-last (“Văn A Nguyễn”), last-first (“Nguyễn, Văn A”), hoặc last-first-spaced (“Nguyễn Văn A” — thứ tự Việt Nam, không dấu phẩy).

Listing

Bật/tắt, sắp xếp lại, và đặt độ rộng cột cho bảng danh sách contact (display_name, organization, primary_email, primary_phone, location, type, status). Lưu client-side (localStorage), không phải setting server — mỗi trình duyệt/máy tự nhớ layout riêng.

Statuses / Types / Tags

Ba tab dùng chung một component (ContactsSettingsSharedList) — thêm/sửa/xoá từng taxonomy scope theo contacts:. Xoá một status/type/tag đang được contact nào đó dùng sẽ bị chặn (409 in_use).

admin/packages/contacts/app/composables/use-contacts-settings.ts
export const DEFAULT_LIST_COLUMNS: ListColumn[] = [
{ key: "display_name", label: "Name", visible: true },
{ key: "organization", label: "Organization / Industry", visible: true },
{ key: "primary_email", label: "Email", visible: true },
{ key: "primary_phone", label: "Phone", visible: true },
{ key: "location", label: "Location", visible: true },
{ key: "type", label: "Type", visible: true },
{ key: "status", label: "Status", visible: true },
]

Độ rộng cột resize bằng tay (kéo cạnh phải) hoặc double-click để auto-fit theo nội dung dài nhất — cả hai đều lưu vào settings.columnWidths và giữ qua các phiên làm việc trên cùng trình duyệt.