ADMIN

CLREM Admin Portal

ระบบบริหารจัดการห้อง & เคาน์เตอร์บริการ

ระบบบริหารจัดการห้อง (CLREM Admin Console) Super Admin Library Admin Staff / Counter

ศูนย์บรรณสารและสื่อการศึกษา มหาวิทยาลัยเทคโนโลยีสุรนารี

{{ toastMessage }}

เคาน์เตอร์บริการด่วน: สแกนนิ้ว/บัตร & คืนกุญแจ

สแกนนิ้ว/บัตรเพื่อปล่อยห้อง หรือสแกนบาร์โค้ดกุญแจเพื่อคืนห้อง

Auto-Detect Mode
บาร์โค้ดกุญแจ = คืนห้องทันที สแกนนิ้ว/บัตร = ปล่อยกุญแจ

การแจ้งเตือน

แจ้งเตือนการจ่ายกุญแจ

{{ lastScanResult.action === 'checkout' ? 'รับคืนกุญแจ & เช็กเอาต์' : (lastScanResult.action === 'already_checked_in' ? 'ปล่อยห้องแล้ว (ป้องกันสแกนซ้ำ)' : 'ปล่อยห้อง & จ่ายกุญแจ') }}
{{ lastScanResult.scannedAt || 'ล่าสุด' }}
{{ lastScanResult.booking?.room_number }} ({{ lastScanResult.booking?.room_name_th }})
{{ lastScanResult.booking?.category_name_th || 'กลุ่มห้องบริการ' }} • ชั้น {{ lastScanResult.booking?.floor || 1 }}
{{ lastScanResult.booking?.key_barcode || ('KEY-' + lastScanResult.booking?.room_number) }}
{{ lastScanResult.booking?.user_fullname_th || lastScanResult.booking?.student_name || 'ผู้ใช้งาน' }} ({{ lastScanResult.booking?.username }}) • {{ formatScanTime(lastScanResult.booking.start_time) }} - {{ formatScanTime(lastScanResult.booking.end_time) }} น.
วันที่จอง (วว/ดด/ปปปป)
≤ {{ effectiveMaxAdvanceDays }} วัน
โควตา{{ currentQuotaCategoryLabel }}: {{ quotaDisplayText }} เลือก {{ selectedSlotsCount }} ชม.
วันที่เปิดให้จองล่วงหน้า: {{ categories.find(c => c.id == selectedCategoryId)?.name_th || 'ทุกประเภท' }} 30 วัน (โหมดเจ้าหน้าที่) นโยบาย ≤ {{ effectiveMaxAdvanceDays }} วันทำการ (ไม่รวมวันหยุด)
มีห้องว่าง พิเศษ/ช่วงสอบ ปิดทำการ จองเต็ม
ห้อง:
ห้องในหมวดนี้ถูกจองเต็มทุกช่วงเวลาแล้วสำหรับวันนี้ (ไม่มีรอบเวลาว่างเหลือในวันนี้ สามารถคลิกเลือกดูวันถัดไปที่ยังว่างได้ทันที)
โหมดดูตารางห้อง (ยังไม่ได้เข้าสู่ระบบ): ท่านต้องเข้าสู่ระบบก่อน จึงจะสามารถคลิกเลือกช่วงเวลาและจองห้องได้
จองเต็มแล้ว : ห้องในหมวดนี้ถูกจองเต็มทุกช่วงเวลาแล้วสำหรับวันนี้
วิธีจอง : คลิกที่ช่องเวลาว่างในตารางเพื่อจอง
ศูนย์บรรณสารฯ ปิดให้บริการในวันนี้ {{ libraryClosedNotice }} — กรุณาเลือกวันที่ต้องการจองในวันอื่น

ตารางรอบเวลา: {{ categories.find(c => c.id == selectedCategoryId)?.name_th }} ▸ {{ roomTypes.find(t => t.id == selectedRoomTypeId)?.name_th }} — ประจำ{{ formatThaiDate(selectedBookingDate, 'full') }} จองเต็มทุกช่วงเวลาแล้ว เวลาโซน: จ-ศ {{ categories.find(c => c.id == selectedCategoryId)?.weekday_open?.substring(0, 5) }}-{{ categories.find(c => c.id == selectedCategoryId)?.weekday_close?.substring(0, 5) }} น.{{ categories.find(c => c.id == selectedCategoryId)?.weekend_closed ? ' (ส-อา ปิดบริการ)' : ' | ส-อา ' + categories.find(c => c.id == selectedCategoryId)?.weekend_open?.substring(0, 5) + '-' + categories.find(c => c.id == selectedCategoryId)?.weekend_close?.substring(0, 5) + ' น.' }}

