Bảng và Trường
Bảng là nền tảng của không gian làm việc Lotics. Mỗi bảng định nghĩa schema với các trường có kiểu dữ liệu, lưu trữ bản ghi (các dòng dữ liệu), và hỗ trợ nhiều chế độ xem: các góc nhìn được lọc, sắp xếp và nhóm trên cùng một dữ liệu gốc. Mọi thứ cập nhật thời gian thực trên tất cả người dùng đang kết nối.
Cấu trúc Bảng
Một không gian làm việc Lotics chứa các bảng, và mỗi bảng có ba tầng:
- Trường định nghĩa schema — dữ liệu nào có thể lưu trữ và theo định dạng nào.
- Bản ghi chứa dữ liệu thực tế — mỗi dòng là một thực thể.
- Chế độ xem cung cấp các góc nhìn khác nhau trên dữ liệu — hiển thị bản ghi nào, theo thứ tự nào, với trường nào hiện.
Sự tách biệt này có nghĩa là bạn định nghĩa mô hình dữ liệu một lần và tạo bao nhiêu chế độ xem tùy ý theo nhu cầu của đội. Trường có kiểu dữ liệu và được xác thực. Khi bạn thêm trường Số, chỉ chấp nhận giá trị số. Khi bạn thêm trường Chọn, giá trị phải từ danh sách tùy chọn đã định nghĩa. Sự an toàn kiểu này ngăn chặn vấn đề chất lượng dữ liệu ngay từ nguồn.
Bảng có thể chứa hàng chục ngàn bản ghi và vẫn hoạt động mượt mà. Query engine hỗ trợ lọc, sắp xếp và phân trang phía server, nên chế độ xem tải nhanh ngay cả trên tập dữ liệu lớn. Cập nhật thời gian thực qua WebSocket đảm bảo mọi thành viên thấy dữ liệu mới nhất mà không cần làm mới trang.
Các kiểu Trường
Lotics hỗ trợ 12 kiểu trường bao phủ toàn bộ phạm vi dữ liệu vận hành. Mỗi kiểu có tùy chọn cấu hình và định dạng giá trị riêng. Chọn đúng kiểu trường rất quan trọng cho các tính năng kế tiếp: trường Số cho phép tổng hợp rollup, trường Liên kết bản ghi cho phép tra cứu và tổng hợp liên bảng, và trường Ngày cho phép trigger quy trình dựa trên thời hạn.
| # | Kiểu trường | Kiểu nội bộ | Biến thể / Định dạng | Định dạng giá trị | Trường hợp sử dụng |
|---|---|---|---|---|---|
| 1 | Văn bản | text | Văn bản thường, URL/liên kết, Rich text | string | Tên, mô tả, ghi chú, URL, nội dung định dạng |
| 2 | Số | number | Số, Tiền tệ (mã ISO 4217), Phần trăm | number | Số lượng, giá cả, tỷ suất lợi nhuận, tỷ lệ hoàn thành |
| 3 | Ngày | date | Ngày, Ngày giờ, Khoảng ngày, Khoảng ngày giờ | string (ISO 8601) | Thời hạn, ngày giao hàng, lập lịch, theo dõi khoảng thời gian |
| 4 | Đúng/Sai | boolean | Checkbox đúng/sai | boolean | Cờ phê duyệt, trạng thái hoàn thành, bật/tắt hoạt động |
| 5 | Chọn | select | Chọn đơn, Chọn nhiều (multi: true) | string[] (khóa tùy chọn) | Trạng thái, ưu tiên, danh mục, thẻ |
| 6 | Thành viên | select_member | Một thành viên, Nhiều thành viên (multi: true) | string[] (ID thành viên) | Chủ sở hữu, người được gán, người kiểm duyệt |
| 7 | Liên kết bản ghi | select_record_link | Liên kết hai chiều đến bảng khác | [{id, display}] | Vận chuyển-đến-khách hàng, hóa đơn-đến-đơn hàng |
| 8 | Tra cứu | lookup | Chỉ đọc, kéo giá trị từ bản ghi liên kết | unknown[] (mảng giá trị gốc) | Hiện tên khách hàng trên vận chuyển |
| 9 | Tổng hợp | rollup | Chỉ đọc, tổng hợp giá trị bản ghi liên kết | number | string | Tổng giá trị đơn hàng, thời gian giao hàng trung bình |
| 10 | Công thức | formula | Chỉ đọc, tính toán từ biểu thức | number | string | boolean | Biên lợi nhuận, số ngày đến hạn, nhãn có điều kiện |
| 11 | Tệp tin | files | Tài liệu, hình ảnh, PDF (nhiều tệp mỗi ô) | [{id, filename, mime_type}] | Hợp đồng, ảnh chụp, hóa đơn, chứng chỉ |
| 12 | Nút | button | Kích hoạt quy trình khi nhấn | (không lưu giá trị) | Tạo hóa đơn, gửi thông báo, phê duyệt yêu cầu |
Văn bản
Lưu trữ giá trị chuỗi. Ba định dạng hiển thị:
- Văn bản thường — mặc định, văn bản không định dạng.
- URL/liên kết — hiển thị dưới dạng liên kết có thể nhấn.
- Rich text — hỗ trợ nội dung định dạng (in đậm, danh sách, v.v.).
Có thể yêu cầu giá trị duy nhất giữa các bản ghi, ngăn trùng lặp.
Số
Lưu trữ giá trị số với định dạng hiển thị có thể cấu hình:
- Số — hiển thị số tiêu chuẩn.
- Tiền tệ — hiển thị với ký hiệu tiền tệ. Yêu cầu mã tiền tệ ISO 4217 (ví dụ:
USD,VND,EUR). - Phần trăm — hiển thị dưới dạng giá trị phần trăm.
Ngày
Lưu trữ giá trị ngày và giờ dưới dạng chuỗi ISO 8601. Bốn định dạng:
- Ngày — chỉ ngày, ví dụ:
2024-01-15. - Ngày giờ — ngày và giờ, ví dụ:
2024-01-15T14:30. - Khoảng ngày — ngày bắt đầu và kết thúc, ví dụ:
2024-01-15/2024-01-20. - Khoảng ngày giờ — ngày giờ bắt đầu và kết thúc, ví dụ:
2024-01-15T09:00/2024-01-20T17:00.
Hỗ trợ cấu hình múi giờ sử dụng định danh múi giờ IANA (ví dụ: Asia/Ho_Chi_Minh, America/New_York).
Đúng/Sai
Checkbox đúng/sai. Nút bật/tắt đơn giản cho trạng thái nhị phân như cờ phê duyệt, trạng thái hoàn thành, hoặc bật/tắt hoạt động.
Chọn
Lựa chọn từ danh sách tùy chọn đã định nghĩa. Mỗi tùy chọn có:
- Một khóa (
opt_xxx) — định danh ổn định dùng trong lưu trữ dữ liệu. - Một tên — nhãn hiển thị mà người dùng thấy.
- Một màu — để phân biệt trực quan trong lưới.
Hai chế độ:
- Chọn đơn (mặc định) — chọn một tùy chọn mỗi lần.
- Chọn nhiều (
multi: true) — cho phép chọn nhiều tùy chọn.
Giá trị luôn được lưu dưới dạng mảng khóa tùy chọn, kể cả với chọn đơn. Giá trị chọn đơn có dạng ["opt_abc123"]. Không chọn gì là mảng rỗng [].
Thành viên
Gán thành viên trong không gian làm việc cho bản ghi. Hoạt động giống Chọn nhưng lấy từ danh sách thành viên không gian làm việc thay vì tùy chọn đã định nghĩa.
- Một thành viên (mặc định) — gán một người.
- Nhiều thành viên (
multi: true) — gán nhiều người.
Giá trị là mảng ID thành viên không gian làm việc.
Liên kết bản ghi
Liên kết đến bản ghi trong bảng khác, tạo đồ thị quan hệ trong không gian làm việc. Các hành vi chính:
- Hai chiều — khi bạn liên kết Bản ghi A trong Bảng X với Bản ghi B trong Bảng Y, trường ghép nối tự động được tạo trong Bảng Y hiển thị liên kết ngược.
- Trường hiển thị — cấu hình trường nào từ bảng liên kết được hiển thị cạnh liên kết.
- Bộ lọc chế độ xem — tùy chọn giới hạn bản ghi nào có thể liên kết dựa trên chế độ xem.
Giá trị là mảng đối tượng {id, display}, trong đó display được tự động tính từ trường hiển thị của bản ghi liên kết.
Tra cứu
Trường tính toán chỉ đọc, kéo giá trị từ bản ghi liên kết qua trường Liên kết bản ghi. Nếu bảng Vận chuyển liên kết đến bảng Khách hàng, trường tra cứu trên Vận chuyển có thể hiển thị email, số điện thoại hoặc bất kỳ trường nào khác của khách hàng — mà không trùng lặp dữ liệu.
- Trả về mảng giá trị gốc với một phần tử cho mỗi bản ghi liên kết.
- Mỗi phần tử giữ nguyên kiểu của trường nguồn: tra cứu văn bản trả về
["Alice", "Bob"], tra cứu số trả về[100, 200]. - Cập nhật tự động khi dữ liệu nguồn thay đổi.
Tổng hợp
Trường tính toán chỉ đọc, tổng hợp giá trị từ các bản ghi liên kết. Nếu bảng Đơn hàng liên kết đến Dòng đơn hàng, tổng hợp trên Đơn hàng có thể tính tổng giá trị đơn (sum), số lượng mục (filled), hoặc dòng đơn lớn nhất (max).
Các phép toán khả dụng theo kiểu trường:
| Kiểu trường nguồn | Phép toán tổng hợp |
|---|---|
| Tất cả kiểu | empty, filled, percent_empty, percent_filled, unique, percent_unique |
| Số | sum, avg, median, min, max, range |
| Ngày | earliest, latest, date_range |
| Đúng/Sai | checked, unchecked, percent_checked, percent_unchecked |
| Công thức (kết quả số) | sum, avg, median, min, max, range |
Tổng hợp có thể lọc bản ghi liên kết trước khi tính. Bộ lọc sử dụng cùng hệ thống điều kiện với bộ lọc chế độ xem, nên bạn có thể chỉ tổng hợp các dòng đơn ở trạng thái hoặc khoảng ngày cụ thể.
Công thức
Trường tính toán chỉ đọc, đánh giá biểu thức tham chiếu các trường khác trong cùng bản ghi. Cú pháp biểu thức sử dụng tên trường trong ngoặc nhọn:
{Price} * {Quantity}
Hỗ trợ số học, xử lý chuỗi, tính toán ngày và logic có điều kiện. Các kiểu đầu ra:
- Số — kết quả số học như
{Revenue} - {Cost}. - Văn bản — phép toán chuỗi và nối chuỗi.
- Ngày — tính toán ngày.
- Đúng/Sai — biểu thức có điều kiện.
Kiểu đầu ra được tự động suy luận từ biểu thức và quyết định phép toán tổng hợp nào khả dụng khi công thức được dùng làm nguồn tổng hợp.
Lỗi tạo chuỗi chẩn đoán như #ERROR: Division by zero.
Tệp tin
Đính kèm tài liệu, hình ảnh, PDF và các tệp khác. Nhiều tệp mỗi ô. Mỗi tệp đính kèm lưu tên tệp, kiểu MIME và tham chiếu lưu trữ. Tệp được phục vụ qua URL có chữ ký được backend tạo ra.
Nút
Kích hoạt quy trình khi nhấn. Có nhãn văn bản có thể cấu hình hiển thị trên nút. Trường nút không lưu dữ liệu — chúng là trigger hành động thực thi tự động hóa đã định nghĩa trong hệ thống quy trình.
Bản ghi
Bản ghi là các dòng dữ liệu riêng lẻ trong bảng. Dữ liệu mỗi bản ghi là đối tượng khóa-giá trị trong đó:
- Khóa là khóa trường (ví dụ:
fld_abc123) — định danh ổn định không bao giờ thay đổi ngay cả khi bạn đổi tên trường. - Giá trị tuân theo quy tắc của mỗi kiểu trường.
Ví dụ dữ liệu bản ghi:
| Trường | Khóa | Giá trị ví dụ |
|---|---|---|
| Tên công ty (văn bản) | fld_name | "Acme Corp" |
| Doanh thu (số, tiền tệ) | fld_revenue | 150000 |
| Đang hoạt động (đúng/sai) | fld_active | true |
| Trạng thái (chọn) | fld_status | ["opt_active"] |
| Được gán cho (thành viên) | fld_assigned | ["wm_uuid_123"] |
| Khách hàng (liên kết bản ghi) | fld_customer | [{id: "rec_456", display: "Acme Corp"}] |
| Email khách hàng (tra cứu) | fld_email | ["alice@acme.com"] |
| Ngày thành lập (ngày) | fld_founded | "2024-01-15" |
| Thời hạn hợp đồng (khoảng ngày) | fld_period | "2024-01-15/2024-12-31" |
Bản ghi cũng theo dõi timestamp created_at và updated_at, và có thể có locked_fields — khóa trường không thể chỉnh sửa bởi người dùng (dùng cho quy trình phê duyệt và cập nhật có kiểm soát).
Trường tính toán
Ba kiểu trường — Tra cứu, Tổng hợp, và Công thức — được tính toán tự động. Chúng chỉ đọc: bạn không bao giờ nhập giá trị thủ công. Thay vào đó, chúng lấy giá trị từ bản ghi liên kết, phép tổng hợp hoặc biểu thức.
Lan truyền phụ thuộc: Trường tính toán tạo thành đồ thị phụ thuộc. Khi bản ghi nguồn thay đổi, mọi trường tính toán phụ thuộc vào nó sẽ tính lại. Quá trình lan truyền này tự động:
- Thay đổi số tiền trên dòng đơn hàng...
- Cập nhật trường tra cứu hiển thị số tiền đó trên đơn hàng cha...
- Cập nhật trường tổng hợp tính tổng tất cả số tiền dòng...
- Cập nhật trường công thức tính biên lợi nhuận...
- Tất cả thay đổi truyền đến client đang kết nối theo thời gian thực.
Giá trị trường tính toán được lưu trữ tại thời điểm ghi (không tính khi đọc), nên truy vấn và bộ lọc trên trường tính toán rất nhanh.
Liên kết bản ghi
Trường Liên kết bản ghi kết nối dữ liệu giữa các bảng, tạo đồ thị quan hệ trong không gian làm việc. Bản ghi vận chuyển liên kết đến bản ghi khách hàng, liên kết đến bản ghi hóa đơn, liên kết đến bản ghi thanh toán.
Các hành vi chính:
- Hai chiều — liên kết Vận chuyển A đến Khách hàng B tự động hiển thị Vận chuyển A trong bản ghi liên kết của Khách hàng B. Trường ghép nối được tạo trong bảng đích để chứa liên kết ngược.
- Nền tảng cho trường tính toán — trường Tra cứu và Tổng hợp duyệt qua các liên kết này để kéo và tổng hợp dữ liệu. Không có liên kết, các trường tính toán này không có gì để duyệt qua.
- Truy cập quy trình liên bảng — quy trình được kích hoạt bởi thay đổi trạng thái vận chuyển có thể đọc bản ghi khách hàng liên kết để lấy địa chỉ email, rồi đọc bản ghi hóa đơn liên kết để đính kèm PDF.
- Cấu hình hiển thị — chọn trường nào từ bảng liên kết xuất hiện cạnh liên kết, để người dùng thấy ngữ cảnh có ý nghĩa (ví dụ: tên và email khách hàng) thay vì chỉ ID.
Chế độ xem
Mỗi bảng hỗ trợ nhiều chế độ xem với cấu hình độc lập. Tất cả chế độ xem chia sẻ cùng dữ liệu gốc — thay đổi trong một chế độ xem xuất hiện trên tất cả các chế độ xem khác.
Cấu hình chế độ xem
| Tính năng | Mô tả |
|---|---|
| Bộ lọc | Cấu trúc cây với nhóm AND/OR và điều kiện theo trường. Mỗi kiểu trường có bộ toán tử riêng (bằng, chứa, lớn hơn, rỗng, v.v.). |
| Sắp xếp | Sắp xếp nhiều trường. Mỗi quy tắc sắp xếp chỉ định trường, hướng (tăng dần/giảm dần) và vị trí giá trị rỗng có thể cấu hình (rỗng đầu hoặc cuối). |
| Cấu hình trường | Hiển thị/ẩn trường, chiều rộng cột và thứ tự hiển thị. Mỗi chế độ xem có thể hiện các trường khác nhau theo sắp xếp khác nhau. |
| Cột cố định | Ghim cột từ phía trái lưới. Cột cố định vẫn hiển thị khi cuộn ngang. |
| Quy tắc màu | Tô màu dòng có điều kiện dựa trên giá trị trường. Định nghĩa ở cấp bảng và áp dụng trên tất cả chế độ xem. |
| Hàng tổng kết | Phép tổng hợp hiển thị ở cuối chế độ xem — đếm, tổng, trung bình, min, max, v.v. Cấu hình theo trường. |
Cách các đội khác nhau sử dụng chế độ xem
Quản lý vận hành thấy tất cả vận chuyển sắp xếp theo thời hạn với mục quá hạn được tô đỏ. Đội kinh doanh chỉ thấy deal được gán cho họ, nhóm theo giai đoạn. Đội tài chính thấy hóa đơn lọc theo trạng thái chưa thanh toán. Mọi người làm việc từ cùng một nguồn sự thật, với mỗi chế độ xem được tùy chỉnh cho quy trình của họ.
Xác thực
Trường có thể có quy tắc xác thực để đảm bảo chất lượng dữ liệu tại thời điểm nhập. Xác thực chạy khi người dùng chỉnh sửa ô và ngăn lưu giá trị vi phạm quy tắc. Điều này phát hiện vấn đề chất lượng dữ liệu trước khi chúng lan truyền qua trường tính toán, quy trình và báo cáo.
Cộng tác thời gian thực
Nhiều thành viên có thể chỉnh sửa cùng một bảng đồng thời. Thay đổi truyền đến tất cả client kết nối trong vài mili giây qua WebSocket. Không có nút lưu — chỉnh sửa được lưu và phát ngay khi thực hiện.
Điều này áp dụng cho:
- Thay đổi giá trị bản ghi (chỉnh sửa ô, bản ghi mới, xóa bản ghi).
- Thay đổi schema trường (thêm, đổi tên, cấu hình lại trường).
- Cập nhật cấu hình chế độ xem (thay đổi bộ lọc, sắp xếp, hiển thị trường).
- Lan truyền trường tính toán (thay đổi giá trị nguồn kích hoạt tính lại qua toàn bộ đồ thị phụ thuộc, kết quả được đẩy đến tất cả client).
Hệ thống thời gian thực được thiết kế cho đội vận hành nơi dữ liệu thay đổi thường xuyên và quyết định phụ thuộc vào trạng thái hiện tại. Khi đội kho đánh dấu vận chuyển đã gửi, bảng điều khiển vận hành cập nhật ngay. Khi nhân viên kinh doanh chốt deal, tổng hợp doanh thu trên bảng tổng hợp đội phản ánh không chậm trễ.
Câu hỏi thường gặp
Một bảng có thể có bao nhiêu trường?
Không có giới hạn cứng về số trường mỗi bảng. Trong thực tế, bảng hoạt động tốt với hơn 100 trường. Nếu bảng vượt quá mức đó, hãy cân nhắc tách thành các bảng liên kết để tổ chức tốt hơn.
Tôi có thể thay đổi kiểu trường sau khi đã có dữ liệu không?
Có. Lotics hỗ trợ chuyển đổi kiểu trường cho các kiểu tương thích — ví dụ, chuyển trường Văn bản sang Chọn, hoặc Số sang Tiền tệ. Dữ liệu được bảo toàn và chuyển đổi khi có thể. Chuyển đổi không tương thích sẽ cảnh báo bạn trước khi thực hiện.
Điều gì xảy ra với trường tính toán khi tôi xóa bản ghi liên kết?
Khi bản ghi liên kết bị xóa, trường tra cứu tham chiếu đến nó trả về giá trị rỗng, và trường tổng hợp tính lại loại trừ bản ghi đã xóa. Tham chiếu liên kết tự động bị gỡ khỏi cả hai phía quan hệ. Trường công thức phụ thuộc vào tra cứu hoặc tổng hợp cũng tính lại.
Các chế độ xem khác nhau có thể có quyền lọc khác nhau không?
Chế độ xem kiểm soát bản ghi nào hiển thị qua bộ lọc, nhưng không thực thi quyền truy cập. Tất cả thành viên không gian làm việc có quyền truy cập bảng đều có thể thấy tất cả bản ghi nếu họ tạo chế độ xem không lọc. Để kiểm soát truy cập, sử dụng vai trò cấp không gian làm việc và cài đặt chia sẻ.
Trường tính toán xử lý phụ thuộc vòng tròn như thế nào?
Lotics ngăn chặn phụ thuộc vòng tròn tại thời điểm cấu hình. Bạn không thể tạo tra cứu, tổng hợp hoặc công thức tạo vòng tròn trong đồ thị phụ thuộc. Hệ thống kiểm tra chuỗi phụ thuộc khi bạn cấu hình trường tính toán và từ chối cấu hình tạo vòng lặp vô hạn.
Sự khác biệt giữa Chọn đơn và Chọn nhiều là gì?
Chúng là cùng kiểu trường (select) với nút chuyển đổi cấu hình. Khi multi là false (mặc định), người dùng chọn một tùy chọn. Khi multi là true, người dùng có thể chọn nhiều tùy chọn. Trong cả hai trường hợp, giá trị lưu trữ luôn là mảng khóa tùy chọn — chọn đơn chỉ yêu cầu mảng chứa tối đa một khóa.
Trường ghép nối Liên kết bản ghi hoạt động thế nào?
Khi bạn tạo trường Liên kết bản ghi trong Bảng A trỏ đến Bảng B, Lotics tự động tạo trường ghép nối trong Bảng B trỏ ngược về Bảng A. Liên kết bản ghi theo một hướng tự động cập nhật hướng còn lại. Xóa liên kết từ bất kỳ phía nào sẽ gỡ khỏi cả hai. Khóa trường ghép nối được lưu trong thuộc tính paired_field_key.
Tôi có thể lọc bản ghi nào có thể liên kết không?
Có. Trường Liên kết bản ghi có thuộc tính view_id tùy chọn. Khi được thiết lập, chỉ các bản ghi khớp với bộ lọc của chế độ xem đó mới khả dụng làm mục tiêu liên kết. Điều này hữu ích để giới hạn tùy chọn liên kết với khách hàng đang hoạt động, đơn hàng mở, hoặc bất kỳ tập con đã lọc nào.