Quy tắc Phân loại Balo — Quy định Chung (General Rules)
QUY TẮC PHÂN LOẠI BALO — QUY ĐỊNH CHUNG (GENERAL RULES)
Văn bản khung của thư mục
label-rules/. Ban hành nháp: 2026-06-28. Chờ Huyên duyệt. Đây là tài liệu TỔNG QUÁT. Mỗi quy tắc cụ thể nằm ở một file riêng trong thư mục này.
§0. Mục đích thư mục
Thư mục label-rules/ là nơi tích lũy dần các quy tắc phân loại cho balo_thuc_the.
Bối cảnh phải nhớ: đây là câu chuyện của hàng chục triệu thực thể, và sẽ là câu chuyện dài với hàng trăm quy tắc / DOT. Mỗi quy tắc chỉ lấp một phần của balo — không quy tắc nào lấp hết. Balo được làm đầy DẦN, từng mảng một, theo từng quy tắc thêm vào.
Văn bản này đặt nền chung mà mọi quy tắc cụ thể phải tuân theo. Quy tắc cụ thể không được phá các nguyên tắc ở đây.
§1. Nguyên tắc nền — SSOT & một chiều
- Mỗi trục phân loại có đúng một SSOT. "Trục này có những giá trị nào" chỉ được khai ở một bảng duy nhất. Cấm tạo bảng tổng hợp chép lại nhiều trục.
- Balo không chứa danh sách, chỉ chứa khóa. Mỗi cột phân loại trên balo là một trường quan hệ, giữ MÃ trỏ về SSOT của trục đó. Balo không lưu tên/chữ mô tả.
- Hiện tên, không hiện mã. Trên màn hình, cột phân loại hiển thị TÊN CHUẨN đọc sống từ SSOT. Người dùng luôn thấy chữ ("Quy trình"), không thấy mã (
workflow). Đổi tên ở SSOT một chỗ → mọi nơi tự hiện tên mới. - Quan hệ một chiều. Balo trỏ vào SSOT; SSOT KHÔNG biết balo tồn tại — không FK ngược, không trigger ràng, không máy đồng bộ, không đăng ký, không workflow duyệt vây quanh. SSOT chỉ để CHỌN và HIỆN TÊN.
- Được để trống (Amidan). Cột chưa điền vẫn hợp lệ; dòng chưa phân loại vẫn sống, không bị chặn. Khi đã điền thì khóa phải trỏ tới một giá trị có thật trong SSOT.
- Lọc bằng dropdown từ SSOT. Vì cột là quan hệ, bộ lọc là menu chọn các giá trị có thật — không gõ tay, chống lệch chữ khi thống kê.
§2. Bản đồ trục → SSOT (hiện tại)
| Trục | SSOT | Trạng thái |
|---|---|---|
| Loài | entity_species |
Đã có — dùng lại |
| Chuyên môn | bảng SSOT mới (sẽ tạo) | Chưa có — phải tạo |
| Nhóm | bảng SSOT mới (sẽ tạo) | Chưa có — phải tạo |
| Lớp | seed 6 giá trị từ Hiến pháp Điều 0-B (atom / molecule / compound / material / product / building) |
Chuẩn gốc ở luật |
Trục mới sau này: nếu khái niệm đã có nhà (bảng vận hành riêng) → trỏ về đó. Nếu chưa có → tạo ĐÚNG MỘT bảng làm SSOT. Không bao giờ tạo bảng tổng hợp chép lại.
§3. Khuôn chuẩn của một quy tắc
Mỗi quy tắc cụ thể = một câu "ĐIỀU KIỆN → GÁN". Một file quy tắc gồm:
- Mã + tên ngắn: ví dụ
R-001 — Quy trình do Kestra điều phối. - Điều kiện: mô tả nôm na + truy vấn PG nhận diện đúng đối tượng (đối tượng nào thì quy tắc này áp).
- Gán: trục nào = giá trị nào (ghi MÃ của SSOT).
- Phạm vi: áp cho loại đối tượng nào trong balo.
- Thực thi: một DOT đọc PG → ghi KHÓA vào balo. Một chiều. Amidan (không chặn).
Giữ mỗi quy tắc NHỎ và ĐỘC LẬP. Một quy tắc lấp một mảng; không quy tắc nào ôm tất cả.
§4. Khi nhiều quy tắc gặp nhau
- Mặc định KHÔNG đè: một quy tắc chỉ lấp ô đang TRỐNG. Đã có giá trị (do người hoặc quy tắc khác gán) thì không ghi đè.
- Khi thật sự cần ưu tiên giữa các quy tắc, ghi rõ độ ưu tiên TRONG từng quy tắc — định nghĩa khi cần, không dựng cơ chế ưu tiên tổng quát trước.
- Không quy tắc nào được chặn ghi hay xóa giá trị có sẵn của trục khác.
§5. Ví dụ mẫu
R-001 — Quy trình do Kestra điều phối
- Điều kiện: đối tượng là quy trình được Kestra orchestrate.
- Gán:
loai = workflow,nhom = Build_business. - Phạm vi: các thực thể quy trình.
- Thực thi: DOT đọc PG nhận diện → ghi khóa vào balo, chỉ lấp ô trống.
Đây là MỘT trong hàng trăm quy tắc sẽ thêm dần để làm đầy balo.
§6. Lằn ranh cấm (giữ đơn giản — để không lặp lại hệ khai sinh/registries/governance cũ)
- KHÔNG dựng bộ máy đồng bộ hai chiều quanh việc gán nhãn.
- KHÔNG birth/đăng ký, KHÔNG workflow duyệt vây quanh các bảng SSOT.
- KHÔNG để quy tắc nào chặn ghi (luôn Amidan: lỗi thì soi, không chặn).
- KHÔNG tạo bảng tổng hợp chép lại các trục.
Câu chốt: SSOT là các bảng chi tiết của từng trục. Balo là tấm gương — giữ khóa trỏ về SSOT, hiện tên sống từ SSOT, không ôm bản sao nào. Mỗi quy tắc trong thư mục này lấp một phần balo, một chiều, không chặn.
§7. Khoảng trống đã phát hiện & định hướng xử lý
Ghi nhận 2026-06-28, trong lúc đưa Loài SSOT (
entity_species) lên/reports. Đây là việc HOÃN có chủ đích — ghi lại để không quên, KHÔNG lấp trong nhịp này.
Hiện trạng (số thật):
balo_thuc_the: 2146 dòng, cộtloai(Loài) đã điền = 0/2146.entity_species(SSOT Loài): 42 loài cấp domain — chưa có loài nào mô tả object PG thô (function/table/view/trigger).balođã cóloai_census= {function, table, view, trigger} — "kiểu cơ học" của object PG đã nằm sẵn ở cột khác.- Loài "Table SSOT" (cho chính các bảng SSOT): chưa thêm.
Định hướng xử lý (làm ở nhịp tiêu chí, sau khi có tiêu chí rõ — không làm vội):
- Tách bạch
loai_censusvàloai:loai_census= kiểu cơ học PG (đã có);loai= loài ngữ nghĩa (cần định nghĩa). Hai cái KHÔNG nhập làm một. entity_speciesnhiều khả năng phải BỔ SUNG loài để phủ thực tế balo — hoặc chấp nhận object hạ tầng tạm chưa có loài (Amidan: để trống, không ép).- Gán Loài cho balo phải qua QUY TẮC (theo lô, idempotent, một chiều) như §3-§4 — KHÔNG gán tay 2146 dòng.
- Cột Loài để trống = "chưa phân loại", không phải lỗi — nhìn balo là biết tiến độ.
Nguyên tắc: ghi nhận khoảng trống ≠ lấp khoảng trống. Mục này chỉ để không quên.