สถานะ:
ว่าง ที่ท่านเลือก รอจ่ายห้อง กำลังใช้งาน
ห้องบริการ
{{ h.label }}
{{ selectedSlotsCount }} คาบ ({{ selectedSlotsCount }} ชม.)
เลือกไว้ {{ selectedSlotsCount }} ช่วงเวลา {{ currentQuotaCategoryLabel || selectedGridRoom?.name_th }}
⚠️ เลือกเกินโควตา (เลือก {{ selectedSlotsCount }} ชม. / โควตาสูงสุด {{ currentCategoryMaxQuota }} ชม./วัน) โควตาคงเหลือ: {{ quotaAfterSelection }} ชม. (จากสูงสุด {{ currentCategoryMaxQuota }} ชม./วัน)
✕

จัดการรายการจองทั้งหมด (Desk & Counter)

เจ้าหน้าที่เคาน์เตอร์ / Admin

ตรวจสอบสถานะการจอง ปล่อยห้อง คืนกุญแจ ยกเลิกคิวจอง และจัดการกรณีฉุกเฉิน (แอร์รั่ว/ไฟดับ/ปิดซ่อมบำรุง)

การจองทั้งหมด
{{ allBookingsStats.total }}
การจองวันนี้
{{ allBookingsStats.today_count }}
รอเข้าใช้ (Confirmed)
{{ allBookingsStats.confirmed }}
กำลังใช้ห้อง (Checked-in)
{{ allBookingsStats.checked_in }}
คืนห้องแล้ว (Completed)
{{ allBookingsStats.completed }}
ยกเลิกแล้ว (Cancelled)
{{ allBookingsStats.cancelled }}

ไม่พบรายการจองที่ตรงกับเงื่อนไขการค้นหา

● {{ bk.status === 'confirmed' ? 'รอเข้าใช้งาน (Confirmed)' : (bk.status === 'checked_in' ? 'กำลังใช้งาน (Checked-in)' : (bk.status === 'completed' ? 'คืนกุญแจแล้ว (Completed)' : 'ยกเลิกแล้ว (Cancelled)')) }} {{ bk.booking_code }} จองต่อเนื่อง {{ bk.slot_count }} ชม. {{ getUserCategoryLabel(bk) }}

{{ bk.user_fullname_th || bk.username }} ({{ bk.username }})

➔ {{ bk.room_name_th || getRoomName(bk) }} ห้อง {{ bk.room_number }} (ชั้น {{ bk.floor || '1' }})
{{ formatThaiDate(bk.booking_date, 'long') }} | {{ bk.start_time.substring(11, 16) }} - {{ bk.end_time.substring(11, 16) }} น. ({{ bk.duration_minutes }} นาที) | กุญแจ: {{ bk.key_barcode }} | {{ bk.phone }}
วัตถุประสงค์: {{ bk.purpose }}
เหตุผลการยกเลิก: {{ bk.cancellation_reason }}
แสดงหน้า {{ allBookingsCurrentPage }} จากทั้งหมด {{ allBookingsTotalPages }} หน้า (ทั้งหมด {{ filteredAllBookings.length }} รายการ) | แสดงหน้าละ รายการ
{{ allBookingsCurrentPage }} / {{ allBookingsTotalPages }}

ระบบบริหารจัดการห้องและกลุ่มห้อง

เพิ่ม ลบ แก้ไขห้อง กลุ่มห้อง และสร้างห้องชุดจำนวนมากแบบอัตโนมัติ

