พนักงานทำรายการเอง
ลงเวลา ยื่นลา ขอ OT เบิกค่าใช้จ่าย ตรวจเอกสาร และติดตามผลโดยไม่ต้องถาม HR ทุกครั้ง
จากงาน HR ที่กระจัดกระจาย สู่ workspace ที่รู้บทบาท เห็นงานถัดไป และตรวจสอบย้อนหลังได้

PRODUCT CONTEXT
Orienteering HRMS เป็น responsive web application สำหรับพนักงาน หัวหน้าทีม และ HR Admin ครอบคลุม employee self-service, workforce operations, payroll inputs, recruitment, performance และ reporting บนข้อมูลกลางชุดเดียว
ลงเวลา ยื่นลา ขอ OT เบิกค่าใช้จ่าย ตรวจเอกสาร และติดตามผลโดยไม่ต้องถาม HR ทุกครั้ง
เห็น policy, team coverage, สถานะ และประวัติรายการก่อนอนุมัติหรือขอข้อมูลเพิ่ม
รวม people data, payroll input, recruitment, assets และเอกสารไว้ใน operational workspace
ติดตามกำลังคน attendance, hiring pipeline, payroll และรายการรออนุมัติจาก dashboard เดียว
DESIGN + FRONTEND SCOPE
แบ่งผลงานเป็น 3 ด้านเพื่ออธิบายวิธีทำงานและ deliverables ของเคสนี้ ไม่ใช่ชื่อตำแหน่งงานย้อนหลัง โดยแยก functional prototype, เอกสารออกแบบ และสิ่งที่ยังต้องทดสอบออกจากกัน
จัดหน้าและ shared layout บน Next.js App Router ใช้ TypeScript กำหนด entities/actions และเชื่อม frontend store กับ API ของ prototype
Deliverables: route-based screens, AppLayout, Sidebar และ data-binding ผ่าน Zustand โดย API routes และ Prisma schema เป็นบริบทของระบบ ไม่ใช่หลักฐานการ deploy หรือการดูแล backend production
จัด IA ตามบทบาทและงาน ออกแบบ dashboard, directory และแบบฟอร์ม พร้อม tokens, component states และ responsive layout เพื่อให้ภาพและพฤติกรรมสอดคล้องกัน
Deliverables: IA, user flow, screen gallery และ design/handoff specification ในเคสนี้ ส่วน accessibility ของหน้า portfolio มี focus-visible, ปุ่มเมนูพร้อม aria-expanded และ reduced-motion; ยังไม่ใช่ผล audit ทั้งแอป
พัฒนา employee search, department filter, grid/list toggle และ empty state รวมถึงฟอร์มลาที่ตรวจช่วงวันที่และข้อมูลจำเป็น แสดง error/success และคำนวณจำนวนวัน
Deliverables: React components, local form state, Zustand actions และ Recharts ที่อ่านข้อมูลจาก store พร้อม loading/error boundary ของแอป การบันทึกแบบ optimistic ยังไม่มี rollback เมื่อ API ล้มเหลว
หลักฐานอ้างอิง: ไฟล์และพฤติกรรมที่ตรวจพบใน source · Responsive ตรวจได้จาก breakpoints และ layout rules; ยังไม่ได้ยืนยันด้วยการทดสอบอุปกรณ์จริงในรอบนี้ เคสนี้เป็น functional prototype ไม่ใช่ pilot หรือระบบ production
PROBLEM DEFINITION
เมื่อคำขออยู่ใน chat เอกสารอยู่ใน email และสถานะอยู่ใน spreadsheet ผู้ใช้ไม่แน่ใจว่าข้อมูลไหนล่าสุด ขณะที่ HR ต้องทำหน้าที่เป็น search engine ขององค์กร
คำขอ เอกสาร และการติดตามผลอยู่คนละที่ จึงต้องกรอกและถามซ้ำ
ผู้ส่งไม่รู้ว่างานอยู่ที่ใคร ผู้อนุมัติไม่เห็น SLA และ HR ต้องตามแทน
ข้อมูลบุคคลถูกแก้หลายจุดไม่พร้อมกัน และอาจกระทบ payroll กับ reporting
ข้อมูลอ่อนไหวต้องแสดงเท่าที่จำเป็น พร้อมบอกว่าใครทำอะไร เมื่อไร
DESIGN CHALLENGE
JTBD · PERMISSION
Role profiles ใช้กำหนด navigation, default landing, content density และ action visibility ส่วนสิทธิ์จริงต้องตรวจซ้ำที่ backend เสมอ
ใช้มือถือระหว่างเดินทาง และ desktop เมื่ออยู่สำนักงาน
“เมื่อมีเรื่องเกี่ยวกับงาน ฉันต้องการส่งคำขอที่ถูกต้อง เพื่อให้ดำเนินชีวิตต่อได้โดยไม่ต้องตามงานหลายช่องทาง”
บริหารทีม 12 คนและอนุมัติคำขอระหว่างประชุม
“เมื่อมีคำขอรออนุมัติ ฉันต้องการเห็นผลกระทบและข้อกำหนด เพื่อให้ตัดสินใจได้เร็วและเป็นธรรม”
ดูแล people data, payroll input และ compliance ทั้งองค์กร
“เมื่อข้อมูลคนเปลี่ยน ฉันต้องการ workflow ที่มีเจ้าของและหลักฐาน เพื่อให้ข้อมูลต้นทางเดียวพร้อมใช้ทุกโมดูล”
LEAVE REQUEST
Journey หลักเชื่อมข้อมูลสิทธิ์, team coverage, approval และ notification ซึ่งเป็น pattern ที่นำไปใช้กับ overtime, expenses และ loans ได้
| Phase | User Action | Touchpoint | User Thought | Pain / Emotion | App Opportunity |
|---|---|---|---|---|---|
| ① รับรู้ความต้องการ | ต้องการลา 2 วัน | Dashboard / mobile | “เหลือสิทธิ์พอไหม?” | ไม่แน่ใจ · กลัวผิด policy | แสดง balance และข้อกำหนดก่อนเริ่ม |
| ② เริ่มทำรายการ | เลือกประเภทและวันที่ | Leave form | “มีใครลาซ้อนหรือเปล่า?” | กังวลผลกระทบทีม | Calendar พร้อม team coverage |
| ③ ตรวจและส่ง | ใส่เหตุผล แนบเอกสาร | Review step | “ส่งครบแล้วใช่ไหม?” | ต้องการความมั่นใจ | สรุปก่อนส่ง + inline validation |
| ④ รอการตัดสินใจ | ติดตามสถานะ | Task center / notification | “ตอนนี้อยู่ที่ใคร?” | รอ · เริ่มกังวล | Owner, SLA และ timeline |
| ⑤ ได้ผลลัพธ์ | รับผลและดูยอดสิทธิ์ใหม่ | Notification / history | “ปฏิทินอัปเดตแล้ว” | โล่งใจ | ผลลัพธ์ + next step + audit receipt |
INFORMATION ARCHITECTURE
Navigation แบ่งเป็น 6 กลุ่มงาน ใช้ permission กรองสิ่งที่เห็น และให้ dashboard เป็น task center สำหรับกลับมาทำงานต่อ
Home · My time · My requests · Pay & benefits · Growth · Profile
Team overview · Approvals · Schedule · Performance · Hiring
People · Workforce · Payroll · Talent · Reports · System
CORE USER FLOW
Flow รองรับ happy path, missing document, overlapping leave, manager rejection, HR escalation และ notification recovery โดยไม่ทำ context หลุดระหว่าง handoff
DESIGN PRINCIPLES
ผมเปลี่ยนระบบจาก “เมนูเยอะเท่ากับครบ” ไปเป็น “สิ่งที่ต้องทำมาก่อน สิ่งที่อยากค้นค่อยตามมา”
นำงานรออนุมัติและข้อยกเว้นไว้ first viewport ก่อนรายการเมนูทั้งหมด
BEFORE · เริ่มจากเมนูAFTER · เริ่มจากงานรวม policy, team impact และ history ไว้กับ approval action เพื่อลดการเปิดหลายหน้า
BEFORE · ถาม HR เพิ่มAFTER · ตัดสินใจในจอเดียวข้อมูลสำคัญมี canonical ID, เจ้าของข้อมูล และ effective date ที่นำไปใช้ต่อข้ามโมดูล
BEFORE · สำเนาหลายชุดAFTER · แหล่งข้อมูลกลางให้งานปกติไหลอัตโนมัติ และยกเฉพาะรายการผิดปกติให้ HR จัดการ
BEFORE · ตรวจทุกแถวAFTER · จัดการเฉพาะข้อยกเว้นIMPLEMENTED SCREENS
Visual language ใช้ navy สร้างความมั่นคง gold เป็น action accent และ cream ลดความแข็งของ enterprise UI โดยสถานะไม่พึ่งสีเพียงอย่างเดียว
DESIGN FOUNDATION
Token, component และ state ถูกผูกกับงานจริงและ data contract เพื่อให้ทีมพัฒนานำกลับไปใช้ซ้ำได้โดย behavior ไม่หลุด
แสดง primary action ตามบทบาท
แสดง owner, SLA และ submitted time
แสดง receipt, ผลกระทบ และ next step
บอกเหตุผลภาษาคนและ recovery action
DESIGN → DEVELOPMENT
แต่ละ screen ผูก Route + Role + State + Data + Acceptance Criteria เพื่อให้ design intent ไปถึง implementation และ QA
ตัวอย่างด้านล่างเป็น proposed handoff contract สำหรับพัฒนาต่อ ไม่ใช่รายการที่ implement และทดสอบครบแล้ว โดยเฉพาะ backend permission, stale/409 conflict และ receipt
หน้ารายละเอียดคำขอ
ตรวจ backend permission ซ้ำ
Status · policy · timeline
รองรับ stale และ 409 conflict
สำเร็จโดยไม่ reload
TARGETS · NOT RESULTS
เพื่อหลีกเลี่ยงการอ้างผลลัพธ์เกินหลักฐาน ตัวเลขต่อไปนี้คือเกณฑ์สำหรับ usability test รอบถัดไป ไม่ใช่ผลหลัง launch
สร้างแล้ว: responsive interface, role-aware navigation, dashboard, employee directory, attendance, leave/approval patterns, payroll, reports, API routes, Zustand store และ PostgreSQL/Prisma schema
27 routes, 6 module groups, role navigation และ object model
หน้าจอสำคัญตั้งแต่ dashboard, people, attendance, payroll ถึง reports
Design tokens, component behavior, shared states และ accessibility baseline
Data contract, API model, acceptance criteria และ validation backlog