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"

  1. 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.
  2. 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.
  3. 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").
  4. Đ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.jsEcoGuide.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_registrygovernance_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_collection theo 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.