จัดเตรียม JSA (JSA Preparation) - Workflow
นี่คือเอกสารสำหรับ JSA Preparation Prototype กรุณาทดสอบและส่ง feedback
Overview
JSA Preparation workflow ช่วยให้ผู้รับเหมาสามารถจัดเตรียมและส่งเอกสารวิเคราะห์งานเพื่อความปลอดภัย (Job Safety Analysis) โดยมีค่าเริ่มต้น 3 ฉบับ และสามารถเพิ่มได้ตามต้องการ จากนั้นจะส่งให้เจ้าของงานและเจ้าหน้าที่ความปลอดภัยตรวจสอบร่วมกัน (Co-Review)
Workflow Diagram
Co-Review Pattern
JSA Preparation ใช้รูปแบบการตรวจสอบร่วม 2 บทบาท:
- Work Owner (WO): ผู้ควบคุมงาน - ตรวจสอบคุณภาพและความครบถ้วนของ JSA
- Safety Officer (SO): เจ้าหน้าที่ความปลอดภัย - ตรวจสอบด้านความปลอดภัยและมาตรการควบคุม
ทั้ง 2 บทบาทต้องอนุมัติจึงจะสามารถเข้าสู่สถานะ "เสร็จสิ้น" ได้
States
| State | Thai Name | Description | Expected Role |
|---|---|---|---|
| Started | เริ่มต้น | สถานะเริ่มต้น | - |
| PrepareJSA | จัดเตรียม JSA | ผู้รับเหมากรอกข้อมูล JSA (3 ฉบับขึ้นไป) | ผู้รับเหมา |
| ReviewByCoReview | ตรวจสอบร่วม | เจ้าของงาน + จป. ตรวจสอบร่วมกัน | WO + SO |
| Completed | เสร็จสิ้น | JSA ได้รับการอนุมัติแล้ว | - |
| Rejected | ปฏิเสธ | JSA ถูกปฏิเสธ | - |
| Cancelled | ยกเลิก | ยกเลิกการจัดเตรียม JSA | - |
Commands
| Command | Thai Name | From State | To State |
|---|---|---|---|
| SubmitJSA | ส่ง JSA | PrepareJSA | ReviewByCoReview |
| Cancel | ยกเลิก | PrepareJSA | Cancelled |
| ApproveJSA | อนุมัติ JSA | ReviewByCoReview | Completed |
| RequestChangeJSA | ส่งกลับแก้ไข | ReviewByCoReview | PrepareJSA |
| RejectJSA | ปฏิเสธ | ReviewByCoReview | Rejected |
คำสั่ง ApproveJSA จะทำงานก็ต่อเมื่อทั้ง WO และ SO อนุมัติแล้วเท่านั้น
หากยังไม่ครบทั้ง 2 บทบาท ระบบจะบันทึกการอนุมัติของบทบาทนั้นและรอบทบาทที่เหลือ
Form Edit Permissions
| State | Editable Documents | Editable By | Lock Reason |
|---|---|---|---|
| PrepareJSA | Doc 3 (Risk Assessment/JSA) | ผู้รับเหมา | - |
| ReviewByCoReview | (all locked) | - | กำลังตรวจสอบร่วม |
| Completed | (all locked) | - | อนุมัติแล้ว |
| Rejected | (all locked) | - | ถูกปฏิเสธ |
| Cancelled | (all locked) | - | ยกเลิกแล้ว |
Document Forms
| Doc ID | Document | Thai Name | Description |
|---|---|---|---|
| 3 | Risk Assessment Form (JSA) | การวิเคราะห์งานเพื่อความปลอดภัย | ฟอร์มวิเคราะห์อันตรายและมาตรการควบคุม |
Default JSA Examples
เมื่อสร้างงาน JSA Preparation ใหม่ ระบบจะสร้าง JSA เริ่มต้น 3 ฉบับ (เหมือนกับ Work Permit):
| # | Work Type | Thai Name | Description |
|---|---|---|---|
| 1 | งานเชื่อม งานตัด งานเจียร งานเจาะ | Hot Work | งานที่มีความร้อนและประกายไฟ |
| 2 | การทำงานบนที่สูง | Work at Height | งานที่ปฏิบัติในที่สูงตั้งแต่ 2 เมตรขึ้นไป |
| 3 | งานรถกระเช้า | Elevated Platform | งานที่ใช้รถกระเช้าหรือแท่นยก |
ผู้รับเหมาสามารถเพิ่ม JSA เพิ่มเติมได้โดยคลิกปุ่ม "เพิ่ม JSA" บนหน้าแสดงรายการ
Form Fields
Risk Assessment Form (Doc 3)
| Section | Fields | Description |
|---|---|---|
| ข้อมูลทั่วไป | บริษัท/Contractor | ชื่อผู้รับเหมา |
| โครงการ | ชื่อโครงการที่เกี่ยวข้อง | |
| สถานที่ | ตำแหน่งที่ปฏิบัติงาน | |
| ระยะเวลา | วันที่เริ่ม-สิ้นสุด | |
| PO/PR | หมายเลขอ้างอิง | |
| General Practices | รายการ 6 ข้อ | การปฏิบัติด้านความปลอดภัยทั่วไป |
| Assessment Items | ตาราง | พื้นที่ปฏิบัติงาน, กิจกรรม, อันตราย, มาตรการควบคุม |
| ลายเซ็น | 4 ลายเซ็น | ผู้จัดทำ, ผู้อนุมัติ, เจ้าของพื้นที่, หัวหน้างาน |
Testing Instructions
เข้าถึง Prototype
- เข้าสู่ระบบด้วย role Contractor
- ไปที่ "งานของฉัน" (My Tasks)
- คลิก "สร้างงาน" → เลือก "จัดเตรียม JSA"
Test Scenarios
Scenario 1: ส่ง JSA สำเร็จ (Co-Review)
- Contractor: สร้างงานใหม่ประเภท "จัดเตรียม JSA" → เห็น JSA เริ่มต้น 3 ฉบับ
- Contractor: แก้ไขหรือเพิ่ม JSA ตามต้องการ
- Contractor: คลิก "ส่ง JSA"
- Work Owner: ตรวจสอบ JSA และคลิก "อนุมัติ JSA" (WO badge เปลี่ยนเป็นสีเขียว)
- Safety Officer: ตรวจสอบ JSA และคลิก "อนุมัติ JSA" (SO badge เปลี่ยนเป็นสีเขียว)
- เมื่อทั้ง 2 บทบาทอนุมัติครบ → สถานะเปลี่ยนเป็น "เสร็จสิ้น"
Scenario 2: ส่งกลับแก้ไข
- ทำขั้นตอน 1-4 จาก Scenario 1
- Work Owner หรือ Safety Officer: คลิก "ส่งกลับแก้ไข"
- Contractor: แก้ไขข้อมูล JSA
- Contractor: ส่งใหม่อีกครั้ง (การอนุมัติของ WO/SO รีเซ็ต)
Scenario 3: ยกเลิก
- ทำขั้นตอน 1-2 จาก Scenario 1
- Contractor: คลิก "ยกเลิก"
- สถานะเปลี่ยนเป็น "ยกเลิก"
Scenario 4: เพิ่ม JSA ใหม่
- ทำขั้นตอน 1 จาก Scenario 1
- Contractor: คลิกปุ่ม "เพิ่ม JSA"
- กรอกข้อมูล JSA ใหม่
- ดำเนินการส่งและอนุมัติตามปกติ
สิ่งที่ต้องตรวจสอบ
- สร้างงานใหม่ได้สำเร็จ
- เห็น JSA เริ่มต้น 3 ฉบับ
- สามารถเพิ่ม JSA ใหม่ได้
- ปุ่มคำสั่งแสดงตามสถานะถูกต้อง
- กรอกข้อมูล JSA ได้
- WO และ SO badges แสดงถูกต้อง (สีเทา = รออนุมัติ, สีเขียว = อนุมัติแล้ว)
- ต้องทั้ง 2 บทบาทอนุมัติจึงจะเสร็จสิ้น
- ฟอร์มล็อคเมื่ออยู่ในสถานะตรวจสอบ
Architecture Notes
Temporal.io Workflow
JSA Preparation ใช้ Temporal.io สำหรับ workflow orchestration:
- Task Creation: Task ถูกสร้างผ่าน
JSAPreparationWorkflowService.ExecuteAsync() - Workflow: Temporal workflow ใน
JSAPreparationWorkflow.csจัดการ state machine - Commands: Query Temporal workflow ผ่าน
GetCommandsAsync() - State Transitions: Update Temporal workflow ผ่าน method เช่น
SubmitJSAAsync(),ApproveJSAAsync()
Key Backend Files
| File | Purpose |
|---|---|
SafetyApp.Workflows.JSAPreparation/JSAPreparationWorkflow.cs | Temporal workflow (states, queries, updates) |
SafetyApp.Workflows.JSAPreparation/JSAPreparationActivities.cs | Activity methods |
SafetyApp.Workflows.JSAPreparation/JSAPreparationWorkflowService.cs | Temporal client wrapper |
SafetyApp.Application/Contracts/IJSAPreparationWorkflowService.cs | Service interface |
SafetyApp.Infrastructure/Services/TaskCommandService.cs | Command execution routing |
Key Frontend Files
| File | Purpose |
|---|---|
risk-assessment-form.component.ts | Form component |
risk-assessment-form.model.ts | Form data model |
jsa-preparation-svg-mapping.config.ts | SVG workflow diagram mapping |
Source Code Reference
Workflow is implemented as a Temporal.io workflow:
Project: backend/SafetyApp.Workflows.JSAPreparation/
| File | Description |
|---|---|
JSAPreparationWorkflow.cs | State machine with [WorkflowQuery] and [WorkflowUpdate] methods |
JSAPreparationActivities.cs | Activity methods for task creation, state updates |
DependencyInjection.cs | Temporal worker registration with task queue jsa-preparation-task-queue |
Feedback
สิ่งที่ต้องการ Feedback
- Workflow: ลำดับขั้นตอนเหมาะสมหรือไม่?
- Form Fields: ฟิลด์ครบถ้วนหรือไม่?
- Assessment Items: การกรอกข้อมูลอันตรายใช้งานง่ายหรือไม่?
- Missing Features: มีอะไรที่ขาดหายไป?
วิธีส่ง Feedback
- ติดต่อทีมพัฒนาโดยตรง
- หรือสร้าง Issue ใน GitHub repository