ห้อง:
แผงควบคุมการเปิด/ปิดรับจอง:
ประเภทห้อง ({{ adminCategories.find(c => c.id == adminSelectedCategoryId)?.name_th }}):
ห้อง ({{ adminRoomTypes.find(t => t.id == adminSelectedRoomTypeId)?.name_th }}):
แสดงห้องทั้งหมด: {{ filteredAdminRooms.length }} ห้อง
เลขห้อง / บาร์โค้ด ชื่อห้อง ประเภทห้อง / ห้อง สถานที่ ความจุ สถานะ (คลิกสลับได้ทันที) การจัดการ
{{ rm.room_number }}
{{ rm.key_barcode || ('KEY-' + rm.room_number) }}
{{ rm.name_th }}
{{ rm.name_en }}
● {{ rm.category_name_th }}
{{ rm.room_type_name_th }}
ชั้น {{ rm.floor }} • {{ rm.building }} {{ rm.capacity_min }} - {{ rm.capacity_max }} คน
ไม่พบห้องในหมวดหมู่นี้
●

{{ cat.name_th }}

({{ cat.name_en }}) {{ cat.code }} เวลาโซน: จ-ศ {{ cat.weekday_open?.substring(0, 5) }}-{{ cat.weekday_close?.substring(0, 5) }} น.{{ cat.weekend_closed ? ' (ส-อา ปิด)' : ' | ส-อา ' + cat.weekend_open?.substring(0, 5) + '-' + cat.weekend_close?.substring(0, 5) + ' น.' }} ตามเวลาห้องสมุด
{{ cat.description_th || 'ไม่มีคำอธิบาย' }}
รายการห้อง (Rooms / Room Types):
{{ rt.name_th }}
{{ rt.code }}
{{ rt.name_en }}
ความจุมาตรฐาน: {{ rt.default_capacity_min }} - {{ rt.default_capacity_max }} คน
{{ rt.description_th }}
ยังไม่มีห้องในหมวดนี้ — คลิกที่นี่เพื่อเพิ่มห้อง
แนวปฏิบัติ & วิธีใช้งานประจำประเภทห้องนี้:

ระบบนโยบายและกฎการจอง (Booking Policy Engine)

กำหนดกฎและโควตาแยกตามกลุ่มห้องได้อย่างอิสระ

{{ pol.policy_name }}

ผูกกับ: {{ pol.category_name_th }} (นโยบายมาตรฐานทั่วไป)
โควตาสูงสุดต่อวัน: {{ pol.max_bookings_per_day }} คาบ ({{ pol.max_duration_mins ? (pol.max_duration_mins / 60) : 6 }} ชม.)
ระยะเวลาจองต่อครั้ง: {{ pol.min_duration_mins || 30 }} - {{ pol.max_duration_mins || 120 }} นาที
จองล่วงหน้าได้: {{ pol.max_advance_days || 7 }} วัน
ความจุสมาชิก (ขั้นต่ำ - สูงสุด): {{ pol.min_capacity_required || 1 }} - {{ pol.max_capacity_allowed || 6 }} คน
ผ่อนปรนเวลาเช็กอิน: {{ pol.checkin_grace_period_mins }} นาที

ระบบเวลาเปิด-ปิดและปฏิทินบริการ

กำหนดโหมดเวลาเปิด-ปิดประจำฤดูกาล (เปิดเทอม/ปิดเทอม/ช่วงสอบ), ตารางประจำสัปดาห์ และวันหยุดพิเศษ

🚀
⚡ NEW SEMESTER FAST-TRACK

ตัวช่วยตั้งค่าเปิดเทอมใหม่ (Semester Express Setup Wizard)

จัดการตารางเปิดเทอมใหม่ครบวงจรใน 3 คลิก: กำหนดช่วงเวลาหลัก (ภาคปกติ / สอบกลางภาค / สอบปลายภาค / ปิดเทอม), โหลดโปรไฟล์เวลาของแต่ละโซน (คาราโอเกะปิด 16:30 น., ห้องค้นคว้า 24 ชม.), และดึงวันหยุดราชการประจำปีอัตโนมัติ

ช่วงเวลาบริการตามปฏิทินการศึกษา (Academic Calendar Periods)

กำหนดเวลาเปิด-ปิดล่วงหน้ารายช่วงวันที่ (เช่น ภาคปกติ, ช่วงสอบกลางภาค/ปลายภาคเปิดถึง 24:00 น., ปิดเทอม) เพื่อให้นักศึกษาที่จองล่วงหน้า 3 วัน ได้รับรอบเวลาที่ถูกต้องตามวันใช้งานจริงเสมอ

