💬 Task 6 · Applicant Portal — Web แยกสำหรับผู้สมัครงาน

ออกแบบ Dashboard ผู้สมัคร (นิยามพี่ปกรณ์ 1 ต.ค. 69) · ลงทะเบียนก่อนกรอกใบสมัคร · เห็นเฉพาะ ตำแหน่งว่าง / ฟอร์มสมัคร / แบบทดสอบ (ครั้งเดียว) / สถานะตัวเอง / Chatbot — ไม่เห็น tab ภายในของ Web PP7 หลัก · Mockup คลิกดูได้ทุกรูปแบบด้านล่าง (เสนอเข้าประชุมทีม 7 ต.ค.)

🏢

PKG Careers — ร่วมงานกับเรา

เลือกบริษัทในเครือ · ดูตำแหน่งงานว่าง · สมัครได้ในไม่กี่นาที

เลือกกลุ่มบริษัท (FU)

🇹🇭
FU01 · THAI

12 บริษัท · 34 ตำแหน่ง · มีสมัครฝึกงาน 🎓

🇱🇦
FU02 · LAO

5 บริษัท · 9 ตำแหน่ง

🇰🇭
FU03 · KHMER

4 บริษัท · 6 ตำแหน่ง

สิ่งที่ผู้สมัครเห็นใน Portal นี้เท่านั้น: ตำแหน่งงานว่าง · แบบฟอร์มสมัครงาน · แบบทดสอบ 3 แบบ (ทำได้ครั้งเดียว) · สถานะของตัวเอง · Chatbot — ไม่มีเมนู/tab ใด ๆ ของ Web PP7 หลัก (P1–P7 ภายใน, Dashboard HR, Succession ฯลฯ)

📝 ลงทะเบียนผู้สมัคร

บังคับลงทะเบียนก่อนกรอกใบสมัคร — บัญชีนี้คือช่องทางติดต่อหลักระหว่าง PKG กับผู้สมัคร (แจ้งสถานะ/นัดสัมภาษณ์ผ่าน Chatbot + อีเมล)

✅ ยินยอม PDPA (เก็บ/ใช้/เปิดเผยข้อมูลเพื่อกระบวนการสรรหา) — บันทึกลง PDPA_CONSENT: consent_id/version/IP/device

มีบัญชีแล้ว? เข้าสู่ระบบ

🔐 ขั้นตอนยืนยันตัวตน

กรอกข้อมูล + PDPA consent
        ▼
ระบบส่ง OTP (SMS/อีเมล)
        ▼
ผู้สมัครกรอก OTP (หมดอายุ 10 นาที
· ขอใหม่ได้ 3 ครั้ง/วัน)
        ▼
สร้างบัญชี → ผูก APPLICANT_ID
(role = applicant เท่านั้น)
        ▼
เข้าสู่ Dashboard ผู้สมัคร
• ยังไม่ลงทะเบียน → กด "สมัครงาน"
  ไม่ได้ (Gate บังคับ)
กันลงทะเบียนซ้ำ: อีเมล/เบอร์โทรเดิม → แจ้ง "มีบัญชีอยู่แล้ว" + ลิงก์กู้รหัสผ่าน · คนเดียวสมัครได้หลายตำแหน่งภายใต้บัญชีเดียว (APPLICATION หลายใบผูก APPLICANT เดียว)
สวัสดี คุณอรุณ เค้าทอง 👋

บัญชี: ar***@email.com · สมัครแล้ว 2 ตำแหน่ง

ช่างยนต์ · บริษัท PKG Auto Service (สาขาขอนแก่น)

หมายเลขสมัคร: APP-2026-00142 · สมัครเมื่อ 28 ก.ย. 69

กำลังประเมิน
✓

ส่งใบสมัคร

✓

แบบทดสอบ 3 แบบ

3

HR ประเมิน

4

นัดสัมภาษณ์

5

