> ## Documentation Index
> Fetch the complete documentation index at: https://learn.cleeksy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kiểu trường dữ liệu (Field types)

> Chọn field type phù hợp và quy tắc sử dụng.

Trang này là trang tổng hợp (canonical) về **Field types** trong Cleeksy. Nội dung tập trung vào:

* Nhận diện **nhóm Field** và khi nào nên dùng
* Các **Field cốt lõi** thường gặp khi xây app nghiệp vụ
* Mẹo cấu hình để dữ liệu “đúng–đủ–dễ dùng” và hỗ trợ Workflow/Views

Liên quan:

* [Thực thể dữ liệu (Entity)](/build-apps/data-modeling/entities)
* [Bản ghi (Record)](/build-apps/data-modeling/records)

***

## Nhóm Field trong Cleeksy

### 1) Core fields (Field nhập liệu)

Dùng để người dùng nhập dữ liệu nghiệp vụ hằng ngày.

* Text / Long text
* Number / Currency / Percent
* Date / Datetime
* Single select / Multi select / Status
* User/People
* Attachment
* Auto number
* Sub-dataset (child table)

Các Field này phù hợp cho vòng đầu của hầu hết app.

### 2) Computed fields (Field tính toán/thu thập)

Dùng để tổng hợp, suy ra hoặc kéo dữ liệu theo logic có sẵn.

* [Tra cứu (Lookup)](/build-apps/data-modeling/lookup)
* [Tổng hợp (Rollup)](/build-apps/data-modeling/rollup)
* [Công thức (Formula)](/build-apps/data-modeling/formula)

### 3) Connection fields (Field liên kết dữ liệu)

Dùng để liên kết record theo quan hệ trong cùng app hoặc giữa các app.

* [Kết nối dữ liệu một chiều (Data Connection one-way)](/build-apps/data-modeling/data-connection-one-way)
* [Kết nối dữ liệu hai chiều (Data Connection two-way)](/build-apps/data-modeling/data-connection-two-way)

<Note>
  Trong Cleeksy, **publish/consume** là cơ chế tạo **connected app (kết nối ứng dụng)** khi chia sẻ dữ liệu giữa các app. Connected app này được dùng cho **Data Connection** (liên kết record), **Lookup** (tham chiếu field) và **Rollup** (tổng hợp).
</Note>

***

## Chọn Field đúng nhanh (quy tắc thực dụng)

* Cần nhập mô tả, ghi chú, nội dung dài → **Long text**
* Cần tính toán, lọc, tổng hợp theo số → **Number/Currency/Percent**
* Cần theo dõi deadline, SLA, ngày hiệu lực → **Date/Datetime**
* Cần chuẩn hoá lựa chọn (tránh gõ tự do) → **Single select**
* Cần gán người chịu trách nhiệm/đối tượng thao tác → **User/People**
* Cần đính kèm chứng từ, ảnh, tài liệu → **Attachment**
* Cần theo dõi “trạng thái quy trình” → **Status** (hoặc Single select nếu muốn linh hoạt hơn)

***

## Danh mục Field cốt lõi

* [Đánh số tự động (Auto number)](/build-apps/data-modeling/auto-number)

* [Bảng con (Child table)](/build-apps/data-modeling/sub-dataset-child-table)

