Quy tắc Phân loại Balo — Tổng quát (General Rules)
QUY TẮC PHÂN LOẠI BALO — TỔNG QUÁT (GENERAL RULES)
(Khung chung cho việc lấp đầy nhãn của balo_thuc_the qua nhiều quy tắc/DOT)
Bản nền (v0.1) — chờ Huyên duyệt. Đây là khung TỔNG QUÁT. Mọi quy tắc phân loại cụ thể trong folder
label-rules/PHẢI tuân khung này. Folder này được lập để viết DẦN hàng trăm quy tắc — mỗi quy tắc lấp đầy một phần balo.
0. Bối cảnh & mục đích
balo_thuc_the là tấm gương cho hàng chục triệu thực thể bên trong hệ thống — để con người nhìn thấy tổng thể, kiểm soát, hình dung mà điều hành, và để AI/Agent biết hệ có gì, gọi quy trình/DOT nào, lưu ở đâu.
Việc phân loại chúng (Loài, Chuyên môn, Nhóm, Lớp, và các trục về sau) không làm một lần. Nó được lấp đầy dần, qua hàng trăm quy tắc — mỗi quy tắc nhận ra một nhóm thực thể và gán nhãn cho phần đó. Nhiều quy tắc cộng dồn → balo đầy dần.
File này là khung chung: nó định nghĩa mô hình nền và luật chơi mà mọi quy tắc cụ thể phải theo. Mỗi file khác trong folder = một quy tắc cụ thể (ví dụ: "mọi quy trình do Kestra điều phối → Nhóm = Build_business, Loài = workflow").
1. Mô hình nền: mỗi trục một SSOT, balo chỉ trỏ
-
Mỗi trục phân loại có đúng một bảng SSOT. "Trục này có những giá trị nào" (Loài, Chuyên môn, Nhóm, Lớp…) 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 (
/reports, Directus), 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.
-
Đượ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 hiện tại
| Trục | SSOT | Trạng thái |
|---|---|---|
| Loài | entity_species |
Đã có (~42 giá trị, đang lớn dần) → dùng lại |
| Chuyên môn | bảng SSOT riêng (sẽ tạo) | T1…T7; sẽ có nghiệp vụ quanh nó |
| Nhóm | bảng SSOT riêng (sẽ tạo) | System / Build_infrastructure / Build_business |
| Lớp | bảng nhỏ seed từ Hiến pháp Điều 0-B | atom / molecule / compound / material / product / building (6 giá trị đã khoá) |
Lớp là bản thực thi của luật (Điều 0-B), không phải bản sao tùy tiện.
3. Một quy tắc phân loại là gì
Mỗi quy tắc = ĐIỀU KIỆN → GÁN:
- Điều kiện: nhận ra một nhóm thực thể (ví dụ: "tên bắt đầu bằng
fn_", "do Kestra điều phối", "nằm trong schemapublic"). - Gán: đặt khóa cho một hoặc nhiều trục của những dòng đó (gán mã trỏ về SSOT, không gán chữ).
Ví dụ một quy tắc: "Mọi quy trình do Kestra điều phối → Nhóm = Build_business, Loài = workflow."
4. Luật cứng cho MỌI quy tắc (vì quy mô hàng chục triệu dòng)
- Theo LÔ, không tay. Quy tắc chạy server-side qua SQL/DOT trên cả tập thoả điều kiện — không phân loại từng dòng bằng tay. Ở quy mô triệu dòng, tay là bất khả thi.
- Idempotent. Chạy lại nhiều lần ra cùng kết quả, không nhân đôi, không hỏng phần đã đúng.
- Một chiều. Quy tắc chỉ ĐỌC điều kiện và GHI nhãn vào balo. Không đụng SSOT, không đụng dữ liệu gốc của thực thể.
- Cộng dồn, có thứ tự ưu tiên. Nhiều quy tắc cùng lấp đầy. Khi hai quy tắc chồng lên một dòng, phải rõ quy tắc nào thắng. Quy tắc sau không âm thầm xoá nhãn quy tắc trước đặt, trừ khi cố ý và ghi rõ.
- Soi, không chặn (Amidan). Dòng chưa quy tắc nào phủ thì để trống — vẫn sống. Không quy tắc nào được chặn ghi hay dừng hệ.
- Có dấu vết (provenance). Mỗi nhãn nên biết do quy tắc nào đặt, để lần ngược và sửa khi sai. Đây là điều kiện sống còn khi có hàng trăm quy tắc cùng chạy.
5. Lằn ranh cấm (để không lặp lại hệ khai sinh/registries/governance cũ)
Hệ cũ chết không phải vì có bảng danh mục, mà vì đem danh mục đi "đăng ký — duyệt — đồng bộ hai chiều" với mọi nơi. Tuyệt đối tránh:
- Không dựng máy đồng bộ hai chiều giữa balo và SSOT.
- Không birth/đăng ký, không workflow duyệt vây quanh các bảng SSOT.
- Không FK ngược từ SSOT vào balo.
- Không tạo bảng tổng hợp chép lại danh sách của nhiều trục.
Các bảng SSOT chỉ để chọn và hiện tên.
6. 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. Quy tắc là cách balo được lấp đầy dần — mỗi quy tắc một phần, cộng dồn, một chiều, chạy lại được, có dấu vết.
Các quy tắc cụ thể: xem các file khác trong folder label-rules/.