ผลลัพธ์

⏳ สิ่งที่คุณต้องทำตอนนี้: ไม่มี — รอผลประเมินจาก HR (คาดว่าจะทราบผลภายใน 5 วันทำการ) · มีอัปเดตจะแจ้งผ่าน Chatbot + อีเมล
ช่างรถเล็ก · บริษัท PKG Auto Service (สาขาอุดรธานี)

หมายเลขสมัคร: APP-2026-00155 · สมัครเมื่อ 30 ก.ย. 69

! ต้องดำเนินการ
🚨 สิ่งที่คุณต้องทำตอนนี้: ทำแบบทดสอบ 3 แบบให้ครบ (ทำแล้ว 1/3 — เหลือ ทุนองค์กรฯ และ 3E3P) ภายใน 3 ต.ค. 69 ⚠️ แบบทดสอบแต่ละชุดทำได้เพียงครั้งเดียว

🔔 การแจ้งเตือนล่าสุด

  • • 30 ก.ย. 14:20 — ได้รับใบสมัคร APP-2026-00155 แล้ว (ช่างรถเล็ก อุดรธานี)
  • • 28 ก.ย. 10:05 — ผลแบบทดสอบ 3 แบบของ APP-2026-00142 ส่งถึง HR แล้ว ✓
  • • 27 ก.ย. 16:40 — ลงทะเบียนสำเร็จ ยินดีต้อนรับ 🎉

หลักออกแบบ: ผู้สมัครเปิดมาแล้วต้องรู้ทันที 3 อย่าง — ① สมัครตำแหน่งไหนไว้บ้าง ② ตอนนี้อยู่ขั้นไหน ③ ต้องทำอะไรต่อไป (ดึงจาก Application Status กลาง NEW→HIRED ของ Task 3 — ผู้สมัครเห็น label ภาษาคน ไม่ใช่ code สถานะ)

🧳 ตำแหน่งงานว่าง

ช่างยนต์เปิดรับ

PKG Auto Service · ขอนแก่น · งานประจำ · 2 อัตรา

บริการลูกค้าเปิดรับ

PKG Motor · เวียงจันทน์ (LAO) · งานประจำ · 1 อัตรา

นักศึกษาฝึกงาน (ธุรการ)ฝึกงาน 🎓

PKG THAI · กรุงเทพฯ · ฟอร์ม 2 ภาษา TH/EN

ช่างอะไหล่ TISปิดรับ

PKG Parts · อุดรธานี · ปิดรับสมัครแล้ว

กด "สมัคร" → ระบบตรวจ Gate: ยังไม่ลงทะเบียน = เด้งไปหน้า ② ก่อน · ลงทะเบียนแล้ว = เข้าฟอร์มใบสมัคร (Task 3: PDPA + OCR เอกสาร)

📝 แบบทดสอบผู้สมัคร 3 แบบ

⚠️ แบบทดสอบแต่ละชุด ทำได้เพียงครั้งเดียว — ตรวจการเชื่อมต่อ/อุปกรณ์ก่อนเริ่ม · ระหว่างทำบันทึกความคืบหน้าอัตโนมัติ (หลุดแล้วกลับมาทำต่อได้) แต่เมื่อกด "ส่ง" แล้วแก้ไข/ทำใหม่ไม่ได้
1. แบบทดสอบทัศนคติ

จากปรัชญา PKG · ~15 ข้อ · จับเวลา 20 นาที

✓ ส่งแล้ว 28 ก.ย.
2. แบบทดสอบทุนองค์กรและการให้บริการลูกค้า

ดึงจาก Google Form ของ PKG · คำตอบเก็บกลับเข้าระบบอัตโนมัติ

3. แบบทดสอบแรงจูงใจ 3E3P

15 ข้อ · จับเวลา 20 นาที