ยังไม่มีการกำหนดช่วงเวลาบริการตามปฏิทินการศึกษา

ช่วงสอบ (ขยายเวลา) ปิดเทอม ภาคปกติ {{ period.is_active ? 'เปิดใช้งาน' : 'ปิดใช้งาน' }}
{{ period.name_th }}
{{ formatThaiDate(period.start_date, 'long') }} – {{ formatThaiDate(period.end_date, 'long') }}
• จันทร์ - ศุกร์: {{ period.weekday_open?.substring(0, 5) }} - {{ period.weekday_close === '00:00:00' ? '24:00' : period.weekday_close?.substring(0, 5) }} น.
• เสาร์ - อาทิตย์: ปิดทำการ (หยุด) {{ period.weekend_open?.substring(0, 5) }} - {{ period.weekend_close === '00:00:00' ? '24:00' : period.weekend_close?.substring(0, 5) }} น.
💬 {{ period.note }}

เวลาทำการพื้นฐานประจำสัปดาห์ (Base Schedule - ค่าสำรอง)

ค่าสำรองกรณีวันที่ไม่ได้อยู่ในช่วงปฏิทินใดๆ • {{ showBaseSchedule ? 'คลิกเพื่อย่อซ่อน ▲' : 'คลิกเพื่อเปิดดู / แก้ไข ▼' }}

🔒 ซ่อนไว้เพื่อความกระชับ (ระบบจะใช้เวลาตามปฏิทินการศึกษาและเวลาตามโซนด้านบนเป็นหลัก)
{{ day.note }}
ปิดทำการ (หยุด)

วันหยุดนักขัตฤกษ์ & วันหยุดพิเศษ

วันหยุดราชการหรือวันปิดบริการเฉพาะวัน

ยังไม่มีรายการวันหยุดหรือช่วงเวลาพิเศษ

{{ exc.title_th }} ปิดทำการ เปิดพิเศษ {{ exc.open_time?.substring(0, 5) }} - {{ exc.close_time === '00:00:00' ? '24:00' : exc.close_time?.substring(0, 5) }} น.
{{ formatThaiDate(exc.exception_date, 'full') }}
{{ exc.reason }}

เวลาเปิด-ปิดตามช่วงเวลาของแต่ละโซน / กลุ่มห้อง (Zone Seasonal Hours)

กำหนดเวลาเปิด-ปิดตาม 3 ฤดูกาล ได้แก่ 1. ช่วงปกติ, 2. ช่วงขยายเวลา (สอบ), และ 3. ช่วงปิดเทอม ของแต่ละประเภทห้อง เช่น ห้องคาราโอเกะปิด 16:30 น. ทุกช่วง, ห้องค้นคว้าปิด 20:00 น. ในช่วงปกติ และขยายถึง 24:00 น. ในช่วงสอบ

{{ cat.name_th }} {{ cat.code }}
จำนวนห้อง: {{ cat.room_count || 0 }} ห้อง • {{ cat.name_en }}
⚡ พรีเซ็ตด่วน:
🟢 1. ช่วงเวลาปกติ
จันทร์ - ศุกร์:
-
เสาร์ - อาทิตย์:
-
ปิดเสาร์-อาทิตย์
โซนนี้งดให้บริการในช่วงภาคปกติ
⚡ 2. ช่วงขยายเวลา (สอบ)
จันทร์ - ศุกร์:
-
เสาร์ - อาทิตย์:
-
ปิดเสาร์-อาทิตย์
โซนนี้งดให้บริการในช่วงขยายเวลาสอบ
☕ 3. ช่วงปิดเทอม
จันทร์ - ศุกร์:
-
เสาร์ - อาทิตย์:
-
ปิดเสาร์-อาทิตย์
โซนนี้งดให้บริการในช่วงปิดเทอม
ข้อยกเว้นเวลาเปิด-ปิดเฉพาะห้อง (เช่น ห้องอาคาร 2 ที่ปิดก่อนเวลา) {{ cat.season_hours.room_overrides.length }} กลุ่มข้อยกเว้น
ห้องที่ไม่ได้อยู่ในข้อยกเว้นจะใช้เวลาเปิด-ปิดหลักของหมวดหมู่ด้านบนโดยอัตโนมัติ (ไม่ต้องตั้งค่าซ้ำ)
ทุกห้องในหมวดหมู่นี้ใช้เวลาเปิด-ปิดเดียวกันตามเวลาหลักด้านบน คลิกที่นี่หากมีบางห้องที่ปิดก่อนเวลา
กลุ่มข้อยกเว้นที่ {{ ovIdx + 1 }}:
📌 เลือกห้องที่อยู่ในกลุ่มข้อยกเว้นนี้ (เลือกแล้ว {{ (ov.room_ids || []).length }} ห้อง):
ไม่พบห้องในหมวดหมู่นี้
🟢 1. ภาคปกติ
จ.-ศ. ปิด:
ส.-อา.:
งดให้บริการช่วงภาคปกติ
⚡ 2. ช่วงสอบ
จ.-ศ. ปิด:
ส.-อา.:
งดให้บริการช่วงสอบ
☕ 3. ปิดเทอม
จ.-ศ. ปิด:
ส.-อา.:
งดให้บริการช่วงปิดเทอม