* [Text / Long text](#text--long-text)

* [Number / Currency / Percent](#number--currency--percent)

* [Date / Datetime](#date--datetime)

* [Single select / Multi select / Status](#single-select--multi-select--status)

* [User/People](#userpeople)

* [Attachment](#attachment)

***

## Text / Long text

**Dùng khi:** nhập tên, tiêu đề, mã tham chiếu, mô tả, ghi chú.

### Text

* Phù hợp: tên ngắn, mã, tiêu đề
* Nên dùng khi dữ liệu cần hiển thị gọn ở Grid view hoặc làm “primary display”

### Long text

* Phù hợp: mô tả chi tiết, lý do, ghi chú, biên bản
* Nên dùng khi dữ liệu có thể nhiều dòng

### Thực hành tốt

* Quy ước đặt tên field rõ: `Title`, `Description`, `Note`
* Nếu cần tìm kiếm/lọc theo mã → dùng Text thay vì Long text
* Tránh dùng Long text cho dữ liệu có cấu trúc (ví dụ danh sách item) — cân nhắc **Sub-entity (bảng con)**

***

## Number / Currency / Percent

**Dùng khi:** số lượng, đơn giá, chi phí, tỷ lệ hoàn thành, KPI.

### Number

* Phù hợp: số lượng, điểm, chỉ số
* Lợi ích: lọc, sắp xếp, tính toán, rollup dễ dàng

### Currency

* Phù hợp: chi phí dự kiến, tổng tiền, ngân sách
* Thực hành tốt:
* thống nhất đơn vị tiền tệ theo app
* hiển thị định dạng dễ đọc

### Percent

* Phù hợp: tỷ lệ hoàn thành, mức chiết khấu, SLA %
* Thực hành tốt: quy định rõ “0–1” hay “0–100” theo cách hiển thị của hệ thống (tránh nhập sai)

### Validation gợi ý

* Không cho âm nếu không hợp lý (ví dụ số lượng)
* Cần giới hạn min/max nếu có quy định nghiệp vụ

***

## Date / Datetime

**Dùng khi:** deadline, ngày yêu cầu, ngày phê duyệt, mốc trạng thái, lịch hẹn.

### Date

* Phù hợp: chỉ cần ngày (không cần giờ)
* Ví dụ: Need-by date, ngày hiệu lực

### Datetime

* Phù hợp: cần chính xác tới giờ/phút
* Ví dụ: thời điểm submit/approve, SLA theo giờ

### Thực hành tốt

* Field tên rõ mục đích: `Requested date`, `Need-by date`, `Approved at`
* Nếu dùng cho SLA: ưu tiên Datetime, và dùng Formula/Rollup để tính chênh lệch nếu cần

***

## Single select / Multi select / Status

Nhóm Field lựa chọn giúp chuẩn hoá dữ liệu (tránh gõ tự do), đồng thời hỗ trợ lọc/nhóm trong View.

### Single select

**Dùng khi:** mỗi record chỉ chọn 1 giá trị.

* Ví dụ: Purchase type (Capex/Opex), Priority (Low/Medium/High)

### Multi select

**Dùng khi:** record có thể gắn nhiều nhãn.

* Ví dụ: Tags, bộ phận liên quan

### Status

**Dùng khi:** theo dõi trạng thái làm việc.

* Status thường đi kèm Workflow (nếu có quy trình)
* Ví dụ: Draft/Pending/Approved/Rejected/Closed

<Note>
  Nếu trạng thái được điều phối bằng Workflow, nên chốt quy tắc chuyển trạng thái ở Workflow và dùng Status để hiển thị/nhóm.
</Note>

### Thực hành tốt

* Tránh tạo quá nhiều lựa chọn ngay từ đầu. Bắt đầu tối thiểu, mở rộng theo Improve loop.
* Đặt tên lựa chọn rõ và nhất quán (không trùng nghĩa)

Liên quan: [Controls trong hệ thống (workflow vs validation vs roles)](/foundations/controls-in-system)

***

## User/People

**Dùng khi:** gán người chịu trách nhiệm, người yêu cầu, người phê duyệt, người tham gia.

Ví dụ:

* Requester (người yêu cầu)
* Approver (người phê duyệt)
* Assignee (người xử lý)

### Thực hành tốt

* Dùng User/People thay vì Text để:
* lọc theo người, nhóm theo người
* kết hợp quyền truy cập (access scope) và Workflow
* Phân biệt rõ:
* “Owner/Assignee” (người chịu trách nhiệm)
* “Watcher/Participants” (người theo dõi/tham gia)

Liên quan:

* [Mô hình phân quyền (Permissions model)](/reference/permissions-model-public)
* [Phê duyệt (Approvals)](/build-apps/workflows/approvals)

***

## Attachment

**Dùng khi:** cần đính kèm hoá đơn, báo giá, ảnh, tài liệu.

### Thực hành tốt

* Quy định rõ “đính kèm để làm gì” (audit, chứng từ, tham khảo)
* Nếu cần kiểm soát: đặt rule ở workflow/permission (ai được thêm/xoá)
* Không dùng Attachment để thay thế dữ liệu có cấu trúc (ví dụ danh sách item)

***

***

## Field mở rộng (tuỳ nhu cầu)

Nhóm Field này thường dùng khi app đã chạy ổn định và bắt đầu mở rộng trải nghiệm vận hành.

* [Mã vạch / QR (Barcode / QR)](/build-apps/data-modeling/barcode-qr)
* [Vị trí (Location)](/build-apps/data-modeling/location)
* [Đánh giá (Rating)](/build-apps/data-modeling/rating)

## Checklist chọn Field cho vòng đầu (khuyến nghị)

* Mỗi Entity có 1–2 field dễ nhận diện (Title/Code)
* Có Status nếu có vòng đời xử lý
* Có Date/Datetime cho các mốc quan trọng (submit/need-by/approved)
* Có User/People cho vai trò chính (requester/approver/assignee)
* Có Currency/Number cho các chỉ số cần đo (estimated cost, quantity)
* Attachment
* Auto number
* Sub-dataset (child table) chỉ thêm khi thực sự cần chứng từ

***

## Bước tiếp theo

* Tạo Field theo nhu cầu UI: [Tổng quan giao diện](/build-apps/ui-views/views-overview)
* Đặt controls đúng chỗ: [Controls trong hệ thống (workflow vs validation vs roles)](/foundations/controls-in-system)
* Dùng computed fields: [Tra cứu (Lookup)](/build-apps/data-modeling/lookup)