ทำครบ 3 แบบ → สถานะใบสมัครเปลี่ยนเป็น "ส่งใบสมัครสมบูรณ์" + แจ้ง HR อัตโนมัติ → ผลแบบทดสอบถูกส่งเป็นอินพุตให้ AI คัดกรอง (Task 4) · ผู้สมัครไม่เห็นคะแนนของตัวเอง (เห็นเฉพาะสถานะ) · แบบทดสอบทักษะตามทีม/ตำแหน่ง HR จะส่งลิงก์แยกเฉพาะรายภายหลัง (ไม่อยู่ในชุดนี้)
💬 PKG Career Bot

ตอบอัตโนมัติ · ส่งต่อ HR ได้ตลอด

● ออนไลน์
สวัสดีค่ะคุณอรุณ 🙏 มีอะไรให้ช่วยไหมคะ?
10:02 · Bot
ใบสมัครช่างยนต์ของผมถึงขั้นไหนแล้วครับ
10:03 · คุณ
ใบสมัคร APP-2026-00142 (ช่างยนต์ ขอนแก่น) อยู่ขั้น HR กำลังประเมิน ค่ะ คาดว่าทราบผลภายใน 5 วันทำการ — คุณทำครบทุกขั้นตอนแล้ว ไม่ต้องทำอะไรเพิ่มค่ะ ✅
10:03 · Bot (ข้อมูลจากบัญชีคุณ)
แล้วแบบทดสอบ 3E3P ทำซ้ำได้ไหม
10:04 · คุณ
แบบทดสอบแต่ละชุดทำได้เพียงครั้งเดียวนะคะ ถ้ายังไม่เริ่มทำ สามารถเข้าไปทำได้ตลอดค่ะ เหลืออีก 2 ชุด (ทุนองค์กรฯ + 3E3P) ของใบสมัครช่างรถเล็กนะคะ 📝
10:04 · Bot

🤖 สเปก Chatbot

ขาเข้า (ผู้สมัครถาม):
• FAQ อัตโนมัติ: ตำแหน่ง/คุณสมบัติ/เอกสาร/ขั้นตอน/ผล
• AI ตอบจากข้อมูลบัญชีตัวเอง (ผูก APPLICANT_ID): สถานะใบสมัคร, สิ่งที่ต้องทำต่อ, กำหนดการ
• ขอบเขตข้อมูล: เฉพาะของตัวเองเท่านั้น (กัน IDOR — ตรวจสิทธิ์ทุก query)
• ตอบไม่ได้/เรื่องละเอียดอ่อน (เงินเดือน, เหตุผลไม่ผ่าน) → ปุ่ม "ส่งต่อ HR" + แจ้งเวลาทำการที่ตอบ
• เก็บประวัติแชททั้งหมด + Audit Log
ขาออก (ระบบแจ้งผู้สมัคร):
• สถานะใบสมัครเปลี่ยน (แต่ละขั้นของ stepper)
• สิ่งที่ต้องทำ + deadline (เช่น แบบทดสอบค้าง 3 ชุด)
• นัดสัมภาษณ์: วัน/เวลา/สถานที่/เอกสาร + ปุ่มยืนยัน/ขอเลื่อน
• แจ้งผล: ผ่าน → แนะขั้นถัดไป · ไม่ผ่าน → ข้อความสุภาพตามมาตรฐานถาวร + เสนอตำแหน่งสำรอง
• ช่องทาง: Chatbot ใน portal + อีเมล/แจ้งเตือนที่ลงทะเบียนไว้
ห้าม: Chatbot บอกคะแนนแบบทดสอบ/AI · ตัดสินผ่าน-ไม่ผ่านเอง · เปิดเผยข้อมูลผู้สมัครคนอื่น — ทุกการตัดสินเป็นของ BMC/PAO ("AI ช่วยคัด คนตัดสิน")

ใช้ AI engine เดียวกับ Task 4/5 (คนละ prompt + จำกัด context เฉพาะข้อมูลเจ้าของบัญชี) · รองรับ 3 ภาษา TH/LA/KH-EN ตาม FU