รายงาน & สถิติการใช้งานห้อง (Reports & Analytics)

ศูนย์บรรณสารและสื่อการศึกษา (อาคารบรรณสาร 1 & 2) • ตรวจสอบประวัติการใช้ห้อง เหตุการณ์ และอันดับผู้ใช้บริการ

การจองวันนี้
{{ dashboard.today.total }} รายการ
กำลังใช้: {{ dashboard.today.checked_in }} คืนแล้ว: {{ dashboard.today.completed }} รอใช้: {{ dashboard.today.confirmed }}
ผู้เข้าใช้งานเดือนนี้
{{ dashboard.monthly.active_users }} คน
รวมยอดการจองทั้งเดือน {{ dashboard.monthly.total_bookings }} ครั้ง
ชั่วโมงใช้งานจริงเดือนนี้
{{ dashboard.monthly.total_used_hours }} ชม.
มีการหมุนเวียนใช้งานต่อเนื่อง
อัตรา No-show
{{ dashboard.monthly.no_show_rate_pct }}%
{{ dashboard.monthly.no_show_rate_pct <= 5 ? '✓ เกณฑ์ยอดเยี่ยม (ระบบตัดสิทธิ์ทำงานอัตโนมัติ)' : 'อยู่ในเกณฑ์มาตรฐาน' }}

สถิติการใช้งานแยกตามประเภทห้อง

สะสมทั้งหมด
ยังไม่มีข้อมูลการจองในแต่ละประเภทห้อง
{{ cat.category_name }}
{{ cat.booking_count }} ครั้ง

สถานะความพร้อมของห้องบริการ

อาคารบรรณสาร 1 & 2
{{ dashboard.rooms.total }}
ห้องทั้งหมด
{{ dashboard.rooms.available }}
พร้อมให้บริการ
{{ dashboard.rooms.maintenance }}
งดบริการ/ซ่อมบำรุง
สัดส่วนห้องพร้อมเปิดให้บริการ {{ dashboard.rooms.total > 0 ? Math.round((dashboard.rooms.available / dashboard.rooms.total) * 100) : 0 }}%

ความหนาแน่นช่วงเวลาการเข้าใช้งาน (Peak Hours Distribution)

เวลา 08:00 - 24:00 น.
{{ (dashboard.hourly_distribution.find(x => parseInt(x.booking_hour) === h)?.count) || 0 }}
{{ String(h).padStart(2, '0') }}น.

บันทึกประวัติกิจกรรมล่าสุด (Audit Logs)

