Built-in module · WS runtime · 08/7/2026

workflow — Quy trình, phê duyệt & connector (built-in) BUILT-IN

Hai việc dùng chung: luồng phê duyệt (miễn giảm, báo cáo, booking — thay vì mỗi module tự viết) và connector + credential — một cửa cho mọi tích hợp ngoài (vendor DAT, HĐĐT, cổng thanh toán, Zalo OA). State machine hồ sơ vẫn ở student.

🎯 Hạ tầng dùng chung — bật dần theo nhu cầu. Hiện trạng: engine generic chưa module nào dùng. Đích = 2 vai trò rõ: luồng PHÊ DUYỆT dùng chung + két CONNECTOR/credential.
1

Feature / BO / Action

FeatureBO chínhAction
definitionĐịnh nghĩa quy trình / luồng duyệtviewconfigure
ticketPhiếu việc chạy theo quy trìnhviewcreateassignapprove
connectorKết nối hệ ngoài (adapter)viewconfiguretest
credentialKét thông tin xác thực (mã hóa)viewconfigurerotate
2

Manifest — khai báo permissions

Permission key theo convention workflow.<group>.<feature>.<action>. fields/scopeVars theo plan data-scope (manifest v1.1).

{ "key": "workflow", "name": "Quy trình & Connector", "version": "1.1.0 (đích)", "permissions": [ { "group": "workflow", "feature": "definition", "label": "Quy trình / Luồng duyệt", "actions": [ "view", "configure" ] }, { "group": "workflow", "feature": "ticket", "label": "Phiếu / Ticket", "actions": [ "view", "create", "assign", "approve" ] }, { "group": "integration", "feature": "connector", "label": "Kết nối (Connector)", "actions": [ "view", "configure", "test" ] }, { "group": "integration", "feature": "credential", "label": "Thông tin xác thực", "actions": [ "view", "configure", "rotate" ] } ] }
3

Dữ liệu chính

▸ Luồng duyệt

TrườngKiểuBắt buộcGhi chú
Tên luồngtext
Các bướcjsonbVai trò duyệt từng bước
Điều kiệnjsonbvd số tiền > X → cần GĐ duyệt
SLA nhắcnumber (giờ)Quá hạn → notify

▸ Ticket

TrườngKiểuBắt buộcGhi chú
Đối tượng nguồnmodule + BO idvd tuition.discount #123
Luồng / bước hiện tạiref·text
Người xử lýref
Lịch sử qua bướcappend-onlyBằng chứng phê duyệt — không sửa

▸ Connector

TrườngKiểuBắt buộcGhi chú
Mã / loạitext·enumdat-vendor / hddt / payment / zalo-oa
Endpoint / cấu hìnhtext·jsonb
Trạng thái / lần chạy cuốienum·datetimeLỗi liên tục → cảnh báo QTHT

▸ Credential

TrườngKiểuBắt buộcGhi chú
Têntext
Connectorref
Giá trịtext mã hóa at-restModule chỉ đọc qua connector API — không thấy giá trị thô
Hạn / người quản lýdate·refXoay khóa không sửa module
4

Ma trận quyền — vai trò × feature

Vai trò theo WS0. R xem · W tạo/sửa · A duyệt · — không có quyền.

FeatureQTHTGIAM_DOCQL_DAO_TAOTUYEN_SINHGIAO_VUGIAO_VIENKE_TOANNHAN_SU
definitionWR
ticketRRA*W*A*A*
connectorWR
credentialW

¹ chỉ bản ghi mình phụ trách · ² chỉ của chính mình · W·A = tạo/sửa + duyệt

* quyền duyệt ticket theo vai trò khai trong từng bước của luồng — ma trận chỉ là mặc định.

5

Quy tắc nghiệp vụ & liên kết

Quy tắc

  • Module opt-in luồng duyệt: đăng ký (BO, luồng) — vd tuition.discount, report.so-xd; không ép state machine hồ sơ vào đây
  • Credential chỉ đọc qua connector API; rotate không đụng module
  • Lịch sử ticket bất biến
  • Connector áp dụng pattern P4 (outbox retry) khi gọi ra ngoài

Liên kết chéo

  • dat — connector vendor DAT (GĐ1)
  • finance — connector HĐĐT
  • payment (v2) — cổng thanh toán
  • notify — credential Zalo OA
  • tuition/report — luồng duyệt

⚠ Câu hỏi mở

  • Interface chuẩn adapter — định nghĩa khi viết connector DAT đầu tiên
  • Credential mã hóa bằng gì (libsodium/KMS)?