🔒 RBAC — role "applicant" (เพิ่มจากตารางสิทธิ์ Task 1)

พื้นที่applicanthr_officeradmin
Landing + ตำแหน่งงานว่าง (Public)✓✓✓
Dashboard ผู้สมัคร + ใบสมัคร/สถานะ/แบบทดสอบ ของตัวเอง✓✓ (ทุกคน)✓
Chatbot (ผูกบัญชีตัวเอง)✓✓ (ห้องรวม HR)✓
ทุก tab ภายใน Web PP7 (P1–P7, HR Screening, Succession, PRG/PDG ฯลฯ)✗ มองไม่เห็นตามสิทธิ์✓
คะแนนแบบทดสอบ / คะแนน AI / เหตุผลรายบุคคล✗✓✓

สถาปัตยกรรม: Portal ผู้สมัครแยกต่างหาก (คนละ route/entry กับ Web PP7 หลัก) — ซ่อนเมนูภายในตั้งแต่ระดับ navigation ไม่ใช่แค่ปิดปุ่ม + ตรวจสิทธิ์ซ้ำที่ backend ทุก request (defense in depth)

🗄️ ตารางข้อมูลใหม่/ขยาย

ตารางฟิลด์หลักหมายเหตุ
APPLICANT_ACCOUNTapplicant_id (FK), email, phone, password_hash, otp_status, locale, created_atใหม่ — บัญชีลงทะเบียน (1 คน = 1 บัญชี หลายใบสมัคร)
PDPA_CONSENTconsent_id, version, ip, device, consented_atมีแล้ว (Task 3) — ผูก applicant_id
TEST_RESULTSapplication_id, test_type (ATTITUDE/CC_SERVICE/3E3P), score, submitted_at, attempt_countมีแล้ว (Task 4) — เพิ่ม attempt_count บล็อกครั้งที่ 2
APPLICANT_STATUS_VIEWapplication_id, status_code, label_th/la/kh, next_action, deadlineใหม่ — map สถานะภายใน → ข้อความภาษาคนที่ผู้สมัครเห็น
CHAT_HISTORYchat_id, applicant_id, role (user/bot/hr), message, escalated, created_atใหม่ — ประวัติแชท + ส่งต่อ HR + Audit
NOTIFICATION_LOGapplicant_id, channel (chatbot/email), template, sent_at, read_atมีแล้ว (Task 3) — เพิ่ม channel chatbot

🔗 เชื่อมกับระบบเดิม + แผนเวลา

Task 1 (Public Web/RBAC) ──► role applicant + Portal แยก
Task 3 (ใบสมัคร+OCR)     ──► ฟอร์มสมัคร + Status กลาง NEW→HIRED
Task 4 (AI คัดกรอง)       ──► แบบทดสอบ 3 แบบ (ครั้งเดียว) → TEST_RESULTS → อินพุต AI
Task 6 (ใหม่นี้)          ──► ลงทะเบียน + Dashboard สถานะ + Chatbot + Notification

แผนเวลาเบื้องต้น (~7 วันทำการ · ทีม 2 คน + AI):
  ลงทะเบียน + OTP + RBAC applicant ....... 2 วัน
  Dashboard สถานะ + stepper ............... 1 วัน
  Chatbot FAQ + AI + ส่งต่อ HR ............ 2 วัน
  Notification ขาออก ...................... 1 วัน
  เทส + security (IDOR/one-attempt) ....... 1 วัน
ตำแหน่งในแผน: เสนอ Phase 2 ต่อจากชุด Task 5 (หลัง ศ. 6 พ.ย. 69)
หรือแทรกเข้าช่วง Task 1 ถ้าต้องการให้พร้อมตั้งแต่วันเปิดตัว — รอสรุปประชุมทีม พ. 7 ต.ค.