Skip to content

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

System Architecture

INFO

จะมี 3 Actor หลัก

  1. GCME
  2. Customer : ลูกค้าเลือก CV
  3. Job Applicant : ผู้สมัครงาน Link ผู้สมัครงานภายนอก

Activity Diagram

Activity Diagram

INFO

  1. PC/Requester ต้องการหาพนักงานสำหรับตำแหน่งจะมี 2 แบบ
    • แบบประจำ (Permanent)
    • แบบสัญญาจ้าง (Contact)
  2. ผ่านกระบวนการ Position Request Process (Recruitment)
  3. Recruiter เปิดการสรรหารับสมัคร
    • รับจากพนักงานภายใน (Employee)
    • รับจากบุคคลภายนอก (Job Applicant)
  4. ปิดการรับสมัคร Recruiter ทำการเลือก CV ทำเป็น CV List ส่งให้ Customer
  5. Customer ทำการเลือก CV
  6. Recruiter ทำการ Interview
  7. ผ่านการ Interview ขออนุมัตเงินเดือน Salary Approval
  8. สร้าง Project เลือกตำแหน่งที่สรรหาแล้วเข้า Project
  9. ออก Report + Org Chart

Roles

จะมี 2 แบบ

RoleDescription
Permission Role (บทบาทผู้ใช้งาน)กำหนดว่า "เข้าเมนูไหนได้บ้าง" อ้างอิงตาม รายละเอียด Role
Approval Authority (อำนาจการอนุมัติ)กำหนดว่า "อนุมัติใครได้บ้าง"
- Manpower Request Flow

แนวทางการ Dev

แบ่งการส่งข้อมูลออกเป็น 2 ส่วนตามหลักการ

  1. Permission Role (ส่งมาใน Token/Payload) ตัวนี้ "ควรส่งมา" เพื่อให้ Frontend รู้ว่าต้อง Render หน้าจออย่างไร

    เหตุผล : Frontend จะใช้ค่านี้ (เช่น role: "Admin") เพื่อเช็คว่าจะโชว์เมนูไหนบ้าง หรือจะ Disable ปุ่ม "ลบ" หรือ "แก้ไข" หรือไม่ตามเมนู Manage Permissions

    รูปแบบ : มักใส่ไว้ใน JWT (JSON Web Token) เพื่อให้ Frontend อ่านค่าได้ทันทีโดยไม่ต้องยิง API ซ้ำ

  2. 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

json
{
  "user_id": 123,
  "role": "SuperUser",
  "permissions": {
    "manpower_request": ["create", "view", "approve"],
    "recruitment": ["view"]
  },
  "org_context": {
    "division": "IT",
    "bu": "Digital Service"
  }
}