Skip to content

1.8 · สวัสดิการอื่นๆ

บทนี้ครอบคลุมฟีเจอร์สวัสดิการที่ไม่ใช่ WDHospital — ทุนการศึกษา (Study Leave), ค่าเล่าเรียนบุตร (Child Tuition), และสวัสดิการเสริมอื่นๆ

ฟีเจอร์เหล่านี้มีโครงสร้างซับซ้อนพอๆ กับ WDHospital แต่มี volume การใช้งานต่ำกว่ามาก — เก็บในรูปแบบ module แยกใน typeDefs/


1) Study Leave Request (ทุนการศึกษา)

พนักงานขอลาไปศึกษาต่อพร้อมรับทุน — vtrc-api/api/src/typeDefs/studyLeaveRequest.js:1-551

เป็นฟีเจอร์ที่ซับซ้อนที่สุดในเชิง form เพราะประกอบด้วย sub-entity หลายชั้น

Sub-entities ใน form

Sub-entityหน้าที่
StudyLeaveDetailข้อมูลการศึกษา — degree, course, major, academy, country, ระยะเวลา
StudyEducationFeeค่าเทอมแต่ละภาค — term, year, price, status, paidDate
StudyExtendรอบการขยายเวลาเรียน — แต่ละรอบมี documentNo, dates
StudyLearnRecordผลการเรียน — term, year, grade, GPAX
StudyStrategyเป้าหมาย/ผลลัพธ์ — link ไป Strategy/Goals/Output
StudyScholarshipสัญญาทุน — contractNo, dates, benefit amount, 2 guarantors
StudyScholarshipDetailรายละเอียดผู้ค้ำประกัน (name, idCard, relation, job, salary, address)
StudyHistoryaudit trail
StudyAttachmentไฟล์แนบ

ผู้ค้ำประกัน — 2 คน

StudyScholarship บังคับว่าต้องมีผู้ค้ำประกัน 2 คน (studyLeaveRequest.js:83-122) — เป็น policy ทางธุรกิจ เพราะถ้าพนักงานไม่กลับมาทำงาน ผู้ค้ำต้องรับผิดชอบ

ข้อมูลที่เก็บต่อผู้ค้ำ

  • ชื่อ-นามสกุล, idCard, ความสัมพันธ์กับพนักงาน
  • อาชีพ, ตำแหน่ง, เงินเดือน/เดือน + ปี
  • สถานภาพสมรส
  • ที่อยู่

PersonalData — code maps

studyLeaveRequest.js:499-549 — code map ที่ฝังใน GraphQL docstring

Marital status

Codeสถานภาพ
1โสด
2สมรส
3หย่า
4หม้าย

Military status

Codeสถานภาพทหาร
1ผ่านการเกณฑ์ทหาร
2ผ่อนผัน
3ยกเว้น
4ไม่ระบุ

2) Study Leave master data

vtrc-api/api/src/typeDefs/studyLeave.js:1-85

ใช้สำหรับ dropdowns และ master data ของ Study Leave Request

Query/Mutationหน้าที่
fetchDropDownMasterData(dropDownType, refCode)generic dropdown
fetchListMasterData(...)list ของ master data
dropDownstudyLeaveYear(studyLeaveRequestId)ปีที่มีให้เลือก
detailTermFees(empCode, isAdmin)list ของ studyLeaveNo / studyLeaveDocumentNo ที่ใช้ link ค่าเทอม
create/update/destroyDropDownMasterDataCRUD (admin เท่านั้น)

3) Child Tuition (ค่าเล่าเรียนบุตร)

vtrc-api/api/src/typeDefs/childTuition.js:1-79

จุดสำคัญ — read-only ใน VTRC (mutation block ทั้งหมดถูก comment ไว้, childTuition.js:21-22)

การแก้ไขต้องทำใน HRMI หรือ backoffice อื่น — VTRC แค่ display

Queries

Queryหน้าที่
fetchListChildTuitions(empCode, eduYear, eduStatus, tuitionDTID)list หลัก
fetchEachChildTuitionDetail(eduYear, eduStatus, childNo)รายบุตร
fetchListChildDetailInTuitionsummary ต่อบุตร

ChildTuitionDetail field

graphql
type ChildTuitionDetail {
  documentNo: String
  documentCreatedDate: String
  eduStatus: String
  childNo: String
  childFullName: String
  educationLevel: String
  eduGrade: String
  eduYear: String
  semaster: String
  academyType: String
  eduPeriod: String
  payDate: String
  amount: Float
  sourceDB: String
  childTuitionHistory: [ChildTuitionHistory]
}

Summary

fetchListChildDetailInTuition คืน summary แบบนี้

graphql
type ChildDetailInTuition {
  childNo: String
  childFullName: String
  educationLevel: String
  eduGrade: String
  eduYear: String
  totalAmount: Float
  remainingTuition: Float
  listNo: Int
}

remainingTuition = ยอดที่ยังเบิกได้ในปีการศึกษานี้


4) Study Education Fee

vtrc-api/api/src/typeDefs/studyEducation.js

และ controller — lib/controllers/study/studyEducationFee.js + studyEducationFeeV2.js (V2 variant บ่งชี้ว่ากำลัง refactor)

ใช้สำหรับจัดการค่าเทอมแต่ละภาคของพนักงานที่ลาศึกษา — link กับ StudyEducationFee sub-entity ใน Study Leave Request


5) สวัสดิการเสริมอื่นๆ (ฝั่ง backoffice subsystems)

นอกจาก 3 module หลักข้างบน ยังมี subsystems ที่ backoffice เชื่อมผ่าน axios แยก (เห็นใน vtrc-rc-backoffice/src/config/)

Subsystemaxios configหน้าใน backoffice
Benefitaxios-benefit.js, axios-benefit-i3.jspages/Benefit/, pages/OtherWelfare/
Paymentsaxios-payments.jspages/Payment/

subsystems เหล่านี้เป็นระบบแยก ไม่ได้ integrate กับ vtrc-api แบบเดียวกับ WDHospital — รายละเอียดใน บท 1.13


6) Provident Fund — แยกบท

กองทุนสงเคราะห์เป็นฟีเจอร์ใหญ่ แยกไปที่ บท 1.9 เพราะมี flow เปลี่ยน contribution rate + beneficiary + cron job เฉพาะ


ความแตกต่างระหว่างฟีเจอร์สวัสดิการ

ฟีเจอร์ข้อมูลเก็บที่ไหนApprover
WDHospitalVTRC (MariaDB)MasterApprovers table
Study Leave RequestVTRC (MariaDB)HR + ผู้บังคับบัญชา
Child TuitionHRMI (VTRC อ่านอย่างเดียว)HR (ผ่าน HRMI)
Provident FundVTRC (MariaDB)auto (cron job)

เมื่อไรต้องถาม HR

Study Leave Request มี policy ที่ซับซ้อนและไม่ได้ document ไว้ใน code

  • ระยะเวลาที่ลาได้ — ถาม HR
  • เงื่อนไขผู้ค้ำประกัน (เงินเดือนขั้นต่ำ?) — ถาม HR
  • กรณีศึกษาต่างประเทศ vs ในประเทศ — ถาม HR
  • policy "ต้องกลับมาทำงานกี่ปี" — ถาม HR

อย่าเดาจาก field ใน form เพราะ field เก็บข้อมูลแต่ไม่ได้เก็บ policy


ขั้นตอนถัดไป

ไป บท 1.9 กองทุนสงเคราะห์ (Provident Fund) →