← หน้าหลัก
Lego Engine v2

เครื่องยนต์ Onboarding
แบบ Flow-agnostic

1 engine · ทุก flow · admin ตั้งค่าได้โดยไม่ deploy

→ กดลูกศร เพื่อเริ่มนำเสนอ

Concept

คำว่า "flow" มี 2 ความหมาย

⚙️
Flow การทำงานของ system
โมเดล runtime ของ engine — รัน flow ใดๆ อย่างไร (generic)
📦
Flow Definition
แคตตาล็อก flow จริงที่ admin ตั้งค่าเก็บใน DB
Runtime

Definition → Snapshot → Instance

FlowDefinition Snapshot FlowInstance StepData

Snapshot = แช่แข็ง definition ตอน start → แก้ทีหลังไม่กระทบ instance ที่รันอยู่

Step

Step มี 2 โหมดทำงาน

🙋 Interactive
รอ user action (Next/Back/Submit) — engine หยุดรอแล้วคืน nav ให้ FE
⚡ Automatic
engine รัน handler เอง แล้วเดินต่อจนเจอ Interactive หรือจบ
State Machine

วงจรชีวิต FlowInstance

stateDiagram-v2
  [*] --> Draft
  Draft --> Submitted
  Draft --> Finalized
  Submitted --> Approved
  Submitted --> Rejected
  Approved --> Finalized

resume ได้เฉพาะ Draft / CorrectionRequested · ที่จบแล้ว = เริ่มใหม่

Catalog

Flow Definition ในระบบ

STANDARD_CUSTOMER_ONBOARDING customer ใหม่ · OTP → Consent → NDID → PersonalInfo
CUSTOMER_FIXED_ONBOARDING customer ที่ถูกเชิญ · + provision สิทธิ์
NEW_REQUESTOR นิติบุคคลใหม่ · มี 4-eye approval
RETURNING_REQUESTOR มีบัญชีแล้ว · ไม่มี OTP
Live

STANDARD flow — กดดูได้จริง

Interactive

ยืนยันตัวตนด้วย OTP → สร้าง User (minimal) + bind owner เข้า instance

👆 คลิกเปลี่ยน step ได้ — ทำงานสดทั้งตอนอ่านและตอนนำเสนอ
Backend

เส้นทาง 1 request: API → DB

Controller MediatR pipeline FlowEngine Repository PostgreSQL

Clean Architecture 4 ชั้น · StepData เก็บเป็น jsonb

Frontend

1 path วิ่งได้ทุก flow

BE บอก stepType → FE หา component จาก STEP_REGISTRY

currentStep.type StepHost STEP_REGISTRY Angular component
Extend

เพิ่ม Step ใหม่ — stepType = contract

StepCatalog Backend Handler FE STEP_REGISTRY

string เดียวกันทั้ง 3 ที่ — ไม่ตรง = ไม่ทำงาน

สรุป

Lego = ต่อบล็อก
ไม่ใช่เขียนใหม่

flow ใหม่ = seed FlowDefinition + (ถ้ามี step ใหม่) เพิ่ม handler + component

นำเสนอด้วย reveal.js · อ่านฉบับเต็มได้ที่หน้า Docs