Skip to content

Volume 12 · Business Logic & Workflows

เล่มนี้เจาะลึก business logic ของระบบ VTRC — state machine, approval chain, การคำนวณ และเงื่อนไขทางธุรกิจของแต่ละ domain (leave, welfare, fund, payroll, study, ...)


เล่มนี้คืออะไร

Volume 12 ตอบคำถาม "ระบบทำงานอย่างไร" ในระดับ business rule — ไม่ใช่แค่ "เรียก API อะไร" (อยู่ใน Volume 11) แต่เจาะว่า

  • เอกสารการลาเปลี่ยนสถานะอย่างไร ใครเป็นคนอนุมัติ กี่ขั้น
  • การเบิกค่ารักษาพยาบาลคำนวณยอดเบิกได้อย่างไร จ่ายเงินผ่านช่องทางใด
  • กองทุนสงเคราะห์คำนวณเงินสมทบอย่างไร เปลี่ยนอัตราได้เมื่อใด
  • สลิปเงินเดือนและภ.ง.ด. ถูกสร้างและเข้ารหัสอย่างไร

หลักการสำคัญ — logic กระจายอยู่ 2 ระบบ

ระบบ VTRC แบ่งการทำงาน business logic ออกเป็น 2 ส่วน:

ระบบทำหน้าที่
vtrc-apiworkflow engine — เก็บ status, history, จัดการ approval chain, ส่ง notification, สร้างเอกสาร (PDF/Excel)
cu-central-apiHR data + calculation — คำนวณยอดลาคงเหลือ, สิทธิ์การเบิก, ข้อมูลเงินเดือน, ภาษี, ข้อมูลสมาชิกกองทุน

ข้อสังเกตสำคัญ — vtrc-api ไม่ได้คำนวณตัวเลขสำคัญเองเลย เช่น วันลาคงเหลือ, สิทธิ์เบิก, ภาษี, เงินสมทบ — ตัวเลขเหล่านี้ถูกส่งต่อไป cu-central-api ทั้งหมด


ตัวเลขที่ควรจำ

ตัวเลขค่าที่มา
Domain ที่มี workflow5Leave, Welfare, Fund, Study, Auth
State machine ที่ซับซ้อนที่สุดWDHospital10 สถานะ
Multi-level approvalLeaveสูงสุด N ขั้น (ตาม config)
Single-level approvalWelfare, Fund, Study1 ขั้น
Cron jobs ที่ทำงาน3fund rate, delegate expire, stat log
Cron jobs ที่ถูกปิด1auto-cancel leave (0734)
Notification channels3in-app, push (FCM), public device
Cross-service calls12+vtrc-api → cu-central-api
ไฟล์ controller ที่ใหญ่ที่สุดhospital.js~3,200 บรรทัด

โครงสร้างบท

บทชื่อคำถามที่ตอบ
11.1Workflow pattern ร่วมทุก domain ใช้โครงสร้างเดียวกันอย่างไร
11.2Leave (การลา)state machine, multi-level approval, balance check
11.3Welfare / WDHospital10-state machine, payment export 3 ระบบ
11.4Payroll / Payslip / TaxPDF + qpdf + signed URL
11.5Provident Fundmember lifecycle, rate change window
11.6Study Leavecomposite model + transaction
11.7Authentication & Registrationlogin LDAP, registration, OTP
11.8Delegate & Roleมอบอำนาจอนุมัติแทน
11.9Notification systemevent → channel → audience
11.10Publication + Conicle + Cronpost/document publish, Conicle SSO, cron jobs
11.11Scorecard + known bugs + magic numbersbug ที่พบ, dead code, แนวทางปรับปรุง

สิ่งที่ Volume นี้ไม่ cover

  • API endpoint reference — อยู่ใน Volume 11
  • DB schema + ERD — อยู่ใน Volume 9
  • Security vulnerability — อยู่ใน Volume 10
  • Deployment / infrastructure — อยู่ใน Volume 13 (ยังไม่ได้เขียน)
  • Frontend interaction — อยู่ใน Volume 7 และ Volume 8

หมายเหตุเรื่อง path notation

ทุก file:line reference ใช้ path relative จาก src/ ของ vtrc-api:

ServiceBase path
vtrc-apivtrc-api/api/src/
cu-central-apicu-central-api/main-api/src/

ตัวอย่าง: lib/controllers/hrmi/hrmi.js:1219 หมายถึง vtrc-api/api/src/lib/controllers/hrmi/hrmi.js บรรทัดที่ 1219


คำแนะนำการอ่าน

  • วิศวกรใหม่ที่ต้องแก้ bug ใน domain ใด domain หนึ่ง — อ่าน บท 11.1 ก่อน เพื่อเข้าใจ pattern ร่วม แล้วกระโดดไปบทของ domain นั้น
  • ต้องเพิ่ม domain ใหม่ — อ่าน บท 11.1 ทำตาม pattern
  • ต้อง debug การจ่ายเงินบท 11.3
  • ต้อง debug สลิป/ภาษีบท 11.4
  • ต้องเข้าใจ auth flowบท 11.7