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) |
StudyHistory | audit 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/destroyDropDownMasterData | CRUD (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) | รายบุตร |
fetchListChildDetailInTuition | summary ต่อบุตร |
ChildTuitionDetail field
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 แบบนี้
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/)
| Subsystem | axios config | หน้าใน backoffice |
|---|---|---|
| Benefit | axios-benefit.js, axios-benefit-i3.js | pages/Benefit/, pages/OtherWelfare/ |
| Payments | axios-payments.js | pages/Payment/ |
subsystems เหล่านี้เป็นระบบแยก ไม่ได้ integrate กับ vtrc-api แบบเดียวกับ WDHospital — รายละเอียดใน บท 1.13
6) Provident Fund — แยกบท
กองทุนสงเคราะห์เป็นฟีเจอร์ใหญ่ แยกไปที่ บท 1.9 เพราะมี flow เปลี่ยน contribution rate + beneficiary + cron job เฉพาะ
ความแตกต่างระหว่างฟีเจอร์สวัสดิการ
| ฟีเจอร์ | ข้อมูลเก็บที่ไหน | Approver |
|---|---|---|
| WDHospital | VTRC (MariaDB) | MasterApprovers table |
| Study Leave Request | VTRC (MariaDB) | HR + ผู้บังคับบัญชา |
| Child Tuition | HRMI (VTRC อ่านอย่างเดียว) | HR (ผ่าน HRMI) |
| Provident Fund | VTRC (MariaDB) | auto (cron job) |
เมื่อไรต้องถาม HR
Study Leave Request มี policy ที่ซับซ้อนและไม่ได้ document ไว้ใน code
- ระยะเวลาที่ลาได้ — ถาม HR
- เงื่อนไขผู้ค้ำประกัน (เงินเดือนขั้นต่ำ?) — ถาม HR
- กรณีศึกษาต่างประเทศ vs ในประเทศ — ถาม HR
- policy "ต้องกลับมาทำงานกี่ปี" — ถาม HR
อย่าเดาจาก field ใน form เพราะ field เก็บข้อมูลแต่ไม่ได้เก็บ policy