ข้ามไปที่เนื้อหา

บันทึกการสร้างเซสชัน 1 — HEMMS Demo Sandbox

วันที่: 2026-05-12 ผู้เขียน: Trinity Roots Co., Ltd.

สิ่งที่ถูกสร้าง

โมดูล Odoo 18.0 CE ที่ปรับแต่งเอง 2 โมดูลสำหรับ demo sandbox ของ HEMMS (Hospital Equipment Maintenance Management System):

1. roots_hemms_criticality (v18.0.1.0.0)

การจำแนกความวิกฤต 2 มิติสำหรับเครื่องมือแพทย์ที่บำรุงรักษา ระเบียนเครื่องมือแพทย์แต่ละรายการถูกกำหนด Value Tier (Low / Medium / High) และ Risk Tier (Low / Medium / High) Criticality Color ที่คำนวณได้ (green / yellow / red) ถูกหามาจากเมทริกซ์ 3×3 ที่ตายตัว:

Risk: Low Risk: Medium Risk: High
Value: Low 🟢 Green 🟢 Green 🟡 Yellow
Value: Medium 🟢 Green 🟡 Yellow 🔴 Red
Value: High 🟡 Yellow 🔴 Red 🔴 Red

ป้ายแบบไฟจราจรแสดงบนมุมมอง form, tree และ kanban ตัวกรองการค้นหาอนุญาตให้กรองตามระดับความวิกฤต value tier และ risk tier พร้อมตัวเลือก group-by

2. roots_hemms_workflow (v18.0.1.0.0)

ขั้นตอนการทำงานการซ่อม 5 ขั้นที่แทนที่ขั้นตอน maintenance request เริ่มต้นของ Odoo:

# Stage Thai Name Default Role SLA Hours
1 Submitted ส่งซ่อม Ward Staff 4h
2 Pending Review รอตรวจสอบ BME Manager 8h
3 In Repair กำลังซ่อม BME Technician 24h
4 Awaiting Pickup ซ่อมเสร็จ - รอรับ BME Manager (Sign-off) 8h
5 Received รับงานแล้ว Ward Staff

คุณสมบัติ: - ตัวจับเวลา SLA พร้อมตัวบ่งชี้การละเมิด (ธงแดงบน kanban + tree, แบนเนอร์แจ้งเตือนบน form) - ร่องรอยการตรวจสอบผ่านโมเดล hemms.stage.transition.log (แก้ไขไม่ได้, ความปลอดภัยแบบลบไม่ได้) - ข้อความการเปลี่ยนขั้นตอนถูกโพสต์ผ่าน mail.thread - การลากและวาง kanban ระหว่างขั้นตอน - การรวมสีระดับความวิกฤตของเครื่องมือแพทย์บนมุมมอง request

ภาพรวมสถาปัตยกรรม

ทั้งสองโมดูลขยายโมดูล maintenance หลักของ Odoo ผ่านการสืบทอดโมเดลมาตรฐาน (_inherit) ไม่มีการแก้ไขไฟล์หลัก โมดูล criticality เพิ่มฟิลด์ที่คำนวณได้ลงใน maintenance.equipment; โมดูล workflow ขยาย maintenance.stage และ maintenance.request และแนะนำโมเดลใหม่ hemms.stage.transition.log ฟิลด์ที่ปรับแต่งเองทั้งหมดมีคำนำหน้า roots_ เพื่อเลี่ยงการชนกันของ namespace มีการ vendor โมดูล maintenance ของ OCA 14 โมดูล (ไม่ได้แก้ไข) จากสาขา OCA/maintenance 18.0

กราฟ dependency ของโมดูล

maintenance (Odoo core)
├── maintenance_equipment_tags (OCA)
│   └── roots_hemms_criticality
│       └── roots_hemms_workflow
│           ├── hr (Odoo core)
│           └── mail (Odoo core)
└── [12 other OCA modules — independent]

วิธีติดตั้งบน Sandbox ใหม่

cd hemms-demo
cp .env.example .env       # Edit with real passwords
make up-private             # or make up-gov
# Wait ~30s for containers to start
# Visit http://localhost:8069 (or :8169)
# Create database via Odoo UI using the master password
make install-private        # or make install-gov

ปัญหาที่ทราบ / รายการที่เลื่อนออกไป

  1. ไม่มี Docker บนเครื่อง build — โค้ดทั้งหมดถูกเขียนโดยไม่มีการ smoke test แบบสด การรันครั้งแรกอาจเผยปัญหาการสืบทอดมุมมอง XML ที่ต้อง debug
  2. ไอคอน placeholder — ทั้งสองโมดูลมีไอคอน placeholder ขนาด 1×1 พิกเซล ต้องการไอคอนที่มีแบรนด์ Roots อย่างเหมาะสม
  3. การค้นหา SLA ที่ละเมิด — ใช้เมท็อดค้นหาฝั่ง Python ที่สแกน request ทั้งหมด ยอมรับได้สำหรับขนาด demo แต่จะไม่มีประสิทธิภาพบนชุดข้อมูลขนาดใหญ่
  4. roots_current_responsible_user_id — ปัจจุบัน fall back ไปยังผู้ใช้ปัจจุบันหากไม่มีผู้ใช้เฉพาะที่ถูกมอบหมาย การพัฒนาที่เหมาะสมจะ map roots_responsible_role บนขั้นตอนกับตำแหน่งงาน/แผนก HR จริง
  5. คำแปลภาษาไทย — ไฟล์ .po มี key string สำคัญแล้ว แต่ต้องการการตรวจทานโดยเจ้าของภาษาไทย
  6. ความขัดแย้งของข้อมูลขั้นตอน — ทั้ง 5 ขั้นถูกโหลดด้วย noupdate="1" แต่โมดูล maintenance หลักของ Odoo ก็มาพร้อมขั้นตอนเริ่มต้นด้วย ผู้ใช้อาจเห็นทั้งสองชุด; ควร archive ขั้นตอนหลักด้วยมือหลังการติดตั้ง
  7. XPath ของมุมมอง Kanban — การสืบทอด template kanban อาศัย hasclass('oe_kanban_details') ซึ่งอาจต่างออกไปหากโมดูล OCA อื่นปรับโครงสร้างการ์ด kanban ควรตรวจสอบลำดับความสำคัญในการบูตครั้งแรก

สิ่งที่เซสชัน 2 ควรสร้าง

  • roots_hemms_dashboard — KPI tile (เครื่องมือแพทย์ทั้งหมดตามระดับความวิกฤต, request ที่เปิดอยู่ตามขั้นตอน, จำนวนการละเมิด SLA), แผนภูมิ (request ตามช่วงเวลา, MTTR ตามหมวดหมู่) และแผง SLA breach
  • roots_hemms_branding_private — โลโก้ Roots, ภาษาไทยเป็นค่าเริ่มต้น, การจัดเมนูสำหรับ demo โรงพยาบาลเอกชน
  • roots_hemms_branding_gov — เหมือนกันสำหรับ demo โรงพยาบาลของรัฐ พร้อมธีมที่เหมาะสมกับราชการ