6 รายการล่าสุด
วันเวลา ผู้ทำรายการ กิจกรรม รายละเอียด
{{ formatThaiDate(log.created_at, 'datetime') }} {{ log.fullname_th || log.username || 'System' }} {{ log.action }} {{ log.details }}
ยังไม่มีประวัติกิจกรรมในระบบ
รายการทั้งหมด {{ roomUsageResult.summary.total_records }}
ใช้งานสำเร็จ {{ roomUsageResult.summary.completed }}
กำลังใช้งาน {{ roomUsageResult.summary.checked_in }}
รอเข้าใช้ {{ roomUsageResult.summary.confirmed }}
ไม่มาตามนัด (No-Show) {{ roomUsageResult.summary.no_show }}
ยกเลิก {{ roomUsageResult.summary.cancelled }}
ชั่วโมงใช้งานสะสม {{ roomUsageResult.summary.total_hours }} ชม.
รหัสการจอง วันที่ & เวลาใช้งาน ห้องบริการ ผู้ใช้บริการ วัตถุประสงค์ สถานะ เวลาเช็กอิน / คืนห้อง
{{ item.booking_code }}
จองเมื่อ: {{ formatThaiDate(item.created_at, 'datetime') }}
{{ formatThaiDate(item.booking_date, 'full') }}
{{ item.start_time?.substring(11, 16) }} - {{ item.end_time?.substring(11, 16) }} น. {{ item.duration_minutes }} นาที
{{ item.room_name }} {{ item.room_number }}
{{ item.category_name }}
{{ item.user_fullname }}
[{{ item.username }}] บุคลากร นักศึกษา
{{ item.purpose || '-' }}
{{ item.status === 'completed' ? 'สำเร็จ/คืนห้อง' : (item.status === 'checked_in' ? 'กำลังใช้งาน' : (item.status === 'confirmed' ? 'รอเข้าใช้' : (item.status === 'no_show' ? 'ไม่มาตามนัด' : 'ยกเลิก'))) }}
เช็กอิน: {{ formatThaiDate(item.checked_in_at, 'datetime') }}
คืนห้อง: {{ formatThaiDate(item.checked_out_at, 'datetime') }}
เหตุผลยกเลิก: {{ item.cancellation_reason }}
-

ไม่พบข้อมูลประวัติการใช้ห้องตามเงื่อนไขที่ค้นหา

ลองปรับเปลี่ยนช่วงวันที่หรือล้างตัวกรองเพื่อดูรายการทั้งหมด

แสดงหน้า {{ roomUsageResult.pagination.page }} จากทั้งหมด {{ roomUsageResult.pagination.total_pages }} หน้า (รวม {{ roomUsageResult.pagination.total_records }} รายการ)
เหตุการณ์ทั้งหมด {{ userEventResult.summary.total_events }}
การเข้าสู่ระบบ (Login) {{ userEventResult.summary.login_count }}
การจองห้องสำเร็จ {{ userEventResult.summary.booking_count }}
การเช็กอินรับกุญแจ {{ userEventResult.summary.checkin_count }}
การเช็กเอาต์คืนห้อง {{ userEventResult.summary.checkout_count }}
การยกเลิกการจอง {{ userEventResult.summary.cancel_count }}
ผู้ใช้งานที่มีกิจกรรม {{ userEventResult.summary.unique_users }} คน
วันเวลาที่เกิดเหตุการณ์ ผู้ใช้งาน / ผู้กระทำ กิจกรรม (Action) รายละเอียดเหตุการณ์ IP Address & อุปกรณ์
{{ formatThaiDate(log.created_at, 'datetime') }} {{ log.fullname_th || log.username || 'System' }}
[{{ log.username }}] บุคลากร นักศึกษา
{{ getActionLabel(log.action) }} {{ log.details || '-' }}
{{ log.ip_address || '127.0.0.1' }}
{{ log.user_agent || '-' }}

ยังไม่มีบันทึกประวัติเหตุการณ์ตามเงื่อนไขที่เลือก

แสดงหน้า {{ userEventResult.pagination.page }} จากทั้งหมด {{ userEventResult.pagination.total_pages }} หน้า (รวม {{ userEventResult.pagination.total_records }} รายการ)

ศูนย์ตรวจสอบการปฏิบัติงานและพฤติกรรมแอดมิน (IT Audit Trail) Super Admin Only

ตรวจสอบความรับผิดชอบและการกระทำของเจ้าหน้าที่เคาน์เตอร์ แยกแยะว่าข้อผิดพลาดเกิดจากแอดมินกระทำหรือผู้ใช้บริการ

