GCME One Resource
Frontend : https://gcme-one-resource.nyla-dev.com
Backend : https://gcme-backend.nyla-dev.com
Swagger : https://gcme-backend.nyla-dev.com/swagger
ผู้สมัครงานภายนอก : https://gcme-one-resource.nyla-dev.com/applicant
System Architecture

INFO
จะมี 3 Actor หลัก
- GCME
- Customer : ลูกค้าเลือก CV
- Job Applicant : ผู้สมัครงาน Link ผู้สมัครงานภายนอก
Activity Diagram

INFO
- PC/Requester ต้องการหาพนักงานสำหรับตำแหน่งจะมี 2 แบบ
- แบบประจำ (Permanent)
- แบบสัญญาจ้าง (Contact)
- ผ่านกระบวนการ Position Request Process (Recruitment)
- Recruiter เปิดการสรรหารับสมัคร
- รับจากพนักงานภายใน (Employee)
- รับจากบุคคลภายนอก (Job Applicant)
- ปิดการรับสมัคร Recruiter ทำการเลือก CV ทำเป็น CV List ส่งให้ Customer
- Customer ทำการเลือก CV
- Recruiter ทำการ Interview
- ผ่านการ Interview ขออนุมัตเงินเดือน Salary Approval
- สร้าง Project เลือกตำแหน่งที่สรรหาแล้วเข้า Project
- ออก Report + Org Chart
Roles
จะมี 2 แบบ
| Role | Description |
|---|---|
| Permission Role (บทบาทผู้ใช้งาน) | กำหนดว่า "เข้าเมนูไหนได้บ้าง" อ้างอิงตาม รายละเอียด Role |
| Approval Authority (อำนาจการอนุมัติ) | กำหนดว่า "อนุมัติใครได้บ้าง" - Manpower Request Flow |
แนวทางการ Dev
แบ่งการส่งข้อมูลออกเป็น 2 ส่วนตามหลักการ
Permission Role (ส่งมาใน Token/Payload) ตัวนี้ "ควรส่งมา" เพื่อให้ Frontend รู้ว่าต้อง Render หน้าจออย่างไร
เหตุผล : Frontend จะใช้ค่านี้ (เช่น role: "Admin") เพื่อเช็คว่าจะโชว์เมนูไหนบ้าง หรือจะ Disable ปุ่ม "ลบ" หรือ "แก้ไข" หรือไม่ตามเมนู Manage Permissions
รูปแบบ : มักใส่ไว้ใน JWT (JSON Web Token) เพื่อให้ Frontend อ่านค่าได้ทันทีโดยไม่ต้องยิง API ซ้ำ
Approval Authority (ไม่ควรส่ง "เงื่อนไข" แต่ส่ง "ขอบเขต") ตัวนี้ "ไม่แนะนำให้ส่งเป็น Logic" (เช่น ไม่ต้องบอก Frontend ว่าต้องเช็ค Column L หรือ AO) แต่ให้ Backend เป็นคนจัดการ Filter ข้อมูลมาให้
Frontend : ส่งแค่ ID ของ User ไปตอน Login
Backend : จะไปดูใน Database เองว่า User คนนี้คือใคร (ตำแหน่งอะไร, อยู่ฝ่ายไหน) แล้วจึงส่งข้อมูลที่ User คนนั้น "มีสิทธิ์เห็น" กลับไปให้
สิ่งที่ควรส่งมาใน Token (ถ้าจำเป็น) อาจจะเป็น division_id หรือ business_unit_id เพื่อให้ Frontend รู้ว่าตอนนี้ User กำลังดูข้อมูลของแผนกตัวเองอยู่
ตัวอย่าง Token
{
"user_id": 123,
"role": "SuperUser",
"permissions": {
"manpower_request": ["create", "view", "approve"],
"recruitment": ["view"]
},
"org_context": {
"division": "IT",
"bu": "Digital Service"
}
}