การตั้งค่า¶
ทุกอย่างในหน้านี้สำหรับ ผู้ดูแลระบบเท่านั้น คุณต้องอยู่ในกลุ่ม maintenance.group_equipment_manager (Maintenance / Administrator) สำหรับการแก้ไขขั้น และกลุ่มเดียวกันนี้เป็นสิ่งที่ปลดล็อกเมนูบันทึกการตรวจสอบ
ตรวจดูห้าขั้น¶
มีสองที่ในการดูนิยามของขั้น
จาก UI¶
- เปิดโหมดนักพัฒนา (Settings → Developer Tools → Activate developer mode)
- ไปที่ Maintenance → Configuration → Maintenance Stages
- มุมมองรายการแสดง
Sequence,Default Responsible Role,SLA HoursและIs Done Stage
จากไฟล์ seed¶
แหล่งความจริงตามแบบฉบับคือ addons/roots/roots_hemms_workflow/data/maintenance_stage_data.xml ไฟล์นี้ทำเครื่องหมาย noupdate="1" ดังนั้นการแก้ไขของผู้ดูแลระบบต่อชั่วโมง SLA หรือบทบาทผู้รับผิดชอบจะ คงอยู่ผ่านการอัปเกรดโมดูล — คุณสามารถปรับใน UI ได้อย่างปลอดภัยโดยไม่ต้องกังวลว่า -u ครั้งถัดไปจะเขียนทับคุณ
| XML ID | ชื่อ | ลำดับ | SLA | บทบาท | เสร็จ |
|---|---|---|---|---|---|
stage_submitted | ส่งซ่อม (Submitted) | 10 | 4.0 | ward_staff | — |
stage_pending_review | รอตรวจสอบ (Pending Review) | 20 | 8.0 | bme_manager | — |
stage_in_repair | กำลังซ่อม (In Repair) | 30 | 24.0 | bme_technician | — |
stage_awaiting_pickup | ซ่อมเสร็จ - รอรับ (Awaiting Pickup) | 40 | 8.0 | bme_manager_signoff | — |
stage_received | รับงานแล้ว (Received) | 50 | 0.0 | ward_staff | ✓ |
ขั้น Received มี fold=True, done=True, roots_is_done_stage=True และ SLA 0.0 — ตัวจับเวลา SLA ไม่ทำงานบนขั้นปลายทาง
ปรับชั่วโมง SLA¶
งานผู้ดูแลระบบที่พบบ่อยที่สุด ป้ายการเกินกำหนดจะทำงานเมื่อใดก็ตามที่:
ปรับต่อขั้น:
- เปิดฟอร์มของขั้น (โหมดนักพัฒนา → Maintenance → Configuration → Maintenance Stages → คลิกแถว)
- แก้ไข SLA Hours
- บันทึก
การเปลี่ยนแปลงมีผล ทันทีกับทุกคำขอที่เปิดอยู่ ในขั้นนั้น (ธงการเกินกำหนด เป็นฟิลด์คำนวณ ไม่ได้จัดเก็บ) ไม่ต้องรีสตาร์ท cron หรือสร้างแคชใหม่
SLA เริ่มต้นที่แนะนำตามขนาดโรงพยาบาล
| ขั้น | เล็ก (<200 เตียง) | ระดับตติยภูมิ |
|---|---|---|
| Submitted | 4 ชม. | 2 ชม. |
| Pending Review | 8 ชม. | 4 ชม. |
| In Repair | 24 ชม. | 24 ชม. |
| Awaiting Pickup | 8 ชม. | 8 ชม. |
SLA ของอุปกรณ์วิกฤตเป็นรายการในอนาคต Q — ปัจจุบัน ระดับความวิกฤต ขับเคลื่อนเพียงสีของป้ายเท่านั้น ไม่ใช่เกณฑ์
ตั้ง SLA เป็น 0 เพื่อปิดตัวจับเวลา
roots_sla_hours = 0.0 เป็นวิธีที่มีการบันทึกไว้ในการยกเว้นขั้นออกจาก การตรวจสอบ SLA ธงการเกินกำหนดจะคงเป็น False ตลอดไปในขั้นนั้น อย่าลบ ฟิลด์หรือตั้งเป็นจำนวนลบ
จุดเข้า PM Scheduled¶
โมดูลการบำรุงรักษาเชิงป้องกัน (roots_hemms_pm) — ติดตั้งพร้อมกับโมดูล ขั้นตอนการทำงานในการติดตั้ง HEMMS ทุกครั้ง — เพิ่มขั้นที่หก:
| XML ID | ชื่อ | ลำดับ | SLA | บทบาท |
|---|---|---|---|---|
roots_hemms_pm.stage_pm_scheduled | PM Scheduled (ตามแผนบำรุงรักษา) | 5 | 72.0 | bme_technician |
สองสิ่งที่ต้องรู้:
- ลำดับ 5 วางไว้ก่อน
Submitted(ลำดับ 10) เพื่อให้ PM และตั๋วเชิงแก้ไข ปรากฏเป็นคอลัมน์คู่ขนานในคัมบัง - คำขอ PM ที่สร้างโดย cron รายวันของ OCA
maintenance_planจะมาอยู่ ใน PM Scheduled โดยตรง ไม่ใช่ใน Submitted ช่างยอมรับงาน PM โดยเลื่อนไปยัง Pending Review จากนั้นจึงเข้าร่วมขั้นตอนเชิงแก้ไขมาตรฐาน
ขั้นนี้เป็นของ roots_hemms_pm — ดู การบำรุงรักษาเชิงป้องกัน → การตั้งค่า สำหรับการแก้ไข
กลุ่มความปลอดภัย¶
| กลุ่ม | การเข้าถึงบันทึกการตรวจสอบ |
|---|---|
base.group_user (ผู้ใช้ภายในทุกคน) | อ่าน + สร้าง |
maintenance.group_equipment_manager (ผู้จัดการ BME) | อ่าน + เขียน + สร้าง; ลบไม่ได้ |
ACL ที่แน่นอนจาก security/ir.model.access.csv:
access_hemms_stage_transition_log_manager,...,maintenance.group_equipment_manager,1,1,1,0
access_hemms_stage_transition_log_user,...,base.group_user,1,0,1,0
สังเกตว่า ไม่มีใคร ลบแถวบันทึกการตรวจสอบได้ — perm_unlink=0 สำหรับ ทั้งสองกลุ่ม นี่เป็นความตั้งใจ: ร่องรอยมีไว้เพื่อเป็นหลักฐานที่แก้ไขไม่ได้ สำหรับผู้ตรวจประเมิน หากต้องการลบรายการตรวจสอบ คุณต้องเป็น superuser ของ ฐานข้อมูลที่ทำงานนอก ORM และการกระทำนั้นจะมองเห็นได้ใน ir.logging
อย่าให้ผู้ใช้ทั่วไปมี perm_unlink
หากคุณจำเป็นต้องอนุญาตให้ผู้จัดการลบแถวบันทึก (เราไม่แนะนำ) ให้ทำผ่าน กลุ่มแยกต่างหาก ไม่ใช่โดยการแก้ไข ACL ที่เตรียมไว้ แถวที่เตรียมไว้ถูก ปกป้องด้วย noupdate ใน ir.model.access แต่ผู้ดูแลระบบโรงพยาบาลที่แก้ไข CSV และติดตั้งโมดูลใหม่ จะ ลบสิทธิ์ลบแบบกำหนดเองของตนอย่างเงียบ ๆ
กฎการเปลี่ยนผ่านถูกบังคับใช้อย่างไร¶
คำตอบสั้น ๆ: ไม่ถูกบังคับ ไม่มี _constrains ที่บล็อกการกระโดดขั้นเฉพาะ ผู้ใช้ใด ๆ ที่มีสิทธิ์เขียนบนคำขอซ่อมบำรุงสามารถลากการ์ดไปข้างหน้า ถอยหลัง หรือด้านข้างได้
คำตอบยาว: ทุกการเปลี่ยนผ่านถูกสังเกต ไม่ใช่ถูกควบคุม การ override write() (ดู models/maintenance_request.py) รันลำดับต่อไปนี้ภายในธุรกรรม เดียว:
- ตรวจจับว่า
stage_idกำลังถูกเปลี่ยนและต่างจากค่าปัจจุบัน (การเขียนที่ไม่มี ผลจะข้ามทุกอย่าง) - คำนวณ
time_in_previous_stage_hoursสำหรับแต่ละระเบียน - เรียก
super().write(vals)— หาก Odoo เกิดข้อผิดพลาด (เช่น ข้อผิดพลาด ด้านสิทธิ์หรือ_constrainsบนฟิลด์อื่น) ให้ยกเลิกทุกอย่าง; ไม่มีแถวบันทึก ที่กำพร้าถูกสร้าง - หลังจาก super สำเร็จ สร้างแถวบันทึกการตรวจสอบแบบกลุ่มและบันทึกข้อความ chatter
สองทางเลือกการออกแบบที่ควรรู้:
vals["roots_stage_entered_at"] = now()ถูกตั้งค่า ก่อน super ดังนั้นการรีเซ็ตเกิดขึ้นพร้อมกับการเปลี่ยนขั้นอย่างเป็นอะตอม- การบันทึกขั้นเริ่มต้น อยู่ในการ override
create()ซึ่งเขียนแถว ตรวจสอบที่มีfrom_stage_id=Falseนี่เป็นเหตุผลว่าทำไมแถวแรกของแท็บ Audit Trail จึงเป็นเหตุการณ์การสร้างเสมอ
หากโรงพยาบาลต้องการบังคับใช้ขั้นตอนที่เข้มงวดกว่าภายหลัง (เช่น ห้ามเลื่อน ถอยหลัง) จุด hook ที่แนะนำคือ @api.constrains บน stage_id ที่อ่านจาก ค่าก่อนหน้าผ่าน _origin — แต่นั่นเป็นงานโมดูลปลายน้ำ ไม่ใช่ workflow-core
การเพิ่มขั้นแบบกำหนดเอง¶
เรา ไม่แนะนำ ให้เพิ่มขั้นแบบกำหนดเอง — ขั้นตอน 5 ขั้นเป็นรูปแบบหลักฐาน ต่อผู้ตรวจประเมินที่เราจัดมาให้สำหรับการรับรอง HA และการเพิ่มคอลัมน์ทำลายการ จับคู่กับเกณฑ์มาตรฐาน SLA ของอุตสาหกรรม แต่บางครั้งคุณก็จำเป็น (เช่น โรงพยาบาลที่มีคอลัมน์ "Awaiting Parts" แยกต่างหาก)
หากคุณจำเป็น:
- โหมดนักพัฒนา → Maintenance → Configuration → Maintenance Stages → New
- กรอกฟิลด์มาตรฐาน: Name (สองภาษา TH+EN ในสตริงเดียวกัน เช่น
รอชิ้นส่วน (Awaiting Parts)), Sequence, Fold, Done - กรอกฟิลด์ส่วนขยายของ HEMMS:
- SLA Hours — ตั้งเป็น
0หากคุณไม่ต้องการตัวจับเวลา - Default Responsible Role — เลือกจากสี่บทบาท
- Description (Thai) — สำหรับ tooltip ของขั้นในแอป
- Is Done Stage — ปล่อยเป็น False เว้นแต่นี่เป็นคอลัมน์ปลายทาง
- SLA Hours — ตั้งเป็น
- บันทึก
เลือกหมายเลขลำดับ ระหว่าง ขั้นที่มีอยู่ (เช่น 25 เพื่อแทรกระหว่าง Pending Review และ In Repair) หลีกเลี่ยงการเปลี่ยนหมายเลขขั้นที่เตรียมไว้ — XML ID ที่เตรียมไว้เป็นวิธีที่โมดูลปลายน้ำอ้างอิงถึง
ขั้นแบบกำหนดเองไม่คงอยู่ผ่านการติดตั้งโมดูลใหม่ด้วยตัวมันเอง
seed เป็น noupdate="1" ดังนั้น การแก้ไข ขั้นที่เตรียมไว้จึงคงอยู่ แต่ขั้นใหม่ที่คุณสร้างใน UI อยู่เพียงใน ir.model.data หากคุณสร้าง XML ID ให้มันด้วยตนเอง หากต้องการให้ขั้นแบบกำหนดเองคงอยู่ข้ามการติดตั้งใหม่ ให้ บรรจุไว้ในโมดูล Layer 4 เฉพาะโรงพยาบาลขนาดเล็ก ติดต่อ Trinity Roots หาก คุณต้องการ
การปรับการเก็บรักษาบันทึกการตรวจสอบ¶
ไม่มีการเก็บรักษาอัตโนมัติ ตาราง hemms.stage.transition.log เติบโตทีละหนึ่ง แถวต่อการเปลี่ยนผ่านขั้นต่อคำขอ และ ACL ที่เตรียมไว้ห้ามการลบ สำหรับโรงพยาบาล ที่มี 50 คำขอที่ใช้งานต่อวันโดยเฉลี่ย 4 การเปลี่ยนผ่านต่อคำขอ นั่นคือ ~73,000 แถวต่อปี — ดัชนีบน (request_id) และ (transitioned_at) ทำให้การสืบค้น รวดเร็วไปได้ไกลกว่านั้นมาก
หากคุณจำเป็นต้องเก็บถาวรแถวเก่าด้วยเหตุผลด้านการปฏิบัติตามกฎหมายหรือพื้นที่ จัดเก็บ ให้ทำผ่านกลยุทธ์การแบ่งพาร์ทิชันระดับฐานข้อมูล pg_dump ไม่ใช่ผ่าน ORM บันทึกการตรวจสอบมีไว้เพื่อเขียนและเก็บโดยตั้งใจ
หน้าที่เกี่ยวข้อง¶
- ขั้นตอนการทำงาน — แต่ละขั้นหมายถึงอะไรในทางปฏิบัติ
- การรายงาน — มุมมองที่เป็นมิตรกับผู้ตรวจประเมินเหนือ บันทึกการตรวจสอบ
- การบำรุงรักษาเชิงป้องกัน → การตั้งค่า — สำหรับขั้น PM Scheduled และ cron ของ OCA