เหตุการณ์ทั้งหมด {{ adminAuditResult.summary.total_events }}
การกระทำโดยแอดมิน/เจ้าหน้าที่ {{ adminAuditResult.summary.admin_events_count }}
การกระทำโดยผู้ใช้ทั่วไป {{ adminAuditResult.summary.user_events_count }}
ระบบอัตโนมัติ / IoT {{ adminAuditResult.summary.system_events_count }}
จนท. แอดมินที่มีประวัติปฏิบัติงาน {{ adminAuditResult.summary.unique_admins_active }} คน
วันเวลา ผู้ลงมือกระทำ (Actor / Performer) เป้าหมาย / ผู้ได้รับผลกระทบ (Target) กิจกรรม (Action) รายละเอียดเหตุการณ์ IP Address & อุปกรณ์
{{ formatThaiDate(log.created_at, 'datetime') }}
{{ log.actor_fullname_th || log.actor_username }}
[{{ log.actor_username }}] เจ้าหน้าที่ ผู้ใช้
ระบบอัตโนมัติ
{{ log.target_fullname_th || log.target_username }}
[{{ log.target_username }}]
{{ log.target_type }}: {{ log.target_id }}
-
{{ getActionLabel(log.action) }} {{ log.details || '-' }}
{{ log.ip_address || '127.0.0.1' }}
{{ log.user_agent || '-' }}

ยังไม่มีบันทึกประวัติการตรวจสอบตามเงื่อนไขที่เลือก

แสดงหน้า {{ adminAuditResult.pagination.page }} จากทั้งหมด {{ adminAuditResult.pagination.total_pages }} หน้า (รวม {{ adminAuditResult.pagination.total_records }} รายการ)
🥈 2

{{ topUsersResult.leaderboard[1].fullname_th }}

[{{ topUsersResult.leaderboard[1].username }}]
บุคลากร นักศึกษา
เข้าใช้สำเร็จ
{{ topUsersResult.leaderboard[1].completed_count }} ครั้ง
ชั่วโมงสะสม
{{ topUsersResult.leaderboard[1].total_used_hours }} ชม.
🥇 1
Top Champion

{{ topUsersResult.leaderboard[0].fullname_th }}

[{{ topUsersResult.leaderboard[0].username }}]
บุคลากร นักศึกษา
เข้าใช้สำเร็จ
{{ topUsersResult.leaderboard[0].completed_count }} ครั้ง
ชั่วโมงสะสม
{{ topUsersResult.leaderboard[0].total_used_hours }} ชม.
🥉 3

{{ topUsersResult.leaderboard[2].fullname_th }}

[{{ topUsersResult.leaderboard[2].username }}]
บุคลากร นักศึกษา
เข้าใช้สำเร็จ
{{ topUsersResult.leaderboard[2].completed_count }} ครั้ง
ชั่วโมงสะสม
{{ topUsersResult.leaderboard[2].total_used_hours }} ชม.

ตารางอันดับผู้ใช้บริการห้องค้นคว้า (Leaderboard Rankings)

จัดอันดับผู้ใช้ทั้งหมด {{ topUsersResult.summary.total_ranked_users }} คน • เข้าใช้สำเร็จรวม {{ topUsersResult.summary.total_completed_sessions }} ครั้ง
อันดับ ผู้ใช้บริการ เข้าใช้สำเร็จ ชั่วโมงสะสม จองทั้งหมด อัตราความรับผิดชอบ ไม่มาตามนัด ห้องที่ใช้บ่อยที่สุด
🥇 1 🥈 2 🥉 3 {{ u.rank }} {{ u.fullname_th }}
[{{ u.username }}] บุคลากร นักศึกษา
{{ u.completed_count }} ครั้ง {{ u.total_used_hours }} ชม. {{ u.total_bookings }} ครั้ง
{{ u.completion_rate_pct }}%
{{ u.no_show_count }} ครั้ง 0 {{ u.favorite_room || '-' }}

ยังไม่มีข้อมูลสถิติการใช้งานตามเงื่อนไขที่เลือก

บริหารจัดการผู้ใช้งานระบบ (User Management)

Super Admin Mode

กำหนดบทบาท สิทธิ์การเข้าถึง ข้อมูลสมาชิก และการเชื่อมโยงระบบห้องสมุด ALIST ทั้งหมด

