Kinds (bắt buộc)
person, organization — vào shared_kinds, dùng chung toàn hệ thống.
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).
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).
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.
/contacts/settings)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).
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.