KB-5121
Hướng dẫn + Bản ghi + Điều kiện (lời/mã) + Bản đồ bảng PG để chạy (ghi chú vòng 12)
4 min read Revision 1
designguidancerecordsconditiontriggerpg-schemadot4-mothersrunnable
Hướng dẫn + Bản ghi + Điều kiện + Bản đồ bảng PG (vòng 12)
Date: 2026-06-20 | Status: Hướng dẫn=BUILT (component chung); còn lại=DESIGN chờ build từng bước. Component hướng dẫn: https://vps.incomexsaigoncorp.vn/ui-preview/mcp-writes/guide-component-v1.html
Yêu cầu (Huyên) — "làm để chạy, không để xem"
- Hướng dẫn thống nhất ở cả 4 Mẹ: text/ảnh/audio/video; ẩn sau nút; linh hoạt 0/ít/đủ; một khuôn dễ học. → đã build.
- Nguyên tắc SOT: mỗi đầu nối buộc đúng bảng SOT của nó (field→field_registry, trigger→trigger_registry…). Thiếu → DOT tạo trước (Đ0-G) rồi mới nối.
- Phần D định vị BẢN GHI: input gắn bản ghi cụ thể → cần kho chứa + chỉ định bản ghi nào (1/nhiều) + đầu ra trỏ đúng bảng (vd "khách hàng nào").
- Điều kiện viết bằng hàm: dưới phần bản ghi đặt khối Điều kiện với 2 ô: mô tả lời + mã lọc. Output lọc theo bản ghi cụ thể hoặc theo điều kiện (nữ, 1 tuần gần nhất…).
Đã build vòng này
- guide.js —
EcoGuide.render(host, {text,diagram,audio,video,steps[]})dùng class z-guide (mot-theme). Ẩn mặc định, nút mở; tự co giãn; verified 3 trạng thái (none="chưa có" · ít="1 mục" · đủ="5 mục"). - guide-component-v1.html — demo 3 trạng thái + designer sống + spec. guidance = jsonb
{text,diagram,audio,video,steps[]}gắn trên item.
Còn build (từng bước)
- Nối guide.js vào product view của cả 4: thẻ MOT, MOIT-form, MODT, MODUT (+ MODW node). Mỗi builder thêm 1 mục "Hướng dẫn" để khai.
- MODIT/MODT: thêm khối Bản ghi =
{target_collection, record_selector}(định vị 1/nhiều bản ghi) + đầu ra trỏ bảng. - MODUT/MODIT: thêm khối Điều kiện 2 ô (mô tả lời + mã lọc) ngay dưới Bản ghi.
- Nguyên tắc tạo-trước: ở mỗi picker (trigger/field/condition), nếu chưa có trong registry → nút "DOT tạo mới" (Đ0-G) rồi mới chọn.
BẢN ĐỒ BẢNG PG (để chốt schema — bước cuối, sau khi xong luồng)
| Thành phần | Bảng SOT | Cột chính |
|---|---|---|
| Trường | field_registry ✓ |
code, collection_code, name, field_kind, data_type, interface(widget), validation jsonb, is_required, owner_mother |
| Form nhập (MOIT) | input_form_registry ✓ |
code, target_collection, field_set jsonb, form_schema jsonb (layout L1–4), routing (direct/queue), record_binding jsonb, guidance jsonb |
| Báo cáo (MOUT) | output_table_registry (cần dựng) |
code, columns jsonb, data_fn, condition_ref, period, schedule/cron, triggers[], recipients[], export[], guidance jsonb |
| Trigger | trigger_registry ✓ |
code, type, định nghĩa; DOT tạo nếu thiếu |
| Điều kiện | condition_registry (MỚI) |
code, description_text (lời), filter_code (mã/SQL/DOT fn), params jsonb |
| Bản ghi/dữ liệu | collection_registry ✓ + bảng dữ liệu thật |
record key, các cột nghiệp vụ |
| Node MOW | workflow_registry |
node, parent, executors[], recipients[], store_collections[], when, guidance |
| Task MOT | task_registry |
input_form_ref, report_fields, triggers[], when, executors[], recipients[], guidance |
| Nhân sự | collection HR | id, name, dept, role → tự đọc bộ phận |
| Khai sinh/duyệt | birth_registry ✓ governance_registry ✓ |
cổng Đ0-G: tạo-trước khi nối |
Luồng vào/ra (để đếm bảng)
- Vào (input): form(input_form_registry) → fields(field_registry) → submit → DOT validate(PG) → ghi
target_collectiontheo routing (direct | queue→staging→MOW duyệt), gắn record_selector + executor + trigger. - Ra (output): report(output_table_registry) →
data_fn+condition_registry→ đọc collection → render/export → phân phối recipients theo schedule/trigger. - Điều kiện dùng chung 2 phía (validate input / filter output), luôn là hàm (filter_code) + mô tả lời.
- DOT = lớp thực thi: write input, run data_fn, apply condition, fire trigger, tạo-trước khi thiếu (Đ0-G). PG-first, Nuxt chỉ render.
Bước tiếp: nối guidance vào 4 product view + thêm Bản ghi/Điều kiện vào MODIT/MODUT, rồi khoá schema condition_registry/output_table_registry.