ผู้ใช้งานทั้งหมด
{{ usersStats.total_users }} บัญชี
Super Admin (adminit)
{{ usersStats.adminit_count }} คน
เจ้าหน้าที่เคาน์เตอร์บริการ
{{ usersStats.staff_count }} คน
นักศึกษา / ผู้ใช้บริการ
{{ usersStats.student_count }} คน
บทบาท:
สถานะ:
ผู้ใช้งาน / รหัสประจำตัว บทบาทในระบบ สังกัด / สำนักวิชา / เบอร์โทร สิทธิ์ห้องสมุด (ALIST) สถานะบัญชี การจัดการ
{{ u.fullname_th?.charAt(0) || 'U' }}
{{ u.fullname_th }}
{{ u.username }} • {{ u.email }}
Super Admin ผู้ดูแลระบบห้องสมุด เจ้าหน้าที่เคาน์เตอร์ บุคลากร นักศึกษา
{{ u.faculty_department || '-' }}
{{ u.phone }}
● {{ u.membership_status === 'active' ? 'สถานะปกติ' : (u.membership_status === 'suspended' ? 'ระงับสิทธิ์' : 'หมดอายุ') }} จองห้องได้ ระงับจอง
ค่าปรับค้างชำระ: {{ u.outstanding_fine_amount }} บาท
ไม่พบข้อมูลผู้ใช้งานตามเงื่อนไขที่ค้นหา
แสดงผู้ใช้งานหน้า {{ usersPagination.current_page }} จากทั้งหมด {{ usersPagination.total_pages }} หน้า (รวม {{ usersPagination.total }} รายการ)
{{ usersPagination.current_page }}

ศูนย์ควบคุมระบบ IoT & สวิตช์เบรกเกอร์ไฟฟ้า (CUBE OS Smart Breakers)

เฉพาะสิทธิ์ adminit

ระบบควบคุมการส่งจ่ายกระแสไฟฟ้าอัตโนมัติประจำห้อง: จ่ายไฟเมื่อปล่อยห้อง (Release Key) และตัดไฟเมื่อคืนกุญแจ (Return Key)

CUBE OS Gateway Hub
{{ iotConfig.cube_ip || '192.168.18.67' }}
● REST API v2 พร้อมเชื่อมต่อ
ระบบควบคุมอัตโนมัติ
เปิดใช้งาน (Active)
สแกนปล่อยห้อง = สั่งเปิดไฟ | คืนกุญแจ = สั่งตัดไฟ
ห้องที่ผูกอุปกรณ์ IoT
{{ iotRoomsList.filter(r => r.iot_device_id).length }} / {{ iotRoomsList.length }} ห้อง
ห้องคาราโอเกะ 01 พร้อมใช้งาน
{{ kRoom.name_th }} ({{ kRoom.room_number }}) Smart Breaker Hub
Device ID: {{ kRoom.iot_device_id || '7e801975-d525-4ce4-97b1-9f2813346609' }}
สถานะเบรกเกอร์
● {{ kRoom.iot_power_status === 'on' ? 'กำลังจ่ายไฟ (ON)' : (kRoom.iot_power_status === 'off' ? 'ตัดไฟอยู่ (OFF)' : 'ไม่ทราบสถานะ') }}

รายการห้องและสวิตช์ไฟฟ้าทั้งหมดในระบบ

สามารถผูก Device ID จาก CUBE OS เพื่อขยายการควบคุมไปยังห้องอื่น ๆ ในอนาคต

ห้อง หมวดหมู่ / ประเภท CUBE OS Device UUID โหมดออโต้ สถานะไฟปัจจุบัน การจัดการสวิตช์ไฟฟ้า (adminit)
{{ rm.name_th }}
รหัสห้อง: {{ rm.room_number }} (ชั้น {{ rm.floor }})
{{ rm.category_name_th || rm.room_type_name_th || '-' }}
{{ rm.iot_device_id }}
ยังไม่ได้ติดตั้งอุปกรณ์ (ว่าง)
⚡ เปิดออโต้ ปิดออโต้ ● กำลังจ่ายไฟ (ON) ● ตัดไฟอยู่ (OFF) ไม่ทราบสถานะ
ไม่พบข้อมูลห้องที่ค้นหา
SUT CLREM Logo
{{ (rm.room_type_name_th || rm.category_name_th || 'ห้องบริการ').replace(/\s*\(.*?\)/, '') }}
{{ rm.name_th }}
รหัส {{ rm.room_number }} ชั้น {{ rm.floor }} • {{ rm.building }}
SCAN TO CHECK-IN