🎯 ภาพรวม 3 Tasks
Task 1 — ปรับหน้า Web PP7 สำหรับบุคคลภายนอก
- หน้า "ร่วมงานกับ PKG Group" → เมนูระบบรับสมัครงาน แยกตาม FU: THAI 🇹🇭 / RPLCG 🇱🇦 / RAFCOG 🇰🇭
- แต่ละ FU โชว์ตำแหน่งงานว่างของบริษัทในสังกัด (THAI ~30 บริษัท, RPLCG 7, RAFCOG 4)
- ระบบเพิ่ม/ลบ (เปิด–ปิด) บริษัทได้ — ใช้ ACTIVE/INACTIVE ไม่ลบข้อมูลจริง
- Theme สีตาม FU: THAI = ส้ม, RPLCG = เหลือง, RAFCOG = แดง–น้ำเงิน (เหมือนแอปที่ลูกค้าภายนอกใช้)
- เปิดสิทธิ์หน้ารับสมัครให้บุคคลทั่วไป + สมาชิก PKG เข้าใช้ได้เลย (ไม่ต้องล็อกอิน)
- เมนู "🔄 Flow การสรรหา — 10 ขั้นตอน" เห็นเฉพาะสมาชิก PKG และใช้งานจริงเฉพาะ HR / BMC / ADM / ผู้รับใช้ทีม
Task 2 — Flow การสรรหา 10 ขั้นตอน · ข้อ 1 โครงสร้างองค์กร
- คลิกเข้า "1. โครงสร้างองค์กร" แล้วเพิ่ม 4 เมนูย่อย:
- คีย์ขอโครงสร้าง (เฉพาะ BMC) — ฟอร์มจาก GAS link ที่กำหนด บันทึกลงฐานข้อมูล
- DATAโครงสร้างบริษัทภายนอก (เฉพาะ PAO) — set แทนบอร์ด จากคำขอของ BU
- DATAโครงสร้างบริษัทภายใน (เฉพาะ PAO) — เหมือนข้อ 2 แยก dataset
- Flowchart — โชว์ flowchart แต่ละ BU ตามโครงสร้างองค์กร (เงินเดือน) ให้ BU นำไปใช้กับหน่วยงานภายนอก
- โครงสร้างที่ Approved แล้ว ดึงต่อไปเมนูที่ 2 "ขออัตรากำลังคน" ให้ BMC คีย์ขออัตรา โดยไม่ต้องคีย์บริษัท/หน่วยงาน/ตำแหน่ง/โครงสร้างเงินเดือนซ้ำ
Task 3 — ใบสมัครงาน Upload + AI ดึงข้อมูลอัตโนมัติ (3 ประเทศ)
- PDPA Consent Gate — ต้องกดยินยอมก่อนเข้าฟอร์ม ทั้ง 3 ประเทศ (เก็บ consent_id/version/IP/device)
- Upload บัตรประชาชน + ทะเบียนบ้าน + รูป + วุฒิ → OCR/Document AI เติมช่องฟอร์มอัตโนมัติ ลดการกรอก
- AI Translation ทุกช่อง: TH→EN / LA→TH / KH→EN+TH เก็บทั้งต้นฉบับ+คำแปล ลงฐานข้อมูลรองรับการใช้ทั้ง 3 ประเทศ
- Submit แล้ว แจ้งเตือน Telegram 2 ห้อง: super สรรหา PKG (-1001237535741) + ชุมชนคนหางาน (-1001528940221)
- เพิ่มเมนู สมัครทั่วไป / สมัครขอฝึกงาน — ฝึกงานมีเฉพาะฝั่งไทย (ฟอร์มฝึกงาน + แจ้งเตือน Telegram แยกชุดข้อความ)
- กำหนด Application Status กลาง NEW → … → HIRED เพื่อต่อ P1–P4 ได้ทันที
FU_ID → COMPANY_ID → BRANCH_ID → JOB_ID → APPLICANT_ID → APPLICATION_ID เชื่อมข้อมูลตั้งแต่หน้า Public จนถึง HR และ Flow 10 ขั้นตอน
🟠 Task 1 — ปรับหน้า Web PP7 สำหรับบุคคลภายนอก (ระบบรับสมัครงานออนไลน์)
1.1 โครงสร้างเมนูหน้า Public
เมนูหลัก ↓ หน้า "ร่วมงานกับ PKG Group — ระบบรับสมัครงานออนไลน์ที่ทันสมัย ง่าย และรวดเร็ว" ↓ เมนู ระบบรับสมัครงาน → แยก FU: ├── 1.1 🇹🇭 THAI (link สมัครงานภาษาไทย) → โชว์ตำแหน่งงานว่าง → form-register.html │ └── 🎓 สมัครขอฝึกงาน → form-trainee.html (มีเฉพาะฝั่งไทย — ยืนยัน 30 ก.ย. 69) ├── 1.2 🇱🇦 RPLCG (link สมัครงานภาษาลาว) → โชว์ตำแหน่งงานว่าง → form-register.html └── 1.3 🇰🇭 RAFCOG (link สมัครงานเขมร&อังกฤษ) → โชว์ตำแหน่งงานว่าง → form-register.html
FU MASTER — ใช้ระบบเดียว FU_ID ควบคุมข้อมูล + Theme (ไม่สร้างเว็บแยก 3 ชุด)
| FU_ID | FU | ภาษา | Theme | ผู้ใช้งาน |
|---|---|---|---|---|
| FU01 | THAI | TH (+EN) | 🟠 ส้ม | ผู้สมัครทั่วไป + สมาชิก PKG |
| FU02 | RPLCG | LA | 🟡 เหลือง | ผู้สมัครทั่วไป + สมาชิก PKG |
| FU03 | RAFCOG | KH / EN | 🔴🔵 แดง–น้ำเงิน | ผู้สมัครทั่วไป + สมาชิก PKG |
ฟิลด์ FU Master: FU_ID, FU_CODE, FU_NAME, DEFAULT_LANGUAGE, THEME_COLOR, LOGO, STATUS, SORT_ORDER, CREATED_DATE — อนาคตมี FU04 เพียงเพิ่มข้อมูลใน Master ไม่ต้องเขียนเว็บใหม่
Dynamic Theme — Component เดียวกัน เปลี่ยนแค่ FU_ID / Language / Theme / Logo / Company List / Job List
/FU → /company → /branch → /jobs → /job-detail → /application
1.2 รายชื่อบริษัทแต่ละ FU (ตามข้อมูลในชีต — ใช้เป็น seed data ของ COMPANY_MASTER)
🇹🇭 THAI (29+ รายการ)
- บริษัท ประชากิจมอเตอร์เซลส์ จำกัด
- บริษัท เอเอเอ็ม แคปปิตอลเซอร์วิส จำกัด (สำนักงานใหญ่ + 6 สาขา: กบินทร์บุรี, นครนายก, ปลวกแดง, ศรีนครินทร์, สระบุรี, วังน้ำเย็น)
- บริษัท พีเอ็มเอส คัสตอมเมอร์เซอร์วิส จำกัด
- บริษัท เอเอเอ็ม บุรีรัมย์ จำกัด
- บริษัท เกษตรไทย ลิสซิ่ง จำกัด
- บริษัท เกษตรไทย ลิสซิ่ง บึงกาฬ จำกัด
- บริษัท เอเอเอ็ม ฉะเชิงเทรา จำกัด
- บริษัท อีเอซี กาญจนบุรี จำกัด
- บริษัท เอเอเอ็ม ลพบุรี จำกัด
- บริษัท เอเอเอ็ม แคปปิตอล เซอร์วิส พัทยา จำกัด
- บริษัท เอเอเอ็ม มุกดาหาร จำกัด
- บริษัท เอเอเอ็ม แคปปิตอล เซอร์วิส นนทบุรี จำกัด
- บริษัท เอเอเอ็ม ปากช่อง จำกัด
- บริษัท พีซีแอล แคปปิตอล เซอร์วิส จำกัด
- บริษัท พีเอ็มเอส แคปปิตอล เซอร์วิส จำกัด
- บริษัท พรีเชียส สโตน แอสเซท เมแนจเมนท์ จำกัด
- บริษัท สระแก้วลิสซิ่ง จำกัด
- บริษัท อาร์วายแอล แคปปิตอล เซอร์วิส จำกัด
- บริษัท อีเอซี ราชบุรี จำกัด
- บริษัท เอเอเอ็ม ตะเคียนคู่ จำกัด
- บริษัท เอเอเอ็ม สกลนคร จำกัด
- บริษัท เอเอเอ็ม สุรินทร์ จำกัด
- บริษัท เอเอเอ็ม แคปปิตอลเซอร์วิส พระยาสัจจา จำกัด
- บริษัท เอเอเอ็ม แคปปิตอล เซอร์วิส สอยดาว จำกัด
- บริษัท เอเอเอ็ม แคปปิตอล เซอร์วิส อุดรดุษฎี จำกัด
- บริษัท เอเอ็นเอฟ เทรดดิ้ง จำกัด
- บริษัท แอจจิลซอฟท์ คอร์ปอเรชั่น จำกัด
- บริษัท 21ซีที รีเสิร์ท จำกัด
- บริษัท ไซฟินเวสท์ ดิจิตอล โบรคเกอร์ จำกัด
- บริษัท ศูนย์พัฒนาผู้นำ จำกัด
- บริษัท เล็นด์เอ็กซ์ จำกัด
🇱🇦 RPLCG (7 รายการ)
- บริษัท ร่วมพัฒนา เช่าสินเชื่อ จำกัด
- ร้านจะเลินมอเตอร์ (ส่วนบุคคล)
- ร้านหลวงพะบางมอเตอร์เซลล์ (ส่วนบุคคล)
- ร้านเวียงมอเตอร์ (ส่วนบุคคล)
- ร้านมงคลมอเตอร์ สะหวันเขต
- สถาบันการเงินจุละพากที่ไม่รับฝากเงิน ราฟโค ไฟแนนซ์เชียล ลาว จำกัด (ผู้เดียว)
- บริษัท เพ็ดจะเลินบริการ จำกัด (ผู้เดียว)
🇰🇭 RAFCOG (4 รายการ)
- บริษัท ราฟโค ไฟแนนเซียล (เขมโบเดีย) จำกัดมหาชน
- บริษัท เอไอไอแอล แคปปิตอล พาร์ทเนอร์ จำกัด
- FIV INVESTMENT TRUST KH CO.,LTD.
- บริษัท เนทีฟ ไฟแนนเชี่ยล เทคโนโลยี เคเอช จำกัด
1.3 เพิ่ม/ปิดบริษัท — COMPANY_MASTER + Admin Data Flow
โครงสร้าง COMPANY_MASTER
COMPANY_MASTER ├── COMPANY_ID (PK — รหัสระบบ ไม่ใช่เลขลำดับหน้าเว็บ) ├── FU_ID (FK → M_FU) ├── COMPANY_CODE ├── COMPANY_NAME_TH / _EN / _LA / _KH ├── COMPANY_TYPE ├── STATUS (ACTIVE / INACTIVE) ├── DISPLAY_ORDER ├── EFFECTIVE_DATE / CLOSE_DATE └── CREATED_BY / CREATED_DATE / UPDATED_BY / UPDATED_DATE
BRANCH_MASTER (แยกสาขาออกจากบริษัท)
BRANCH_MASTER ├── BRANCH_ID / COMPANY_ID (FK) ├── BRANCH_CODE / BRANCH_NAME ├── ADDRESS / PROVINCE / DISTRICT ├── STATUS / DISPLAY_ORDER / UPDATED_DATE
Logic เปิด–ปิดบริษัท
เปิดบริษัท → STATUS = ACTIVE → แสดงหน้า Web → เปิดตำแหน่งงานได้ ปิดบริษัท → STATUS = INACTIVE → ไม่แสดงหน้า Web → ห้ามสร้าง Job ใหม่ → Jobs ที่เปิดอยู่ = CLOSED → ข้อมูล Application เดิมยังคงอยู่ (ห้ามลบ) → Audit Log บันทึกผู้ดำเนินการ
หน้า Admin: ⚙️ Admin > Master Data > บริษัท
- ปุ่ม "+ เพิ่มบริษัท" — ระบุ บริษัท / FU / สถานะ / ลำดับแสดงผล / วันที่เริ่มใช้ / วันที่ปิด
- การ์ดบริษัทแสดงสถานะ 🟢 เปิดใช้งาน พร้อมปุ่ม [แก้ไข] [ปิดบริษัท] → มี CONFIRM ก่อนปิด
- ห้าม Delete บริษัทจริง — ใบสมัครเก่า/ประวัติต้องอ้างอิงบริษัทเดิมได้ (Soft-close เท่านั้น)
1.4 Job Posting → Application → Applicant DB (Data Flow ระดับผู้ใช้)
Public User journey (ระดับเมนูหน้าเว็บ): หน้าแรก → ร่วมงานกับ PKG Group → ระบบรับสมัครงาน → เลือก FU (THAI / RPLCG / RAFCOG) → เลือกบริษัท → เลือกสาขา → ดูตำแหน่งงานว่าง → เลือกตำแหน่ง → สมัครงาน → PDPA Consent → กรอกใบสมัคร → Upload เอกสาร → Submit → สร้าง Applicant ID → บันทึก DB1 Applicant → แสดงเลขที่ใบสมัคร → ติดตามสถานะ หมายเหตุ: หน้าเว็บปัจจุบันมีขั้นตอน ลงทะเบียน → เลือกตำแหน่ง → กรอกใบสมัคร → รอผล อยู่แล้ว โครงสร้างใหม่ต่อยอดของเดิมได้โดยไม่ต้อง เปลี่ยนแนวคิดหลัก
JOB_POSTING
COMPANY → BRANCH → TEAM/FUNCTION → POSITION → JOB POSTING → OPEN/CLOSE JOB_POSTING ├── JOB_ID / FU_ID / COMPANY_ID / BRANCH_ID ├── TEAM_ID / POSITION_ID ├── JOB_TITLE_TH/_EN/_LA/_KH ├── JOB_DESCRIPTION / QUALIFICATION ├── SALARY_MIN / SALARY_MAX / NUMBER_OF_VACANCIES ├── OPEN_DATE / CLOSE_DATE / STATUS └── CREATED_BY / UPDATED_DATE
Applicant Submit Flow
Applicant → เลือก FU → เลือก Company → เลือก Branch → เลือก Job → PDPA Consent → กรอกข้อมูล → Upload File → Validate Data → Generate Applicant ID → Save DB1 ข้อมูลที่ฟอร์มต้องรองรับ (จากแบบฟอร์มปัจจุบัน): ตำแหน่ง · ข้อมูลส่วนตัว · ที่อยู่ · การศึกษา · บัตรประชาชน · รูปถ่าย · ความสามารถ · ประสบการณ์ทำงาน · บุคคลอ้างอิง · ข้อมูลทั่วไป · เอกสารประกอบ
1.5 โครงสร้าง Database (DB1 = Applicant Stock — แยก APPLICANT ออกจาก APPLICATION)
DB1 : APPLICANT STOCK APPLICANT ├── APPLICANT_PROFILE ├── APPLICANT_ADDRESS ├── APPLICANT_EDUCATION ├── APPLICANT_SKILL ├── APPLICANT_LANGUAGE ├── APPLICANT_EXPERIENCE ├── APPLICANT_FAMILY ├── APPLICANT_REFERENCE ├── APPLICANT_DOCUMENT └── PDPA_CONSENT APPLICATION (แยกการสมัครแต่ละครั้ง) ├── APPLICATION_ID / APPLICANT_ID ├── FU_ID / COMPANY_ID / BRANCH_ID / JOB_ID ├── APPLY_DATE / SOURCE / STATUS
ข้อดี: ผู้สมัคร 1 คนสมัครหลายตำแหน่งได้โดยไม่ต้องกรอกข้อมูลส่วนตัวใหม่ทั้งหมด
Applicant A ├── Application #001 → AAM → พนักงานสินเชื่อ ├── Application #002 → PMSG → Customer Service └── Application #003 → AAM → เจ้าหน้าที่เร่งรัดหนี้
ตารางข้อมูลทั้งหมดที่ควรมี
MASTER: M_FU, M_COMPANY, M_BRANCH, M_TEAM,
M_POSITION, M_LANGUAGE, M_RECRUITMENT_SOURCE
DB1: APPLICANT (+ PROFILE/ADDRESS/EDUCATION/SKILL/
LANGUAGE/EXPERIENCE/REFERENCE/DOCUMENT/PDPA_CONSENT)
RECRUIT: JOB_POSTING, APPLICATION, SCREENING, AI_ANALYSIS,
INTERVIEW_SCHEDULE, INTERVIEW, INTERVIEW_SUMMARY,
BACKGROUND_CHECK, JOB_OFFER, ONBOARDING
AUDIT: USER, ROLE, PERMISSION, AUDIT_LOG
เชื่อม DB → Recruitment 10 Steps (ทุกขั้นตอนเชื่อมกันด้วย APPLICATION_ID)
01 BU REQUEST → 02 HEADCOUNT/STRUCTURE → 03 JOB POSTING → 04 APPLICATION → 05 SCREENING → 06 INTERVIEW SCHEDULE → 07 INTERVIEW → 08 BACKGROUND CHECK → 09 JOB OFFER/START DATE → 10 ONBOARDING → ส่งต่อ P4 PAO (รับเข้าระบบ)
Master Data Flow ฉบับ Developer ใช้เป็นหลัก
PUBLIC WEB PKG PP7 → Recruitment Landing (ร่วมงานกับ PKG) → SELECT FU (THAI/RPLCG/RAFCOG) → COMPANY MASTER → BRANCH MASTER → JOB POSTING → APPLICATION → [PDPA CONSENT + DOCUMENT] → APPLICANT DB (DB1) → RECRUITMENT FLOW 10 STEPS → [SCREENING · AI MATCH · INTERVIEW] → BACKGROUND CHECK → JOB OFFER → ONBOARDING → P4 PAO
1.6 สิทธิ์การเข้าถึง (แยก Public User กับ PKG Member ชัดเจน)
| เมนู | บุคคลทั่วไป | สมาชิก PKG | HR / BMC / ADM | ผู้รับใช้ทีม |
|---|---|---|---|---|
| ร่วมงานกับ PKG Group / ดู FU / ดูบริษัท / ดูตำแหน่งงาน / สมัครงาน / ลงทะเบียน–เข้าสู่ระบบ | ✅ | ✅ | ✅ | ✅ |
| Dashboard ผู้สมัคร | เฉพาะข้อมูลตนเอง | เฉพาะข้อมูลตนเอง | ตามสิทธิ์ | ตามสิทธิ์ |
| 🔄 Flow การสรรหา 10 ขั้นตอน | ❌ | ✅ (ดูได้) | ✅ | ✅ |
| จัดการ Company / เพิ่ม–ปิด Company / เปิด–ปิด Job | ❌ | ❌ | ✅ | ตามสิทธิ์ |
| ดู Applicant DB / Screening / Interview / Background Check / Offer | ❌ | ❌ | ✅ | ตามสิทธิ์ |
หลักการ: "สมาชิก PKG" ไม่ได้แปลว่าเห็นข้อมูลผู้สมัครทั้งหมด
PKG MEMBER → Authentication → Role/Permission → Resource Access
Data flow สิทธิ์เมนู Flow 10 ขั้นตอน:
LOGIN → ตรวจสอบ USER
├─ PUBLIC USER → ไม่มีสิทธิ์
└─ PKG MEMBER → ตรวจสอบ ROLE
├─ HR/BMC/ADM → FULL ACCESS
├─ ผู้รับใช้ทีม → ตามสิทธิ์ที่กำหนด
└─ MEMBER ทั่วไป → VIEW ONLY
- FU Master (THAI/RPLCG/RAFCOG)
- Company Master — เพิ่ม/ปิดบริษัทโดยไม่ลบข้อมูลเก่า
- Branch Master (บริษัท → สาขา)
- Job Posting (บริษัท → สาขา → ตำแหน่ง)
- Dynamic Theme — สี/ภาษาตาม FU
- Applicant DB1 — Stock ผู้สมัคร
- Application — แยกการสมัครแต่ละครั้งจาก Profile
- PDPA Consent — เก็บประวัติการยินยอม
- Document Storage — รูป/วุฒิ/เอกสาร
- Recruitment Flow 10 ขั้นตอน เชื่อมด้วย APPLICATION_ID
- Role & Permission — Public / PKG Member / HR BMC ADM / ผู้รับใช้ทีม
- Audit Log — ทุกการเพิ่ม/แก้ไข/ปิดบริษัท/ตำแหน่ง/เปลี่ยนสถานะ
- Dashboard — Funnel และสถานะการสรรหา
- หลายภาษา TH/LA/KH/EN โดยไม่สร้างระบบแยก
🔵 Task 2 — Flow การสรรหา 10 ขั้นตอน · STEP 1: โครงสร้างองค์กร
2.1 ภาพรวมการทำงาน
PP7 WEB → Flow การสรรหา 10 ขั้นตอน → ① โครงสร้างองค์กร
├── 1. คีย์ขอโครงสร้าง (BMC ONLY) → BMC กรอกคำขอ → ตรวจสอบข้อมูล ─┐
├── 2. DATAโครงสร้างบริษัทภายนอก (PAO ONLY) ────────────────────┼→ STRUCTURE REQUEST DB
└── 3. DATAโครงสร้างบริษัทภายใน (PAO ONLY) ────────────────────┘ ↓
PAO ตรวจสอบ / Set โครงสร้างใหม่
↓
STRUCTURE DATABASE (Approved)
├──→ Flowchart บริษัท/BU
└──→ STEP 2 ขออัตรากำลังคน → BMC ขออัตรา
เส้นทางเมนูที่ต้องเพิ่ม
PP7 → Flow การสรรหา — 10 ขั้นตอน → 1. โครงสร้างองค์กร
├── 1. คีย์ขอโครงสร้าง
├── 2. DATAโครงสร้างบริษัทภายนอก
├── 3. DATAโครงสร้างบริษัทภายใน
└── 4. Flowchart
2.3 Database Relationship + จุดเชื่อมต่อ Step 2 + สิทธิ์
FU_MASTER → BU_MASTER → COMPANY_MASTER → BRANCH_MASTER → DEPARTMENT_MASTER → POSITION_MASTER → STRUCTURE_MASTER STRUCTURE_MASTER ├── STRUCTURE_REQUEST (BMC คีย์ขอ) ├── STRUCTURE_EXTERNAL (PAO set) ├── STRUCTURE_INTERNAL (PAO set) └── STRUCTURE_VERSION → FLOWCHART → MANPOWER_REQUEST → STEP 2 Keys ที่ใช้: BU_ID · COMPANY_ID · BRANCH_ID · DEPARTMENT_ID · POSITION_ID STRUCTURE_REQUEST_ID · STRUCTURE_ID · STRUCTURE_VERSION FLOWCHART_ID · MANPOWER_REQUEST_ID
เชื่อมต่อ Step 2 — ขออัตรากำลังคน
STEP 1 โครงสร้างองค์กร → STRUCTURE APPROVED → ดึงข้อมูลไป Step 2 → BMC เลือก BU → บริษัท → หน่วยงาน → ตำแหน่ง → โครงสร้างเงินเดือน → จำนวนอัตราที่ขอ → MANPOWER REQUEST → บันทึก DATABASE ⚠️ Step 2 ห้ามให้ BMC คีย์ข้อมูลบริษัท/หน่วยงาน/ตำแหน่ง/ โครงสร้างเงินเดือนใหม่ทั้งหมด — ระบบต้องดึงจาก STRUCTURE DATABASE (APPROVED STRUCTURE) BMC กรอกเฉพาะ "จำนวนอัตราที่ขอ"
🔐 สิทธิ์การใช้งาน STEP 1
| เมนู | BMC | PAO | บุคคลทั่วไป |
|---|---|---|---|
| 1. โครงสร้างองค์กร | 👁️ ดู | ✅ | ❌ |
| คีย์ขอโครงสร้าง | ✅ | 👁️ ดู | ❌ |
| DATAโครงสร้างบริษัทภายนอก | ❌ | ✅ | ❌ |
| DATAโครงสร้างบริษัทภายใน | ❌ | ✅ | ❌ |
| Flowchart / เลือก BU–บริษัท | 👁️ ดู | ✅ | 👁️ ดู |
| แก้ไขโครงสร้าง | ❌ | ✅ | ❌ |
| 2. ขออัตรากำลังคน | ✅ | 👁️ ดู | ❌ |
🟢 Task 3 — ใบสมัครงาน: Upload เอกสาร + AI ดึงข้อมูลอัตโนมัติ (ทั้ง 3 ประเทศ)
3.1 ข้อกำหนดจากชีต (7 ข้อ)
- หน้า "ร่วมงานกับ PKG Group" → "เริ่มสมัครงาน" — ส่วน "ความยินยอมในการเก็บรวบรวมข้อมูลส่วนบุคคล" (PDPA) ผู้สมัครต้องคลิกยอมรับก่อนจึงจะกรอกใบสมัครได้ (Required Consent Gate) ทำทั้ง 3 ประเทศ
- เพิ่มช่อง upload บัตรประชาชน + AI ดึงข้อมูลอัตโนมัติลงช่องที่กำหนดในใบสมัคร
- เพิ่มช่อง upload ทะเบียนบ้าน + AI ดึงข้อมูลอัตโนมัติลงช่องที่กำหนด
- ทุกช่องมีการแปลภาษา: 🇹🇭 ช่องบน=ไทย ช่องล่าง=AI แปลอังกฤษ · 🇱🇦 ช่องบน=ลาว ช่องล่าง=AI แปลไทย · 🇰🇭 ช่องบน=เขมร ช่องล่างที่ 1=อังกฤษ ช่องล่างที่ 2=ไทย — ทั้งหมดบันทึกลงฐานข้อมูล รองรับการใช้ข้อมูลของแต่ละประเทศ
- กรอกเสร็จแล้วมี script แจ้งเตือนไป Telegram: ห้อง super สรรหา PKG (chat id
-1001237535741) ข้อความ "New Candidate มีผู้สมัครงานใหม่ คุณ : … สมัครตำแหน่ง : 340##แม่ครัว + ลิงก์ดูรายละเอียด" · ห้อง ชุมชนคนหางาน (chat id-1001528940221) ข้อความสรุปสั้น "มีผู้สมัครงานใหม่ คุณ : ลำดวน XXXXXXX สมัครตำแหน่ง : 340##แม่ครัว เรียบร้อยแล้ว" - เพิ่ม link สมัครงาน/ขอฝึกงาน — หน้า "เริ่มสมัครงาน" แยก 2 เมนู: สมัครทั่วไป และ สมัครขอฝึกงาน (เฉพาะฝั่งไทย — ยืนยัน 30 ก.ย. 69) (ต้นทางฟอร์มฝึกงาน:
devdev.prachakij.com/appformPKG/formTraniee.php→ พอร์ตเข้า Web PP7 แล้วที่ form-trainee.html) - นักศึกษาฝึกงานกรอกเสร็จ → แจ้งเตือน Telegram ห้อง super สรรหา PKG (chat id
-1001237535741) ข้อความ: "New Candidate มีผู้สมัครงานใหม่ คุณ : … ประเภทฝึก : นักศึกษาฝึกงาน / การศึกษา / ชื่อสถานศึกษา / สาขาวิชา"
3.2 DATA FLOW หลัก — ระบบรับสมัครงานภายนอก
ผู้สมัครภายนอก (ไทย / ลาว / กัมพูชา) ↓ หน้า "ร่วมงานกับ PKG Group" → "เริ่มสมัครงาน" ├── สมัครทั่วไป: เลือกประเทศ → แสดง PDPA ตามประเทศ → อ่าน → ☐ ข้าพเจ้ายินยอม │ → Consent = TRUE? → NO: ไม่ให้เข้าใบสมัคร │ → YES: บันทึก Consent (consent_id, application_id, country, │ consent_status, consent_version, consent_datetime, │ ip_address, user_agent) → เข้าสู่ใบสมัคร └── สมัครขอฝึกงาน: แบบฟอร์มฝึกงาน (Trainee Application) → กรอก → Validate ↓ กรอกใบสมัครงาน → Upload เอกสาร (บัตรประชาชน · ทะเบียนบ้าน · รูปผู้สมัคร · วุฒิการศึกษา) ↓ OCR / Document AI → อ่านข้อความ → ตรวจสอบความถูกต้อง → Mapping Field → เติมลงฟอร์มอัตโนมัติ ↓ AI Translation (แปลข้อมูลแต่ละช่อง — ไม่แปลทับต้นฉบับ) ↓ ผู้สมัครตรวจสอบ/แก้ไข → Confirm (OCR ห้ามบันทึกลง DB ทันทีโดยไม่ให้ผู้สมัครตรวจ) ↓ Submit Application → สร้าง Application ID → DATABASE (DB1 Applicant) ├── ข้อมูลผู้สมัคร (Personal Data) ├── เอกสาร/รูป (Document Store) └── ข้อมูลภาษา (Translation DB) ↓ Telegram Notification ├── Super สรรหา PKG (-1001237535741) └── ชุมชนคนหางาน (-1001528940221)
3.3 OCR Mapping — บัตรประชาชน
| ข้อมูลจากบัตร | ช่องในใบสมัคร |
|---|---|
| เลขบัตรประชาชน | รหัสบัตรประชาชน |
| ชื่อ / นามสกุล | ชื่อ / นามสกุล |
| วันเกิด | วันเกิด |
| ที่อยู่ / จังหวัด | ที่อยู่ / จังหวัด |
| อื่น ๆ | Field ที่กำหนด |
Flow: Upload → ตรวจชนิดไฟล์ → ตรวจคุณภาพภาพ → OCR/Document AI → อ่านข้อความ → ตรวจสอบ ความถูกต้อง → Mapping Field → เติมลงใบสมัคร → ผู้สมัครตรวจ/แก้ไข → Confirm → Save DB
3.4 OCR — ทะเบียนบ้าน
Upload → Document AI/OCR → อ่าน → แยกข้อมูล → Mapping → เติม "ที่อยู่ตามทะเบียนบ้าน" (บ้านเลขที่ · ตำบล · อำเภอ · จังหวัด · รหัสไปรษณีย์) → ผู้สมัครตรวจสอบ → Confirm → Save DB หมายเหตุ: ฟอร์มปัจจุบันมีช่องที่อยู่ตามทะเบียนบ้าน + ที่อยู่ปัจจุบันอยู่แล้ว → เติม OCR เข้าได้โดยตรง
3.5 รูปผู้สมัคร
📷 Upload → ตรวจประเภทไฟล์ → ตรวจขนาด → ตรวจว่าเป็นภาพบุคคล → Crop/Resize → Preview → Confirm → Storage → บันทึก URL/Document ID ใน DB ⚠️ ห้ามเก็บไฟล์รูปขนาดใหญ่ใน Database ตรง ๆ → ใช้ File/Object Storage, DB เก็บ file_id/file_url/storage_path
3.6 หลายภาษา + AI Translation
หลักการ: ไม่แปลทับข้อมูลต้นฉบับ — เก็บแยกหลายภาษา
🇹🇭 ช่องบน = ไทย | ช่องล่าง = AI → อังกฤษ
🇱🇦 ช่องบน = ລາວ | ช่องล่าง = AI → ไทย
🇰🇭 ช่องบน = ខ្មែរ | ช่องล่าง 1 = AI → EN
| ช่องล่าง 2 = AI → ไทย
FIELD
├── source_language
├── source_value (ต้นฉบับ — ห้ามทับ)
├── translation_en
├── translation_th
└── translation_km / lo
ทุก field หลักเก็บครบ 4 ภาษา:
First Name · Last Name · Address · Education · Experience
AI Translation ต้องเก็บ: Original + Translated
+ Translation Status (PENDING / SUCCESS / FAILED / REVIEW)
→ ป้องกัน AI แปลผิด ย้อนดูต้นฉบับได้
3.7 Telegram Notification Flow
Submit → Validate → Generate Application ID
→ Save DB → Save Documents → Save Translation
→ สร้าง Application URL จาก application_id จริง
(เช่น /application/2230300018201 — ห้าม hard-code)
→ Telegram API (ต้องเรียกผ่าน Backend เท่านั้น
ห้ามเปิด Bot Token ใน Frontend)
├── 📣 Super สรรหา PKG (-1001237535741)
│ "New Candidate — มีผู้สมัครงานใหม่
│ คุณ : {ชื่อ-สกุล} สมัครตำแหน่ง : {job_code}##{ตำแหน่ง}
│ ดูรายละเอียดได้ที่ >>> {Application URL}"
└── 👥 ชุมชนคนหางาน (-1001528940221)
"มีผู้สมัครงานใหม่ คุณ : {ชื่อ} XXXXXXX
สมัครตำแหน่ง : {job_code}##{ตำแหน่ง} เรียบร้อยแล้ว"
⚠️ ห้องนี้สมาชิกเยอะ — ห้ามส่งข้อมูลส่วนบุคคลละเอียด
(เลขบัตร/ที่อยู่/เอกสาร) ส่งเฉพาะที่จำเป็น
+ Notification Log (ส่งสำเร็จ/ล้มเหลว)
3.8 ฝึกงาน (Trainee) Flow
ร่วมงานกับ PKG Group → เริ่มสมัครงาน → สมัครขอฝึกงาน
→ ฟอร์มฝึกงาน (form-trainee.html — พอร์ตจาก formTraniee.php แล้ว)
→ กรอก → Validate → Submit → สร้าง Trainee Application ID
→ บันทึก Database (แยกชีท Trainees ใน GAS แล้ว)
→ Telegram API → 📣 Super สรรหา PKG
"New Candidate — คุณ: {ชื่อ} / ประเภทฝึก: นักศึกษาฝึกงาน
/ การศึกษา: {ระดับ} / สถานศึกษา: {ชื่อ} / สาขาวิชา: {สาขา}"
3.9 DB1 Applicant — โครงสร้างที่แนะนำ (แตกตามชีต)
DB1 Applicant ├── Applicant (applicant_id, application_id, country, │ application_type [general/trainee], status, created_at) ├── Personal Data (name, surname, DOB, gender, nationality, …) ├── Job Application (job_id, job_code, position, │ expected_salary, application_channel) ├── Address (registered_address, current_address) ├── Education · Experience · Family · Skills ├── Documents (ID Card, House Registration, │ Education Certificate, Applicant Photo) ├── Translation (ทุกภาษา + status) ├── Consent (PDPA — ผูกกับ Application + version ข้อความ) └── Notification Log (Telegram ส่งสำเร็จ/ล้มเหลว)
3.10 Application Status กลาง (ต่อ P1–P4 ได้ทันที)
NEW → CONSENTED → APPLICATION_COMPLETED → DOCUMENT_PENDING → DOCUMENT_VERIFIED → AI_TRANSLATED → READY_FOR_SCREENING → SCREENING → INTERVIEW → BACKGROUND_CHECK → OFFER → HIRED กรณีไม่ผ่าน: SCREENING → NOT_SELECTED โครงสร้างนี้ต่อกับ Flow ปัจจุบันของ PP7: รับใบสมัคร → คัดเลือก → นัดสัมภาษณ์ → สัมภาษณ์ → ตรวจสอบประวัติ → นัดเริ่มงาน → ส่งต่อ P4/PAO
3.11 DATA FLOW ฉบับ Developer
FRONTEND
├── Country Selection → Application Type (General/Trainee)
├── PDPA Consent → Application Form
└── Upload Documents (ID Card/House Reg/Education/Photo)
↓
BACKEND API ── [OCR · AI Translate · Validation]
↓
DATABASE ── [Applicant · Documents · Translation]
↓
Application Status
├── Telegram API → Super HR + Job Community
└── HR Dashboard
- OCR ต้องมีหน้าตรวจสอบข้อมูลก่อนบันทึกจริง (ห้าม auto-save)
- AI แปลต้องไม่เขียนทับข้อมูลต้นฉบับ
- ทุก Application ต้องมี application_id เดียวตลอดกระบวนการ · ทุกไฟล์ต้องผูกกับ application_id
- Consent ต้องผูกกับ Application + เก็บ Version ของข้อความ Consent
- Telegram ต้องทำผ่าน Backend — ห้ามเปิด Bot Token ไว้ใน Frontend · ต้องมี Notification Log
- ข้อมูลบัตรประชาชน/ทะเบียนบ้าน = ข้อมูลอ่อนไหว → กำหนดสิทธิ์การเข้าถึง, encryption, audit log, retention ให้ชัดเจน
- AI Translation เก็บสถานะ PENDING / SUCCESS / FAILED / REVIEW
- สมัครเสร็จส่งเลข Application ID + สถานะกลับให้ผู้สมัครทันที
โครงสร้างหลัก: ผู้สมัคร → เลือกประเทศ → เลือกประเภทสมัคร → Consent → Form → Upload → OCR → Auto Fill → AI Translation → ตรวจสอบ → Submit → DB1 → Telegram → HR Screening → P1/P2/P3/P4 — ทำให้ PP7 เป็นจุดเริ่มต้นของ Applicant Data ที่ใช้ต่อได้ทั้งระบบ
⏱️ ประเมินเวลาทำงาน 3 Tasks — ทีม 2 คน + AI ผู้ช่วย (สำหรับแจ้งทีมพัฒนา)
| Task | งานหลัก | เวลาที่ใช้ (ทีม 2 คน + AI) |
|---|---|---|
| Task 1 · Public Recruitment Web | FU/Company/Branch/Job Master + seed ข้อมูล ~50 บริษัท · Landing เลือก FU + Dynamic Theme 3 สี 4 ภาษา · Admin เพิ่ม/ปิดบริษัท (Audit Log) · DB1 แยก Applicant/Application · RBAC 4 ระดับ · Funnel Dashboard 🤖 AI ช่วย: โครงสร้าง Master/Landing + seed ข้อมูล + หน้า Admin CRUD (dev ตรวจความถูกต้องข้อมูลบริษัทจริง) | 5 วันทำการ ไม่ใช้ AI = 8 วัน |
| Task 2 · Step 1 โครงสร้างองค์กร | 4 เมนูย่อย · embed ฟอร์ม GAS + REQUEST_ID · หน้า PAO set โครงสร้างภายนอก/ภายใน · Flowchart render จาก APPROVED STRUCTURE (5 BU) · STRUCTURE_VERSION + Audit · เชื่อม Step 2 ขออัตรากำลัง 🤖 AI ช่วย: หน้าฟอร์ม/ตาราง/Flowchart render + version logic (dev ตรวจสิทธิ์ BMC/PAO) | 4 วันทำการ ไม่ใช้ AI = 6 วัน |
| Task 3 · ใบสมัคร + OCR/AI | PDPA Consent Gate · Upload 4 ชนิด + OCR (บัตร/ทะเบียนบ้าน/รูป/วุฒิ) + หน้า Confirm · AI Translation 3 ประเทศ (เก็บต้นฉบับ+status) · Telegram notify 2 ห้อง + Log · ฟอร์มฝึกงานเชื่อม FU+notify · Status pipeline NEW→HIRED · security ข้อมูลอ่อนไหว 🤖 AI ช่วย: โค้ด Upload/OCR/Translate/Telegram + เทสเคส (dev จูน OCR บัตรลาว/เขมร + ตรวจ security) | 5 วันทำการ ไม่ใช้ AI = 8 วัน |
| Task 4 · AI คัดกรองเบื้องต้น (P1 Screening) 📋 รายละเอียด | ใช้ AI ทำการคัดกรองเบื้องต้นจากใบสมัครงาน โดย AI วิเคราะห์เทียบจากคุณสมบัติ (นิยามพี่ปกรณ์ 1 ต.ค. 69) — มีระบบแบบทดสอบผู้สมัคร 3 แบบ (ทัศนคติ/ทุนองค์กร+บริการลูกค้า/3E3P — Flow 📝 ในรายละเอียด) + Flow 5 ขั้น: อินพุต (ใบสมัคร+OCR + คุณสมบัติ JOB_POSTING + ผลแบบทดสอบ 3 แบบ) → AI เทียบรายหัวข้อให้คะแนน+เหตุผล → จัดอันดับต่อตำแหน่งในหน้า HR Screening → BMC/PAO ตัดสินร่วม ("AI ช่วยคัด คนตัดสิน") → ผ่านไป P2 / ไม่ผ่านแจ้งผลสุภาพ+เสนอตำแหน่งสำรอง 🤖 AI ช่วย: prompt วิเคราะห์ + หน้าแสดงผลคะแนน + เทสเคส (dev ออกแบบเกณฑ์คะแนนร่วม HR) | 3 วันทำการ ไม่ใช้ AI = 5 วัน |
| 🧪 Integration + UAT | ทดสอบรวม 4 Tasks + RBAC ครบทุกสิทธิ์ + แก้ bug ก่อนส่งมอบ 🤖 AI ช่วย: สร้างเทสเคส + ช่วยหาสาเหตุ bug (UAT กับผู้ใช้จริงยังต้องใช้คน) | 3 วันทำการ ไม่ใช้ AI = 4 วัน |
| รวมทั้ง 4 Tasks (เริ่ม 8 ต.ค. → เสร็จ จ. 2 พ.ย. 69 ตามตารางแผนงานด้านล่าง) | 20 วันทำการ ไม่ใช้ AI = 31 วัน | |
ตัวเลขคือจำนวนวันที่ใช้จริงของทีม 2 คน + AI (จันทร์–ศุกร์) — ดูตารางปฏิทินวันที่เริ่ม–เสร็จแต่ละ Task ด้านล่าง
- อินพุต: ข้อมูลใบสมัคร (จาก Task 3: ฟอร์ม + OCR บัตรประชาชน/ทะเบียนบ้าน/วุฒิ) + คุณสมบัติตำแหน่งจาก JOB_POSTING + ผลแบบทดสอบ 3 แบบ ที่ผู้สมัครทำหลังกรอกใบสมัครเสร็จ (นิยามพี่ปกรณ์ 1 ต.ค. 69): ① แบบทดสอบทัศนคติ (จากปรัชญา PKG ~15 ข้อ) ② แบบทดสอบทุนองค์กรและการให้บริการลูกค้า (ดึงจาก Google Form ของ PKG) ③ แบบทดสอบแรงจูงใจ 3E3P (15 ข้อ)
- AI วิเคราะห์: เทียบรายหัวข้อคุณสมบัติ (วุฒิ/สาขา/เกรด/ประสบการณ์/ทักษะ) → ให้คะแนนความเหมาะสม + เหตุผลประกอบทุกคน
- ผลลัพธ์: จัดอันดับผู้สมัครต่อตำแหน่ง (ผ่าน/รอพิจารณา/ไม่ผ่าน) แสดงในหน้า HR Screening
- คนตัดสิน: BMC/PAO ตรวจผล AI แล้วตัดสินร่วม — หลักการ "AI ช่วยคัด คนตัดสิน" (AI ไม่ปิดใบสมัครเอง)
- เชื่อมต่อ: ผ่าน → ขั้น P2 หยั่งประเมิน · ไม่ผ่าน → แจ้งผลสุภาพ + เสนอตำแหน่งสำรองที่เหมาะ
📝 Flow แบบทดสอบผู้สมัคร 3 แบบ (ทำหลังกรอกใบสมัครเสร็จ — ผลทดสอบเป็นอินพุตขั้น ① · ทำได้ครั้งเดียว)
┌──────────────────────────────────────┐
│ ⓪ ผู้สมัครกรอกใบสมัครเสร็จ (Task 3) │
│ ระบบเปิดหน้าแบบทดสอบให้อัตโนมัติ │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ①-ท แบบทดสอบทัศนคติ │
│ (จากปรัชญา PKG ~15 ข้อ) │
│ จับเวลา + บันทึกความคืบหน้าระหว่างทำ │
│ (ส่งได้ครั้งเดียว — ทำซ้ำไม่ได้) │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ②-ท แบบทดสอบทุนองค์กรและการให้บริการลูกค้า │
│ (ดึงจาก Google Form ของ PKG) │
│ เก็บคำตอบกลับเข้าระบบอัตโนมัติ │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ③-ท แบบทดสอบแรงจูงใจ 3E3P (15 ข้อ) │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ตรวจสอบความครบถ้วน │
│ • ทำครบ 3 แบบ → บันทึกผลลง TEST_RESULTS │
│ + แจ้งผู้สมัคร "ส่งใบสมัครสมบูรณ์" │
│ • ยังไม่ครบ → สถานะค้าง + แจ้งเตือนให้ทำต่อ│
│ (HR ส่งลิงก์ทำต่อได้ — ไม่ตัดสิทธิ์) │
└──────────────────┬───────────────────┘
▼
ผลแบบทดสอบ 3 แบบ → เข้าขั้น ① อินพุต
ของ AI คัดกรอง (Flow ด้านล่าง)
หมายเหตุ: แบบทดสอบทักษะตามทีม/ตำแหน่ง ไม่ได้อยู่ในขั้นนี้ — HR เลือกส่งให้ผู้สมัครเฉพาะรายตามตำแหน่งในขั้นถัดไป (ระบบ p1-assessment)
┌──────────────────────────────────────┐
│ ① อินพุต │
│ • ใบสมัครงาน │
│ (Task 3: ฟอร์ม + OCR บัตปชช./ │
│ ทะเบียนบ้าน/วุฒิ) │
│ • คุณสมบัติตำแหน่ง (JOB_POSTING) │
│ • ผลแบบทดสอบ 3 แบบ │
│ (ทำหลังกรอกใบสมัครเสร็จ) │
│ 1. ทัศนคติ (ปรัชญา PKG ~15 ข้อ) │
│ 2. ทุนองค์กร+บริการลูกค้า │
│ (Google Form ของ PKG) │
│ 3. แรงจูงใจ 3E3P (15 ข้อ) │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ② AI วิเคราะห์ │
│ เทียบรายหัวข้อคุณสมบัติ │
│ วุฒิ/สาขา/เกรด/ประสบการณ์/ทักษะ │
│ → คะแนนความเหมาะสม + เหตุผลประกอบทุกคน │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ③ จัดอันดับผู้สมัครต่อตำแหน่ง │
│ (ผ่าน/รอพิจารณา/ไม่ผ่าน) │
│ แสดงในหน้า HR Screening │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────────┐
│ ④ คนตัดสิน — BMC/PAO ตัดสินร่วม │
│ หลักการ "AI ช่วยคัด คนตัดสิน" │
│ (AI ไม่ปิดใบสมัครเอง) │
└────┬─────────────┬─────────────┬─────┘
▼ ▼ ▼
ผ่าน รอพิจารณา ไม่ผ่าน
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌───────────┐ ┌─────────────────────┐
│ ⑤ ไปต่อ │ │ กลับไป ③ │ │ แจ้งผลสุภาพ + │
│ P2 หยั่งประเมิน│ │ จัดอันดับ │ │ เสนอตำแหน่งสำรอง │
└─────────────┘ └───────────┘ └──────────┬──────────┘
▼
┌─────────────────────────┐
│ ผู้สมัครสนใจตำแหน่งสำรอง? │
│ • ใช่ → กลับไป ② │
│ เทียบตำแหน่งใหม่ │
│ • ไม่ใช่ → ปิดใบสมัคร │
│ (คนกดเท่านั้น) │
└─────────────────────────┘
หมายเหตุ: AI ให้คะแนน+เหตุผลเท่านั้น ห้ามปิดใบสมัครเอง — การปิดใบ/ผ่านเข้า P2 เกิดจากการตัดสินของ BMC/PAO ในระบบเสมอ + เก็บ Audit Log ทุกการตัดสิน
สิ่งที่ต้องเตรียมก่อนเริ่มงาน (ขอจาก HR/PAO): ① คุณสมบัติตำแหน่งงานเป็นข้อมูล (JOB_POSTING ต้องเพิ่ม field คุณสมบัติ — ถ้ายังไม่มี +1 วันทำ Master) ② ใบสมัครตัวอย่างจริง 5–10 ชุด เทสความแม่นยำ ③ ปริมาณผู้สมัคร/เดือน (คำนวณค่า API) ④ เกณฑ์ผ่าน/ไม่ผ่าน + ผู้อนุมัติรอบสุดท้าย ⑤ ลิงก์ Google Form แบบทดสอบทุนองค์กรและการให้บริการลูกค้า + ไฟล์ข้อสอบทัศนคติและ 3E3P (พร้อมเกณฑ์การให้คะแนน) เพื่อเชื่อมผลทดสอบเข้าอินพุตของ AI
เอกสารประกอบ: ✅ Flow การทำงาน (ด้านบน — จ่ายแล้ว 1 ต.ค.) · WI (ขอจาก HR/PAO) · Technical Diagram (Data flow + Field mapping) · Mockup หน้าจอ (รายชื่อ+คะแนน / รายบุคคล+เหตุผล+ปุ่มตัดสิน) — ร่างภายใน 1–2 วันก่อนประชุม 7 ต.ค.
ความเสี่ยง/ตัวแปร: คุณภาพ OCR เอกสารไทย/ลาว/เขมร (บัตรลาว-เขมรอาจต้อง fine-tune เพิ่ม +2–3 วัน) · ค่าบริการ OCR/AI Translate ต่อรายการ · รอข้อมูล seed บริษัท/ตำแหน่งจริงจาก HR · ถ้าทีมต้องเรียนรู้ใช้ AI ช่วงแรก เผื่อ +2–3 วัน
📅 แผนงานจริง — ทีมพัฒนา 2 คน + AI ผู้ช่วย (เริ่ม พฤ. 8 ต.ค. 2569)
สมมติฐาน: 2 dev เต็มเวลา (รวม Task 4 AI คัดกรองเบื้องต้น — นิยามพี่ปกรณ์ 1 ต.ค. 69) จ–ศ + ใช้ AI ช่วยเขียนโค้ด/เทสเคสตลอด · ทั้งทีมลงแรงกับ task เดียวกันพร้อมกัน · เว้นวันหยุด ศ. 23 ต.ค. 69 (วันคล้ายวันสวรรค์ ร.5) · เริ่มนับหลังประชุมทีม พ. 7 ต.ค. 69
| ช่วงเวลา | งาน | วันทำการ | เสร็จเมื่อไร |
|---|---|---|---|
| พ. 7 ต.ค. 69 | 📅 ประชุมทีมพัฒนา — ใช้ Dashboard นี้เป็นวาระคุย (scope + ตาราง + สิทธิ์) | — | Kickoff |
| พฤ. 8 – พ. 14 ต.ค. 69 | 🟠 Task 1 · Public Recruitment Web | 5 | ✅ พุธ 14 ต.ค. 69 |
| พฤ. 15 – พ. 21 ต.ค. 69 | 🟢 Task 3 · ใบสมัคร + OCR/AI + Telegram | 5 | ✅ พุธ 21 ต.ค. 69 |
| พฤ. 22 – พ. 28 ต.ค. 69 (เว้น ศ. 23 ต.ค. วันหยุด) | 🔵 Task 2 · Step 1 โครงสร้างองค์กร + Flowchart | 4 | ✅ พุธ 28 ต.ค. 69 |
| พฤ. 29 – จ. 3 พ.ย. 69 | 🟣 Task 4 · AI คัดกรองเบื้องต้นจากใบสมัคร (เทียบคุณสมบัติ + แบบทดสอบ 3 แบบ) | 3 | ✅ จันทร์ 3 พ.ย. 69 |
| พ. 4 – ศ. 6 พ.ย. 69 | 🧪 Integration 4 Tasks + RBAC ครบ + UAT + แก้ bug | 3 | 🏁 ศุกร์ 6 พ.ย. 69 |
| รวมทั้ง 4 Tasks เสร็จสมบูรณ์ (2 คน + AI) | ศุกร์ 6 พฤศจิกายน 2569 (20 วันทำการ ≈ 4 สัปดาห์) | ||
✅ Checklist สำหรับทีมพัฒนา (เรียงตามลำดับที่ควรทำ)
Task 1 · Public Recruitment Web
- สร้าง Master Data: M_FU (3 FU) + M_COMPANY (seed ~40 บริษัท พร้อม COMPANY_ID) + M_BRANCH
- ทำหน้า Recruitment Landing → เลือก FU → Dynamic Theme (ส้ม/เหลือง/แดง–น้ำเงิน) + ภาษา (TH/LA/KH-EN)
- สมัครขอฝึกงานมีเฉพาะฝั่งไทย (FU01 THAI) → ปุ่ม 🎓 ใต้การ์ด THAI → form-trainee.html (ยืนยันพี่ปกรณ์ 30 ก.ย. 69 — ฝั่งลาว/กัมพูชาไม่มีฝึกงาน · ฟอร์มฝึกงานมี 2 ภาษา TH/EN เท่านั้น — ยืนยัน 1 ต.ค. 69)
- หน้าเลือกบริษัท → สาขา → ตำแหน่งงานว่าง (JOB_POSTING) ต่อด้วย form-register.html เดิม
- แยก APPLICANT (stock) ออกจาก APPLICATION + PDPA_CONSENT + APPLICANT_DOCUMENT
- Admin > Master Data > บริษัท: เพิ่ม/แก้ไข/ปิดบริษัท (ACTIVE–INACTIVE + CONFIRM + Audit Log)
- RBAC: Public เห็นหน้ารับสมัคร + Flow 10 ขั้นตอนเฉพาะ PKG Member + จัดการ recruitment เฉพาะ HR/BMC/ADM/ผู้รับใช้ทีม
- Dashboard Funnel การสรรหา + เชื่อม Flow 10 ขั้นตอนด้วย APPLICATION_ID → ส่งต่อ P4 PAO
Task 2 · Step 1 โครงสร้างองค์กร
- เพิ่ม 4 เมนูย่อยในหน้า Flow การสรรหา → 1. โครงสร้างองค์กร
- เมนู 1: embed ฟอร์ม create_structure (GAS) ในหน้า PP7 → submit แล้วออก REQUEST_ID + STATUS=REQUEST → ส่งต่อ PAO
- เมนู 2/3: หน้า PAO set โครงสร้างภายนอก/ภายใน (แยก dataset ห้ามปน) — ดึงคำขอ → set → SAVE → APPROVE
- เมนู 4: Flowchart เลือก BU → บริษัท → render จาก APPROVED STRUCTURE อัตโนมัติ (version-based)
- สร้าง STRUCTURE_MASTER + STRUCTURE_VERSION (มี history) + Audit ทุกการอนุมัติ
- เชื่อมต่อ Step 2: MANPOWER_REQUEST ดึงโครงสร้างที่ approved แล้ว ให้ BMC กรอกเฉพาะจำนวนอัตรา
- RBAC ตามตารางสิทธิ์ BMC/PAO/บุคคลทั่วไป
Task 3 · ใบสมัคร + OCR/AI
- PDPA Consent Gate (บังคับกดยินยอมก่อนเข้าฟอร์ม, 3 ประเทศ) + เก็บ consent_id/version/IP/device
- หน้า "เริ่มสมัครงาน" แยก 2 เมนู: สมัครทั่วไป (form-register) / สมัครขอฝึกงาน (form-trainee — ทำแล้ว ✅ เฉพาะฝั่งไทย · 2 ภาษา TH/EN คงเหลือเชื่อม notification)
- Upload 4 ชนิด: บัตรประชาชน/ทะเบียนบ้าน/รูป/วุฒิ → ตรวจไฟล์+คุณภาพ → OCR → Mapping → auto-fill → หน้า Confirm ก่อน Save
- รูปผู้สมัคร: Crop/Resize + เก็บใน File/Object Storage (DB เก็บ file_id/url เท่านั้น)
- AI Translation ทุกช่อง TH/LA/KH → EN/TH ตามประเทศ + เก็บ source_value + translation status (PENDING/SUCCESS/FAILED/REVIEW)
- ขยาย DB1: Translation, Consent, Notification Log + application_type (general/trainee)
- Telegram notify ผ่าน Backend (ห้ามเปิด token ใน frontend): Super สรรหา PKG -1001237535741 + ชุมชนคนหางาน -1001528940221 (ห้องหลังห้ามส่งข้อมูลละเอียด) + ฟอร์มฝึกงานแจ้งห้อง super สรรหา + Notification Log
- Application URL สร้างจาก application_id จริง (ห้าม hard-code) + ส่งเลขสมัคร/สถานะกลับผู้สมัครทันที
- Application Status กลาง NEW→…→HIRED (+NOT_SELECTED) ต่อ P1–P4
- Security: ข้อมูลอ่อนไหว (บัตร/ทะเบียนบ้าน) → encryption, access control, audit log, retention policy
Task 4 · AI คัดกรองเบื้องต้นจากใบสมัครงาน — AI วิเคราะห์เทียบจากคุณสมบัติ 📋 รายละเอียด + Flow
- เพิ่ม field คุณสมบัติใน JOB_POSTING (วุฒิ/สาขา/เกรด/ประสบการณ์/ทักษะ) — ถ้า HR ยังไม่มีข้อมูล +1 วันทำ Master
- ระบบแบบทดสอบผู้สมัคร 3 แบบ (ทำหลังกรอกใบสมัครเสร็จ — Flow 📝 ด้านบน): ① ทัศนคติ (ปรัชญา PKG ~15 ข้อ) ② ทุนองค์กรและการให้บริการลูกค้า (embed/เชื่อม Google Form ของ PKG) ③ แรงจูงใจ 3E3P (15 ข้อ)
- หน้าทำแบบทดสอบ: จับเวลา + บันทึกความคืบหน้าระหว่างทำ (ยังทำไม่เสร็จกลับมาทำต่อได้) แต่กดส่ง/ทำแบบทดสอบได้เพียงครั้งเดียวเท่านั้น (one attempt — นิยามพี่ปกรณ์ 1 ต.ค. 69) + ตรวจความครบถ้วน 3 แบบ → ครบ = สถานะ "ส่งใบสมัครสมบูรณ์" · ไม่ครบ = ค้าง + แจ้งเตือนให้ทำต่อ (HR ส่งลิงก์ทำต่อได้ ไม่ตัดสิทธิ์)
- เก็บผลแบบทดสอบลง TEST_RESULTS (ผูก APPLICATION_ID) → ส่งเข้าเป็นอินพุตของ AI คัดกรองขั้น ①
- สร้าง prompt วิเคราะห์: อ่านข้อมูลใบสมัคร (+OCR) เทียบกับคุณสมบัติตำแหน่งรายหัวข้อ → คะแนน + เหตุผลทุกคน (ห้ามให้ AI ตัดสินผ่าน/ไม่ผ่านเอง)
- เก็บผล AI: SCORE + REASON รายหัวข้อ ลง DB (ผูก APPLICATION_ID) + เวลา/เวอร์ชัน prompt
- หน้า HR Screening: รายชื่อต่อตำแหน่ง เรียงตามคะแนน + สถานะ (ผ่าน/รอพิจารณา/ไม่ผ่าน) + ดูเหตุผลรายบุคคล
- ปุ่มตัดสิน BMC/PAO (ผ่าน→P2 / รอ / ไม่ผ่าน→แจ้งผลสุภาพ+เสนอตำแหน่งสำรอง) + Audit Log ทุกการตัดสิน
- ตำแหน่งสำรอง: เสนอตำแหน่งที่เปิดรับที่เหมาะจากผล AI → ผู้สมัครตอบรับ → กลับเข้ากระบวนการเทียบตำแหน่งใหม่
- เทส: ใบสมัครตัวอย่างจริง 5–10 ชุด → AI จัดลำดับตรงตาม HR ≥ 80% + ทุกผลมีเหตุผลครบทุกหัวข้อคุณสมบัติ
- RBAC: เห็นคะแนน AI เฉพาะ HR/PAO/BMC (ตามตารางสิทธิ์) — ผู้สมัครไม่เห็นคะแนน
🧠 Task 5 ชุด · AI ใน P2 หยั่งประเมิน (Phase 2 — เริ่มหลัง ศ. 6 พ.ย. 69)
นิยามพี่ปกรณ์ 1 ต.ค. 69 · แยกจ่าย 4 Tasks · หลักการคงเดิม: AI ช่วยประเมิน คนตัดสิน — BMC/PAO เป็นผู้ผ่านเข้า P3 เสมอ + Audit Log ทุกการตัดสิน · รวม 4 วันทำการ
Task 5.1 · AI สร้างชุดคำถามสัมภาษณ์อัตโนมัติ — 1 วันทำการ
Scope: เลือกผู้สมัคร+ตำแหน่ง → AI สร้างชุดคำถามราย CC (CC1–CC7 + บทบาทตำแหน่ง) → ผู้สัมภาษณ์ตรวจ/แก้ → เก็บเป็นชุดคำถามประจำรอบ
┌─────────────────────────────────┐
│ BMC/PAO เลือกผู้สมัคร + ตำแหน่ง │
│ (จากผู้ผ่าน P1 Screening) │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ ระบบอ่าน: CC ที่ต้องประเมิน │
│ + บทบาท/คุณสมบัติตำแหน่ง │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ 🤖 AI สร้างชุดคำถามราย CC │
│ CC1–CC7 + คำถามเฉพาะตำแหน่ง │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ ผู้สัมภาษณ์ตรวจ/แก้/เลือกคำถาม │
│ (คนกำหนดชุดสุดท้าย) │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ บันทึกชุดคำถาม ผูก APPLICATION_ID │
│ + ส่งให้ผู้สัมภาษณ์ใช้จริง │
└─────────────────────────────────┘
ข้อมูลที่ต้องมี: นิยาม CC1–CC7 + พฤติกรรมบ่งชี้ · คลังคำถามตั้งต้น (ชุดปี 69) · รับงานเมื่อ: ชุดคำถามที่ AI สร้างถูกใช้จริงในรอบสัมภาษณ์ 1 รอบ
Task 5.2 · AI วิเคราะห์บันทึกสัมภาษณ์ → คะแนนราย CC — 1.5 วันทำการ
Scope: สัมภาษณ์เสร็จ → อัปโหลดโน้ต/ไฟล์เสียง → AI วิเคราะห์ → คะแนนราย CC + หลักฐานอ้างอิงคำตอบจริง → ผู้สัมภาษณ์ยืนยันคะแนน
┌─────────────────────────────────┐
│ สัมภาษณ์เสร็จ (ใช้ชุดจาก 5.1) │
│ consent บันทึกเสียงตรวจก่อนเริ่ม │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ อัปโหลด: โน้ตสัมภาษณ์ หรือไฟล์เสียง │
│ (ไม่มี consent เสียง → ใช้โน้ต) │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ 🤖 AI ถอดเสียง (ถ้ามี) + วิเคราะห์│
│ คะแนนราย CC + หลักฐาน │
│ (quote คำตอบจริงทุกข้อ) │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ แสดง CC Scorecard │
│ คะแนน+หลักฐานราย CC │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ ผู้สัมภาษณ์ตรวจ + แก้ + ยืนยัน │
│ (คะแนนสุดท้าย = ของคน) │
└─────────────────────────────────┘
ข้อมูลที่ต้องมี: เกณฑ์ให้คะแนนราย CC · รูปแบบโน้ตสัมภาษณ์จริง · PDPA consent บันทึกเสียง/ถอดเสียง/AI วิเคราะห์ (บังคับก่อนเริ่ม) · รับงานเมื่อ: ทดสอบบันทึกย้อนหลัง 5 ชุด คะแนนตรงกรรมการ ≥80%
Task 5.3 · AI สรุปผลทดสอบ CMC/ทัศนคติ + Cross-check P1 — 0.5 วันทำการ
Scope: สรุปคะแนนทดสอบเป็นโปรไฟล์ + ธงจุดขัดแย้ง + เทียบความสอดคล้องกับผล P1 Screening
┌─────────────────────────────────┐
│ คะแนน CMC + ทัศนคติ เข้าระบบ │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ 🤖 AI สรุปโปรไฟล์พฤติกรรม │
│ + ธง: ผลทดสอบขัดกับคำสัมภาษณ์? │
│ + เทียบความสอดคล้องกับ P1 │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ รวมในหน้า Scorecard เดียวกับ 5.2 │
│ (ธงขัดแย้งให้กรรมการถามเพิ่ม) │
└─────────────────────────────────┘
ข้อมูลที่ต้องมี: กติกาให้คะแนน CMC/ทัศนคติ ปัจจุบัน · รับงานเมื่อ: โปรไฟล์+ธงแสดงถูกต้องในเทส 5 ชุดเดียวกับ 5.2
Task 5.4 · AI ร่างรายงานสรุป P2 + การตัดสิน — 1 วันทำการ
Scope: รวมผล 5.1–5.3 → AI ร่างรายงาน (จุดแข็ง/ความเสี่ยง/คำถามแนะนำ P3) → BMC/PAO ตัดสิน + Audit Log
┌─────────────────────────────────┐
│ รวมผล: สัมภาษณ์ (5.2) + │
│ ทดสอบ (5.3) + ธงขัดแย้ง │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ 🤖 AI ร่างรายงานสรุป P2 │
│ จุดแข็ง/ความเสี่ยงราย CC │
│ + คำถามแนะนำสำหรับ P3 │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ BMC/PAO อ่านรายงาน + ตัดสิน │
│ ผ่าน → P3 จับคู่คนกับงาน │
│ รอ → สัมภาษณ์เพิ่ม/ข้อมูลเพิ่ม │
│ ไม่ผ่าน → แจ้งผลสุภาพ │
│ (คนกด — AI ไม่มีสิทธิ์ตัดสิน) │
└───────────────┬─────────────────┘
▼
┌─────────────────────────────────┐
│ Audit Log: ผู้ตัดสิน/เหตุผล/เวลา │
│ + ส่งต่อ P3 พร้อมรายงาน │
└─────────────────────────────────┘
ข้อมูลที่ต้องมี: แบบรายงาน P2 ที่กรรมการคุ้นเคย (ถ้ามี) · ข้อความแจ้งไม่ผ่านตามมาตรฐานถาวร · รับงานเมื่อ: รายงานร่าง 1 ฉบับจริงที่กรรมการใช้ตัดสิน + UAT ผ่าน
💬 Task 6 · web สมัครงาน — Chatbot ผู้สมัคร + ลงทะเบียนก่อนสมัคร (นิยามพี่ปกรณ์ 1 ต.ค. 69)
สร้าง web แยกต่างหาก (Applicant Portal) ให้ผู้สมัครกรอกข้อมูล · ก่อนเข้ามากรอกใบสมัครต้อง ลงทะเบียน เพื่อใช้เป็นช่องทางการติดต่อกับผู้สมัคร · ผู้สมัครเข้ามาดูสถานะของตนเองว่าต้องทำอะไรบ้าง · ขอบเขตที่ผู้สมัครเห็น: ตำแหน่งงานว่าง · แบบฟอร์มสมัครงาน · แบบทดสอบ (ทำได้เพียงครั้งเดียว) · สถานะตัวเอง · Chatbot — ไม่เห็น tab ต่าง ๆ ใน Web PP7 หลัก (พื้นที่ภายในเฉพาะสมาชิก/HR) · สื่อสารทีมพัฒนาด้วย 7 หน้าจอตาม Mockup ด้านล่าง
🎨 ดู Mockup + ออกแบบ Dashboard ผู้สมัคร (คลิกดูได้ 7 หน้าจอ)
📋 กระบวนการทำงาน 7 ส่วน — สำหรับสื่อสารทีมพัฒนา (เรียงตามลำดับที่สร้าง)
- เลือก FU 3 กลุ่ม (THAI/LAO/KHMER) — Dynamic Theme 3 สี 4 ภาษา ตาม Task 1 (ใช้ Master เดียวกัน M_FU/M_COMPANY/M_BRANCH)
- ปุ่มหลัก 2 ปุ่ม: ลงทะเบียนสมัครงาน / ดูตำแหน่งทั้งหมด
- มีป้าย/ข้อความบอกชัดว่าผู้สมัครเห็นอะไรได้บ้าง (ตำแหน่งว่าง · ฟอร์มสมัคร · แบบทดสอบ · สถานะ · Chatbot)
- งาน dev: สร้าง entry/route ใหม่แยกจาก Web PP7 หลัก · navigation ของ portal มีเฉพาะ 5 เมนูผู้สมัคร · ฝั่งลาว/กัมพูชาไม่แสดงปุ่มฝึกงาน (เฉพาะไทย — ยืนยัน 30 ก.ย. 69)
- ฟอร์ม: อีเมล/เบอร์โทร + รหัสผ่าน + PDPA consent (เก็บ consent_id/version/IP/device ตาม Task 3)
- ยืนยันตัวตน OTP (SMS/อีเมล หมดอายุ 10 นาที · ขอใหม่ได้ 3 ครั้ง/วัน) → สร้างบัญชีผูก APPLICANT_ID (role = applicant เท่านั้น)
- 1 คน = 1 บัญชี · สมัครได้หลายตำแหน่ง (APPLICATION หลายใบผูก APPLICANT เดียว)
- Gate: ยังไม่ลงทะเบียน → กด "สมัครงาน" ไม่ได้ (เด้งไปหน้าลงทะเบียนก่อน) · กันลงทะเบียนซ้ำ (อีเมล/เบอร์เดิม → แจ้งมีบัญชีแล้ว + ลิงก์กู้รหัสผ่าน)
- งาน dev: ตารางใหม่ APPLICANT_ACCOUNT (applicant_id, email, phone, password_hash, otp_status, locale) · password hashing (bcrypt) · rate limit กัน OTP ยิงรัว · ใช้ร่วมกับ DB1 APPLICANT ของ Task 1/3
- รายใบสมัครแสดง stepper 5 ขั้น: ส่งใบสมัคร → แบบทดสอบ 3 แบบ → HR ประเมิน → นัดสัมภาษณ์ → ผลลัพธ์
- กล่องสีเด่น "สิ่งที่คุณต้องทำตอนนี้": เขียว = ไม่มีอะไรต้องทำ (รอผล + บอกเวลาคาดทราบผล) · แดง = มีงานค้าง (เช่น แบบทดสอบเหลือ 2/3 ชุด) พร้อม deadline + ปุ่มไปทำทันที
- การแจ้งเตือนล่าสุด (timeline) + badge จำนวนใหม่
- หลักออกแบบ: เปิดมาแล้วต้องรู้ทันที 3 อย่าง — สมัครอะไรไว้ · อยู่ขั้นไหน · ต้องทำอะไรต่อ
- งาน dev: ตารางใหม่ APPLICANT_STATUS_VIEW — map Application Status กลาง (NEW→HIRED จาก Task 3) → label ภาษาคน 3 ภาษา (TH/LA/KH-EN) + next_action + deadline · ห้ามโชว์ status code ภายใน/คะแนน AI ให้ผู้สมัครเห็น
- ค้นหา/filter ตาม FU · บริษัท · สาขา · ประเภท (งานประจำ/ฝึกงาน 🎓 เฉพาะไทย)
- ตำแหน่งปิดรับ = การ์ดเทา กดสมัครไม่ได้ · ปุ่มสมัครตรวจ Gate ลงทะเบียนก่อน (ส่วน 2)
- งาน dev: ดึงจาก JOB_POSTING (Task 1) แสดงเฉพาะ status = เปิดรับ · ฟอร์มสมัคร = Task 3 (PDPA + OCR) · ฟอร์มฝึกงาน 2 ภาษา TH/EN (ทำแล้ว ✅ คงเหลือเชื่อม notification)
- 3 ชุด: ① ทัศนคติ (ปรัชญา PKG ~15 ข้อ) ② ทุนองค์กรและการให้บริการลูกค้า (Google Form ของ PKG) ③ แรงจูงใจ 3E3P (15 ข้อ) — ทำหลังกรอกใบสมัครเสร็จ (Flow อยู่ใน Task 4)
- ป้ายเตือนแดง "ทำได้เพียงครั้งเดียว" · ระหว่างทำบันทึกความคืบหน้าอัตโนมัติ (หลุดแล้วกลับมาทำต่อได้) · เมื่อกดส่งแล้วล็อก (attempt_count) แก้ไข/ทำใหม่ไม่ได้
- ครบ 3 แบบ → สถานะ "ส่งใบสมัครสมบูรณ์" + แจ้ง HR + ผลเข้า TEST_RESULTS เป็นอินพุต AI คัดกรอง (Task 4) · ผู้สมัครไม่เห็นคะแนนตัวเอง
- แบบทดสอบทักษะตามทีม/ตำแหน่ง ไม่อยู่ในชุดนี้ — HR ส่งลิงก์แยกเฉพาะรายภายหลัง
- งาน dev: เพิ่ม attempt_count ใน TEST_RESULTS · บล็อก submit ครั้งที่ 2 ฝั่ง backend (ไม่ใช่แค่ซ่อนปุ่ม)
- ขาเข้า: FAQ อัตโนมัติ (ตำแหน่ง/เอกสาร/ขั้นตอน) + AI ตอบจากข้อมูลบัญชีตัวเอง (ผูก APPLICANT_ID — ถามสถานะใบสมัครตัวเองได้จริง) + ปุ่ม "ส่งต่อ HR" เมื่อตอบไม่ได้/เรื่องละเอียดอ่อน (เงินเดือน, เหตุผลไม่ผ่าน) + เก็บประวัติแชท/Audit Log
- ขาออก: แจ้งเตือนสถานะเปลี่ยน · สิ่งที่ต้องทำ + deadline · นัดสัมภาษณ์ (วัน/เวลา/สถานที่/เอกสาร + ปุ่มยืนยัน/ขอเลื่อน) · แจ้งผล (ไม่ผ่าน = ข้อความสุภาพมาตรฐานถาวร + เสนอตำแหน่งสำรอง) — ผ่าน Chatbot + อีเมล (เชื่อม NOTIFICATION_LOG ของ Task 3 เพิ่ม channel chatbot)
- ห้าม: Chatbot บอกคะแนนแบบทดสอบ/AI · ตัดสินผ่าน-ไม่ผ่านเอง · เปิดเผยข้อมูลคนอื่น — ทุกการตัดสินเป็นของ BMC/PAO ("AI ช่วยคัด คนตัดสิน")
- งาน dev: ตารางใหม่ CHAT_HISTORY (chat_id, applicant_id, role, message, escalated) · AI engine เดียวกับ Task 4/5 (คนละ prompt + จำกัด context เฉพาะข้อมูลเจ้าของบัญชี) · 3 ภาษาตาม FU
- RBAC role "applicant" (เพิ่มจากตารางสิทธิ์ Task 1): ✓ Landing + ตำแหน่งว่าง + Dashboard ตัวเอง + Chatbot · ✗ ทุก tab ภายใน Web PP7 (P1–P7, HR Screening, Succession, PRG/PDG) · ✗ คะแนนแบบทดสอบ/คะแนน AI/เหตุผลรายบุคคล
- สถาปัตยกรรม: portal แยก route/entry จาก Web PP7 หลัก — ซ่อนเมนูภายในตั้งแต่ระดับ navigation (ไม่ใช่แค่ปิดปุ่ม) + ตรวจสิทธิ์ซ้ำที่ backend ทุก request (defense in depth)
- DB 6 ใบ: ใหม่ 3 (APPLICANT_ACCOUNT · APPLICANT_STATUS_VIEW · CHAT_HISTORY) + ขยายเดิม 3 (PDPA_CONSENT · TEST_RESULTS +attempt_count · NOTIFICATION_LOG +channel)
- Security: กัน IDOR — ผู้สมัครเห็น/ถามได้เฉพาะข้อมูลตัวเอง ตรวจสิทธิ์ทุก query · ห้าม hard-code application_id · ข้อมูลอ่อนไหวยังอยู่ใต้มาตรการ Task 3 (encryption/retention)
- เวลา ~7 วันทำการ (ทีม 2 คน + AI): ลงทะเบียน+OTP+RBAC 2 วัน · Dashboard สถานะ 1 วัน · Chatbot 2 วัน · Notification 1 วัน · เทส+security 1 วัน — เสนอ Phase 2 ต่อจาก Task 5 (หลัง 6 พ.ย. 69) หรือแทรก Task 1 ถ้าต้องการพร้อมวันเปิดตัว (รอสรุปประชุมทีม พ. 7 ต.ค.)
- เทสรับงาน (UAT): ลงทะเบียนซ้ำต้องถูกกัน · ไม่ลงทะเบียนกดสมัครไม่ได้ · ทำแบบทดสอบครั้งที่ 2 ต้องถูกบล็อก (backend) · login applicant แล้วมองไม่เห็น/เข้าถึง tab ภายในไม่ได้แม้พิมพ์ URL ตรง · Chatbot ตอบผิดบัญชี = fail ทันที
🔄 Flow ผู้สมัคร (สมัคร → ลงทะเบียน → Chatbot → ดูสถานะ)
┌──────────────────────────────────┐
│ ① ผู้สมัครเข้าหน้า Web PP7 (Public) │
│ เห็นเฉพาะ: ตำแหน่งงานว่าง · สมัครงาน │
│ · แบบทดสอบ · Chatbot (ไม่เห็น tab │
│ ภายในของ Web PP7 หลัก) │
└───────────────┬──────────────────┘
▼
┌──────────────────────────────────┐
│ ② ลงทะเบียน (บังคับก่อนกรอกใบสมัคร) │
│ อีเมล/เบอร์โทร + รหัสผ่าน + PDPA │
│ → ยืนยันตัวตน (OTP/ลิงก์) │
│ = ช่องทางติดต่อหลักของผู้สมัคร │
└───────────────┬──────────────────┘
▼
┌──────────────────────────────────┐
│ ③ กรอกใบสมัคร (Task 3) + OCR │
└───────────────┬──────────────────┘
▼
┌──────────────────────────────────┐
│ ④ ทำแบบทดสอบ 3 แบบ (ครั้งเดียว) │
└───────────────┬──────────────────┘
▼
┌──────────────────────────────────┐
│ ⑤ ดูสถานะของตนเอง (Dashboard ผู้สมัคร)│
│ "ตอนนี้ต้องทำอะไร" รายขั้น: │
│ ส่งใบสมัครแล้ว → รอผล → ทำแบบทดสอบ │
│ → นัดสัมภาษณ์ → ผลลัพธ์ │
└───────────────┬──────────────────┘
▼
┌──────────────────────────────────┐
│ ⑥ Chatbot — ช่องทางติดต่อ 2 ทาง │
│ • ขาเข้า: ผู้สมัครถาม FAQ (ตำแหน่ง/ │
│ เอกสาร/สถานะ/วันสัมภาษณ์) │
│ • ขาออก: แจ้งเตือนสถานะเปลี่ยน/ │
│ สิ่งที่ต้องทำต่อ → ตอบไม่ได้ส่งต่อ HR │
│ • ผูกบัญชีลงทะเบียน + Audit Log │
└──────────────────────────────────┘
✅ Checklist ทีมพัฒนา — Task 6
- หน้าลงทะเบียนผู้สมัคร: อีเมล/เบอร์โทร + รหัสผ่าน + PDPA consent → ยืนยันตัวตน (OTP/ลิงก์) → ผูก APPLICANT_ID (ใช้ร่วมกับ DB1 APPLICANT ของ Task 1/3)
- Gate: ยังไม่ลงทะเบียน → กรอกใบสมัครไม่ได้ (บังคับลงทะเบียนก่อน — นิยามพี่ปกรณ์)
- RBAC role "applicant": เห็นเฉพาะ ตำแหน่งงานว่าง · แบบฟอร์มสมัครงาน · แบบทดสอบ (ครั้งเดียว) · สถานะตัวเอง · Chatbot — มองไม่เห็นทุก tab ของ Web PP7 หลัก (ซ่อนเมนูภายในทั้งหมด)
- Dashboard ผู้สมัคร: แสดงสถานะรายขั้น + "ต้องทำอะไรต่อไป" (ส่งใบสมัคร/ทำแบบทดสอบ/ยืนยันนัดสัมภาษณ์/รอผล) — ดึงจาก Application Status กลาง NEW→HIRED (Task 3)
- Chatbot: FAQ อัตโนมัติ (ตำแหน่ง/เอกสาร/สถานะ) + AI ตอบจากข้อมูลตัวเอง (ผูกบัญชี) + ปุ่มส่งต่อ HR เมื่อตอบไม่ได้ + เก็บประวัติแชท/Audit Log
- แจ้งเตือนขาออกผ่าน Chatbot/อีเมล: สถานะเปลี่ยน · สิ่งที่ต้องทำต่อ · วันนัดสัมภาษณ์ (เชื่อม Notification Log ของ Task 3)
- Security: ผู้สมัครเห็น/ถามได้เฉพาะข้อมูลตัวเองเท่านั้น (ป้องกัน IDOR — ตรวจสิทธิ์ทุก query) · ห้ามโชว์ข้อมูลผู้สมัครคนอื่น/ข้อมูลภายใน
- เทส: ลงทะเบียนซ้ำ (อีเมล/เบอร์เดิม) · ทำแบบทดสอบครั้งที่ 2 ต้องถูกบล็อก · login ข้ามสิทธิ์เข้า tab ภายในต้องถูกบล็อก
ประเมินเวลา (เบื้องต้น — รอประชุมทีม 7 ต.ค. ยืนยัน): ลงทะเบียน+RBAC applicant 2 วัน · Dashboard สถานะผู้สมัคร 1 วัน · Chatbot FAQ+AI+ส่งต่อ HR 2 วัน · Notification 1 วัน · เทส/security 1 วัน = รวม ~7 วันทำการ (ทีม 2 คน + AI) — เสนอวางเป็น Phase 2 ต่อจากชุด Task 5 (หลัง 6 พ.ย. 69) หรือแทรกเข้า Task 1 ถ้าพี่ปกรณ์ต้องการให้พร้อมตั้งแต่วันแรก