UX v3 Foundation • 14 กรกฎาคม 2569
Klynx Platform Changelog
ประวัติการพัฒนา รายละเอียดเวอร์ชัน และข้อมูลเทคนิคของระบบ
ไฮไลท์ใน UX v3 Foundation
ฟีเจอร์ใหม่และการปรับปรุงที่สำคัญ
ไอคอนบนแท็บกลับมาเป็นแมวส้ม Klynx แล้ว
เปลี่ยนไอคอนชั่วคราวรูปประกายสีเขียวบนแท็บเบราว์เซอร์กลับเป็นตราแมวส้มของ Klynx ที่มีอยู่ในชุดภาพของระบบ รองรับทั้ง SVG และ ICO หลายขนาด โดย favicon ที่องค์กรตั้งเองยังคงใช้แทนได้ตามเดิม (4.27.82)
ติดตั้ง Klynx บนเครื่อง ARM64 และ DGX ได้โดยไม่ใช้ไฟล์ข้ามสถาปัตยกรรม
ตัวติดตั้งเลือก Bun และ Sharp ให้ตรงกับสถาปัตยกรรมของเครื่องโดยอัตโนมัติ พร้อมตรวจ checksum ก่อน build ลดเครื่องมือที่ไม่ใช้ใน runtime และเพิ่มหน่วยความจำสำหรับขั้นตอนประกอบ Nitro เพื่อให้ build เสถียรขึ้น โดยยังคงใช้ tag เดียวร่วมกับเครื่อง AMD64 ได้ (4.27.76)
AGL แก้ข้อความไดนามิกที่เคยว่างเปล่าในหน้าสาธิตและรายการต่างๆ
ข้อความอธิบายขั้นตอนในหน้าสาธิต AGL รวมถึงป้ายและข้อความแจ้งเตือนในหน้าเส้นทางตรวจสอบ ข้อบกพร่อง ใบสั่งซ่อม และคิวตรวจทาน เคยแสดงค่าว่างแทนข้อมูลจริง (เช่น ชื่อเส้นทาง รหัสอุปกรณ์ สถานะ) เนื่องจากรูปแบบการแทรกค่าไม่ตรงกับที่ระบบภาษาต้องการ ตอนนี้แก้ครบ 62 จุดแล้ว ข้อความทุกจุดแสดงข้อมูลจริงถูกต้อง (4.27.69)
AGL เชื่อมสถานะซ่อมบำรุงเข้ากับแดชบอร์ด แผนที่ ประวัติ และแจ้งเตือนครบวงจร
แดชบอร์ด AGL เพิ่มตัวชี้วัดอะไหล่ใกล้หมด งานรอปิด และโซน/ช่างที่ยังไม่มอบหมาย พร้อมหน้าคลังอะไหล่ดูสต๊อกรวมทุกงาน แผนที่กรองตามโซน อะไหล่ที่จอง และความพร้อมปิดงานได้ เพิ่มประวัติของแต่ละอุปกรณ์และไทม์ไลน์ของแต่ละใบสั่งงาน และกดรับทราบแจ้งเตือน (Alarm) ได้โดยตรง ที่สำคัญ: การซ่อมที่ผ่านการตรวจซ้ำแล้วจะแสดงสถานะ "ปกติ – ยืนยันแล้ว" แยกจากสถานะปกติทั่วไปอย่างชัดเจน (4.27.67)
AGL ปิดใบสั่งงานซ่อมได้ก็ต่อเมื่อครบทุกขั้นตอนความปลอดภัยเท่านั้น
ใบสั่งงานซ่อม AGL เพิ่มขั้นตอนช่างรับทราบงาน ยืนยันถึงหน้างาน แยกวงจรก่อนซ่อม แนบภาพก่อน-หลังซ่อม และบันทึกผลทดสอบใช้งานจริง โดยปุ่มปิดงานจะกดไม่ได้จนกว่าจะครบทุกเงื่อนไข ทั้งขั้นตอนช่างครบ ถ่ายภาพครบ ทดสอบผ่าน ตรวจซ้ำผ่านแล้ว และไม่มีอะไหล่ค้างจอง เห็นรายการเงื่อนไขที่ขาดแบบสดในหน้าใบสั่งงาน ข้อบกพร่อง และอุปกรณ์ทันที (4.27.66)
AGL เพิ่มระบบเบิกอะไหล่ กำหนดโซน และมอบหมายช่างให้ใบสั่งงาน
ใบสั่งงานซ่อม AGL เลือกโซนพื้นที่ เลือกช่างจากรายชื่อ และจองอะไหล่จากคลังได้ในหน้าเดียว พร้อมยืนยัน/คืนอะไหล่ที่จองไว้ภายหลัง โดยจำนวนคงคลังจะลดจริงก็ต่อเมื่อกดยืนยันใช้งานเท่านั้น เห็นสรุปใบสั่งงาน โซน และจำนวนอะไหล่ที่จองในหน้ารายละเอียดข้อบกพร่องและอุปกรณ์ทันที (4.27.65)
AGL ป้องกันการข้ามขั้นตอนซ่อมบำรุงที่ไม่ถูกต้อง
เพิ่มกฎเปลี่ยนสถานะกลางสำหรับเส้นทางตรวจสอบ ผลตรวจ สถานะอุปกรณ์ ข้อบกพร่อง และใบสั่งงานซ่อมของ AGL เพื่อกันการปิดข้อบกพร่องโดยไม่ผ่านการตรวจซ้ำ การเริ่มใบสั่งงานที่ปิดแล้วใหม่ หรือกลับผลตรวจที่อนุมัติ/ปฏิเสธแล้ว พร้อมปรับป็อปอัพรายละเอียดจุดติดตั้งบนแผนที่ให้แสดงครบไม่ถูกตัดขอบ และจัดปุ่มเริ่มสาธิต/รีเซ็ตให้อยู่แถวเดียวกันอย่างสมส่วน (4.27.64)
Avatar เก่ากลับไปใช้อักษรย่ออย่างเงียบ ๆ
ตรวจรูปโปรไฟล์ที่อยู่ในระบบก่อน mount รูปจริง หากไฟล์ถูกลบหรือสิทธิ์หมดอายุ Header จะคงอักษรย่อที่อ่านได้ในขนาดเดิมแทนการสร้าง image 404 ใน Console (4.27.63)
คู่มือเริ่มต้นเปิดเมื่อผู้ใช้ร้องขอ
ย้ายคำแนะนำแบบเต็มหน้าจากการเปิดอัตโนมัติหลังล็อกอินไปเป็นปุ่มรูปจรวดก่อนกระดิ่งและ Avatar ใน Header ช่วยให้เนื้อหาหลักของหน้า cold load แสดงครบก่อน โดยยังดูซ้ำได้จากการตั้งค่า (4.27.62)
AI Intelligence รอ Workspace ก่อนโหลดข้อมูล
การเปิดหน้า AI Intelligence แบบ cold load หรือ deep link จะรอให้ระบบ restore Workspace ที่เลือกไว้ก่อนเรียก KAPI และเริ่ม realtime จึงไม่เกิด request 400 หรือ WebSocket context error ระหว่างหน้า layout กำลังเตรียมสิทธิ์ (4.27.61)
หน้าภายในไม่เริ่มทำงานก่อนยืนยัน Session
หน้าใช้งานและ sidebar ที่ต้องใช้สิทธิ์จะเริ่มทำงานเมื่อ hydration และ auth initialization เสร็จพร้อมมี session ที่ยืนยันแล้วเท่านั้น จึงไม่ยิง KAPI หรือ WebSocket แบบไม่มี token ระหว่างส่งผู้ใช้ไปหน้าเข้าสู่ระบบ (4.27.60)
Cold load รอให้โครง Session พร้อมก่อนส่งไป SSO
เลื่อนเฉพาะการเปลี่ยนเส้นทางครั้งแรกจากหน้าที่ต้องล็อกอินไปหน้าเข้าสู่ระบบจน Vue ประกอบโครง SSR เสร็จ ป้องกัน console error จากการรื้อหน้าไประหว่าง hydration โดยไม่เปลี่ยน intended URL, สิทธิ์ หรือขั้นตอน SSO (4.27.59)
อัปเดตตัวปรับแต่งภาพ SVG ของ IPX
อัปเดต SVGO เป็น 4.0.2 เพื่อปิดช่องโหว่การขยาย XML entity และการลบ script ที่ไม่ครบตามผลสแกน Trivy โดยไม่เปลี่ยนการตั้งค่าแบรนด์หรือสิทธิ์ผู้ใช้ (4.27.58)
Sharp JavaScript entrypoint อยู่ครบใน final runtime
เติมโฟลเดอร์ dist ของ Sharp เข้า package target จริงที่ Nitro จัดเก็บไว้โดย resolve symlink ตอนประกอบ image ไม่ผูกกับชื่อโฟลเดอร์ตามเวอร์ชัน และยังทดสอบ WebP ก่อนเผยแพร่ (4.27.57)
ชุดประมวลผล WebP ใช้ runtime รุ่นเดียวกัน
จัด Sharp ของระบบภาพย่อและ Nuxt IPX ให้เป็นรุ่น 0.35.0 ชุดเดียว พร้อมเพิ่มเฉพาะ libvips ที่โหลดแบบ dynamic เข้า final image และยังทดสอบแปลง WebP จริงก่อนเผยแพร่ (4.27.56)
แพ็กเกจภาพ WebP พร้อมเผยแพร่ผ่าน production pipeline
แก้ขั้นตอนประกอบ image ไม่ให้คัดลอก Sharp ซ้ำทับ dependency graph ที่ Nitro เตรียมไว้ โดยยังคงทดสอบแปลง WebP จริงใน final runtime ก่อนสแกนและเผยแพร่ (4.27.54)
หน้าจัดการผู้ใช้เปิดเร็วขึ้นและไม่เตือน Hydration mismatch
โลโก้ของแต่ละระบบถูกส่งเป็น WebP ขนาดพอดีกับ sidebar ตามความละเอียดจอ แทนการโหลดไฟล์ต้นฉบับ 1080px และ cache ตัวแปรภาพไว้ได้ พร้อมทำให้เฟรมแรกของหน้าที่ต้องล็อกอินตรงกับ SSR ก่อนเปิด session จึงลด payload/LCP และ browser console error โดยไม่เปลี่ยนสิทธิ์ผู้ใช้ (4.27.53)
หน้าตรวจสอบ Session แสดงสถานะครบตั้งแต่เริ่มโหลด
Identity, Workspace และ Console แสดงตั้งแต่เฟรมแรก ไม่หายไปกับ animation เมื่อ session พร้อมเร็ว พร้อมเพิ่มความเด่นของแต่ละสถานะและรองรับหน้าจอเตี้ยหรือการซูมโดยเลื่อนดูได้ ไม่ตัดส่วนล่างของ panel (4.27.52)
ชุดประมวลผลภาพย่ออยู่ครบใน production runtime
แก้ Nitro production output ให้เก็บไฟล์ JavaScript ของ Sharp ครบทั้งชุดควบคู่กับ native addon และ libvips การทดสอบแปลงภาพใน final image จึงตรวจครบตั้งแต่ entrypoint ถึง shared library ก่อน pipeline เผยแพร่ (4.27.51)
ระบบภาพย่อ AI Intelligence ตรวจสอบความพร้อมก่อนเผยแพร่
แก้ชุด runtime ของระบบประมวลผลภาพย่อให้มี native library ครบใน production image และเพิ่มการทดสอบแปลงภาพจริงระหว่างสร้าง image หากส่วนประกอบไม่ครบ pipeline จะหยุดก่อนเผยแพร่ ไม่ปล่อยให้หน้าเว็บล้มหลัง deploy (4.27.50)
อัปเดตระบบประมวลผลภาพย่อให้ปลอดภัยขึ้น
อัปเดตชุดประมวลผลภาพที่ใช้สร้างภาพย่อส่วนตัวบน AI Intelligence เพื่อปิดช่องโหว่ของไลบรารีภาพ โดยยังคงข้อจำกัดขนาดภาพ จำนวนงานพร้อมกัน การยืนยันตัวตน และการโหลดภาพต้นฉบับเฉพาะตอนกดดูเหมือนเดิม (4.27.49)
AI Intelligence ส่งภาพย่อที่เหมาะกับรายการเหตุการณ์
เมื่อแหล่งข้อมูลมีแต่ภาพต้นฉบับ ระบบจะสร้าง WebP ขนาดไม่เกิน 128px ผ่าน Klynx ภายใต้ token และ workspace เดิมสำหรับรายการที่กำลังเห็น ส่วนภาพเต็มยังโหลดเฉพาะตอนกดดู พร้อมแยกชุดแจ้งเตือน ทัวร์ และ style แผนที่ออกจากการเปิดหน้าหลัก ลดทั้งข้อมูลและงานช่วงเริ่มต้นโดยไม่เปิดภาพเป็น public cache (4.27.48)
AI Intelligence แยกโหลดแผนที่ กราฟ และภาพขยายออกจากการเปิดหน้าหลัก
หน้าจอจะแสดงโครงพื้นที่ขนาดคงที่ก่อน แล้วโหลดชุดแผนที่และกราฟเมื่อพื้นที่นั้นใกล้เข้ามาในจอ ส่วนชุดภาพขยายจะโหลดเมื่อผู้ใช้กดดูจริง ช่วยลดงาน JavaScript ช่วงเปิดหน้าโดยยังใช้ Digital Twin และข้อมูลเรียลไทม์เหมือนเดิม (4.27.47)
AI Intelligence เปิดหน้าได้นิ่งขึ้น ไม่ขยับหลังตรวจสอบสิทธิ์
จองพื้นที่เมนูด้านข้างและพื้นที่โหลดให้เท่ากับหน้าจริงตั้งแต่เริ่มเปิดหน้า พร้อมทำช่องกราฟระหว่างโหลดให้มีขนาดตรงกับกราฟหลังพร้อมใช้งาน จึงลดการขยับของเนื้อหาและทำให้กดใช้งานได้มั่นใจขึ้น (4.27.46)
AI Intelligence โหลดภาพเหตุการณ์เท่าที่ผู้ใช้กำลังจะเห็น
ลดการดาวน์โหลดภาพเหตุการณ์แบบ authenticated ที่อยู่นอกจอ โดยเริ่มโหลดเฉพาะรายการใน viewport หรือระยะเตรียมเล็กน้อย ยกเลิก request เมื่อรายการพ้นพื้นที่ และไม่โหลดภาพเต็มของ Lightbox จนกว่าผู้ใช้จะกดเปิดจริง ช่วยลดปริมาณข้อมูลเริ่มต้นโดยไม่ตัดเหตุการณ์ แผนที่ Digital Twin หรือ realtime (4.27.45)
หัวหน้าจออ่านง่ายขึ้น พร้อมคืน Docs/Changelog และลดภาระ GPU ของ shell
รวมหมวดและชื่อหน้าไว้บรรทัดเดียวในรูปแบบ “หมวด / ชื่อหน้า” โดยขยายชื่อหน้าหลักให้เด่นขึ้น, จัด footer เป็นลิขสิทธิ์ชิดซ้ายและ Docs/Changelog/version ชิดขวา, ทำรูปผู้ใช้ให้เห็นชัดขึ้น และหยุด canvas animation เบื้องหลังบนหน้าปฏิบัติการเพื่อคืนทรัพยากรให้แผนที่และวิดีโอ (4.27.43)
แก้หน้า AI Intelligence, BI Dashboard และ Audit Logs ให้เปิดใช้งานได้ตามปกติ
แก้รายการเหตุการณ์บน AI Intelligence ที่เรียกตัวแปรเวลาเป็นฟังก์ชัน, กำหนดระดับซูมสูงสุดให้แผนที่ BI Dashboard ทุก provider และเปลี่ยนค่าตัวกรอง “ผลลัพธ์ทั้งหมด” ของ Audit Logs ให้เข้ากับ Select รุ่นปัจจุบัน หน้าเหล่านี้จึงไม่ล้มด้วย runtime error อีก (4.27.42)
หัวทุกหน้ากระชับตรงกัน และ KConnect จัดการกล้องจำนวนมากง่ายขึ้น
หัวหน้าจอแบบ 3 บรรทัดสูงเท่ากับแถบโลโก้ด้านข้าง ไม่มีมุมโค้งแยกออกจากกัน และปุ่มประจำหน้าจะเรียงต่อก่อนกระดิ่งกับรูปผู้ใช้เสมอ พร้อมเอาช่องว่างท้ายเมนูด้านข้างออก ส่วนรายละเอียด KConnect แบ่งหน้ารายการสตรีมครั้งละ 6 กล้อง และหน้าแก้ไขเลือกพิกัดจากแผนที่ได้โดยตรง (4.27.41)
แก้หน้ากล้อง KConnect: ทดสอบภาพได้โดยไม่ต้องกรอก URL
หน้าแก้ไขกล้องที่ซิงก์จาก KConnect ไม่บังคับ URL อีกต่อไป และปุ่มทดสอบสตรีมจะเรียก Edge ให้ดึง RTSP แล้ว push ออกมาบน WebRTC แบบ on-demand ตามปกติ พร้อมย้ายช่องชื่อผู้ใช้และรหัสผ่านมาไว้ใต้ URL เพื่อกรอกข้อมูลการเชื่อมต่อได้ต่อเนื่องขึ้น (4.27.40)
UX v3 Foundation: โครงหน้าจอและ control กลางพร้อมสำหรับรอบทดสอบ
วาง semantic token และ component กลางของ UX v3 สำหรับ shell, header, filter, ตาราง, ฟอร์ม, drawer, dialog, แผนที่, วิดีโอ และสถานะระบบ พร้อมปรับ global surfaces ให้ใช้ geometry เดียวกัน: input/select/button เป็นสี่เหลี่ยมมุมโค้ง 8px, panel 12px, แถบข้างมีปุ่มยุบเพียงตำแหน่งเดียว และ profile แสดงรูปผู้ใช้หรืออักษรย่อเมื่อไม่มีรูป รุ่นนี้เป็น foundation สำหรับทดสอบโครงระบบเท่านั้น ยังไม่ถือว่าหน้าใช้งานจริงหน้าใด redesign เสร็จ (4.25.15)
K-Control: เลือกปลายทาง Server ตอน Save & Sync ได้แล้ว
หน้า ระบบควบคุม → อุปกรณ์ และหน้าแก้ไข K-Control เพิ่มตัวเลือก "Server preset" สำหรับส่งค่าการเชื่อมต่อไปยัง server อื่น ๆ ที่ผู้ดูแลตั้งไว้ในระบบ. หน้าเว็บจะส่งเฉพาะชื่อ preset เท่านั้น — รหัสผ่านและใบรับรองยังถูกเก็บปลอดภัยฝั่ง server เหมือนเดิม (klynx 4.24.0 + klynx-api 4.145.0)
แผนที่ออฟไลน์: ซ่อน "พยากรณ์อากาศ" บนแดชบอร์ด + หน้าแก้ไขอุปกรณ์ K-Control ใช้แผนที่ออฟไลน์ได้แล้ว
ต่อยอดจากแผนที่ออฟไลน์ (4.18.0) สำหรับระบบปิด/วงแลนที่ไม่มีอินเทอร์เน็ต. เมื่อตั้งผู้ให้บริการแผนที่เป็น "ออฟไลน์": (1) การ์ด "พยากรณ์อากาศ" บนหน้าแดชบอร์ด (/biDash) จะถูกซ่อนอัตโนมัติ เพราะดึงข้อมูลจากบริการออนไลน์ที่ใช้ไม่ได้ในระบบปิด (ทั้งบนจอคอมและแผงล่างบนมือถือ) — ไม่ขึ้นการ์ดว่าง/ค้างอีก. (2) หน้า "แก้ไขอุปกรณ์ K-Control" (เลือกตำแหน่งบนแผนที่) ที่เดิมขึ้นแผนที่เปล่าตอนใช้ออฟไลน์/OpenStreetMap ตอนนี้แสดงแผนที่ได้ครบเหมือนหน้าอื่น ๆ — คลิกเลือกตำแหน่ง, ปุ่มระบุตำแหน่งปัจจุบัน และหมุดทำงานได้ทุกผู้ให้บริการแผนที่ (หน้าแผนที่ K-Control และ K-Control แบบเชื่อมต่อ รองรับออฟไลน์อยู่แล้วตั้งแต่ 4.18.0) (4.23.1)
แผนที่ออฟไลน์: เลือก "ประเทศ" จากรายการ แทนการพิมพ์ลิงก์ Style URL เอง
หน้า ตั้งค่า → แผนที่ ตอนเลือก "แผนที่ออฟไลน์" เดิมต้องพิมพ์ที่อยู่ Style URL ของ tile server เองทั้งโหมดสว่างและมืด ซึ่งยาวและพิมพ์ผิดง่าย. ตอนนี้เปลี่ยนเป็น "เลือกประเทศ" จากรายการที่ติดตั้งไว้ (ระบบดึงให้อัตโนมัติจาก tile server) — เลือกแล้วตั้งลิงก์แผนที่สว่าง/มืดให้เอง โดยค่าเริ่มต้นเป็นประเทศไทย. ยังมีตัวเลือก "กรอก URL เอง (ขั้นสูง)" เผื่อ setup พิเศษ และถ้าดึงรายการประเทศไม่สำเร็จก็ยังพิมพ์ลิงก์เองได้ ไม่ติดขัด (4.23.0)
แก้บั๊ก: กดเมนู "แบบฟอร์มสินทรัพย์" แล้วเด้งไปหน้า AI Intelligence
เมนู Asset Forms กดแล้วถูกเด้งไปหน้า intDash เพราะ guard ของเส้นทาง (direct-URL) ยังไม่รู้จัก /assetForms จึงถือว่าไม่มีสิทธิ์แล้วส่งไปหน้าเริ่มต้น. เพิ่มกฎสิทธิ์ของ /assetForms (+ /assetForms/map) ให้ตรงกับเมนู asset-forms-menu — เข้าหน้าได้ตามปกติแล้ว (klynx 4.22.0)
หน้า License (ฝั่งผู้ใช้): แสดงรายการฟังก์ชันที่เปิดใช้งาน + ลงนามโดยชื่อแพลตฟอร์ม
หน้า /settings License เพิ่มแสดง "ฟังก์ชันที่เปิดใช้งาน" (เช่น Search System, Digital Asset ฯลฯ + ตัว always-on) จาก License ปัจจุบัน และเปลี่ยน "ลงนามโดย" จากค่าตายตัว "Klynx Platform" เป็นชื่อแพลตฟอร์ม (อังกฤษ) ที่ตั้งไว้ในหน้า /settings/platform (klynx 4.22.0)
แก้ License: ชื่อลูกค้า + วันเริ่ม/หมด Maintenance ไม่หายแล้วเวลาแก้
หน้าแก้ License เดิมพอเปิดมาแก้ ช่อง "ชื่อลูกค้า" และ "วันเริ่ม/หมด Maintenance" จะว่าง ทำให้ต้องกรอกใหม่ทุกครั้ง และค่าที่กรอกก็ไม่ถูกบันทึก. สาเหตุ: วันที่ฝั่งเซิร์ฟเวอร์เป็นรูปแบบ RFC3339 แต่ช่องวันที่รับเฉพาะ YYYY-MM-DD จึงแสดงว่าง + ฝั่ง backend ไม่เคยเก็บชื่อลูกค้าและไม่รับการแก้วันที่ผ่านหน้านี้. ตอนนี้แก้ครบทั้งสองฝั่ง — โหลดมาเห็นค่าเดิม แก้แล้วบันทึกได้จริง (ต้องใช้ klynx-api ≥ 4.140.0) (klynx 4.21.3)
License: เพิ่มฟังก์ชัน "Digital Asset (Asset Forms)" ให้เลือกตอนออก/แก้ License
หน้าออก/แก้ License (Enterprise License) เดิมยังไม่มีฟังก์ชัน "Digital Asset (Asset Forms)" ในตัวเลือก จึงเปิดเมนู Asset Forms / Asset Map ให้ลูกค้าไม่ได้. ตอนนี้เพิ่มเข้าไปในรายการ Functions แล้ว — ติ๊กเลือก Digital Asset แล้วบันทึก + activate ใหม่ เมนู Asset Forms + Asset Map จะแสดงบนเครื่องลูกค้า (ต้องมี klynx-api ≥ 4.138.0 ทั้งฝั่งออก License และเครื่องลูกค้า) (klynx 4.21.2)
EventAutoUpload: คัดลอกลิงก์เป็นแบบ path เท่านั้น ไม่หลุด host ภายในคลัสเตอร์ไปอยู่ในกล้อง
ตอนสร้างกล้อง Dahua / กดคัดลอกลิงก์ "EventAutoUpload" ระบบเดิมคัดลอกลิงก์เต็ม (รวม host ภายในเช่น kapi.*.svc.cluster.local:3001) ซึ่งกล้องเอาไปใช้ไม่ได้เพราะมองไม่เห็น host ภายในคลัสเตอร์. ตอนนี้คัดลอกเฉพาะส่วน path (เช่น /events/{orgId}/dahua) ให้เอาไปวางในช่อง "เหตุการณ์ → อัปโหลดอัตโนมัติ" ของกล้องได้ตรง ๆ — กล้องจะต่อกับ gateway ของตัวเองตาม base ที่ตั้งไว้ (dahua-camera-event-ingest.md §5.3) (klynx 4.21.1)
Asset Map: วางสินทรัพย์ (เช่นหลอดไฟ) ลงบนแผนผังอาคาร แล้วเห็นสถานะเปลี่ยนสีแบบเรียลไทม์
หน้าใหม่ "Asset Map" (เข้าจากปุ่มในหน้า Asset Forms) — เลือกแผนผังอาคาร + ฟอร์ม Asset แล้วคลิกวาง record ของสินทรัพย์ลงบนแผนผังได้เลย. หมุดแต่ละจุดจะมีสีตามสถานะ (เช่น เขียว=ปกติ, แดง=แตกหัก) และเมื่อมีการอัปเดตสถานะที่อื่น หมุดบนแผนที่จะเปลี่ยนสีให้อัตโนมัติแบบเรียลไทม์ (WSS asset.status) โดยไม่ต้องรีเฟรช. ใช้แผนผังชุดเดียวกับ Floor Plans เดิม — กล้องกับสินทรัพย์อยู่บนแผนผังเดียวกันได้ (klynx 4.21.0 + klynx-api 4.138.x)
Asset Forms (Digital Asset): สร้างฟอร์มเก็บข้อมูลสินทรัพย์เองได้ + วางบนแผนผังอาคาร + สถานะเรียลไทม์
เมนูใหม่ "Asset Forms" — นิยาม "ชนิดสินทรัพย์" (เช่น หลอดไฟสนามบิน/เสาไฟถนน) พร้อมฟิลด์ของมันเองแบบไม่ต้องเขียนโค้ด: ตั้งชื่อฟิลด์ ชนิด (ข้อความ/ตัวเลข/ตัวเลือก/วันที่/ใช่-ไม่ใช่) เลือกฟิลด์สถานะที่ใช้ขับสี แล้วกรอก record ของสินทรัพย์แต่ละชิ้นได้ทันที. ฟอร์มกรอกข้อมูลถูก "เรนเดอร์อัตโนมัติ" ตามนิยามฟิลด์ จึงเพิ่มชนิดสินทรัพย์ใหม่ได้โดยไม่ต้องทำหน้าจอใหม่. รองรับหลายภาษาที่ระดับป้ายชื่อฟิลด์, เอา record ไปวางบนแผนผังอาคาร (Floor Plan) และสถานะเปลี่ยนสีแบบเรียลไทม์. เป็นฟีเจอร์ที่เปิด/ปิดได้ด้วย License (digitalAsset) — แยกจากฟีเจอร์ Floor Plans เดิม (klynx 4.20.0 + klynx-api 4.138.0)
AI Event Intelligence: แก้กราฟชุดล่าง (60 นาที / อุปกรณ์ / ประเภทเหตุการณ์) ให้ถูกต้องตอนเหตุการณ์เข้าถี่
หน้า AI Intelligence (intDash) เดิมคำนวณกราฟ 3 อันล่าง — "เหตุการณ์ย้อนหลัง 60 นาที", "อุปกรณ์ที่รายงานมากที่สุด", "ประเภทเหตุการณ์" — จากเหตุการณ์ล่าสุดแค่ 200 รายการในเครื่องผู้ใช้. บนระบบที่เหตุการณ์เข้าถี่มาก (เช่นกล้องทะเบียน Dahua) 200 รายการล่าสุดกินเวลาแค่ ~1-2 นาที กราฟ 60 นาทีจึงขึ้นแบนทั้งเส้นแล้วพุ่งกระชากช่วงท้ายอันเดียว, อุปกรณ์เห็นแค่ตัวเดียว, ประเภทเห็นแค่ชนิดเดียว. ตอนนี้ดึงสรุปจากเซิร์ฟเวอร์ (/events/aggregate) ที่คำนวณครบทั้งช่วง 60 นาทีจริง แล้วรีเฟรชทุก 60 วินาที — กราฟถูกต้องไม่ว่าเหตุการณ์จะเข้าถี่แค่ไหน. การ์ด "กล้อง AI ที่รายงาน" ก็นับกล้องทุกแหล่ง (ไม่ใช่เฉพาะ AIBOX) จึงไม่ค้างที่ 0 บนระบบ Dahua อีกต่อไป (4.19.0 + klynx-api 4.137.0)
หน้า "ข้อมูลกล้อง" (ตั้งค่าอุปกรณ์): หยุดเรียกข้อมูลรายการกล้องซ้ำตอนเปิดหน้า
แก้อาการหน้า การตั้งค่าอุปกรณ์ → กล้องวงจรปิด ยิงคำขอโหลดรายการกล้องซ้ำ 2 ครั้งทุกครั้งที่เปิดหน้า (เห็นใน Network เป็น GET /resources/camera ซ้ำ): ต้นเหตุคือการโหลดครั้งแรกตอนเปิดหน้าไปชนกับตัวเฝ้าดูค่าองค์กร (myOrganization) ที่เพิ่งพร้อมหลังเปิดหน้า เลยสั่งโหลดอีกรอบ. ตอนนี้รวมการโหลดครั้งแรกกับการเปลี่ยนตัวกรอง/เปลี่ยนองค์กรให้ใช้ตัวหน่วงเวลาเดียวกัน จึงเหลือเรียกครั้งเดียว ลดภาระเซิร์ฟเวอร์และโหลดไวขึ้น (4.18.1)
แผนที่ออฟไลน์: ใช้แผนที่ได้แม้ไม่มีอินเทอร์เน็ต (สำหรับระบบปิด/วงแลน)
เพิ่มผู้ให้บริการแผนที่ตัวที่สาม "แผนที่ออฟไลน์" ในหน้า ตั้งค่า → แผนที่: สำหรับเครื่องที่ติดตั้งในวงแลนหรือระบบปิดที่ไม่มีอินเทอร์เน็ต (เดิม Google/OpenStreetMap ต้องต่อเน็ตจึงโหลดแผนที่ได้ ไม่งั้นขึ้นจอเปล่า). เลือกออฟไลน์แล้วใส่ที่อยู่ "Style URL" ของ tile server ที่ติดตั้งไว้ภายในองค์กร — ทุกหน้าที่มีแผนที่จะใช้แผนที่ออฟไลน์นี้ทั้งหมด (ดูสด, AI Intelligence, เลือกตำแหน่งกล้อง, Floor Plans, ระบบควบคุม). รองรับสลับธีมสว่าง/มืด (ใส่ Style URL แยกสำหรับธีมมืดได้) และชื่อสถานที่บนแผนที่เปลี่ยนตามภาษา ไทย/อังกฤษ ที่ผู้ใช้ตั้งไว้โดยอัตโนมัติ. ถ้ายังไม่ได้ตั้ง Style URL แผนที่จะแสดงเป็นพื้นเปล่าพร้อมหมุดตำแหน่ง ไม่ค้าง ไม่พัง (4.18.0 + klynx-api 4.133.0)
วิดีโอวอล: บันทึก "โปรไฟล์" ผังกล้อง + สลับให้อัตโนมัติ
หน้า วิดีโอวอล เพิ่มปุ่ม "โปรไฟล์" (อยู่หลังปุ่มเลือกผัง): จัดกล้องลงช่องแล้วบันทึกเป็นโปรไฟล์ตั้งชื่อได้ — เลือกเป็น "ส่วนตัว" หรือ "ใช้ร่วมทั้งองค์กร" (โปรไฟล์องค์กรเฉพาะผู้ดูแลองค์กรเท่านั้นที่แก้ไขได้ แต่ทุกคนในองค์กรเห็น). เปิดใช้งานหลายโปรไฟล์เพื่อให้วอลล์สลับให้อัตโนมัติตามเวลาที่ตั้งของแต่ละโปรไฟล์ (carousel), จัดลำดับก่อน-หลังได้, มีโหมดสุ่มแบบไม่ซ้ำ. ชื่อโปรไฟล์ที่กำลังแสดงจะขึ้นกลางแถบหัวเรื่อง และเด้งกลางจอชั่วขณะตอนเข้าเต็มจอหรือตอนสลับโปรไฟล์ (4.18.0 + klynx-api 4.135.0)
หน้าสร้าง License: ติ๊กฟังก์ชันให้ครบทุกตัวเป็นค่าเริ่มต้น
ในหน้า จัดการ Enterprise License → สร้าง License เดิมช่อง "ฟังก์ชัน (เมนูที่เปิดใช้)" เริ่มต้นเป็นว่าง ทำให้ต้องไล่ติ๊กเองทุกครั้ง. ตอนนี้เปิดมาเลือกครบทุกฟังก์ชันให้อัตโนมัติ (ค้นหา, ระบบควบคุม, Ingest, Watchman, New Watchman, ตั้งค่าระบบ, AI Tracker, Camera AI, AI Intelligence, ศูนย์ข้อมูลสถานี) — ผู้ดูแลแค่ติ๊กออกเฉพาะตัวที่ไม่ได้ขาย สร้าง License แบบเต็มสิทธิ์ได้เร็วขึ้น (4.17.16)
กระดิ่งแจ้งเตือนเมื่อมีเวอร์ชันใหม่ทำงานแล้ว + ลดการเรียกซ้ำ
แก้อาการกระดิ่งไม่ขึ้นแจ้งเตือนทั้งที่มีเวอร์ชันใหม่ในรีจิสทรีแล้ว: ต้นเหตุคือเครื่องอ่าน "เวอร์ชันที่กำลังใช้งานอยู่" ไม่ได้ (host-agent ksys) ทำให้ระบบเทียบแล้วสรุปว่า "เป็นเวอร์ชันล่าสุด" เสมอ จึงไม่ขึ้นกระดิ่งและไม่ส่งแจ้งเตือนเรียลไทม์. หลังแก้ ระบบจะตรวจพบเวอร์ชันใหม่และเด้งกระดิ่ง (จุดแดง) ให้เห็นทันทีโดยไม่ต้องเข้าหน้า "ตั้งค่าระบบ" เอง. นอกจากนี้ตอนเปิดหน้าตั้งค่าระบบ ลดการเรียกตรวจสถานะเวอร์ชันที่ซ้ำซ้อนจาก 2 ครั้งเหลือครั้งเดียว (4.17.15 + ksys 1.0.13)
เมนูและประเภทอุปกรณ์ Edge แสดงตามสิทธิ์ License ที่ซื้อ
ระบบรองรับ License แบบเปิด/ปิดความสามารถเป็นรายฟังก์ชันแล้ว: เมนูกลุ่มงาน (เช่น ค้นหา, ระบบควบคุม, Ingest, Watchman, Camera AI, AI Intelligence, ศูนย์ข้อมูลสถานี) จะแสดงเมื่อมีทั้งสิทธิ์ผู้ใช้ "และ" License เปิดฟังก์ชันนั้นไว้ — ส่วนเมนูตั้งค่าพื้นฐานและ Floor Plans เปิดให้ใช้เสมอ. หน้าเพิ่มอุปกรณ์ Edge จะแสดงเฉพาะประเภทที่ License อนุญาต (ata/svms/iboc/nx). ผู้ดูแลแพลตฟอร์มกำหนดฟังก์ชัน, ประเภท Edge และเพดานเหตุการณ์/วินาที (EPS) ได้ในหน้าจัดการ License. เมื่อระบบบังคับใช้ License (ฝั่งเซิร์ฟเวอร์) จะมีข้อความเตือนชัดเจนเมื่อเพิ่ม Edge ประเภทที่ไม่ได้รับสิทธิ์ หรือเพิ่มกล้องเกินเพดานของ License (ให้ติดต่ออัปเกรดแทนการลองใหม่). หาก License โหลดไม่สำเร็จ ระบบจะแสดงเมนูตามสิทธิ์เดิมไว้ก่อน ไม่ทำให้เมนูหาย (4.17.14 + klynx-api 4.127.0)
หน้าต่างอัปเดตซอฟต์แวร์ไม่ค้างแล้ว แม้ตอนอัปเดตจะรีสตาร์ตตัวเอง
แก้อาการ "อัปเดตค้าง": เวลาอัปเดตชุดที่มีตัวระบบหลัก (kapi) เครื่องจะรีสตาร์ตบริการของตัวเองกลางคัน หน้าต่างความคืบหน้าเลยเหมือนค้าง และถ้ากดอัปเดตซ้ำจะขึ้น "มีงานกำลังทำงานอยู่". ตอนนี้: (1) ระหว่างที่บริการรีสตาร์ต จะขึ้นข้อความ "กำลังรีสตาร์ตบริการบนเครื่อง… กำลังเชื่อมต่อใหม่" แล้วทำงานต่อจนเสร็จเอง ไม่ค้าง. (2) ถ้าเผลอรีเฟรชหน้า ระบบจะ "ดูสถานะการอัปเดตล่าสุด" ต่อให้อัตโนมัติ ไม่หลุดงานที่กำลังทำ. (3) ถ้าขึ้นว่ามีงานกำลังทำงานอยู่ จะมีปุ่มให้กดดูสถานะล่าสุดแทนที่จะตัน — รอสักครู่ก็กดอัปเดตใหม่ได้ (4.16.9)
หน้าเพิ่ม/แก้ไขกล้อง: เลือกตำแหน่งบนแผนที่ได้แล้วแม้ตั้งค่าแผนที่เป็น OpenStreetMap
เดิมแผนที่เลือกตำแหน่งกล้องในหน้า เพิ่มกล้อง และ แก้ไขกล้อง ยึดติดกับ Google Maps อย่างเดียว — ถ้าตั้งค่าแผนที่ของระบบ (ตั้งค่า → แผนที่) เป็น OpenStreetMap แผนที่จะใช้งานไม่ได้/ขึ้นว่าง. ตอนนี้แผนที่เลือกตำแหน่งจะทำตามค่าที่ตั้งไว้: ใช้ Google เมื่อมีคีย์, หรือสลับเป็นแผนที่ OpenStreetMap ให้อัตโนมัติ — คลิกบนแผนที่เพื่อปักตำแหน่งกล้องได้เหมือนกัน พร้อมปุ่ม "ตำแหน่งปัจจุบัน". ถ้าเลือก Google ไว้แต่ยังไม่ได้ใส่คีย์ จะแสดงแผนที่ Google แบบทดสอบ (มีลายน้ำ) ให้ใช้งานได้ ไม่ใช่แผนที่เสีย (4.16.7)
หมุนจอเป็นแนวนอนแล้วกดดูสตรีมจากหมุดกล้องบนแผนที่ได้แล้ว
แก้บั๊กที่พอหมุนมือถือเป็นแนวนอน แล้วแตะหมุดกล้องบนแผนที่ (หน้าแผนที่ /map และหน้าดูสด /live) ป็อปอัปวิดีโอจะสูงเกินจอจนดันสตรีมหลุดออกนอกจอ มองไม่เห็น/ดูไม่ได้. ตอนนี้ระบบดูความสูงจอด้วย ไม่ใช่แค่ความกว้าง — เมื่อจอเตี้ย (เช่นมือถือแนวนอน) จะย่อขนาดป็อปอัปและกล่องวิดีโอให้พอดีจอ ดูสตรีมจากหมุดบนแผนที่ได้ตามปกติ (4.16.7)
กระดิ่งแจ้งอัปเดตหายเองหลังอัปเดตเสร็จ + แถบล่าง/กระดิ่ง/ปุ่มจัดวางเป็นมาตรฐานเดียวกัน
แก้ต่อจากรอบจัดหน้าตา: (1) หลังกดอัปเดตซอฟต์แวร์สำเร็จแล้วปิดหน้าต่าง กระดิ่งแจ้งเตือนมุมขวาบนและป้าย "มีอัปเดตใหม่" จะหายเอง/อัปเดตเป็นเวอร์ชันล่าสุดทันที ไม่ต้องรีเฟรชหน้าเองอีก. (2) แก้ให้การเว้นที่ให้กระดิ่งและแถบท้ายหน้า (footer) ทำงานจริงบนทุกหน้า — กระดิ่งไม่ทับ/ไม่บังปุ่มของแต่ละหน้าอีก กดปุ่มได้ปกติ. (3) กระดิ่งทำเป็นป้ายมีกรอบ (badge) ให้เข้าชุดกับป้ายในหน้า AI Intelligence, ปุ่ม Beta/LIVE สูงเท่ากัน, และปุ่มบนหัวหน้าอื่น ๆ (เช่น จัดการกล้อง) ปรับขนาดให้เท่ากันทุกหน้า. (4) แถบท้ายหน้าแสดงข้อความลิขสิทธิ์จากที่ตั้งไว้ใน ตั้งค่า → แพลตฟอร์ม (ถ้าไม่ได้ตั้งจะใช้ค่าเริ่มต้นของบริษัท) และไม่โดนเนื้อหาทับ (4.15.2)
ปรับหน้าตาให้เป็นมาตรฐานเดียวกันทุกหน้า — แถบหัวเล็กลง, กระดิ่งไม่ทับ, มีแถบล่างทุกหน้า
ยกเครื่องหน้าตาส่วนกรอบหลักให้สม่ำเสมอกันทั้งระบบ: (1) แถบหัวด้านบน (header) เตี้ยลงให้ดูโปร่งขึ้น เห็นเนื้อหาได้มากขึ้น. (2) กระดิ่งแจ้งเตือนอัปเดตมุมขวาบนเลิกลอยทับปุ่มต่าง ๆ ของแต่ละหน้าแล้ว (เดิมทับกันชัดที่หน้า AI Intelligence และวิดีโอวอลล์) — ทุกหน้าเว้นที่ให้กระดิ่งอยู่มุมเดียวกันเสมอ. (3) มีแถบท้ายหน้า (footer) บาง ๆ กลับมาทุกหน้า บอกเวอร์ชันและลิงก์ไปหน้าอัปเดต/คู่มือ. (4) ปุ่ม "รีเฟรช" ของหน้า AI Intelligence และหน้าแดชบอร์ดวิเคราะห์ เป็นปุ่มแบบเดียวกัน ตำแหน่งเดียวกันแล้ว. (5) หน้าวิดีโอวอลล์จัดวางใหม่ให้รองรับจอเล็กดีขึ้น — รายชื่อกล้องด้านขวาไม่โดนดันตกขอบจออีก และแถบปุ่มควบคุมเลื่อนดูได้เมื่อจอแคบ (4.15.0)
แก้ปุ่ม "อัปเดตซอฟต์แวร์" ยืนยันรหัสผ่านไม่ผ่าน
แก้บั๊กที่กดยืนยันการอัปเดต (หรือ Factory Reset) แล้วขึ้น "re-authentication failed" ทั้งที่ใส่รหัสผ่านผู้ดูแลถูกต้อง — เกิดจากฝั่งเซิร์ฟเวอร์อ่านชื่อผู้ใช้จาก token ไม่เจอ เลยยืนยันกับ Keycloak ไม่ผ่านก่อนตรวจรหัสผ่านด้วยซ้ำ ตอนนี้ยืนยันรหัสผ่านแล้วสั่งอัปเดต/รีเซ็ตได้ตามปกติ (คู่กับ klynx-api 4.125.4) (4.14.3)
กระดิ่งแจ้งอัปเดตย้ายไปมุมขวาบน + จุดแดงแม่นยำขึ้น
ย้ายกระดิ่งแจ้งเตือนอัปเดตซอฟต์แวร์ไปไว้มุมขวาบนของหน้าจอ และแก้ให้จุดแดง "มีอัปเดต" อิงเวอร์ชันที่รันอยู่จริงเทียบกับล่าสุดใน registry (ไม่ค้างโชว์ว่ามีอัปเดตทั้งที่อัปเดตไปแล้ว) (4.14.2)
การ์ดอัปเดตซอฟต์แวร์: แสดงเวอร์ชันแบบแถวเดียวกระชับ + ปุ่มอัปเดตเป็นล่าสุด
ปรับการ์ด "อัปเดตซอฟต์แวร์" ใน ตั้งค่า → การตั้งค่าระบบ ให้แสดงเวอร์ชันปัจจุบันของแต่ละแอป (gw-api / kapi / gw-portal / klynx) แบบชิปแถวเดียวประหยัดพื้นที่ พร้อมปุ่ม "อัปเดตเป็นล่าสุด" ปุ่มเดียวสำหรับสั่งอัปเดตทั้งชุดไปเวอร์ชันล่าสุด (gw-portal แสดงครบแล้วหลังเพิ่มเข้า version set ฝั่ง ksys) (4.14.1)
ปรับตัวเลือกช่วงวันที่: /biDash ตัดออก, /dashboard ใช้แบบ preset + แก้เลือกวันเริ่มไม่ได้
หน้า AI Intelligence (/biDash) เป็นมุมมองเรียลไทม์ของวันนี้ — เอาตัวเลือกช่วงวันที่ออก (ยึดวันปัจจุบันเสมอ). หน้าแดชบอร์ดวิเคราะห์ (/dashboard) เปลี่ยนมาใช้ตัวเลือกช่วงวันที่แบบมี preset เหมือน /biDash (วันนี้ / 7 วัน / 30 วัน / เดือนนี้ / เดือนก่อน / ปีนี้ หรือเลือกช่วงเอง) และแก้บั๊กเดิมที่เลือกวันเริ่มไม่ได้/ค้างอยู่ที่วันปัจจุบัน — ตอนนี้เลือกช่วงวันได้ครบ และครอบคลุมทั้งวันที่เลือก (4.14.0)
แก้กดเต็มจอ (fullscreen) ดูสตรีมบนอุปกรณ์ Apple ทั้งหมด (iPhone/iPad/Mac Safari) ไม่ได้
กดปุ่มเต็มจอบนหน้าจอสตรีมแล้วไม่ทำงานบนอุปกรณ์ตระกูล Apple ทั้งหมด (iPhone, iPad, และ Safari บน Mac) — Android ใช้ได้ปกติ. สาเหตุ: เดิมระบบสั่งเต็มจอกับ "กล่องวิดีโอ" (div) ซึ่ง Safari/WebKit จัดการไม่นิ่ง (บน iPhone ไม่รองรับเลย). แก้ให้บนอุปกรณ์ Apple สั่งเต็มจอที่ตัว <video> โดยตรง (ตัวเล่นเนทีฟของ Safari ทำได้เสมอ) ส่วน Android/เดสก์ท็อปอื่นยังสั่งที่กล่องเหมือนเดิมเพื่อให้ลายน้ำอยู่ครบ. ใช้ได้ทุกหน้าที่มีปุ่มเต็มจอ: ดูสด (/live), วิดีโอวอลล์ และป็อปอัปแดชบอร์ด BI. (หมายเหตุ: เต็มจอแบบเนทีฟบน Apple จะไม่โชว์ลายน้ำทับ — เป็นข้อจำกัดของ Safari/iOS เอง) (4.13.3)
แจ้งเตือนอัปเดตซอฟต์แวร์ + อัปเดตเอง (รายแอป หรือทั้งหมด) จากหน้าตั้งค่าระบบ (เครื่อง appliance)
เพิ่มกระดิ่งแจ้งเตือนบนหัวเมนู (เฉพาะผู้ดูแลแพลตฟอร์มบนเครื่องแบบ appliance): ระบบตรวจ registry อัตโนมัติเป็นระยะว่ามีซอฟต์แวร์เวอร์ชันใหม่กว่าที่ใช้อยู่ไหม (klynx/kapi/gateway-api/gateway-portal) ถ้ามีจะเด้งกระดิ่งเรียลไทม์ คลิกพาไป ตั้งค่า → การตั้งค่าระบบ. การ์ด "อัปเดตซอฟต์แวร์" ใหม่: เปิด/ปิดตรวจอัตโนมัติ, แสดงเวอร์ชันปัจจุบันของแต่ละแอปเทียบกับเวอร์ชันล่าสุด (ไม่ต้องเลือกเวอร์ชันเอง), สั่งอัปเดตได้ทั้ง "รายแอป" และ "ทั้งหมดพร้อมกัน" โดยยืนยันด้วยรหัสผ่านผู้ดูแล — ระบบดึง image แล้วโรลเอาท์ทีละบริการพร้อมตรวจสุขภาพ ถ้าบริการไหนสตาร์ตไม่ขึ้นจะย้อนกลับอัตโนมัติ และมีปุ่มย้อนกลับเวอร์ชันเดิมเองได้. การตรวจอัตโนมัติเป็นแค่ "แจ้งเตือน" ไม่อัปเดตเองโดยไม่ยืนยัน. ดูเวอร์ชันได้แม้ยังไม่เปิดสิทธิ์สั่งอัปเดต (คู่กับ klynx-api 4.125.1)
แก้ดูสดบน iPhone/iPad เล่นกล้อง WebRTC ไม่ได้ — ขึ้น "ไม่มีสตรีม HLS" ทั้งที่เล่นได้
ต่อจากรอบเพิ่ม HLS สำหรับกล้อง AIBOX บน iOS เผลอไปกระทบกล้อง WebRTC ปกติ (เช่น "พัทยากลาง - RC-376"): พอเปิดจาก iPhone/iPad ระบบดันบังคับเล่นแบบ HLS กับกล้องทุกตัว ทำให้กล้อง WebRTC ที่ไม่มีสตรีม HLS ขึ้นกล่องแดง "ดูสดบนอุปกรณ์ iOS ไม่ได้ — ไม่มีสตรีม HLS" ทั้งที่ Safari เล่น WebRTC ได้อยู่แล้ว. แก้ให้สลับเป็น HLS เฉพาะกล้อง AIBOX/ATA (ที่ Safari เล่น flv.js ไม่ได้จริง ๆ) ส่วนกล้อง WebRTC จะเล่นผ่าน WebRTC ตามปกติบน iOS — มีผลทุกหน้า: ดูสด (/live), วิดีโอวอลล์ และแดชบอร์ด BI (4.12.2)
แผนที่ AI Intelligence โชว์เฉพาะ "เหตุการณ์รุนแรง" + การ์ด Blacklist กลับมามีข้อมูล
ปรับหน้า AI Intelligence (/intDash) ให้แผนที่ปักหมุดเฉพาะ "เหตุการณ์รุนแรง" เท่านั้น — คือคนใน Blacklist หรือเหตุการณ์ที่แอดมินตั้งระดับความรุนแรงเป็นสูง — เลิกปักหมุดใบหน้าทั่วไปที่จับได้ทุกใบจนแผนที่รก (รายการเหตุการณ์ด้านข้างยังเห็นครบเหมือนเดิม). และบนหน้าแดชบอร์ด BI (/biDash) การ์ด Blacklist ที่เคยว่างเปล่าสำหรับกล้อง AIBOX กลับมาแสดงรายชื่อคนใน Blacklist ล่าสุดได้แล้ว ทั้งตอนโหลดหน้าและแบบเรียลไทม์เมื่อมีคนใหม่เข้ามา (คู่กับ klynx-api 4.124.2)
ดูสด iOS: รองรับกล้อง AIBOX แล้ว + ข้อความชัดเจนเมื่อเล่นไม่ได้
ต่อยอดจากรอบก่อน: ตอนนี้กล้อง AIBOX/edge บนหน้า ดูสด (/live) เล่นบน iPhone/iPad ได้แล้ว (คู่กับ klynx-api 4.123.1 ที่แก้ฝั่งเซิร์ฟเวอร์ให้สร้างสตรีม HLS ได้). และถ้ากล้องตัวไหนยังไม่มีสตรีม HLS จริง ๆ (ไม่มีสัญญาณ/ยังไม่รองรับ) จะขึ้นข้อความบอกชัดเจนแทนที่จะเป็น "FLV not supported" ที่งงเดิม (4.11.1)
ดูสดบน iPhone/iPad (Safari) ได้แล้ว — สลับเป็น HLS อัตโนมัติ
เดิม iPhone/iPad เปิดดูสดไม่ได้ (จอดำ) เพราะ Safari เล่น flv.js และ WebRTC ไม่ได้. ตอนนี้เมื่อเปิดจากอุปกรณ์ iOS ระบบจะสลับไปเล่นแบบ HLS ผ่าน <video> ของ Safari โดยอัตโนมัติ — ใช้ได้ที่หน้า ดูสด (/live), วิดีโอวอลล์ และแดชบอร์ด BI. กล้องที่เล่นผ่าน WebRTC ปกติจะดูได้ทันที (กล้อง AIBOX/ATA แบบล็อกอินยังต้องรอรอบถัดไป จะถอยกลับพฤติกรรมเดิมไว้ไม่ให้แย่ลง). ต้องเปิดค่า MEDIA_HLS_ENABLED ที่ฝั่งเซิร์ฟเวอร์ (klynx-api 4.123.0). อ้างอิงสัญญา media-stream-redis.md §3C (4.11.0)
ตัวเลขกลุ่มหมุดบนแผนที่ 3D โดนตัด — แก้ที่ต้นเหตุจริง (depth test)
ตัวเลขจำนวนเหตุการณ์ในกลุ่มหมุด (cluster) บนแผนที่ 3D Digital Twin ยังแสดงไม่ครบ/ครึ่งล่างโดนตัด แม้รอบก่อนจะขยาย font atlas buffer แล้ว. เจอต้นเหตุจริงแล้ว: ในมุมมองเอียง 3 มิติ ตัวเลข (billboard) กับวงกลมกลุ่มหมุด/อาคาร 3D อยู่ระดับความลึกเดียวกัน ทำให้บางส่วนของตัวเลขถูก depth buffer ของวัตถุอื่นบังตัดทิ้ง. แก้โดยให้ตัวเลขวาดทับเสมอ (depthTest ปิด) และล็อกให้หันเข้าหากล้องตลอด (billboard) — ตอนนี้แสดงเต็มทุกหลักทั้งใน 2D และ 3D (4.10.5)
ดูสด (/live) บนมือถือ — ตรึงแผนที่และวิดีโอไว้ เลื่อนดูรายชื่อกล้องได้ลื่นขึ้น
เดิมบนมือถือ หน้า /live เลื่อนทั้งหน้าเป็นก้อนเดียว พอเลื่อนดูรายชื่อกล้อง แผนที่และวิดีโอที่กำลังดูอยู่ก็เลื่อนหายตามขึ้นไปด้วย. ตอนนี้แผนที่ถูกตรึงไว้ด้านบนเสมอ มีเฉพาะรายชื่อกล้องด้านล่างที่เลื่อนได้ พอแตะเลือกกล้องในรายการ แผนที่จะบินไปที่หมุดและเล่นวิดีโอให้ทันที โดยวิดีโอจะถูกตรึงไว้ด้วย ทำให้เลื่อนดูกล้องตัวอื่นต่อได้โดยภาพสตรีมไม่หายไปไหน (เลือกกล้องแล้วแผนที่จะย่อลงนิดหน่อยเพื่อเปิดพื้นที่ให้วิดีโอและรายการ)
แก้โลโก้/ธีม + ตัวเลขกลุ่มหมุด 3D โดนตัด + การ์ด AI Intelligence แหว่ง
แก้ UI หลายจุด: (1) โลโก้ PNG พื้นโปร่งใสเดิมมีเงา/กรอบในธีมสว่าง + ถูกครอบเป็นวงกลม — เอาออกให้กลืนพื้นหลัง. (2) ตั้งโลโก้เฉพาะธีมสว่างแล้วไปโผล่ธีมมืดด้วย — แก้ให้ธีมมืดใช้โลโก้ของธีมมืด/ค่าเริ่มต้นเท่านั้น (ไม่ดึงโลโก้สว่างมาใช้). (3) ตัวเลขกลุ่มหมุดบนแผนที่ 3D Digital Twin แสดงไม่ครบ/โดนตัด — ขยาย font atlas buffer. (4) การ์ดสรุปบนหน้า AI Intelligence แหว่ง 1 ช่อง (กริด 5 คอลัมน์ แต่มี 4 การ์ด) — ปรับเป็น 4 คอลัมน์ให้การ์ดยืดเต็มแถว (4.10.3)
หน้า Ingest กดการ์ดสรุปทุกใบเพื่อกรองได้แล้ว (เหตุการณ์ + แดชบอร์ด)
เดิมการ์ดสรุปบนหน้า Ingest กดกรองได้แค่บางใบ (ใบหน้า/ป้ายทะเบียน). ตอนนี้กดได้ทุกใบ: หน้า Ingest → เหตุการณ์ กดการ์ด คนเข้า/คนออก (กรองตามทิศทาง), Blacklist/Whitelist (กรองตามรายการเฝ้าระวัง) และใบหน้า/ป้ายทะเบียน — กดซ้ำเพื่อยกเลิก ทำงานแยกอิสระต่อกัน. หน้า Ingest → แดชบอร์ดเหตุการณ์ กดการ์ดสรุปแล้วเด้งไปหน้ารายการเหตุการณ์พร้อมกรองให้อัตโนมัติ. ใช้ตัวกรอง direction/listType/eventType ของ /kapi/events ที่หลังบ้านรองรับอยู่แล้ว (4.10.1)
ปรับหน้าดูสด (/live) ให้เรียบขึ้น + แผนที่ WebGL และปุ่มจัดกลุ่มกล้อง
หน้า /live ตัดการ์ดที่ไม่จำเป็นออก (เช่น การ์ดสภาพอากาศ) เหลือเฉพาะการ์ดสถานะกล้อง และยังเปิด/ปิดแถบรายชื่อกล้องได้เหมือนเดิม ส่วนหัวแสดงเฉพาะจำนวนกล้องที่ออนไลน์ (ไม่โชว์ออฟไลน์แล้ว). แผนที่หน้า /live เปลี่ยนมาใช้ basemap แบบ WebGL เป็นค่าเริ่มต้น (สลับกลับเป็นแผนที่ภาพปกติได้) และเพิ่มปุ่มเปิด/ปิดการจัดกลุ่มหมุดกล้อง (cluster) บนแผนที่ โดยค่าเริ่มต้นของการจัดกลุ่มตั้งได้ที่ ตั้งค่า → สตรีม (ผู้ชมแต่ละคนยังสลับเองได้ ระบบจำค่าไว้ในเครื่อง) (4.10.0 + klynx-api 4.120.0)
ตั้งรายละเอียดแพลตฟอร์มเองได้ + ธีมตามระบบ + ขยายขนาดไฟล์โลโก้/ไอคอน
เพิ่มช่อง "รายละเอียดแพลตฟอร์ม (ไทย/อังกฤษ)" ที่ ตั้งค่า → Branding เพื่อนำไปแสดงเป็นคำโปรยใต้ชื่อแพลตฟอร์มบนหน้าแรก (เว้นว่าง = ใช้ข้อความเริ่มต้น). เมนูธีม → สีหลัก เพิ่มตัวเลือก "ค่าเริ่มต้น (ตามระบบ)" ที่ดึงสีหลักจากการตั้งค่าแพลตฟอร์มมาใช้ และแก้อาการเลือกสีธีมแล้วไม่ติด (เดิมถูกสีแบรนด์ทับทุกครั้งที่โหลด — ตอนนี้สีที่ผู้ใช้เลือกเองจะอยู่เหนือค่าเริ่มต้น). ขยายขนาดอัปโหลดโลโก้จาก 2 MB เป็น 5 MB และไอคอนจาก 512 KB เป็น 1 MB เพื่อรองรับภาพความละเอียดสูงขึ้น. และปรับ favicon ให้ไม่มีไอคอนเริ่มต้นแบบฮาร์ดโค้ด — จะแสดงก็ต่อเมื่อมีการตั้ง favicon ในการตั้งค่าระบบเท่านั้น. หน้าแรก/หน้าสาธารณะดึงแบรนด์ที่ตั้งไว้มาแสดงได้เองโดยไม่ต้องตั้ง env เพิ่ม (4.10.0 + klynx-api 4.121.0)
แก้หน้าดูสดสาธารณะ (/live) เล่นกล้อง AIBOX/ATA ไม่ได้ — ขึ้น "สตรีมไม่พร้อมใช้งาน"
เดิมผู้เข้าชมที่ยังไม่ได้ล็อกอินคลิกกล้อง AIBOX/ATA บนหน้า /live แล้วขึ้นกล่องแดง "สตรีมไม่พร้อมใช้งาน" เล่นไม่ได้เลย สาเหตุ: แผนที่สาธารณะตัดฟิลด์ wssFlvUrl ออกตามดีไซน์ (ผู้ไม่ล็อกอินไม่ได้รับ URL สตรีมตรง) แต่ตัวเลือกชนิดผู้เล่นกลับใช้ wssFlvUrl ตัดสินว่าเล่น FLV ได้หรือไม่ จึงบล็อกทุกกล้องสาธารณะทิ้ง ทั้งที่เส้นทางสาธารณะใช้การ negotiate ตั๋วด้วย camId (ไม่ต้องใช้ wssFlvUrl). แก้ให้ผู้ชมสาธารณะเล่น AIBOX/ATA ผ่าน FLV ได้ด้วยยี่ห้อกล้องอย่างเดียว แล้วให้ FlvPlayer โหมดสาธารณะ resolve URL เองด้วย camId (ตามสัญญา public-camera-stream-protection §5.1). กล้องที่ edge ไม่มีสัญญาณภาพจริงจะยังขึ้นจอดำตามปกติ (4.9.7)
รวมเมนู Edge AI เข้าไว้ใต้ Ingest — ใช้ข้อมูลจริงชุดเดียวกันทั้งหมด
ยุบเมนู "Edge AI" แยกออก แล้วย้ายหน้าเดิมทั้งหมด (รายงานสรุป, นับคน, Blacklist, แจ้งเตือนเหตุการณ์) ไปไว้ใต้เมนู "Ingest" เพื่อให้ทุกหน้าใช้ข้อมูลจาก pipeline เดียวกัน (event_refs) — เลิกใช้แหล่งข้อมูลเก่า (ata_events) สิทธิ์การเข้าถึงเดิมยังใช้ได้เหมือนเดิม ไม่ต้องตั้งใหม่ (4.8.1 + klynx-api 4.115.0)
ชื่อแพลตฟอร์มและโลโก้ที่ตั้งไว้ แสดงบนหน้าแรกและหน้าดูสดสาธารณะแล้ว
เดิมเมื่อผู้ดูแลตั้งชื่อแพลตฟอร์มและโลโก้ที่ "ตั้งค่า → แพลตฟอร์ม" ค่าจะเปลี่ยนเฉพาะในระบบหลังเข้าสู่ระบบ ส่วนหน้าแรก (Landing), หน้าดูสดสาธารณะ (/live) และส่วนท้าย (footer) ยังคงโชว์ "Klynx" กับโลโก้เดิมแบบฮาร์ดโค้ด. ตอนนี้ทั้งหัวเว็บ ชื่อใหญ่บนหน้าแรก และ footer ดึงชื่อ/โลโก้ที่ตั้งไว้มาแสดงตามภาษา (ไทย/อังกฤษ) อัตโนมัติ — ผู้เข้าชมที่ยังไม่ได้ล็อกอินก็เห็นแบรนด์ที่ถูกต้อง (ผ่านช่องทางสาธารณะใหม่ klynx-api §5.5). พร้อมแก้ไอคอนรูปโล่ที่ footer ให้เป็นโลโก้จริง และทำลิงก์ Privacy/Terms/เอกสาร/Changelog ที่ footer ให้รองรับสองภาษา. และเปลี่ยนชื่อเริ่มต้น (เมื่อยังไม่ได้ตั้งค่า) จาก "Klynx" เป็นคำกลางๆ "IOC" ทุกจุด รวมถึง title/คำอธิบายเว็บ และ favicon เริ่มต้นเป็นไอคอน sparkles. เพิ่มช่อง "ข้อความ Footer (ไทย/อังกฤษ)" ในหน้า ตั้งค่า → Branding ของแพลตฟอร์ม ให้ตั้งบรรทัดลิขสิทธิ์/footer ของหน้าสาธารณะเองได้ (เว้นว่าง = ใช้ค่าเริ่มต้นเดิม). หมายเหตุผู้ดูแลระบบ: ตั้งค่า env PUBLIC_BRANDING_ORG_ID ให้ชี้องค์กรหลักของเครื่องเพื่อเปิดใช้ (4.8.0 + klynx-api 4.112.0)
หน้า Ingest (เหตุการณ์ + แดชบอร์ดเหตุการณ์) มีการ์ดสรุปแยกตามเรื่อง + โทนสีแบบ AI Intelligence
หน้า Ingest → เหตุการณ์ และ แดชบอร์ดเหตุการณ์ เพิ่มแถบการ์ดสรุปด้านบน อิงช่วงวันที่ที่เลือก (วัน/สัปดาห์/เดือน): เหตุการณ์ทั้งหมด, คนเข้า, คนออก (นับคน), ใบหน้า, ป้ายทะเบียน, Blacklist, Whitelist — ดึงจากข้อมูลจริงของ pipeline ใหม่ (event_refs) ผ่าน /kapi/events/aggregate (สรุปทั้งช่วงเวลา ไม่ใช่แค่รายการที่โหลด) การ์ดเรืองแสงตามสีตัวชี้วัดแบบเดียวกับหน้า AI Intelligence (4.7.1 + klynx-api 4.111.0)
เหตุการณ์จากกล้อง Edge AI ขึ้นหมุดบนแผนที่แล้ว
แก้อาการเหตุการณ์ AI ไม่ขึ้นหมุดบนแผนที่หน้า AI Intelligence — ระบบนำพิกัด (lat/lng) ของกล้องมาเติมให้เหตุการณ์อัตโนมัติเมื่อเหตุการณ์ไม่มีพิกัดมาเอง ทั้งแบบเรียลไทม์และย้อนหลัง (klynx-api 4.110.0)
รายงานสรุป Edge AI ใช้ข้อมูลจริงแล้ว + โทนหน้าเดียวกับ AI Intelligence
หน้า Edge AI → รายงานสรุป (Summary Report) เปลี่ยนจากข้อมูลตัวอย่างเป็นข้อมูลจริงทั้งหน้า: การ์ดสรุปเหตุการณ์รวม/ใบหน้า/ยานพาหนะ/บัญชีดำ กราฟแนวโน้มรายวัน สัดส่วนประเภทเหตุการณ์ ยอดนับคนเข้า-ออกแยกตามโซน (ใหม่ — สูงสุด 10 โซน) สถานะกล้อง/ตัวควบคุม กราฟบัญชีดำรายชั่วโมง และตารางเหตุการณ์/บัญชีดำล่าสุด เลือกช่วงวันที่ได้และทุกส่วนอัปเดตตาม พร้อมปรับโทนสีการ์ดสถิติของหน้า Edge AI ทุกหน้า (นับคน/แจ้งเตือนเหตุการณ์/บัญชีดำ) ให้เป็นแบบเดียวกับหน้า AI Intelligence — การ์ดเรืองแสงตามสีตัวชี้วัด ไอคอนชิปสี ตัวเลข tabular (4.6.0 + klynx-api 4.108.0)
ล้างเครื่องกลับค่าเริ่มต้น (Factory Reset) จากหน้าตั้งค่าระบบ — สำหรับเครื่องแบบติดตั้งในองค์กร
หน้าการตั้งค่า → การตั้งค่าระบบ เพิ่มส่วน "พื้นที่อันตราย" ให้ผู้ดูแลแพลตฟอร์มสั่งล้างข้อมูลทั้งเครื่อง (ผู้ใช้ สิทธิ์ กล้อง เหตุการณ์ การตั้งค่า) กลับสู่ค่าเริ่มต้นเหมือนติดตั้งใหม่ได้เอง — ใช้สำหรับเครื่องที่ติดตั้งในสถานที่ (appliance) เช่น ส่งคืนเครื่อง เปลี่ยนหน่วยงานผู้ใช้ หรือซ้อมแผนกู้คืนระบบ ขั้นตอนยืนยันเข้มงวดหลายชั้น: ระบบแสดงรายการสิ่งที่จะถูกลบ/เก็บไว้ก่อน ต้องพิมพ์ชื่อเครื่องให้ตรง ติ๊กรับทราบว่าข้อมูลจะหายถาวร กรอกรหัสผ่านยืนยันตัวตนซ้ำ และถ้าเครื่องตั้งค่าไว้ต้องมีผู้ดูแลคนที่สองร่วมอนุมัติด้วย ระหว่างล้างเครื่องเห็นความคืบหน้าทีละขั้นแบบสด เสร็จแล้วระบบพาออกจากระบบอัตโนมัติ — License ของเครื่องยังอยู่ ไม่ถูกลบ (4.5.1 + klynx-api 4.107.0) หมายเหตุ: หน้าการตั้งค่าทุกแท็บยังปรับให้แสดงผลเต็มความกว้างจอ ไม่บีบอยู่กลางจอแบบเดิม
หน้าดูกล้องสาธารณะ (/live) ลื่นขึ้น — สลับกล้องต่อเนื่องได้ไม่สะดุด
ปรับระบบยืนยันเบราว์เซอร์ (Cloudflare Turnstile) ให้ยืนยันสำเร็จครั้งเดียวแล้วใช้ต่อได้ 10 นาที — เดิมต้องยืนยันใหม่ทุกครั้งที่กดดูกล้อง ทำให้สลับกล้องเร็ว ๆ แล้วเจอ "ยืนยันเบราว์เซอร์ไม่สำเร็จ" หรือจอดำทั้งที่ใช้งานปกติ ตอนนี้ไล่กดดูกล้องหลายตัวต่อเนื่องได้ลื่น ส่วนการป้องกันการนำสตรีมไปใช้ภายนอกยังเข้มเท่าเดิมทุกประการ และแก้ตัวกรองหน่วยงานบนแดชบอร์ดที่ใช้ไม่ได้เมื่อหน่วยงานมีกล้องหลายร้อยตัว (4.4.1 + klynx-api 4.106.0)
เชื่อมต่อกล้องจากระบบ NX Witness (Network Optix) ได้แล้ว
หน้าระบบอุปกรณ์ → Edge เพิ่มประเภทอุปกรณ์ใหม่ "NX Witness" — กรอกที่อยู่เซิร์ฟเวอร์ของระบบ NX พร้อมชื่อผู้ใช้/รหัสผ่าน แล้วกดซิงค์ ระบบจะดึงรายการกล้องทั้งหมดจาก NX เข้ามาใช้งานใน Klynx ให้อัตโนมัติ (ตั้งรอบซิงค์อัตโนมัติได้) กดซิงค์แล้วเห็นสรุปทันทีว่าพบกล้องกี่ตัว เพิ่มใหม่กี่ตัว — กล้องที่ซิงค์เข้ามาดูสด จัดสิทธิ์ และขึ้นแผนที่ได้เหมือนกล้องอื่นทุกอย่าง ถ้ารหัสผ่านของเซิร์ฟเวอร์ NX ไม่ถูกต้อง ระบบจะแจ้งให้ตรวจสอบบัญชีชัดเจน (4.4.0 + klynx-api 4.105.0)
แผนที่ Digital Twin บนหน้า AI Intelligence — มุมเอียง 3 มิติ อาคารจริง และวงแหวนเหตุการณ์สด
แผนที่เหตุการณ์เรียลไทม์บนหน้า AI Intelligence ยกระดับเป็นแผนที่ดิจิทัลทวิน: กล้องมุมเอียงแบบ 3 มิติ มองเห็นอาคารยกตัวขึ้นจริงเมื่อซูมเข้าเมือง พร้อมท้องฟ้า/หมอกตามธีมมืด-สว่าง เหตุการณ์ใหม่ที่เพิ่งเกิด (ภายใน 10 วินาที) จะมีวงแหวนกระเพื่อมตามสีระดับความรุนแรง เปิดหน้าครั้งแรกกล้องจะบินเข้าหาพื้นที่เหตุการณ์แบบภาพยนตร์ และเมื่อพบเหตุบัญชีดำ กล้องจะดิ่งลงไปที่จุดเกิดเหตุก่อนเปิดรายละเอียดอัตโนมัติ — ปุ่มสลับ 2D/3D และปุ่มกลับไปใช้แผนที่แบบคลาสสิกอยู่มุมขวาบนของแผนที่ ถ้าเครื่องไม่รองรับ WebGL ระบบสลับกลับแผนที่แบบเดิมให้เองโดยไม่ต้องทำอะไร และเครื่องที่เปิดโหมด "ลดการเคลื่อนไหว" ระบบจะปิดอนิเมชันให้อัตโนมัติ (4.3.0)
Klynx 4.0 — หน้าแรกโฉมใหม่ + คู่มือผู้ใช้และผู้ดูแลระบบ
ยกเครื่องหน้าแรกของแพลตฟอร์มใหม่ทั้งหน้า: เลื่อนหน้าจอแล้วภาพหน้าจอจริงของระบบ (แดชบอร์ดวิเคราะห์, วิดีโอวอลล์, แผนที่สด, เหตุการณ์ AI, มุมมองมือถือ) เคลื่อนไหวรับกับการเลื่อนแบบเว็บเปิดตัวสินค้าชั้นนำ พร้อมเนื้อหาแนะนำความสามารถปัจจุบันของระบบครบ (เหตุการณ์ AI จาก Edge AI, แชร์ลิงก์ดูสดสาธารณะ, สิทธิ์ละเอียดรายหน่วยงาน/รายคน) — ผู้ใช้ที่เปิดโหมด "ลดการเคลื่อนไหว" ในเครื่อง ระบบจะปิดอนิเมชันให้อัตโนมัติ. หน้าเอกสารเพิ่มคู่มือใหม่ 2 เล่ม — "คู่มือผู้ใช้" และ "คู่มือผู้ดูแลระบบ" — อ่านได้โดยไม่ต้องเข้าสู่ระบบ และเลขเวอร์ชันระบบเริ่มนับยุคใหม่เป็น 4.0.0 (4.0.0)
ลงทะเบียนรูปใบหน้าด้วยตัวเองที่หน้าโปรไฟล์
หน้าโปรไฟล์เพิ่มส่วน "รูปใบหน้า" (แยกจากรูปประจำตัว) — อัปโหลดไฟล์รูป หรือถ่ายเซลฟี่จากกล้องของเครื่องได้เลย (รองรับมือถือ ภาพพรีวิวกลับด้านเหมือนกระจก) ต้องติ๊กยินยอมก่อนบันทึก ลบรูปได้ตลอด ระบบเก็บรูปล่าสุดรูปเดียว — เป็นขั้นแรกของระบบยืนยันตัวตนด้วยใบหน้าในเฟสถัดไป (3.118.0 + klynx-api 4.103.0)
แดชบอร์ด /biDash เปิดให้สมาชิกทุกคนเข้าได้ — เห็นเฉพาะกล้องที่ตัวเองมีสิทธิ์
หน้าแดชบอร์ด /biDash เดิมต้องมีสิทธิ์เมนู "แผนที่" (map) ถึงจะเข้าได้ ทำให้สมาชิกที่มีสิทธิ์กล้องอยู่แล้วแต่ไม่ได้เปิดเมนูนี้ กดเข้า biDash แล้วขึ้น 403 (เข้าไม่ได้). ตอนนี้ biDash เปิดให้สมาชิกทุกคนในองค์กรเข้าได้เป็นค่าเริ่มต้น โดยแผนที่แสดง "เฉพาะกล้องที่ผู้ใช้คนนั้นมีสิทธิ์" (ผู้ดูแลองค์กรเห็นกล้องทั้งองค์กรที่เลือกอยู่) — คำนวณจากสิทธิ์ของผู้ใช้เอง ไม่หลุดไปเห็นของคนอื่น. และแก้อาการหน้าค้าง/เด้ง error เมื่อผู้ใช้ที่ไม่มีสิทธิ์ระบบควบคุม (kcontrol) เปิด biDash — ระบบจะไม่เชื่อมต่อช่องข้อมูลเรียลไทม์ที่ผู้ใช้ไม่มีสิทธิ์ (วิดเจ็ตที่ไม่มีสิทธิ์จะว่างแทนที่จะ error). เพิ่มเติม 3.117.1: ยอดนับสถานะกล้องในวิดเจ็ตแสดง "ตามสิทธิ์ของผู้ใช้" (ดึงจาก /map/camera ที่ scope แล้ว) ไม่ใช่ยอดทั้งองค์กร, ปิดการเด้งแจ้งเตือน "ไม่มีสิทธิ์รับข้อมูลเรียลไทม์" (degrade เงียบ ๆ), และแก้อาการ 403 เต็มจอที่ยังตกค้างตอนโหลดตัวกรองหน่วยงานสำหรับสมาชิก. 3.117.2: เลือกหน่วยงาน + กลุ่มกล้องพร้อมกัน ตอนนี้กรองเป็น "ส่วนที่ซ้อนกัน" (กล้องในกลุ่มที่หน่วยงานนั้นมีสิทธิ์) ถูกต้อง. 3.117.3: แก้ตัวกรองหน่วยงานแสดงเป็นรหัส UUID แทนชื่อ หลังเลือกหน่วยงานแม่แล้วเลือกกลุ่มกล้อง. 3.117.4: วิดีโอวอลล์เปิดกล้องสาธารณะได้แล้ว (เล่นผ่านเส้นทางสตรีมสาธารณะ), ตั้งค่าเริ่มต้นตัวกรองเป็น "กล้องในความดูแล" ทั้งวิดีโอวอลล์/แดชบอร์ด, แดชบอร์ดวิเคราะห์เริ่มที่กล้องในความดูแล + ไม่เด้งแจ้งเตือน realtime, และคลิกกล้องในหน้าข้อมูลกล้องไม่ขึ้น 403 เต็มจอแล้ว. 3.117.5: วิดีโอวอลล์เปิดกล้องสาธารณะผ่านเส้นทาง authenticated (BE 4.102.5) — ไม่ต้องผ่าน Turnstile, แก้ 403 BOT_CHALLENGE_FAILED. 3.117.6: ปุ่มปิด popup กล้องในหน้าแผนที่ย้ายไปมุมขวาบนนอกกรอบวิดีโอ ไม่ทับปุ่มเต็มจอ. 3.117.7: ปิด toast realtime ที่หน้าวิดีโอวอลล์/ข้อมูลกล้อง (degrade เงียบ) + รายการกล้องในวิดีโอวอลล์ทำ infinite scroll (render ทีละชุดตอนเลื่อน) (3.117.1–3.117.7 + klynx-api 4.102.5)
วิดีโอวอลล์ — กรองกล้องตามสถานะ ออนไลน์/ออฟไลน์
หน้า /videowall เพิ่มตัวกรอง "สถานะ" (ทุกสถานะ / ออนไลน์ / ออฟไลน์) วางข้างตัวกรอง "ในความดูแล/สาธารณะ" และกลุ่มกล้องที่มีอยู่เดิม — เดิมผนังจอแสดงเฉพาะกล้องออนไลน์ (กล้องที่เล่นสตรีมได้) เท่านั้น ตอนนี้เลือกดูกล้องออฟไลน์หรือทุกสถานะได้ ค่าเริ่มต้นยังเป็น "ออนไลน์" เพื่อให้ผนังจอเล่นได้ทันทีเหมือนเดิม (ตัวกรองในความดูแล/สาธารณะมีอยู่แล้ว) (3.115.0)
กันบอท/สคริปต์ดึงภาพกล้องสาธารณะ — ผู้ชมทั่วไปใช้งานเหมือนเดิม
หน้าแผนที่กล้องสาธารณะ /live เพิ่มการตรวจสอบอัตโนมัติว่าผู้ที่ขอเปิดสตรีมเป็น "คนที่ใช้เบราว์เซอร์จริง" ไม่ใช่โปรแกรม/สคริปต์ที่แอบดึงภาพไปใช้ต่อ การตรวจสอบทำงานเบื้องหลังแบบมองไม่เห็น ผู้ชมทั่วไปไม่ต้องกดอะไรเพิ่มและไม่ต้องล็อกอิน กดดูสดได้ตามปกติ ถ้าระบบยืนยันเบราว์เซอร์ไม่ผ่าน (เช่นปิดจาวาสคริปต์ หรือสัญญาณตรวจสอบสะดุด) จะขึ้นข้อความให้กด "เล่นอีกครั้ง" — เป็นการเสริมความปลอดภัยเพื่อกันการนำภาพกล้องสาธารณะไปใช้โดยไม่ได้รับอนุญาต ผู้ดูแลระบบเปิด/ปิดฟีเจอร์นี้ได้ (3.114.0 + klynx-api 4.102.0)
เมนู New Watchman — เปิดสิทธิ์เข้าระบบ Watchman เป็นรายหน้า
เพิ่มกลุ่มเมนู "New Watchman" ในแถบเมนูด้านซ้าย แยกเป็น 6 หมวด (ภาพรวม, งานสืบสวน, งานป้องกันปราบปราม, งานจราจร·สอบสวน, ข้อมูลอื่น, ระบบ) รวม 28 หน้า ผู้ดูแลองค์กรกำหนดสิทธิ์ให้เห็นได้ทีละหน้า — หน้าไหนยังไม่ได้รับสิทธิ์จะไม่ขึ้นในเมนู เมื่อกดเมนูจะพาไปยังระบบ Watchman ตัวใหม่โดยตรง (เปิดเต็มหน้า ไม่ใช่กรอบฝัง). หมายเหตุ: การเปิดเมนูเป็นแค่การ "ให้เห็นลิงก์" — ระบบ Watchman ยังตรวจสิทธิ์เข้าใช้งานจริงของตัวเองอีกชั้น (3.113.0 + klynx-api 4.101.0)
ลายน้ำ/โลโก้องค์กรบนกล้องสาธารณะ + เห็นลายน้ำตอนเต็มจอ
หน้าแผนที่กล้องสาธารณะ /live แสดงลายน้ำ (watermark) และโลโก้องค์กรทับบนภาพสด ตามที่ผู้ดูแลตั้งค่าไว้ในหน้าตั้งค่าสตรีม แม้ผู้ชมจะไม่ได้ล็อกอินก็เห็นลายน้ำเหมือนกับตอนล็อกอิน (ทั้งตัวเล่นด้านข้างและป๊อปอัพบนแผนที่) ช่วยกันการนำภาพไปใช้ต่อโดยไม่ได้รับอนุญาต. นอกจากนี้เพิ่มปุ่ม "เต็มจอ" ของระบบเองบนตัวเล่นวิดีโอทุกหน้า (/live, /videowall, /biDash) เพื่อให้ลายน้ำยังคงแสดงตอนดูแบบเต็มจอ — เดิมพอกดเต็มจอด้วยปุ่มของเบราว์เซอร์ ลายน้ำจะหายไป. ถ้าองค์กรปิดลายน้ำหรือยังไม่ได้ตั้งค่า ภาพก็เล่นได้ตามปกติโดยไม่มีลายน้ำ. พร้อมกันนี้ได้ตัดการเรียกเก็บสถิติเบื้องหลังที่ไม่จำเป็นออกจากผู้ชมที่ไม่ได้ล็อกอิน (3.111.0 + klynx-api 4.97.0)
เปิด AI วิเคราะห์ภาพให้กล้อง (ตรวจไฟ/ควัน/เหตุการณ์ตาม prompt)
หน้าจัดการกล้อง (/systemDevices/cameras) เพิ่มปุ่ม "เปิด AI" ในแผงรายละเอียดกล้อง — พิมพ์สิ่งที่อยากให้ AI ตรวจจับเป็นข้อความ (เช่น "fire burning in tank") แล้วระบบจะส่งภาพจากกล้องตัวนั้นไปให้บริการ AI วิเคราะห์ต่อเนื่อง พบเหตุเมื่อไรจะมีป้าย "พบเหตุ" ขึ้นที่กล้อง และดูประวัติเหตุการณ์ทั้งหมดได้ที่หน้าใหม่ "เหตุการณ์ AI" (/systemDevices/cameras/ai-events) ค้นหา/กรองตามกล้องและช่วงเวลาได้ กล้อง RTSP ทั่วไปและกล้อง AIBOX ใช้ได้ทั้งคู่ ปุ่มและหน้านี้จะเห็นเฉพาะองค์กรที่ได้รับสิทธิ์ "Enable Fire AI" / "AI Events" เท่านั้น (3.110.0 + klynx-api 4.96.0)
เลือกกล้องหลายตัวพร้อมกัน — แจ้งซ่อม / Sync / ลบ ทีเดียว
หน้าจัดการกล้อง (/systemDevices/cameras) เพิ่มช่องติ๊กเลือกหน้าแถว + ติ๊กเลือกทั้งหน้า (สูงสุด 50 ตัวต่อครั้ง) จากเดิมทำได้ทีละตัว ตอนนี้เลือกหลายตัวแล้วสั่งพร้อมกันได้: "แจ้งซ่อม/เลิกซ่อม" (ใส่เหตุผลเดียวใช้ทั้งชุด), "Sync" สั่งเช็คสถานะ, และ "ลบ". ระบบสรุปผลให้ว่าสำเร็จกี่ตัว/ข้ามกี่ตัว/ล้มเหลวกี่ตัว พร้อมเหตุผลรายตัว — กล้องที่จัดการโดยระบบ gateway (AIBOX) จะถูกข้ามตอนลบและให้ไปลบที่ระบบ gateway แทน ไม่ลบผิดที่ (3.109.0 + klynx-api v1.8)
โหมดซ่อมบำรุงกล้อง — แยก "ปิดซ่อม" ออกจาก "กล้องเสีย"
เพิ่มปุ่ม "แจ้งซ่อม / ปิดซ่อม" ในหน้าจัดการกล้อง (/systemDevices/cameras) — กดเพื่อทำเครื่องหมายว่ากล้องตัวนี้ปิดซ่อมตั้งใจ (เปลี่ยนเลนส์ / ดึงสายใหม่ / ย้ายจุดติดตั้ง) พร้อมระบุเหตุผลได้ จากเดิมกล้องที่ปิดซ่อมจะขึ้น offline สีแดงปนกับกล้องที่เสียจริง แยกไม่ออกทั้งในรายการ แผนที่ และยอดนับ ตอนนี้กล้องที่อยู่ในโหมดซ่อมจะขึ้นป้าย "ซ่อมบำรุง" สีม่วงคราม + หมุดสีเหลืองอำพันบนแผนที่แทนสีแดง และมีตัวกรอง "ซ่อมบำรุง" ให้ดูเฉพาะกล้องที่กำลังซ่อมได้ ระบบยังคงตรวจสถานะจริงเบื้องหลังตลอด พอปิดโหมดซ่อมก็กลับไปแสดงสถานะจริงทันที (3.108.0 + klynx-api 4.93.0)
ดูกล้องสาธารณะปลอดภัยขึ้น + กันการนำสตรีมไปฝังเว็บอื่น
หน้าแผนที่กล้องสาธารณะ /live ดูสดได้ลื่นขึ้นแม้ไม่ได้ล็อกอิน (รวมกล้อง AIBOX) โดยระบบขอสิทธิ์เปิดสตรีมผ่านเซิร์ฟเวอร์ของเราเองทุกครั้ง ไม่เปิดช่องให้ดึงลิงก์สตรีมไปเล่นนอกระบบหรือเอาไปฝัง (iframe) บนเว็บอื่น. ถ้ามีการกดเปิดถี่เกินไป ระบบจะขอให้พักสักครู่แล้วกด "เล่นอีกครั้ง" เอง (ไม่ต่อใหม่อัตโนมัติ). เป็นการเสริมความปลอดภัยเบื้องหลัง ผู้ใช้ทั่วไปใช้งานได้เหมือนเดิม (3.107.0 + klynx-api 4.92.0)
ดูสดเสถียรขึ้น — สตรีมไม่หลุด/ต่อใหม่วนซ้ำเมื่อมีเหตุการณ์เข้ามา
แก้อาการสตรีมในป๊อปอัพกล้องบนหน้าแดชบอร์ด /biDash หลุดแล้วเชื่อมต่อใหม่วนซ้ำทุกไม่กี่วินาทีเมื่อมีเหตุการณ์/สถานะกล้องเข้ามาเรียลไทม์: ระหว่างเปิดดูสดอยู่ ระบบจะพักการรีเฟรชหมุดบนแผนที่ไว้ก่อน แล้วค่อยอัปเดตเมื่อปิดป๊อปอัพ ภาพจึงไม่ดับกลางคัน และลดอาการ "กดดูแล้วรอนาน" เพราะสตรีมไม่ถูกตัดทิ้งให้ต้องดึงใหม่. ส่วนหน้าแก้ไขกล้อง: ระหว่างกดทดสอบสตรีมอยู่ การแก้ช่อง "ยี่ห้อ (brand)" จะไม่ทำให้ตัวเล่นถูกสร้างใหม่จนภาพดับอีกต่อไป (3.106.0)
หน้า Resource Permission เลือกกลุ่มย่อยแบบ explicit และจัดการอุปกรณ์ละเอียดขึ้น
แท็บเลือกอุปกรณ์ใน /systemUsers/permissions/resource ใช้ checkbox “รวมกลุ่มย่อย” ชัดเจนเหมือนฝั่งหน่วยงาน/สมาชิก: ไม่ติ๊กจะนับเฉพาะกลุ่มทรัพยากรที่เลือกตรง ติ๊กแล้วจึงครอบคลุมกลุ่มย่อยและตัดออกทั้งกลุ่มได้ เพิ่มโหมดอุปกรณ์ ทั้งหมด/เลือกเฉพาะ/ตัดเฉพาะ พร้อม badge ระบุเจาะจง/ตัดออกบนแถว RG และปรับยอดสรุปให้ตรงกับการเลือกสมาชิกหรืออุปกรณ์ตรง ๆ (3.104.0)
หน้าแดชบอร์ดเพิ่มตัวกรองหน่วยงาน
หน้า /biDash เพิ่มตัวกรองหน่วยงาน (OU) ทำงานคู่กับตัวกรองกลุ่มกล้อง: เลือกกลุ่มกล้องก่อนแล้วระบบช่วยแนะนำ OU ที่เกี่ยวข้อง หรือเลือก OU ก่อนแล้วระบบช่วยแนะนำกลุ่มกล้องที่ผูกไว้ พร้อมคงขอบเขตสิทธิ์เดิมของผู้ใช้ (3.103.0)
หน้าจัดการสิทธิ์ทรัพยากรตัดอุปกรณ์/กลุ่มย่อยได้ชัดขึ้น
หน้า Resource Permission แท็บเลือกอุปกรณ์เพิ่มปุ่ม “ตัดออกทั้งกลุ่มทรัพยากร” ในจุดที่กลุ่มลูกถูกครอบคลุม, ปรับปุ่มตัดอุปกรณ์/ตัดกลุ่มให้ขนาดเท่ากัน และเปลี่ยน badge จำนวนอุปกรณ์เป็น icon เครือข่าย (3.102.0)
หน้าจัดการสิทธิ์เข้า tree ทันที และหน้าเมนูเลือกสมาชิกได้ละเอียดขึ้น
หน้า Resource Permission เปิดเข้า editor/tree ทันทีโดยเลือก profile ที่สร้างไว้ก่อนให้ก่อน ไม่ต้องผ่านตารางสรุปแล้ว ส่วนหน้า Menu Permission มี “สรุปการเลือก” ที่รวมหน่วยงานแม่ และเพิ่มโหมดสมาชิก ทั้งหมด/เลือกเฉพาะ/ตัดเฉพาะ พร้อมปุ่มตัดหน่วยงานแม่ทั้งหมด (3.101.0 + klynx-api 4.84.0)
พรีวิวหน้าจัดการสิทธิ์ดีไซน์ใหม่ (Permission v2) — สำหรับทดสอบ
พรีวิวหน้าจัดการสิทธิ์โฉมใหม่ทั้งสามหน้า (เมนู, API Integrations, ทรัพยากร) — มีการ์ดสรุปยอด คน/กลุ่มทรัพยากร/อุปกรณ์/ความขัดแย้ง อยู่ด้านบน, ผังองค์กรแบบกดทีละหน่วยงานเพื่อ "ให้สิทธิ์ / ยกเว้น / สืบทอดจากหน่วยงานแม่ / ไม่กำหนด" และคลิกหน่วยงานเพื่อตั้งสิทธิ์รายคน (include / inherit / exclude) ได้ในป๊อปอัพเดียว. ตัวเลขยอดสุทธิดึงจากระบบหลังบ้านโดยตรง (ไม่คำนวณเองฝั่งหน้าจอ) จึงตรงกับสิทธิ์จริง พร้อม breakdown กล้อง/K-Control/Edge. ยังเป็นรุ่นทดสอบ — เปิดให้เห็นเฉพาะผู้ดูแลระบบเมื่อเปิด debug flag เท่านั้น หน้าจัดการสิทธิ์เดิมยังใช้งานปกติ (3.97.0 + klynx-api 4.79.0)
หน้าจัดการสิทธิ์ + กลุ่มอุปกรณ์ — สรุปการเลือกแม่นยำขึ้น
หน้าจัดการสิทธิ์ทรัพยากร (Resource permission): เปิดโปรไฟล์ขึ้นมาแล้วระบบแสดงสิ่งที่เลือกไว้ได้ถูกต้องครบทันที — สรุปการเลือก (หน่วยงาน/กลุ่มทรัพยากร/อุปกรณ์) ตรงกับที่บันทึกจริง และในผังหน่วยงานจะมีตัวเลขกำกับบอกว่า "มีรายการที่เลือกอยู่ข้างในกี่รายการ" แม้ยังไม่กางดู ทำให้เห็นภาพรวมได้เร็วโดยไม่ต้องไล่เปิดทีละชั้น. ส่วนหน้ากลุ่มอุปกรณ์ (Resource Groups) มีแถบสรุปภาพรวมว่ามีกล้อง / K-Control / Edge อยู่ในกลุ่มกี่ตัว และยังไม่ได้จัดเข้ากลุ่มกี่ตัว (3.96.0–3.96.1)
กล้อง AIBOX — ดูสดได้แล้ว + ปุ่ม "Sync" สั่งเช็คสถานะรายตัว
กล้อง AIBOX (กล้อง AI ที่เชื่อมจากระบบ Gateway) ดูภาพสดได้แล้วทั้งหน้าแก้ไขกล้อง (ปุ่ม "ทดสอบสตรีม") และหน้าดูสด/แผนที่/แดชบอร์ด เมื่อกล้องออนไลน์ — เดิมกดทดสอบสตรีมแล้วเงียบไม่มีอะไรเกิดขึ้น และปุ่ม "Sync" รายแถวในหน้าจัดการกล้องกลับมาใช้กับกล้อง AIBOX ได้แล้ว กดเพื่อสั่งให้ระบบเช็คสถานะออนไลน์/ออฟไลน์ของกล้องตัวนั้นทันทีไม่ต้องรอรอบปกติ (ไม่เกิน ~30 วินาที) ถ้ากล้องยังไม่ได้ผูกกับ edge ระบบจะบอกว่า "edge ยังไม่ลงทะเบียน" ให้ไปตั้งค่าก่อน แทนการขึ้น error งง ๆ (3.95.0)
AI Intelligence (Beta) — รับเหตุการณ์เรียลไทม์เร็วขึ้น + เน้นเหตุการณ์ Blacklist อัตโนมัติ
หน้า /intDash ตอนนี้รับเหตุการณ์ AI ใหม่แล้วอัปเดตตัวเลขรวม, กราฟ, และรายการล่าสุดทันทีโดยไม่ต้องดึงข้อมูลทั้งหมดมาใหม่ ระบบจึงเบาขึ้นทั้งฝั่งหน้าจอและฝั่งหลังบ้านแม้มีเหตุการณ์ถี่ — และเมื่อมีเหตุการณ์ประเภท Blacklist เข้ามา แผนที่จะซูม-เลื่อนไปยังตำแหน่งกล้องพร้อมเปิดป๊อปอัพแสดงคลิป/รูปที่กล้อง AI จับได้ทันที (กรอบเหลี่ยมส้มบนใบหน้า/วัตถุยังอยู่) ผู้ดูแลตรวจสอบเหตุการณ์สำคัญได้เร็วโดยไม่ต้องคลิกหาทีละจุดเอง (3.93.0)
Preview Permission Profile · v2 — แยกยอด unique access กับยอดเลือกซ้ำ
หน้า v2 ใช้ตัวเลขใหญ่จาก /preview เป็น unique access จริง: คนเข้าถึงได้และอุปกรณ์เข้าถึงได้. บรรทัดย่อยจะแสดงจำนวนที่เลือกทั้งหมด, ยกเว้น, และซ้ำ เช่นเลือกทั้ง RG และ device ตัวเดียวกันจะเห็นว่าเลือก 2 ทางแต่ unique device เหลือ 1 พร้อม breakdown camera / kcontrol / edge. Production route ยังไม่ถูกสลับ รอ UAT ยืนยันก่อน. (3.92.3 + klynx-api 4.72.0)
กดรับทราบเหตุการณ์จากตาราง K-Control ได้แล้ว
หน้า ระบบควบคุม → K-Control: ป้าย "แจ้งเตือน" สีแดงในตารางคลิกได้ — กดแล้วเปิดหน้าต่างเดียวกับที่ใช้ในแผนที่ K-Control เพื่อบันทึกการรับทราบเหตุการณ์ทันทีโดยไม่ต้องสลับไปหน้าแผนที่ พร้อมแก้ไอคอนไฟกระพริบที่บางครั้งไม่ขึ้นในหน้าแผนที่ K-Control ทำให้พลาดเหตุการณ์สำคัญ (3.90.0)
ตัดการสตรีมอัตโนมัติตามนโยบายขององค์กร
ผู้ดูแลกำหนดเวลาสูงสุดของการดูสตรีมต่อครั้งได้ในหน้า ตั้งค่า → Stream Sessions (เช่น 30 / 60 / 600 วินาที) — เมื่อครบเวลา ระบบจะตัดสตรีมและคืน <video> ให้เบราว์เซอร์อัตโนมัติทั้งหน้า Live (popup แผนที่ + แถบข้าง) และ Dashboard popup กล้อง ทันที พร้อมส่งบันทึก analytics แยกเหตุการณ์ "ครบเวลา (sessionTimeout)" ออกจาก "ผู้ใช้ปิดเอง (user)" ให้ทีมรายงานวิเคราะห์ได้แม่นยำขึ้น — ถ้าผู้ดูแลไม่เปิดสวิตช์ ทุกอย่างยังดูได้ไม่จำกัดเหมือนเดิม (3.80.0)
Video player ตัวใหม่ของระบบเอง (เบื้องหลัง)
เริ่มเปิดทาง player WebRTC ตัวใหม่ที่ทีมเขียนเอง เตรียมแทนของเดิมที่อิงไลบรารีภายนอก ใช้กับทุกหน้าที่ดู live (Live / VideoWall / biDash / map / floor plan) — เริ่มต้นยังปิดอยู่ ผู้ดูแลระบบจะเปิดให้เป็นครั้งคราวเพื่อทดสอบบน dev/UAT ก่อนแล้วค่อยเปิดบน production ทีหลัง ระหว่างนี้ระบบเริ่มเก็บค่าวัดผลการเล่น (เวลาเริ่มเล่นจริง, bitrate, fps, jitter) ส่งไปวิเคราะห์ เพื่อสรุปคุณภาพสตรีมในระดับองค์กรได้ในรุ่นถัดไป (3.79.0)
โลโก้ + ลายน้ำทับวิดีโอสตรีม — แสดงผลจริงบนหน้า Live ทุกหน้าแล้ว
รุ่นนี้ "เปิดสวิตช์" ให้โลโก้และลายน้ำที่แอดมินตั้งไว้ในหน้า ตั้งค่า → Stream Sessions แสดงผลทับวิดีโอจริงๆ บนทุกหน้าที่ดูสด — VideoWall (ทุกช่อง), Live (preview ในแถบข้าง + popup เมื่อย่อแถบข้าง + popup บนแผนที่), Dashboard popup กล้อง — ตามค่า Apply-to ที่เลือกไว้ โหมด "สุ่ม" (anti-tamper) เปลี่ยนตำแหน่งและมุมเอียงของลายน้ำตามรอบที่ตั้งไว้ (1-60 วินาที); ถ้าปิดสวิตช์โลโก้/ลายน้ำหรือยกเลิก Apply-to ของหน้าใดหน้านึง โอเวอร์เลย์จะหายทันที (3.78.0)
ดูสตรีมสดผ่านระบบใหม่ — ปลอดภัยขึ้น + รองรับ AIBOX
เปลี่ยนช่องทางดู FLV ของกล้อง ATA / AIBOX มาผ่านระบบ klynx-api แทนต่อตรงไป edgeAI — ระบบจะขอ ticket แบบใช้ครั้งเดียวก่อนเปิดสตรีม โทเค็นของ edgeAI ไม่หลุดมาฝั่งผู้ใช้อีกแล้ว ใช้กับ /live, /biDash, /videowall, /map, และหน้าแก้ไขกล้อง
AI Intelligence (Beta) — หน้าใหม่
เปิดเมนูใหม่ /intDash สำหรับดูเหตุการณ์ AI / Edge AI แบบ realtime แยกออกจากหน้า Dashboard เดิม (ที่เน้น Livestream) — เฟส 2 ตามแผน K-LYNX Dashboard Evolution พร้อมโครงหน้าและสีตามระดับความรุนแรง (สูง/กลาง/ต่ำ/ข้อมูล) วิดเจ็ตจริง (KPI / แผนที่ AI / feed / สถิติด้านล่าง) ทยอย ship เป็น chore B-2 / B-3 / B-4 — ตอนนี้เป็นเฟส beta โหมดเปิดให้ผู้ดูแลสิทธิ์ลองเปิดได้ที่หน้า "ระบบผู้ใช้ → สิทธิ์ → จัดการเมนู"
AI Investigation Center
หน้า /ksearch/chats เปลี่ยนเป็น workspace สืบค้นเหตุการณ์จากกล้องด้วย AI พร้อม cards, timeline และ map context
อัปเดตสถานะอุปกรณ์แบบ Real-time ทุกหน้า
หน้า Dashboard / K-Control / VideoWall / รายการกล้อง / รายการ kcontrol / Map / mapif รับสถานะออนไลน์-ออฟไลน์และเหตุการณ์ใหม่ทันที โดยไม่ต้องกด refresh — ระบบเชื่อมต่อแบบใหม่ที่ปลอดภัยขึ้นและไม่หลุดสิทธิ์ข้ามองค์กร
หน้า K-Control Temperature
ดูอุณหภูมิย้อนหลังต่ออุปกรณ์ พร้อมกราฟ + ตั้งเกณฑ์เตือนได้ที่หน้า /kcontrol/temperature
กำหนดสิทธิ์เป็นรายคน
เลือกได้ว่าจะให้ใครในหน่วยงานเห็นกล้อง / kcontrol ตัวไหนบ้าง โดยไม่ต้องสร้างกลุ่มสิทธิ์ใหม่ทุกคน
ไอคอนกล้องบนแผนที่ตามกลุ่ม
แต่ละกลุ่มอุปกรณ์ตั้งไอคอนของตัวเองได้ — แยกสีตอนออนไลน์ / ออฟไลน์ ดูแผนที่แล้วเข้าใจสถานะทันที
สิทธิ์เข้าถึง Edge Device
จำกัดได้ว่าใครเห็น Edge ตัวไหนบ้าง (ATA / SVMS / iboc) — เหมือนระบบสิทธิ์กล้องที่มีอยู่แล้ว
Export รายชื่อ / กล้อง เป็น Excel ทุกหน้า
ของเดิม export ได้แค่หน้าปัจจุบัน ตอนนี้ดึงครบทั้งองค์กร พร้อมใช้งานทันที
เปิด / ปิด Permission Profile
หยุดใช้งาน Profile ชั่วคราวได้โดยไม่ต้องลบ — ค่า OU / Member ที่ตั้งไว้คงเดิม
ปิดช่องโหว่สตรีมข้ามสิทธิ์
ผู้ใช้ที่ไม่มีสิทธิ์ดูกล้อง จะเปิดสตรีมไม่ได้แล้ว แม้รู้รหัสกล้อง — เดิมเช็คแค่ระดับองค์กร
ประวัติเวอร์ชัน
รายละเอียดการเปลี่ยนแปลงทั้งหมด
หน้า AI Intelligence ยกเครื่อง: แผนที่ Digital Twin 3 มิติ + การ์ดสถิติเรืองแสง + ภาพเหตุการณ์ใหญ่ขึ้น
Features12
- K-Control เลือก Server preset ตอน Save & Sync ได้แล้ว — ผู้ดูแลตั้งค่าปลายทาง server ไว้ฝั่ง backend แล้ว operator เลือกชื่อ preset ในหน้า /kcontrol หรือ /kcontrol/edit/:id ได้ โดยหน้าเว็บไม่เห็นรหัสผ่านหรือใบรับรอง (4.24.0 + klynx-api 4.145.0)
- เมนูในระบบและประเภทอุปกรณ์ Edge แสดงตามสิทธิ์ License — เมนูกลุ่มงาน (ค้นหา, ระบบควบคุม, Ingest, Watchman, Camera AI, AI Intelligence, ศูนย์ข้อมูลสถานี) แสดงเมื่อมีทั้งสิทธิ์ผู้ใช้และ License เปิดฟังก์ชันนั้น (เมนูตั้งค่าพื้นฐาน + Floor Plans เปิดให้ใช้เสมอ); หน้าเพิ่ม Edge แสดงเฉพาะประเภทที่อนุญาต; ผู้ดูแลแพลตฟอร์มกำหนดฟังก์ชัน/ประเภท Edge/เพดาน EPS ได้ในหน้าจัดการ License (4.17.13 + klynx-api 4.126.0)
- แผนที่ AI Intelligence ปักหมุดเฉพาะ "เหตุการณ์รุนแรง" — คนใน Blacklist หรือเหตุการณ์ที่ตั้งระดับความรุนแรงสูง — เลิกปักหมุดใบหน้าทั่วไปทุกใบจนแผนที่รก (รายการเหตุการณ์ด้านข้างยังเห็นครบเหมือนเดิม) และการ์ด Blacklist บนแดชบอร์ด BI ที่เคยว่างสำหรับกล้อง AIBOX กลับมาแสดงคนใน Blacklist ล่าสุดได้ทั้งตอนโหลดหน้าและแบบเรียลไทม์ (4.12.0 + klynx-api 4.124.2)
- รายงานสรุป Edge AI ใช้ข้อมูลจริง — การ์ดสรุป กราฟแนวโน้ม สัดส่วนเหตุการณ์ นับคนแยกตามโซน (ใหม่) สถานะอุปกรณ์ และตารางเหตุการณ์ล่าสุด เลือกช่วงวันที่ได้ พร้อมโทนการ์ดสถิติแบบ AI Intelligence ทั้งหมวด Edge AI (4.6.0 + klynx-api 4.108.0)
- ล้างเครื่องกลับค่าเริ่มต้น (Factory Reset) — หน้าการตั้งค่า → การตั้งค่าระบบ เพิ่มส่วน "พื้นที่อันตราย" ให้ผู้ดูแลแพลตฟอร์มสั่งล้างข้อมูลทั้งเครื่องกลับสู่ค่าเริ่มต้นได้เอง (เฉพาะเครื่องแบบติดตั้งในสถานที่) พร้อมขั้นตอนยืนยันหลายชั้น: พิมพ์ชื่อเครื่อง ติ๊กรับทราบ กรอกรหัสผ่านซ้ำ และผู้อนุมัติคนที่สองถ้าตั้งค่าไว้ — เห็นความคืบหน้าสดทีละขั้น เสร็จแล้วพาออกจากระบบอัตโนมัติ (4.5.1 + klynx-api 4.107.0)
- เชื่อมต่อกล้องจากระบบ NX Witness (Network Optix) — หน้าระบบอุปกรณ์ → Edge เพิ่มประเภทอุปกรณ์ใหม่ กรอกที่อยู่เซิร์ฟเวอร์และบัญชี NX แล้วกดซิงค์ ระบบดึงกล้องทั้งหมดเข้ามาใช้งานใน Klynx อัตโนมัติ พร้อมสรุปผลว่าพบ/เพิ่ม/อัปเดตกล้องกี่ตัว และตั้งรอบซิงค์อัตโนมัติได้ (4.4.0 + klynx-api 4.105.0)
- แผนที่ Digital Twin — แผนที่เหตุการณ์บนหน้า AI Intelligence เป็นมุมเอียง 3 มิติ เห็นอาคารยกตัวขึ้นจริงเมื่อซูมเข้าเมือง เหตุการณ์ใหม่มีวงแหวนกระเพื่อมตามสีความรุนแรง เปิดหน้าครั้งแรกกล้องบินเข้าหาพื้นที่เหตุการณ์ และเหตุบัญชีดำกล้องจะดิ่งลงไปที่จุดเกิดเหตุก่อนเปิดรายละเอียด — สลับ 2D/3D หรือกลับแผนที่แบบคลาสสิกได้ที่มุมขวาบน (4.3.0)
- เหตุการณ์หลายรายการที่เกิดจุดเดียวกัน กดแล้วกางออกเป็นวงรอบตำแหน่งจริง (เรียงใหม่สุดไว้บนสุด) เลือกดูทีละเหตุการณ์ได้ ไม่ทับกันเป็นจุดเดียวอีกต่อไป (4.3.0)
- ปุ่ม LIVE เปิด/ปิดได้แล้ว — กดพักการรับข้อมูลเรียลไทม์ชั่วคราวเมื่อต้องการดูข้อมูลนิ่ง ๆ แล้วกดเปิดกลับเมื่อพร้อม ระบบจะดึงข้อมูลล่าสุดให้ก่อนค่อยเชื่อมต่อเรียลไทม์ต่อ มีทั้งบนหน้า AI Intelligence และหน้าแผนที่ระบบควบคุม (4.3.0)
- แผนที่เหตุการณ์เรียลไทม์บนหน้า AI Intelligence เปลี่ยนเป็นแผนที่เวกเตอร์ WebGL คมชัดทุกระดับซูม (เปิดให้อัตโนมัติ) — หมุดเหตุการณ์ ป๊อปอัพ และการเด้งไปบัญชีดำทำงานเหมือนเดิมทุกอย่าง ถ้าเครื่องไม่รองรับ ระบบสลับกลับแผนที่แบบเดิมให้เอง (4.2.0)
- การ์ดสถิติด้านบนโฉมใหม่ — แสงเรืองตามสีของแต่ละตัวชี้วัด ไอคอนชิปสี และตัวเลขแบบ tabular อ่านง่าย (4.2.0)
- ภาพเหตุการณ์ในรายการ "เหตุการณ์ล่าสุด" ใหญ่ขึ้น (40→64px) พร้อมแถบสีระดับความรุนแรงข้างรายการ และกดได้ทั้งแถวเพื่อเปิดภาพเต็ม (4.2.0)
Improvements32
- AI Intelligence รอ active Workspace ก่อนโหลด KPI, analytics และสมัคร realtime topic ป้องกัน KAPI 400 และ WebSocket no-active-org console error ระหว่าง cold load (4.27.61)
- หน้า protected และ authenticated sidebar รอทั้ง hydration, auth ready และ authenticated session ก่อน mount ป้องกัน KAPI 401 และ realtime no-token error ระหว่าง cold-load redirect ไป SSO (4.27.60)
- Cold load ของหน้าที่ต้องล็อกอินรอ app mounted ก่อนเปลี่ยนไป /login และ SSO เพื่อไม่รื้อ SSR auth shell ระหว่าง hydration โดยยังเก็บ intended URL และตรวจสิทธิ์ตามเดิม (4.27.59)
- อัปเดต SVGO ของ Nuxt IPX เป็น 4.0.2 เพื่อแก้ CVE-2026-29074 และ GHSA-2p49-hgcm-8545 ตาม security gate โดยไม่เปลี่ยน route หรือ branding contract (4.27.58)
- เติม Sharp dist เข้า target จริงของ Nitro ด้วย Node realpath ระหว่างประกอบ final image โดยไม่ hardcode store version และไม่ให้ Kaniko คัดลอกผ่าน symlink (4.27.57)
- ระบบภาพย่อและ Nuxt IPX ใช้ Sharp 0.35.0 ชุดเดียว พร้อม libvips linux-x64 ใน resolver path โดยไม่คัดลอกทับ symlink ของ Nitro และคง WebP final-image gate (4.27.56)
- แก้ Kaniko ให้รักษา Sharp dependency graph ที่ Nuxt IPX รวมไว้ใน .output แทนการคัดลอก package ซ้ำทับ symlink พร้อมคง final-image WebP smoke gate ก่อน publish (4.27.54)
- หน้าจัดการผู้ใช้และ shell ส่งโลโก้ deployment เป็น WebP ขนาด 1x/2x ตามช่อง 28–32px พร้อม cache ตัวแปรภาพ และรักษา auth/sidebar tree ให้ตรงกันจน hydration เสร็จ จึงลด payload/LCP และแก้ console hydration mismatch โดยไม่เปลี่ยน session หรือ permission (4.27.53)
- Secure Klynx Console แสดง Identity, Workspace และ Console ตั้งแต่เฟรมแรก เพิ่ม contrast/ขนาดไอคอน และเลื่อนได้อย่างปลอดภัยใน viewport เตี้ยโดยไม่เปลี่ยน geometry ของ operator shell (4.27.52)
- เก็บ Sharp JavaScript package ครบทั้งชุดใน Nitro runtime หลัง Jenkins ตรวจพบว่ารอบก่อนมี package metadata แต่ขาด dist entrypoint โดยคง final-image WebP smoke check เป็น gate ก่อน publish (4.27.51)
- แก้ production image ให้บรรจุ native addon และ libvips ของ Sharp ครบ พร้อมทดสอบแปลง WebP ใน final runtime ก่อน publish เพื่อป้องกัน missing libvips หลัง deploy (4.27.50)
- อัปเดต Sharp เป็น 0.35.0 เพื่อแก้ GHSA-f88m-g3jw-g9cj และช่องโหว่ libvips ที่เกี่ยวข้อง โดยไม่เปลี่ยน contract ของ private thumbnail (4.27.49)
- AI Intelligence ใช้ private WebP thumbnail ขนาดไม่เกิน 128px เมื่อ event ไม่มี thumbnail role, ลด built-in logo จาก 1024px เหลือ 64px, lazy-load notification/tour renderer, ย้าย Leaflet CSS ไป route map และเพิ่ม client source map สำหรับ browser diagnostics โดยคง original image ไว้ให้ lightbox (4.27.48)
- AI Intelligence แยก Map, Analytics และ Lightbox เป็น async route chunks; Map/Analytics เริ่มเมื่อ viewport ใกล้ถึงด้วย IntersectionObserver และ Lightbox เริ่มเมื่อเปิดจริง โดยใช้ fallback ขนาดเดิมป้องกัน layout shift (4.27.47)
- AI Intelligence จองความกว้างเมนูด้านข้างก่อนตรวจสอบสิทธิ์ โดยยังไม่เรียกข้อมูลองค์กรก่อน session พร้อมทำ placeholder เมนูและกราฟให้สูงเท่าของจริง ลดการขยับของหน้าระหว่างเปิดใช้งาน (4.27.46)
- AI Intelligence โหลดภาพเหตุการณ์เฉพาะรายการที่อยู่ใน viewport/ระยะเตรียม ยกเลิก request ที่หมดสิทธิ์ และไม่สร้าง media request จาก Lightbox ที่ยังปิด ช่วยลด initial payload โดยคง auth/org isolation, Digital Twin และ realtime เดิม (4.27.45)
- หัวหน้าจอทั้งระบบเปลี่ยนเป็น 2 บรรทัด: “หมวด / ชื่อหน้า” และคำอธิบาย พร้อมขยายชื่อหน้าหลักให้เด่น, คืนลิงก์ Docs/Changelog ที่หน้าแรกและ footer, จัดลิขสิทธิ์ซ้ายกับ resources/version ขวา และเพิ่มวงเน้นรูปผู้ใช้ (4.27.43)
- หน้าปฏิบัติการใช้พื้นหลัง network แบบ static ความเข้มต่ำแทน canvas animation ต่อเนื่อง เพื่อคืน CPU/GPU ให้แผนที่ กราฟ และวิดีโอ; หน้าสาธารณะยังคง animation ตามการตั้งค่าผู้ใช้ (4.27.43)
- หัวหน้าจอมาตรฐานทั้งระบบเป็น 3 บรรทัดในแถบสูง 3rem เท่ากับหัวเมนูด้านข้าง ไม่มีมุมโค้งคั่น และปุ่มของหน้าเรียงต่อก่อนกระดิ่งกับรูปผู้ใช้; เอา footer เปล่าของ sidebar ออก พร้อมปรับ Dashboard Wall ให้ใช้ header มาตรฐาน (4.27.41)
- หน้ารายละเอียด KConnect แบ่งหน้ารายการสตรีมครั้งละ 6 กล้อง และหน้าแก้ไข Edge Node เลือกละติจูด/ลองจิจูดจากแผนที่ตาม provider ที่ตั้งไว้ได้แล้ว (4.27.41)
- หน้า AI Investigation Center เลือกวิธีเรียงผลการค้นหาได้แล้ว — "คะแนนความใกล้เคียง" (ค่าเริ่มต้น) หรือ "ล่าสุด" เปลี่ยนแล้วระบบค้นหาให้ใหม่ทันที (4.17.21)
- แผนที่ AI Intelligence ปักหมุดเหตุการณ์รุนแรงได้จริงแล้ว พร้อมรูปใบหน้าที่จับได้ในป๊อปอัพ กดที่รูปเพื่อขยายดูเต็มจอได้ และการ์ด Blacklist บนแดชบอร์ด BI แสดงรูปได้แล้ว (เดิมรูปไม่ขึ้นเพราะต้องโหลดผ่านระบบยืนยันตัวตน) — คู่กับ klynx-api 4.124.3 (4.12.1)
- แดชบอร์ดวิเคราะห์ (Analytics) เลือกช่วง "วันและเวลา" ได้แล้วเช่นกัน — กรองสถิติการรับชมตามช่วงเวลาที่เลือก (4.9.10)
- แดชบอร์ด Ingest เลือกช่วง "วันและเวลา" ได้แล้ว (เช่น 08:00–12:00 ของวันนี้) — ค่าเริ่มต้นคือวันนี้ตั้งแต่เที่ยงคืนถึงปัจจุบัน การ์ดและกราฟกรองตามช่วงเวลาที่เลือก ส่วนสถานะอุปกรณ์เป็นค่าปัจจุบันเสมอ (4.9.9)
- หน้าเหตุการณ์ (Ingest) แก้การ์ดสรุปที่ไม่ขึ้นตัวเลขเมื่อเลือกช่วงหลายวัน และเพิ่มกดการ์ด (เหตุการณ์ทั้งหมด/ใบหน้า/ป้ายทะเบียน) เพื่อกรองตารางตามประเภทนั้นทันที (4.9.8)
- แดชบอร์ด Ingest ปรับกราฟแนวโน้มเหตุการณ์ให้สวยและอ่านง่ายขึ้น (กราฟแท่งซ้อนพร้อมแกน/คำอธิบาย/ทูลทิป) และตั้งค่าเริ่มต้นเป็น "วันนี้" (เที่ยงคืนถึงปัจจุบัน) — เลือกวันเดียวจะเห็นแนวโน้มรายชั่วโมง (4.9.5)
- แดชบอร์ด Ingest เพิ่มการ์ด "คนเข้า-ออกทั้งหมด" สรุปยอดรวมพร้อมแยกเข้า/ออก และหน้า AI Intelligence ตัดการ์ด "ความแม่นยำเฉลี่ย" ออกให้แถบสรุปกระชับขึ้น (4.9.4)
- เมนู Ingest กระชับขึ้น เหลือ "แดชบอร์ด" กับ "เหตุการณ์" — และหน้าแดชบอร์ด Ingest ยกเครื่องเป็นมุมมองสรุปแบบเต็ม (การ์ดสรุป กราฟแนวโน้ม สัดส่วนเหตุการณ์ นับคนแยกตามโซน สถานะอุปกรณ์ และตารางบัญชีดำ/เหตุการณ์ล่าสุด) เลือกช่วงวันที่ได้เหมือนแดชบอร์ดหลัก (4.9.3)
- หน้า AI Intelligence และแดชบอร์ดวิเคราะห์ลื่นขึ้นมากเมื่อมีเหตุการณ์เข้าพร้อมกันจำนวนมาก — ระบบรวบเหตุการณ์ช่วงพีคมาแสดงเป็นชุดเดียวแทนการอัปเดตทีละรายการ จอจึงไม่หน่วงหรือค้าง และมีป้าย "ช่วงพีคย่อ +N" บอกจำนวนที่ถูกรวบในรายการเหตุการณ์ล่าสุด (4.9.0)
- หน้าการตั้งค่าทุกแท็บแสดงผลเต็มความกว้างจอ — เดิมเนื้อหาถูกบีบเป็นคอลัมน์แคบกลางจอ (4.5.1)
- กราฟวิเคราะห์แถวล่างไม่ทับกันแล้ว — เพิ่มความสูงกราฟและจัดระยะคำอธิบาย (legend) ใหม่ทั้ง 4 การ์ด
- แดชบอร์ดวิเคราะห์ (biDash) โหมด WebGL: ป๊อปอัพดูภาพสดเปิดอยู่เหนือหมุดเสมอ พร้อมเลื่อนแผนที่ให้เห็นป๊อปอัพเต็มใบอัตโนมัติ
Fixes12
- ไอคอนบนแท็บใช้ตราแมวส้ม Klynx แทนรูปประกายสีเขียว พร้อมรักษา favicon เฉพาะองค์กรที่ตั้งไว้ (4.27.82)
- แก้ runtime error บน AI Intelligence ตอนแสดงเวลาเหตุการณ์, แผนที่ BI Dashboard ที่ขาด maxZoom และตัวกรองผลลัพธ์ Audit Logs ที่ใช้ค่า Select ว่าง (4.27.42)
- หน้า ระบบควบคุม (K-Control): คลิกแถวอุปกรณ์ในตารางแล้วการ์ดรายละเอียดด้านบนแสดงข้อมูลได้แล้ว (ชื่อ, เขต, พิกัด, สถานะ ฯลฯ) — เดิมคลิกแล้วการ์ดเปิดขึ้นแต่ทุกช่องว่างเป็น "-" เพราะรับพารามิเตอร์แถวผิดตำแหน่ง ตอนนี้ทำงานเหมือนหน้าอุปกรณ์กล้อง (4.25.8)
- หน้า ระบบควบคุม (K-Control): อัปเดตเฟิร์มแวร์แบบหลายเครื่องพร้อมกัน (Bulk OTA) ใช้งานได้แล้วทั้งแบบใส่ URL และแบบเลือกไฟล์ .bin — เดิมส่งไปที่หัวข้อ (topic) ที่อุปกรณ์ไม่ได้ฟังจึงล้มเหลว (URL ขึ้น 400, ไฟล์ขึ้น 500); ตอนนี้แบบไฟล์อัปโหลด .bin ครั้งเดียวแล้วสั่งอัปเดตทุกเครื่องที่เลือกในคำสั่งเดียว (4.25.8 + klynx-api 4.146.4)
- หน้า ระบบควบคุม → แผนที่ K-Control และ mapif: หลัง realtime ทำงานแล้ว ระบบไม่ยิง REST probe ชุดเก่า 3 endpoint ซ้ำทุกครั้งที่มีสถานะอุปกรณ์เข้ามาอีกต่อไป — initial load, ค้นหา, กดรีเฟรช และตัวกรองวันยังโหลด REST ตามปกติ (4.24.0)
- หน้า ระบบควบคุม → แผนที่ K-Control และ mapif: รายการอุปกรณ์ด้านขวาไม่แสดงอุปกรณ์ซ้ำแล้ว — ระบบรวมรายการตาม Hardware ID ก่อน แล้วค่อย fallback เป็น ID ของอุปกรณ์ ทำให้การโหลดซ้ำจาก REST/realtime ไม่เพิ่มแถวซ้ำและตัวเลขสรุปกลับมาตรงกับจำนวนอุปกรณ์จริง (4.23.4)
- หน้าแผนผังอาคารทั้งหมด (รายการ, อัปโหลดแผนผัง, ตัวจัดวางกล้อง) แสดงเป็นภาษาไทยตามที่ตั้งค่าไว้แล้ว — เดิมยังเป็นภาษาอังกฤษทั้งหมดแม้ตั้งภาษาไทย (4.17.20)
- หน้าศูนย์กลางแผนที่ระบบ (ตั้งค่า) และหน้าอัปโหลดแผนผังอาคาร เคารพการตั้งค่าผู้ให้บริการแผนที่แล้ว — เมื่อเลือก OpenStreetMap จะแสดงแผนที่ OpenStreetMap ไม่ดึง Google Maps มาแสดงอีก (4.17.20)
- ตั้งค่าผู้ให้บริการแผนที่เป็น Google แล้วมีผลกับหน้าดูสด แดชบอร์ด BI และหน้าแก้ไขกล้องครบทุกหน้า — ถ้ายังไม่ได้ใส่คีย์ Google จะแสดงแผนที่ Google โหมดทดลอง (มีลายน้ำ) ให้ใช้ดูได้ก่อน เมื่อใส่คีย์แล้วจะเป็นโหมดใช้งานจริง (เดิมพอไม่ใส่คีย์ระบบสลับไปแผนที่ OpenStreetMap ให้เอง) (4.16.11)
- ดูกล้องบนมือถือแนวนอน: แตะหมุดกล้องแล้วป๊อปอัพภาพสดไม่ปิดเองทันทีอีกต่อไป (4.16.11)
- หน้าแก้ไขกล้อง: วาดจุดพื้นที่สนใจ (ROI) บนภาพพรีวิวแล้วจุดไปลงตรงตำแหน่งที่คลิกพอดี — เดิมจุดจะเพี้ยนออกจากตำแหน่งที่กดเมื่อภาพมีแถบดำขอบบน-ล่างหรือซ้าย-ขวา (4.16.10)
- หน้าแรก หน้าดูสด และเมนูด้านข้าง ไม่เห็นชื่อ/โลโก้ค่าเริ่มต้นกระพริบก่อนแล้ว — แสดงโครงโหลด (skeleton) รอจนได้แบรนด์ที่ตั้งไว้ค่อยขึ้นจริง และสีหลักของแบรนด์ถูกนำไปใช้กับปุ่ม/องค์ประกอบหลักทั้งระบบ (4.9.1)
แดชบอร์ดวิเคราะห์: แผนที่โฉมใหม่แบบ WebGL (เปิดใช้เองได้)
Features2
- ปุ่ม "WebGL" ใหม่บนแถบเครื่องมือแผนที่ของแดชบอร์ดวิเคราะห์ (เฉพาะโหมดแผนที่ OpenStreetMap) — เปิดแล้วได้แผนที่แบบเวกเตอร์คมชัดทุกระดับซูม พร้อมวงเรืองแสงตามสถานะกล้อง (เขียว=ออนไลน์ แดง=ออฟไลน์ เหลือง=ปิดปรับปรุง) และกลุ่มกล้องแบบฟองนับจำนวน กดแล้วซูมเข้าอัตโนมัติ (4.1.0)
- ระหว่างเปิดดูภาพสดจากหมุดกล้อง สถานะกล้องตัวอื่นบนแผนที่ยังอัปเดตต่อเนื่อง — โหมดเดิมต้องรอปิดป๊อปอัพก่อน (4.1.0)
Improvements2
- ธีมแผนที่ (Standard / Dark / Voyager) และโหมดมืด-สว่าง ใช้ได้กับแผนที่ WebGL เหมือนโหมดเดิม
- ถ้าเครื่องไม่รองรับหรือโหลดแผนที่ WebGL ไม่สำเร็จ ระบบสลับกลับแผนที่แบบเดิมให้อัตโนมัติ — ปิดกลับได้ตลอดด้วยปุ่มเดิม (ค่าเริ่มต้นคือปิด)
ยกเครื่องหน้าแรกใหม่ทั้งหน้า + คู่มือผู้ใช้/ผู้ดูแลระบบ
Features3
- หน้าแรกโฉมใหม่ (4.0.0) — เลื่อนหน้าจอแล้วภาพและข้อความเคลื่อนไหวรับกับการเลื่อน สไตล์เว็บเปิดตัวสินค้าชั้นนำ พร้อมภาพหน้าจอจริงของระบบ (แดชบอร์ดวิเคราะห์, วิดีโอวอลล์, แผนที่สด, เหตุการณ์ AI, มุมมองมือถือ) — เครื่องที่เปิดโหมด "ลดการเคลื่อนไหว" ระบบปิดอนิเมชันให้อัตโนมัติ และบนมือถือใช้เอฟเฟกต์แบบเบาเพื่อความลื่น
- คู่มือใหม่ 2 เล่มในหน้าเอกสาร — "คู่มือผู้ใช้" (ดูกล้องสด วิดีโอวอลล์ ค้นหาเหตุการณ์ แชร์ลิงก์ดูสด) และ "คู่มือผู้ดูแลระบบ" (ตั้งหน่วยงาน เพิ่มผู้ใช้/กล้อง กำหนดสิทธิ์ทีละขั้น พร้อมเช็กลิสต์เปิดองค์กรใหม่) เปิดอ่านได้โดยไม่ต้องเข้าสู่ระบบ
- ลงทะเบียนรูปใบหน้าที่หน้าโปรไฟล์ — อัปโหลดไฟล์หรือถ่ายเซลฟี่จากกล้องของเครื่อง (รองรับมือถือ) ต้องติ๊กยินยอมก่อนบันทึก ลบได้ตลอด (3.118.0 + klynx-api 4.103.0)
Improvements2
- หน้าเริ่มต้นใช้งานในเอกสารอัปเดตเนื้อหาให้ตรงระบบปัจจุบัน — เพิ่มเหตุการณ์ AI, วิดีโอวอลล์แบบกำหนดผังเอง, การแชร์ลิงก์ดูสดสาธารณะ และตัดข้อมูลแผนงานเก่าที่เลยกำหนดออก
- เมนูด้านข้างของหน้าเอกสารชี้เฉพาะหน้าที่มีจริงแล้ว — เดิมมีลิงก์หลายรายการกดแล้วขึ้น "ไม่พบหน้า"
เปิด AI วิเคราะห์ภาพให้กล้อง + หน้าเหตุการณ์ AI
Features3
- เปิด AI ให้กล้องรายตัว — ในหน้า ระบบอุปกรณ์ → กล้อง (แผงรายละเอียดกล้อง) เพิ่มปุ่ม "เปิด AI" พิมพ์ prompt บอกสิ่งที่อยากให้ตรวจจับ (เช่น "fire burning in tank") ระบบจะส่งสตรีมของกล้องตัวนั้นไปให้บริการ AI วิเคราะห์ต่อเนื่อง แก้ prompt หรือปิดได้ตลอด รองรับทั้งกล้อง RTSP ทั่วไปและกล้อง AIBOX (ระบบแปลงสตรีมให้อัตโนมัติเบื้องหลัง) — ปุ่มจะแสดงเฉพาะองค์กรที่ได้รับสิทธิ์ "Enable Fire AI"
- ป้ายสถานะ AI ที่กล้อง — กล้องที่เปิด AI จะมีป้าย "AI ทำงาน" และถ้า AI พบเหตุจะมีป้าย "พบเหตุ" พร้อมคำบรรยายและเวลา
- หน้าใหม่ "เหตุการณ์ AI" — /systemDevices/cameras/ai-events รวมเหตุการณ์ที่ AI ตรวจพบทั้งองค์กร เรียงใหม่ล่าสุดก่อน ค้นหา/กรองตามกล้องและช่วงเวลาได้ เห็นเฉพาะองค์กรที่ได้รับสิทธิ์ "AI Events" (3.110.0 + klynx-api 4.96.0)
Improvements5
- ลายน้ำ/โลโก้บนกล้องสาธารณะ /live — ผู้ชมที่ไม่ได้ล็อกอินจะเห็นลายน้ำ (watermark) และโลโก้องค์กรทับบนภาพสดตามที่ผู้ดูแลตั้งค่าไว้ เหมือนกับตอนล็อกอิน ทั้งตัวเล่นด้านข้างและป๊อปอัพบนแผนที่ ช่วยกันการนำภาพไปใช้ต่อ (3.111.0 + klynx-api 4.97.0)
- เห็นลายน้ำตอนดูเต็มจอ — เพิ่มปุ่ม "เต็มจอ" ของระบบบนตัวเล่นวิดีโอ /live, /videowall, /biDash เพื่อให้ลายน้ำยังแสดงตอนเต็มจอ (เดิมกดปุ่มเต็มจอของเบราว์เซอร์แล้วลายน้ำหาย) (3.111.0)
- หน้าจัดการสิทธิ์ลื่นขึ้นเมื่อมีโปรไฟล์เยอะ — รายชื่อโปรไฟล์สิทธิ์ในหน้า เมนู และ ทรัพยากร เปลี่ยนเป็นเลื่อนลงเพื่อโหลดเพิ่มทีละชุด (ไม่ค้างที่ 250 รายการแรกอีกต่อไป) พร้อมช่องค้นหาที่ค้นจากทั้งองค์กร ส่วนหน้า API Token เปลี่ยนเป็นแบ่งหน้าแบบเลือกเลขหน้า (3.112.0)
- หน้าจัดการสิทธิ์เปิดเร็วขึ้นในองค์กรที่มีหน่วยงานเยอะ — เลิกดึงรายชื่อสมาชิกของทุกหน่วยงานพร้อมกันตอนเปิดโปรไฟล์ และตัวเลขจำนวนสมาชิกบนป้ายหน่วยงานแม่แม่นยำขึ้น (รวมหน่วยงานที่มีสมาชิกเกิน 250 คน) (3.114.3)
- วิดีโอวอลล์ (Video Wall) เพิ่มฟีเจอร์ — กรองกล้องตามสถานะออนไลน์/ออฟไลน์, ปุ่มเต็มจอที่ซ่อนเมนู/ส่วนหัว/รายการกล้องให้เห็นภาพเต็มที่ (กด ESC ออก), และปรับจำนวนช่องแบบกำหนดเองด้วยการลากเลือกตาราง แถว × ช่อง เหมือนแทรกตารางใน Excel (สูงสุด 6×6) (3.115.0–3.116.0)
Fixes6
- ลดการเรียก API ที่ไม่จำเป็นบนหน้า /live สำหรับผู้ชมที่ไม่ได้ล็อกอิน (ตัดการเก็บสถิติเบื้องหลังที่เดิมขึ้น error 401) — ใช้งานหน้าเดิมได้ตามปกติ (3.111.0)
- กรองหน่วยงานบนแดชบอร์ดแล้วเห็นกล้องที่ให้สิทธิแบบเลือกรายตัวได้แล้ว — เดิมถ้าให้สิทธิกล้องแบบเลือกทีละตัว (ไม่ได้ผ่านกลุ่มทรัพยากร) หน้า /biDash เลือกกรองหน่วยงานแล้วไม่ขึ้นกล้องเลย ตอนนี้หมุดบนแผนที่และตัวเลขกล้องออนไลน์/ออฟไลน์แสดงครบถูกต้อง (3.112.1 + klynx-api 4.99.0)
- กดดูกล้องแล้วเห็นวงโหลด "กำลังเชื่อมต่อสตรีม…" ทันที — เดิมกล้อง RTSP ทั่วไปจะขึ้นจอดำเฉย ๆ ระหว่างเชื่อมต่อจนเหมือนค้าง (มีเฉพาะกล้อง AIBOX/ATA ที่ขึ้นวงโหลด) ตอนนี้ทุกหน้า (/live, /videowall, /map, /biDash) แสดงวงโหลดตั้งแต่กดเล่นจนภาพแรกขึ้น (3.112.3)
- กล้องที่เพิ่งเปิดดูครั้งแรกแล้วติด ๆ ตอนนี้ลองเชื่อมต่อใหม่ให้อัตโนมัติ — เดิมถ้ากดดูกล้องจังหวะที่สตรีมยังตั้งต้นไม่เสร็จ จะเล่นไม่ขึ้นต้องกดใหม่เอง ตอนนี้ระบบลองซ้ำให้เองสั้น ๆ ภายใน 1-2 วินาที (3.112.4)
- แก้รายชื่อสมาชิกใน หน้าจัดการสิทธิ์ (ทั้งแท็บ เมนู และ ทรัพยากร) ที่หายเมื่อหน่วยงานมีสมาชิกเกิน 250 คน — เดิมจะแสดงแค่ 250 คนแรกเงียบ ๆ ทำให้เลือก/ตัดสมาชิกที่เหลือไม่ได้ ตอนนี้เลื่อนลงเพื่อโหลดเพิ่มทีละชุดจนครบ (3.113.2, 3.114.1)
- ซ่อนเมนู "แผนการใช้งาน" สำหรับผู้ใช้ทั่วไปในระบบที่เปิดใช้งานสัญญาแบบองค์กร (Enterprise) แล้ว — เดิมเมนูนี้ยังแสดงให้ผู้ใช้ทั่วไปแม้องค์กรจะเปิดใช้งานสัญญาองค์กรไปแล้ว (เห็นซ่อนเฉพาะผู้ดูแลระบบ) ตอนนี้ผู้ใช้ทั่วไปก็ไม่เห็นเมนูนี้แล้ว ส่วนการจัดการสัญญา/ใบอนุญาตยังเป็นหน้าที่ของผู้ดูแลระบบเหมือนเดิม (3.114.7)
โหมดซ่อมบำรุงกล้อง + เสริมความปลอดภัยกล้องสาธารณะ
Features2
- โหมดซ่อมบำรุงกล้อง — ในหน้า ระบบอุปกรณ์ → กล้อง เพิ่มปุ่ม "แจ้งซ่อม / ปิดซ่อม" รายแถว (และในแผงรายละเอียดกล้อง) กดแล้วใส่เหตุผลได้ ระบบจะทำเครื่องหมายว่ากล้องตัวนี้ปิดซ่อมตั้งใจ เดิมกล้องที่ปิดซ่อมจะขึ้น offline สีแดงปนกับกล้องที่เสียจริง ตอนนี้แยกชัด: ในรายการขึ้นป้าย "ซ่อมบำรุง" สีม่วงคราม, บนแผนที่ (ทั้ง Google และ OpenStreetMap) ขึ้นหมุดสีเหลืองอำพันแทนสีแดง, มีตัวกรอง "ซ่อมบำรุง" ดูเฉพาะกล้องที่กำลังซ่อมได้ (ใช้ร่วมกับตัวกรองออนไลน์/ออฟไลน์ได้) แผงรายละเอียดยังโชว์ "สถานะจริง" จากการตรวจเบื้องหลัง เหตุผล เวลาเริ่มซ่อม และผู้แจ้ง เพราะระบบยังตรวจสถานะจริงตลอด พอปิดโหมดซ่อมก็กลับมาแสดงสถานะจริงทันที (3.108.0 + klynx-api 4.93.0)
- ดูกล้องสาธารณะปลอดภัยขึ้น + กันการนำสตรีมไปฝังเว็บอื่น — หน้าแผนที่กล้องสาธารณะ /live ดูสดได้ลื่นขึ้นแม้ไม่ได้ล็อกอิน (รวมกล้อง AIBOX) โดยขอสิทธิ์เปิดสตรีมผ่านเซิร์ฟเวอร์ของเราเองทุกครั้ง ไม่เปิดช่องให้ดึงลิงก์ไปเล่นนอกระบบหรือฝัง (iframe) บนเว็บอื่น ถ้ากดเปิดถี่เกินไประบบจะขอให้พักแล้วกด "เล่นอีกครั้ง" เอง (3.107.0 + klynx-api 4.92.0)
Fixes1
- แก้แผนที่ในหน้า BI Dashboard ค้าง/เด้ง error เป็นบางครั้งตอนสลับหน้าเร็ว ๆ — เกิดจากแผนที่ยังเล่นภาพซูมค้างอยู่ขณะออกจากหน้า ตอนนี้ลื่นไม่สะดุดแล้ว
ส่งออก/นำเข้ากล้อง — อัปเดตความสะดวกและความปลอดภัย
Features11
- เพิ่มปุ่ม "ส่งออก Excel" ในหน้ารายการกล้อง — ดาวน์โหลดข้อมูลกล้องทั้งหมดเป็นไฟล์ Excel ได้ในคลิกเดียว
- ส่งออกข้อมูลกล้องรวมรหัสผ่านได้ — ต้องติ๊กกล่อง "รวมรหัสผ่าน" ก่อน ระบบจะแจ้งเตือนว่ารหัสผ่านจะถูกส่งออกแบบไม่เข้ารหัส และระบบจะบันทึกประวัติการดาวน์โหลดทุกครั้งเพื่อให้ผู้ดูแลตรวจสอบย้อนหลังได้
- สร้างกล้องใหม่ผ่านไฟล์ Excel ได้โดยไม่ต้องใส่ URL — กรอกแค่ชื่อ + ละติจูด + ลองจิจูดแล้วนำเข้าได้เลย เพิ่ม URL ทีหลังผ่านหน้าแก้ไขกล้อง
- ปุ่ม "Sync" รายแถวในหน้าจัดการกล้องกลับมาใช้กับกล้อง AIBOX ได้แล้ว — กดเพื่อสั่งระบบเช็คสถานะออนไลน์/ออฟไลน์ของกล้องตัวนั้นทันที (ไม่เกิน ~30 วินาที) ถ้ากล้องยังไม่ผูกกับ edge ระบบจะแจ้งว่า "edge ยังไม่ลงทะเบียน" ให้ไปตั้งค่าก่อน
- หน้าจัดการสิทธิ์ทรัพยากร: เพิ่มการ์ดสรุป "คนเข้าถึงได้จริง / กลุ่มทรัพยากร / อุปกรณ์ / กฎขัดแย้ง" ของแต่ละโปรไฟล์ (ตัวเลขจริงจากระบบ หักซ้ำ/ยกเว้นแล้ว)
- หน้าจัดการสิทธิ์ทรัพยากร: เลือก Resource Group แม่แล้วกลุ่มลูกอยู่ใน scope ทันที, กดตัดออกทั้งกลุ่มทรัพยากรที่กลุ่มลูกได้เลย และช่องเลือกอุปกรณ์มีโหมด ทั้งหมด/เลือกเฉพาะ/ตัดเฉพาะ เหมือนฝั่งสมาชิก
- หน้าจัดการสิทธิ์ทรัพยากร: แท็บเลือกอุปกรณ์เพิ่มปุ่มตัดออกทั้งกลุ่มทรัพยากรสำหรับกลุ่มลูกที่ inherited จาก “รวมกลุ่มย่อย” และปรับ icon จำนวนอุปกรณ์เป็นรูปเครือข่าย
- หน้าจัดการสิทธิ์เมนู: เพิ่มโหมดสมาชิก ทั้งหมด/เลือกเฉพาะ/ตัดเฉพาะ และปุ่ม "ตัดหน่วยงานแม่ทั้งหมด" ให้จำกัดสิทธิ์ที่สืบทอดจากหน่วยงานแม่ได้เหมือนหน้า Resource Permission
- หน้า /biDash: เพิ่มตัวกรองหน่วยงาน (OU) ที่ทำงานคู่กับตัวกรองกลุ่มกล้อง เลือกฝั่งใดก่อนก็ช่วยแนะนำอีกฝั่งตามสิทธิ์และความสัมพันธ์ที่ผูกไว้
- หน้ากลุ่มอุปกรณ์: เพิ่มแถบสรุปจำนวนกล้อง/K-Control/Edge ที่อยู่ในกลุ่ม vs ยังไม่ได้จัดกลุ่ม
- เพิ่มไอคอนหมุน "กำลังเชื่อมต่อสตรีม…" ระหว่างรอภาพในทุกหน้าที่ดูสด (Live, videowall, ป๊อปอัพกล้องบนแผนที่, หน้าทดสอบสตรีม) — ไม่เห็นจอดำเฉย ๆ จนเข้าใจผิดว่ากดไม่ติดแล้วกดซ้ำ
Improvements1
- จัดเมนูใหม่ให้เข้าใจง่ายขึ้น: เมนู "การตั้งค่าระบบ" เดิม (กล้อง/จัดกลุ่มอุปกรณ์/Edge) เปลี่ยนชื่อเป็น "การตั้งค่าอุปกรณ์" ให้ตรงกับเนื้อหา และย้ายหน้า "ลิขสิทธิ์และแพ็กเกจของระบบ" เข้าไปเป็นแท็บ License ในหน้าการตั้งค่า พร้อมเพิ่มแท็บ "การตั้งค่าระบบ" ไว้รองรับการตั้งค่าระดับระบบในอนาคต
Fixes3
- แก้ปุ่ม "ทดสอบสตรีม" ในหน้าแก้ไขกล้องที่กดแล้วเงียบไม่มีอะไรเกิดขึ้นกับกล้อง AIBOX (กล้อง AI ที่เชื่อมจากระบบ Gateway) — เดิมหน้านี้รองรับเฉพาะกล้องยี่ห้อ ATA ทำให้กล้อง AIBOX กดทดสอบแล้วไม่เริ่มเล่น ตอนนี้ดูภาพสดได้แล้ว
- แก้กล้อง AIBOX เล่นไม่ขึ้นบน videowall (เห็นจอดำ) — เดิมกล้องบางตัวถูกส่งไปเล่นผิดช่องทาง ตอนนี้เล่นได้ปกติ
- แก้ป๊อปอัพกล้อง AIBOX บนแผนที่หน้า Live ที่ขึ้นข้อความแดง "เปิดสตรีมไม่สำเร็จ ลองปิดแล้วเปิดใหม่" ทั้งที่กล้องปกติ — เกิดจากระบบรอภาพแรกไม่ทันแล้วแจ้งเตือนเร็วเกินไป ตอนนี้ไม่เตือนผิดแล้ว
AI Intelligence (Beta) realtime ลื่นขึ้น + เน้น Blacklist อัตโนมัติ
Features2
- หน้า AI Intelligence (Beta) /intDash — เปลี่ยนการรับข้อมูลเรียลไทม์เป็นแบบ "อัปเดตเฉพาะส่วนที่เปลี่ยน": เมื่อมีเหตุการณ์ใหม่ ระบบจะเติมรายการ, เพิ่มตัวเลข KPI ที่คำนวณจาก event ได้ทันที, และอัปเดตกราฟด้านล่างเฉพาะส่วนของเหตุการณ์นั้นโดยไม่ดึงข้อมูลทั้งหมดมาใหม่ ทำให้หน้าจอลื่นขึ้นแม้มีเหตุการณ์ถี่ และฝั่งหลังบ้านก็เบาลงมาก ทุก 1 นาทีระบบจะตรวจค่าเฉลี่ยความแม่นยำ, จำนวนกล้อง AI ที่รายงาน, และสถานะกล้องซ้ำให้เพื่อแก้ค่าที่ต้องอาศัย aggregate — ถ้าผู้ดูแลย่อ tab เก็บไว้ระบบจะหยุดตรวจชั่วคราวและตรวจให้ทันทีที่กลับมาดูหน้านี้ (3.93.0)
- หน้า AI Intelligence (Beta) /intDash — แผนที่ AI: เพิ่มลูกเล่นใหม่สำหรับเหตุการณ์ประเภท Blacklist — เมื่อ AI ตรวจพบและส่งเหตุการณ์ blacklist เข้ามา ระบบจะ "ซูม-เลื่อนไปยังตำแหน่งกล้อง" บนแผนที่อัตโนมัติ พร้อมเปิดป๊อปอัพแสดงคลิปวิดีโอที่ AI บันทึกได้ทันที (เล่นวนอัตโนมัติแบบเงียบ) คู่กับรูปที่ AI capture ได้ในเฟรมเดียวกัน (มีกรอบเหลี่ยมส้มบนใบหน้า/ป้ายทะเบียน/วัตถุที่ AI ตรวจจับ) ถ้ากล้องนั้นถูกวางไว้บน Floor Plan แล้ว จะมีปุ่มเปิด Floor Plan และเลือก marker กล้องนั้นให้ทันที ถ้าเหตุการณ์ไม่มีคลิปจะแสดงเฉพาะรูปแทน ถ้าไม่มีทั้งคลิปและรูปก็แสดงข้อมูลพื้นฐานแทน — ผู้ดูแลตรวจสอบเหตุการณ์สำคัญได้เร็วโดยไม่ต้องหากล้องเองในแผนที่ใหญ่ (3.93.0)
Improvements1
- หน้า AI Intelligence (Beta) /intDash — รายการเหตุการณ์ล่าสุด: ใหม่ขึ้นทันทีเมื่อมีเหตุการณ์เข้ามาแทนการรอ debounce 1 วินาที + ระบบดูแลไม่ให้รายการเดิมโผล่ซ้ำเมื่อ AI ส่งเข้ามาบนช่อง blacklist และช่องปกติพร้อมกัน (3.93.0)
Preview Permission Profile · v2 — unique access จาก /preview endpoint
Features1
- หน้า /preview/permission-menu ใช้เป็น UAT list ก่อนเข้า /preview/permission-profile-v2 แล้ว — คลิก profile จากตารางจะเปิดหน้า v2 tabbed ด้วย profile เดียวกัน เพื่อทดลอง flow ก่อน replace หน้าเดิม. หน้า v2 ใช้ยอดจริงจาก /preview API, กด OU/member tri-state แล้ว PATCH จริง, แสดงตัวเลขใหญ่เป็น unique access และแยกบรรทัดย่อยเป็นเลือกทั้งหมด / ยกเว้น / ซ้ำ พร้อม device type breakdown. ยังไม่แตะ production route /systemUsers/permissions/resource จนกว่า UAT จะผ่าน (3.92.3 + klynx-api 4.72.0)
K-Control Temperature + การจัดการสิทธิ์ Edge + เวิร์กโฟลว์อนุมัติบั๊ก Aliza-bot
Features22
- หน้า Live + Dashboard popup กล้อง: รองรับนโยบาย "ตัดสตรีมอัตโนมัติ" ขององค์กรแล้ว — เมื่อผู้ดูแลตั้งเวลาสูงสุดต่อรอบที่หน้า ตั้งค่า → Stream Sessions และเปิดสวิตช์ ระบบจะตัดสตรีมและคืนทรัพยากร (<video> + WebRTC peer) อัตโนมัติเมื่อครบเวลา พร้อมบันทึก analytics ให้ทีมรายงานแยกเหตุการณ์ "ครบเวลา" ออกจาก "ผู้ใช้ปิดเอง" ได้ — รุ่นนี้ครอบคลุม /live (popup แผนที่ + preview แถบข้าง) และ /biDash popup กล้อง — VideoWall / Map InfoWindow / Camera Edit preview ทยอยตามมาในรุ่นถัดไป (3.80.0)
- โลโก้ + ลายน้ำทับวิดีโอสตรีม — เปิดใช้งานจริงบนทุกหน้าที่ดูสด: VideoWall ทุกช่อง, Live (preview แถบข้าง + popup เมื่อย่อแถบข้าง + popup บนแผนที่), Dashboard popup กล้อง ตามค่า Apply-to ที่ตั้งไว้ที่หน้า ตั้งค่า → Stream Sessions — ถ้าโลโก้/ลายน้ำเปิดและหน้านั้นอยู่ใน Apply-to ระบบจะวาดทับวิดีโอให้อัตโนมัติ โหมด "สุ่ม" หมุนตำแหน่ง + มุมเอียง (เฉพาะลายน้ำ) ทุก N วินาที (1-60); ถ้าปิดสวิตช์หรือเอาหน้านั้นออกจาก Apply-to จะหายทันที — สำหรับ player WebRTC ตัวใหม่ที่จะแทน ZLMRTCClient ทยอยมาในรุ่นถัดไป (3.78.0)
- หน้า ตั้งค่า → Stream Sessions: เพิ่มแผง "โอเวอร์เลย์สตรีม" (โลโก้ + ลายน้ำ) — แอดมินอัปโหลดโลโก้ขององค์กร (PNG/JPEG/WebP ไม่เกิน 2 MB) และตั้งข้อความลายน้ำที่จะแสดงทับวิดีโอสตรีมได้แล้ว เลือกตำแหน่งได้ทั้งแบบ "คงที่" (มุมใดมุมหนึ่ง / กึ่งกลาง), "สุ่ม" (เปลี่ยนตำแหน่งทุก N วินาที — กันการ crop), หรือ "กำหนดเอง" (พิกัด %); ลายน้ำกำหนดมุมหมุน -180° ถึง +180° ได้และเพิ่ม anti-tamper preset [-30°, -15°, 0°, 15°, 30°] ให้สลับมุมตามรอบ; กำหนดความโปร่งใส, ระยะห่างจากขอบ, ความสูงสูงสุดของโลโก้, และเลือกได้ว่าจะให้แสดงบนหน้าใด (Live, Videowall, Dashboard popup, Player ฝัง, วิดีโอย้อนหลัง) (3.77.0 + klynx-api 4.66.0)
- หน้า Live / biDash / VideoWall / Map / แก้ไขกล้อง: เปลี่ยนช่องทางดูสตรีมสด FLV ของกล้อง ATA / AIBOX มาผ่านระบบ klynx-api แทนการต่อตรงไปยัง edge ปลายทาง — ปลอดภัยขึ้นเพราะโทเค็นของ edgeAI ไม่หลุดลงมาฝั่งเบราว์เซอร์อีกต่อไป + รองรับกล้อง AIBOX (กล้อง AI ที่ sync จาก gateway) ผ่านช่องทางเดียวกัน ระบบจะขอ ticket แบบใช้ครั้งเดียว (อายุ 60 วินาที) ก่อนเปิดทุก stream — กล้องที่ระบบยังไม่ได้ map กับ edge จะปิดปุ่ม FLV ไม่ให้กดผิดและขึ้นข้อความ "กล้องนี้ไม่รองรับการดูสด" แทน (3.76.0 + klynx-api 4.63.0)
- เมนูแถบข้าง: เพิ่มกลุ่ม "เครื่องมือดีบัก" (Debug Tools) ที่เปิด/ปิดผ่าน env flag ของฝั่งระบบ (`NUXT_PUBLIC_DEBUG_MENU_ENABLED`) และแสดงเฉพาะผู้ดูแลระบบ (administrator) เท่านั้น — เมนูแรกในกลุ่มคือ "ทดสอบ MQTT" ที่ลิงก์ไปยังหน้า /testMQTT (operator-facing probe สำหรับทดสอบการเชื่อมต่อ MQTT broker) หน้านี้ยังเข้าตรงผ่าน URL ได้ตลอดเฉพาะ administrator (กันที่ระดับ middleware) แต่ลิงก์ในเมนูจะซ่อนอยู่จนกว่าผู้ดูแลระบบจะเปิด flag ฝั่ง deploy ให้ก่อน — เพื่อให้แถบเมนูบน production สะอาดและให้ engineers ใช้เครื่องมือ probe ได้ในรอบ deploy dev/staging เท่านั้น (3.75.0)
- หน้า ระบบอุปกรณ์ → กล้อง: เพิ่มปุ่ม "Sync" สีเหลืองอำพันรายแถว — กดเพื่อ refresh เฉพาะกล้องตัวเดียวจาก edge ปลายทาง (AIBOX / ATA / SVMS / iboc) โดยไม่ต้องเรียก syncMonitor ทั้งองค์กรหรือ resync ทั้ง edge ปุ่มอยู่หน้า Edit / Delete แสดงเฉพาะกล้องที่ผูกกับ edge ภายนอก (กล้องที่สร้างเองในระบบไม่แสดงปุ่ม เพราะไม่มีต้นทางให้ refresh) ระหว่าง sync ปุ่มจะแสดง spinner และล็อกปุ่ม sync ของทุกแถวกันกดซ้ำ ผลลัพธ์ขึ้นเป็น toast 3 สี: เขียว = อัปเดตสำเร็จ + รีเฟรชแถวอัตโนมัติ, เหลือง = ระบบประเมินแล้วว่าไม่ต้องอัปเดต (เช่น กล้องที่ sync อัตโนมัติผ่าน gateway อยู่แล้ว), แดง = ไม่สำเร็จพร้อมเหตุผลภาษาไทย (edge ติดต่อไม่ติด, ไม่พบ channel, push กลับ gw ไม่สำเร็จ ฯลฯ) (3.74.0)
- หน้า ระบบค้นหา /ksearch/chats — แผงขวา "แผนที่เหตุการณ์": เปลี่ยนจากภาพแผนที่จำลอง (วงกลมพื้นหลังประดับ) มาเป็นแผนที่ OpenStreetMap จริงแล้ว เนื่องจากเหตุการณ์ที่ AI ค้นเจอเริ่มมีพิกัด lat/lng จริงจากข้อมูล canonical — หมุดสีตามประเภทเหตุการณ์ (รถยนต์=ชมพูแดง, คน=น้ำเงิน, ใบหน้า=ฟ้า, อื่นๆ=เหลือง) ขนาดหมุดเพิ่มขึ้นตามจำนวน event ที่ตำแหน่งนั้น คลิกหมุดเพื่อดูชื่อสถานที่ + ประเภท + จำนวน event แผนที่ปรับซูมอัตโนมัติให้พอดีกับทุกหมุดที่พบ ถ้ายังไม่มีเหตุการณ์ใดที่มีพิกัด แผนที่จะขึ้นข้อความ "ยังไม่มี location ใน event ที่ค้นเจอ" แทนภาพจำลอง (3.73.0)
- หน้า AI Intelligence (Beta) /intDash — ช่อง "เหตุการณ์ล่าสุด": คลิกรูปย่อแล้วเปิดดูภาพเต็มได้ที่ป๊อปอัพใหม่ พร้อมกรอบเหลี่ยมสีส้มทับบนภาพเพื่อบอกตำแหน่งใบหน้า / ป้ายทะเบียน / วัตถุที่ AI ตรวจจับได้ตามจริง — ใช้ปุ่มลูกศรซ้าย-ขวา (หรือกดคีย์ ← →) เพื่อกระโดดดูเหตุการณ์ก่อนหน้า / ถัดไปได้โดยไม่ต้องปิดป๊อปอัพ; กด ESC หรือคลิกพื้นที่ดำรอบภาพเพื่อปิด ที่มุมซ้ายบนแสดงประเภทเหตุการณ์ + ชื่ออุปกรณ์ + เวลาที่เกิด ที่มุมล่างกลางแสดงตำแหน่งปัจจุบัน (เช่น 3 / 20) ตอนชี้รูปย่อบนรายการจะมีเอฟเฟกต์ hover พร้อมไอคอนแว่นขยายให้รู้ว่ากดได้ (3.72.0)
- หน้า AI Intelligence (Beta) /intDash — การ์ด KPI ด้านบน 2 ใบล่าสุด: "กล้อง AI ที่รายงาน" และ "ความแม่นยำเฉลี่ย" เริ่มแสดงตัวเลขจริงแล้ว เดิมขึ้น "—" + "รอ contract ฝั่งระบบ" — ตอนนี้ระบบหลังบ้านส่ง endpoint ใหม่ที่นับ (1) จำนวนกล้อง AI (AIBOX) ที่ส่งเหตุการณ์เข้ามาวันนี้ และ (2) ค่าเฉลี่ยความมั่นใจของ AI ในการตรวจจับ (similarity) ในเหตุการณ์วันนี้ — ค่านี้จะเริ่ม "มีตัวเลข" หลังจากระบบหลังบ้าน restart รอบใหม่ + AI ส่งเหตุการณ์ที่มี similarity เข้ามา (เช่น face.captured) เหตุการณ์เก่าที่ยังไม่เก็บค่า similarity จะไม่นับเข้าการเฉลี่ย ถ้ายังไม่มีตัวอย่างใดในวันนี้ การ์ดจะแสดง "—" ตามเดิม (3.72.0)
- หน้า ระบบอุปกรณ์ → กล้อง: เพิ่มตัวกรอง "สาธารณะ / ส่วนตัว" ที่แถบกรองด้านบน — ผู้ดูแลสามารถดูเฉพาะกล้องที่กำหนดให้แสดงบนแผนที่สาธารณะ (/live/map) หรือเฉพาะกล้องที่ดูได้เฉพาะภายในองค์กรได้แล้ว เดิมต้องไล่ดูทีละแถวจาก toggle ในคอลัมน์ Map Visibility ตอนนี้กรองออกมาเป็นชุดได้ในคลิกเดียว ตัวกรองนี้ทำงานร่วมกับตัวกรองสถานะ (Online/Offline/Suspect/Unknown) อยู่แล้ว — เลือกหลายตัวกรองพร้อมกันได้ ผลลัพธ์รวมเป็น AND (3.71.0)
- หน้า /map, /kcontrol/map, /kcontrol/mapif, /biDash: รองรับการสลับผู้ให้บริการแผนที่ตามค่าใน /settings/map แล้ว — แอดมินเลือก OpenStreetMap (ฟรี, ไม่ต้องใช้คีย์) ได้ ทุกหน้าจะ render OSM อัตโนมัติพร้อมหมุดสีตามสถานะกล้อง/อุปกรณ์ (เขียว=ออนไลน์, แดง=ออฟไลน์/แจ้งเตือน, เทา=ไม่ทราบ) คลิกหมุดเพื่อดูชื่อ/สถานะ + ลิงก์ "ดูสตรีม" ไป /live; แอดมินที่ตั้ง Google Maps แต่ไม่ใส่ key ตอนนี้เห็นข้อความแจ้งให้ไปตั้งค่าที่ /settings/map แทนการเจอ "Google Maps API Key is missing" แบบเดิม. โหมด OSM ยังไม่มี theme/density/traffic/cluster และไม่มีสตรีมในป๊อปอัพ (ทุกอย่างนี้ทำงานปกติบนโหมด Google) — รวบไว้เป็น degraded mode ตามแผน. (3.58.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → จัดการเมนู: เพิ่มชิป parent ในแผงสมาชิกแบบเดียวกับฝั่งทรัพยากร — คลิก OU แล้วเห็นชิป parent ที่มีสมาชิก พร้อมจำนวนคน กดชิปเพื่อกระโดดไปดูสมาชิก parent ได้เลย (3.42.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ (ทั้งทรัพยากร + จัดการเมนู): ชิป parent แสดงตลอดเมื่อ parent มีสมาชิก — เดิมแสดงเฉพาะตอน OU ปัจจุบันไม่มีสมาชิก ตอนนี้ถ้า parent มีสมาชิกก็แสดงควบคู่กันเลย ช่วยให้ดู coverage ของ profile ที่ครอบทั้ง OU ปัจจุบันและ parent ได้ในที่เดียว (3.42.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: เมื่อคลิกหน่วยงานที่ไม่มีสมาชิกโดยตรง (สมาชิกอยู่ที่ parent ทั้งหมด) แผงด้านขวาจะแสดง chip ของ parent ที่มีสมาชิกพร้อมจำนวนคน — กดเพื่อกระโดดไปดูสมาชิก parent ได้เลย ไม่ต้องกลับไปคลิกในต้นไม้ใหม่ (3.41.0)
- K-Control: หน้าใหม่ /kcontrol/temperature — ดูอุณหภูมิย้อนหลัง 1ชม./6ชม./24ชม./7วัน/30วัน + กราฟ + ตั้งเกณฑ์เตือน
- Permission Profile: narrow รายคนในหน่วยงานเดียวกัน (memberIds)
- Permission Profile: เพิ่ม Edge device เป็น resource ที่จำกัดสิทธิ์ได้
- แผนที่กล้อง: ไอคอนตามกลุ่ม (online/offline) ทุก endpoint รวมถึง /live/map
- แผนที่กล้อง: ข้ามองค์กร (cross-org public) ก็แสดงไอคอนของกลุ่มต้นทาง
- Aliza-bot v2: เวิร์กโฟลว์ /approve - /reject เก็บประวัติใน DB ไม่ใช่ JSON ไฟล์
- Aliza-bot v2.1: รายงานบั๊กผ่าน Telegram ส่งเข้า DB ทันที (REST migration)
- AI Investigation Center: หน้า /ksearch/chats ค้นหา CCTV ด้วยภาษาธรรมชาติ แล้วแสดงผลเป็น event cards, timeline และ map context จาก canonical data (3.39.0)
Improvements49
- หน้า Dashboard — แผนที่ตำแหน่งผู้ชม: แสดงตำแหน่งกล้องบนแผนที่จากกล้องยอดนิยม — เดิมแผนที่อาจว่างเปล่าแม้มีข้อมูลกล้องยอดนิยมอยู่ ตอนนี้ระบบนำพิกัดของกล้องยอดนิยมมาแสดงเป็นฟองสีเขียวบนแผนที่โลกโดยอัตโนมัติ (3.89.0)
- หน้า AI Intelligence (Beta) /intDash — ช่อง "เหตุการณ์ล่าสุด" ทางขวา: เปลี่ยน badge "—" ที่เคยขึ้นข้างแต่ละเหตุการณ์ มาเป็นรูปครอบใบหน้า/วัตถุที่ AI ตรวจจับได้แทน — ระบบนำพิกัด bounding box ที่กล้อง AI ส่งมาพร้อมรูปเหตุการณ์ มาตัดเฉพาะส่วนใบหน้า/ป้ายทะเบียน/วัตถุที่ตรวจได้ แล้วแสดงเป็นภาพย่อขนาด 40×40 px ผู้ใช้กวาดสายตาดูประเภทเหตุการณ์ได้ทันทีโดยไม่ต้องคลิกเข้าไปดูภาพเต็ม กรณีเหตุการณ์ไม่มีรูปแนบมา (เช่น event status / system event) จะแสดงเป็นกรอบเทาพร้อมไอคอน — ไม่ได้เอา badge ระดับความรุนแรงออกถาวร ถ้าระบบหลังบ้านเริ่มส่ง severity เข้ามาจริงเมื่อไหร่ จะเอามาแสดงเป็นวงสีรอบรูปย่อแทน (3.70.1)
- หน้า ระบบควบคุม → แผนที่ K-Control: แก้หมุดอุปกรณ์ไปแสดงผิดทวีปบนโหมด OpenStreetMap — เดิมหมุดอุปกรณ์กรุงเทพไปลอยอยู่ที่ Niger / Burkina Faso (Africa) เพราะระบบอ่านลองจิจูดจากชื่อ field ที่ผิด (`long` แทน `lng`) → ตำแหน่งเส้น Long กลายเป็น 0 (ตรงเส้นกรินิช) อยู่ที่แอฟริกาตะวันตก ตอนนี้อ่าน field ถูกต้องแล้ว หมุดกลับมายังตำแหน่งจริงตามพิกัด GPS; ฝั่ง Google Maps ไม่กระทบ เพราะอ่าน field ถูกอยู่แล้ว นอกจากนี้แก้การ์ดข้อมูลซ้ายขวาบนแผนที่ที่บางครั้งโดน layer แผนที่บัง (z-index) ทำให้กดไม่ได้/อ่านไม่ออก — ดันให้การ์ดอยู่บนสุดเสมอ (3.67.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: 3 ฟิกซ์ปฏิบัติการที่รายงานจาก UAT — (1) แผนที่ฝั่ง OpenStreetMap แสดงพื้นที่แล้ว เดิมพื้นที่ตรงกลางว่างเปล่าเพราะระบบเรียกเริ่มต้นแผนที่ตอนคอนเทนเนอร์ยังถูกซ่อน → ขนาด 0×0 → ไม่มี tile โหลด ตอนนี้คอนเทนเนอร์อยู่ในผังเสมอแบบเดียวกับหน้า biDash; (2) การ์ดข้อมูล 4 ใบบนหน้า (เหตุการณ์ตามเวลา / ตามประเภท / Top อุปกรณ์ / ตามกลุ่ม) โหลดข้อมูลอัตโนมัติทันทีที่เปิดหน้า ไม่ต้องกดรีเฟรช; (3) ปุ่ม "คืนค่า layout เริ่มต้น" แสดง toast ยืนยันว่ากดได้ผล เดิมถ้า layout อยู่ที่ค่าเริ่มต้นอยู่แล้ว ผู้ใช้กดแล้วไม่เห็นอะไรเปลี่ยน เลยคิดว่าปุ่มเสีย (3.66.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: หมุดอุปกรณ์ kcontrol รองรับไอคอนเฉพาะกลุ่ม (Resource Group) แล้ว — แอดมินอัปโหลดไอคอนกำหนดเองที่หน้า "จัดกลุ่มอุปกรณ์" → หมุดบนแผนที่ kcontrol (ทั้งโหมด Google และ OpenStreetMap) เปลี่ยนเป็นไอคอนของกลุ่มอัตโนมัติ; กรณีอุปกรณ์อยู่หลายกลุ่ม ระบบเลือกตามลำดับตัวอักษร; สถานะ alarm หรือ warning ยังคงใช้ไอคอนไฟกระพริบเริ่มต้นเสมอเพื่อให้สังเกตเหตุการณ์ได้ทันที (3.65.0 + klynx-api 4.54.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: คลิกหมุดอุปกรณ์บนแผนที่แล้วเห็นข้อมูลครบเหมือนเดิม (ชื่อสถานที่ / พิกัด GPS / ชื่ออุปกรณ์-รหัส / เวลาเกิดเหตุ / สถานะการแจ้งเตือน / จำนวน Sensor / อุณหภูมิ / สถานะอุปกรณ์ / ประวัติเหตุการณ์ก่อนหน้า) และถ้ามี alarm จะแสดงปุ่ม "✓ รับทราบ" สีแดง — กดแล้วเปิดฟอร์มกรอกรายละเอียดเพื่อเก็บเป็นเคสติดตาม (เดิม 3.63.0 ฝั่ง OpenStreetMap แสดง popup ย่อ ไม่มีปุ่มรับทราบ) (3.64.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: อุปกรณ์ทั้งหมดในองค์กรขึ้นบนแผนที่ครบทุกตัวแล้ว — เดิมถ้าจำนวนอุปกรณ์มากกว่า 100 ตัว ระบบจะหยุดดึงที่หน้าแรกทำให้ 11 ตัวสุดท้าย (ในกรณี 111 ตัว) ไม่ขึ้นบนแผนที่ + search ไม่เจอ ตอนนี้ดึงครบจนถึง totalRecords ที่ระบบบ้านส่งมา (3.64.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: หมุดเปลี่ยนเป็นไอคอน CPU (ชิป) แทนสัญลักษณ์คลื่นเดิม สื่อความหมาย "หน่วยควบคุม" ชัดขึ้น — และหน้าเหล่านี้บนผู้ให้บริการ OpenStreetMap (Leaflet) ได้รับรูปไอคอนเดียวกับ Google Maps แล้ว เดิมโหมด OpenStreetMap ไม่แสดงไอคอนไฟกระพริบเมื่อ alarm มา ตอนนี้สถานะ alarm แสดงไอคอนไฟพร้อม animation พริ้วไหวเหมือนกันทั้งสองโหมด (3.63.0)
- หน้า แผนที่ /map, /live, /intDash: รับสถานะกล้อง/เหตุการณ์แบบเรียลไทม์เพิ่ม — เมื่อกล้องเปลี่ยนสถานะ online/offline หรือมีเหตุการณ์ AI ใหม่เข้ามา หน้าจอเหล่านี้จะอัปเดตอัตโนมัติโดยไม่ต้องรีเฟรช (เดิมต้องกดโหลดหน้าใหม่) — หน้า biDash, VideoWall, K-Control, จัดการกล้อง รับเรียลไทม์อยู่แล้วตั้งแต่ 3.39.0 ตอนนี้ครอบคลุมทุกหน้าหลักที่ดู status อุปกรณ์ (3.61.0)
- หน้า biDash (Map): เลือก/เปลี่ยนตัวกรองกลุ่มอุปกรณ์ หรือ "ทั้งหมด/ในความดูแล/สาธารณะ" แล้วแผนที่จะไม่กระโดดกลับศูนย์กลางอีกต่อไป — เดิมทุกครั้งที่กดตัวกรอง แผนที่จะรีเซ็ตทั้งตำแหน่งและซูม ทำให้เปรียบเทียบจุดที่กำลังดูไม่ได้ ตอนนี้แผนที่อยู่ที่เดิมที่ผู้ใช้ลากไว้ (3.61.0)
- หน้า ระบบอุปกรณ์ → กล้อง (แก้ไข): กล้อง AIBOX / edgeAI ที่ sync มาจาก gateway-api สามารถบันทึก/แก้พิกัดบนแผนที่ได้แล้วโดยไม่ต้องกรอก URL — เดิมฟอร์มบล็อก save ถ้าช่อง URL ว่าง ทำให้ปักหมุดเพื่อให้ event AI ขึ้นบนแผนที่ /intDash ไม่ได้ ตอนนี้ระบบเห็นว่ากล้องเป็นกล้องของระบบ gateway จะรับว่า URL สามารถว่างได้ (gateway จะ sync ให้เอง) พร้อมแสดงรหัสอ้างอิงข้ามระบบ (gwDeviceMgmtId / gwCamId) เป็น read-only ในฟอร์ม (3.59.0 + klynx-api 4.59.2)
- หน้า ระบบอุปกรณ์ → จัดกลุ่มอุปกรณ์ + หน้า Live / กระดานหลัก / VideoWall / biDash: จัดระเบียบ "ตัวกรองกลุ่มอุปกรณ์" ใหม่ทั้งชุด — (1) ฟอร์มสร้าง/แก้ไขกลุ่ม สวิตช์ "แสดงใน Live" เปลี่ยนมาผูกกับสิทธิ์ใหม่ของระบบหลัง ตั้งต้นเป็น "ปิด" บนฟอร์มสร้างกลุ่มใหม่ (แอดมินต้องเปิดเองถึงจะให้กลุ่มไปอยู่ในตัวกรองหน้า Live) — กลุ่มเดิมที่เคยปรากฏในหน้า Live อยู่แล้วยังคงปรากฏเหมือนเดิม เพราะระบบหลังตั้งค่าให้กลุ่มทั้งหมดที่มีอยู่ก่อนรอบนี้เป็น "เปิด" โดยอัตโนมัติ; (2) ตัวเลือก "รวมกลุ่มย่อย" ในฟอร์มเอาออกแล้ว เนื่องจาก ระบบจะไม่สืบทอดสิทธิ์การมองเห็นในกลุ่มย่อยอีกต่อไป (กลุ่มย่อยถูกใช้เป็นกลุ่มอิสระ); (3) ป้ายของตัวเลือกในตัวกรอง 4 หน้า แสดงเฉพาะชื่อกลุ่มของตัวเอง (ไม่ใช่ "กลุ่มแม่ / กลุ่มย่อย" แล้ว) — เดิมป้ายยาวเกินไปบนต้นไม้กลุ่มที่มีหลายชั้น; (4) แอดมินบนหน้า กระดานหลัก / VideoWall / biDash เห็นทุกกลุ่มในองค์กร (ทั้งกลุ่มหลัก + กลุ่มย่อย) แบบรายการแบน ส่วนสมาชิกทั่วไปเห็นเฉพาะกลุ่มที่ได้รับสิทธิ์เข้าถึง (ระดับใดก็ได้ตามที่กำหนด); (5) หน้า biDash สลับมาดึงรายชื่อกลุ่มจาก endpoint เดียวกับ Dashboard/VideoWall — ปิดช่องโหว่เดิมที่ก่อนหน้านี้สมาชิกบางคนเห็นชื่อกลุ่มที่ไม่ได้รับสิทธิ์ดูเข้าได้ (3.56.0 + klynx-api 4.57.0)
- หน้า ระบบอุปกรณ์ → จัดกลุ่มอุปกรณ์: ฟอร์ม "เพิ่มกลุ่มใหม่" ตั้งสถานะเริ่มต้นเป็น "ส่วนตัว" แทน "สาธารณะ" — เดิมเปิดฟอร์มมาแล้วสวิตช์อยู่ที่ "สาธารณะ" ทำให้กลุ่มที่สร้างใหม่ขึ้นไปอยู่บนแผนที่สาธารณะ (/live/map) ที่คนนอกองค์กรเห็นได้ทันทีถ้ากดบันทึกโดยไม่ทันแก้ ตอนนี้สวิตช์ตั้งต้นเป็น "ส่วนตัว" (สีเทา) ต้องตั้งใจเปิดสวิตช์เองถึงจะเป็นสาธารณะ ลดความเสี่ยงเผยแพร่กลุ่มอุปกรณ์โดยไม่ตั้งใจ — กลุ่มเดิมที่สร้างไว้แล้วไม่กระทบ ฟอร์มสร้างหน่วยงาน (/systemUsers) ไม่กระทบเพราะเป็นคนละ field (3.55.1)
- หน้า AI Intelligence (Beta) /intDash — แถบสรุปสถิติด้านล่าง (B-4): เปิดวิดเจ็ตจริงครบ 4 ตัวแล้ว — (1) "เหตุการณ์ย้อนหลัง 60 นาที" กราฟเส้นซ้อนชั้นตามระดับความรุนแรง (แบ่งทุก 5 นาที), (2) "อุปกรณ์ที่รายงานมากที่สุด" Top 5 กล้อง/อุปกรณ์ที่ส่งเหตุการณ์เข้ามามากสุดในช่วงล่าสุด (รูปกราฟแท่งแนวนอน), (3) "สถานะกล้อง" โดนัทแสดงสัดส่วนกล้องออนไลน์/ออฟไลน์ในองค์กร, (4) "ประเภทเหตุการณ์" โดนัทแสดงสัดส่วนเหตุการณ์แยกตามประเภท (รวมประเภทย่อยที่เหลือเป็น "อื่นๆ" เพื่อให้กราฟอ่านง่าย) ปุ่ม "รีเฟรช" บนหัวหน้าจะอัปเดตทั้งการ์ด KPI / feed / แผนที่ / สถิติด้านล่างพร้อมกัน เมื่อยังไม่มีข้อมูลในช่วงนั้นกราฟจะแสดงข้อความ "ยังไม่มีเหตุการณ์ในช่วงนี้" แทนการเป็นกราฟว่างเปล่า — สถิตินับจากเหตุการณ์ล่าสุด 200 รายการ (3.54.0)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์แบบเรียลไทม์ (B-3c): เพิ่มระบบจัดกลุ่มหมุด (cluster) — เมื่อ zoom ออก หมุดที่อยู่ในรัศมีใกล้กันจะรวมเป็นวงสีขาวพร้อมตัวเลขแสดงจำนวนเหตุการณ์ในกลุ่ม; กดที่กลุ่มจะ zoom เข้าไปดูเหตุการณ์ในกลุ่มนั้นโดยอัตโนมัติ (ถ้ายังกระจุกอยู่จะแตกออกเป็นกลุ่มย่อย จนกระทั่ง zoom ละเอียดสุดที่ระดับถนน จึงเห็นเป็นหมุดเดี่ยว) — ช่วยให้ดูภาพรวมในระดับประเทศ/จังหวัดได้ง่ายขึ้นโดยไม่ทับซ้อน เคาน์เตอร์มุมซ้ายบนแสดง "N หมุด · M กลุ่ม" ในโหมด "จุด"; โหมด "ความหนาแน่น" ไม่ใช้ cluster (เพราะเป็น heatmap อยู่แล้ว) เอฟเฟกต์ spider-leg และ playback ตามช่วงเวลายังยกไป chore ถัดไป (3.53.0)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์แบบเรียลไทม์ (B-3b): เพิ่ม 2 โหมดให้สลับได้ที่มุมขวาบนของแผนที่ — โหมด "จุด" (ค่าเริ่มต้น) แสดงหมุดเป็นวงกลม พร้อมเอฟเฟกต์ pulse: เหตุการณ์ที่เพิ่งเกิดภายใน 10 วินาทีจะขยาย-หดต่อเนื่อง (สีตามระดับความรุนแรงเหมือนเดิม) เพื่อสะกิดความสนใจ จากนั้นค่อย ๆ กลับสู่ขนาดปกติ; โหมด "ความหนาแน่น" แสดงเป็น heatmap โดยถ่วงน้ำหนักตามความรุนแรง (รุนแรง×3, ปานกลาง×2, ต่ำ×1, ข้อมูล×0.5) — เหตุการณ์รุนแรงเพียงครั้งเดียวขึ้นเป็นจุดร้อนได้แม้ไม่ได้อยู่กระจุกกัน เปลี่ยนเอนจิ้นเป็น deck.gl เพื่อรองรับการแสดงผลจำนวนเหตุการณ์เยอะขึ้นและเตรียมต่อยอด cluster / playback ในรอบถัดไป (3.52.0)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์แบบเรียลไทม์: เปิดวิดเจ็ตแผนที่จริงแล้ว (B-3a) — ระบบโหลด tile แผนที่ OpenStreetMap แสดงเป็นภาพรวมประเทศไทย และพล็อตหมุดเหตุการณ์ที่มีพิกัดกล้องลงบนแผนที่อัตโนมัติ สีของหมุดแยกตามระดับความรุนแรง (รุนแรง=แดง / ปานกลาง=ส้ม / ต่ำ=ฟ้า / ข้อมูล หรือไม่ระบุ=เทา) ตามมาตรฐานเดียวกับ feed ทางขวา — กดที่หมุดเพื่อดูรายละเอียดเหตุการณ์ แสดงสถานะการเชื่อมต่อสด (LIVE / กำลังเชื่อมต่อใหม่ / ขัดข้อง) ที่มุมซ้ายบน และแสดงคำอธิบายสีหมุดที่มุมซ้ายล่าง เหตุการณ์ที่ไม่มีพิกัด (กล้องไม่ได้เปิด geo enrichment) จะแสดงใน feed แต่ไม่ขึ้นบนแผนที่ — เอฟเฟกต์ pulse / heatmap / cluster จะ ship ในรอบ B-3b ถัดไป (3.51.0)
- หน้าเริ่มต้นหลัง login: ผู้ใช้ที่เปิดสิทธิ์เมนู AI Intelligence (Beta) จะถูกพาเข้า /intDash เป็นหน้าแรกแทน Dashboard เดิม — ถ้ายังไม่เปิดสิทธิ์ก็เข้า Dashboard เหมือนเดิม และยังกดเมนู Dashboard ในแถบข้างเพื่อกลับไปดูหน้า Livestream Analytics ได้ตลอด (3.50.0)
- แถบเมนูข้าง: เพิ่มเมนู "AI Intelligence (Beta)" ไว้เหนือ Dashboard เพื่อกดเข้า /intDash ได้ทันทีเมื่อเปิดสิทธิ์ — เดิมต้องพิมพ์ URL เอง (3.50.0)
- หน้า AI Intelligence (Beta) /intDash: ผู้ดูแลระบบ (administrator) เปิดเมนูได้เลยโดยไม่ต้องไปกำหนดสิทธิ์เพิ่มก่อน — เดิมต้องเข้าหน้าจัดการสิทธิ์เพิ่มเมนูในโปรไฟล์ก่อน ตอนนี้ผู้ดูแลเห็นเมนู beta โดยอัตโนมัติเพื่อให้ทดสอบใช้งานได้ทันที (klynx-api 4.53.1)
- หน้า AI Intelligence (Beta) /intDash — แผนที่ AI realtime: ระบบหลังบ้านพร้อมส่งข้อมูลระดับความรุนแรง + ประเภทเหตุการณ์ + พิกัดของกล้องลงมาให้แล้ว สำหรับการวางหมุดบนแผนที่ตามสีระดับความรุนแรง — วิดเจ็ตแผนที่จริง (B-3) จะทยอย ship ในรอบถัดไป ระหว่างนี้หน้าจอยังเป็น placeholder (klynx-api 4.52.0)
- หน้า Dashboard: ลด content ให้เหลือ Livestream Analytics ล้วนตาม UAT — เอาแถบ Phase 1/2/3 ออก, เอา KPI ประเภทเหตุการณ์ที่เกิดขึ้นออก, และเอากล่องกิจกรรมล่าสุดออก เพื่อไม่ให้ปนกับ AI Intelligence / Command Center ที่แยกอยู่คนละหน้า (3.49.0)
- หน้า /intDash (AI Intelligence Beta): เปิดวิดเจ็ตจริง 2 ตัวแรกแล้ว — การ์ด KPI ด้านบน 3 จาก 5 ตัว ("เหตุการณ์ทั้งหมด" / "เหตุการณ์รุนแรง" / "เหตุการณ์วันนี้") นับจากเหตุการณ์ในระบบจริง และ panel "เหตุการณ์ล่าสุด" ทางขวามือแสดง 20 รายการล่าสุดพร้อม badge สีตามระดับความรุนแรง (รุนแรง=แดง / ปานกลาง=ส้ม / ต่ำ=ฟ้า / ข้อมูล/ไม่ระบุ=เทา) ตามมาตรฐานสี — ต้องอัปเดตระบบหลังให้พร้อม (klynx-api 4.51.0 + gateway-api 3.12.0) ก่อนจึงจะเห็น severity จริง ระหว่างนี้การ์ด "เหตุการณ์รุนแรง" จะนับเป็น 0 และ badge ใน feed จะเป็นสีเทา ส่วนการ์ด "กล้อง AI ที่รายงาน" + "ความแม่นยำเฉลี่ย" แสดง — รอ contract ฝั่งระบบ. แผนที่ AI realtime (วิดเจ็ตกลาง) และวิดเจ็ตสรุปด้านล่างยังเป็น placeholder รอ chore ถัดไป (3.48.0)
- เมนูใหม่ AI Intelligence (Beta) ที่ /intDash — โครงหน้าเฟส 2 ตามแผน K-LYNX Dashboard Evolution Plan (วิดเจ็ตจริงทยอย ship ในรอบถัดไป) เปิดใช้งานผ่าน "ระบบผู้ใช้ → สิทธิ์ → จัดการเมนู" เลือกเพิ่มเมนู "AI Intelligence (Beta)" ใน profile ที่ต้องการ — ระดับความรุนแรงของเหตุการณ์ (สูง/กลาง/ต่ำ/ข้อมูล) จะแสดงเป็นสีตามมาตรฐานเดียวกันทั้งใน feed และแผนที่ ต้องอัปเดตระบบหลังให้พร้อมก่อนถึงจะเห็นข้อมูลจริง (klynx-api 4.51.0 + gateway-api 3.12.0) (3.47.0)
- หน้า Dashboard: แยกภาพรวมเป็น 3 ประสบการณ์ชัดขึ้น — Phase 1 Livestream Analytics ใช้ดู usage / viewer / session เท่านั้น ส่วน AI Event Intelligence และ AI Command Center แยกเป็นลำดับถัดไป ไม่ปนกับ metric ไลฟ์สตรีมเดิม พร้อมเพิ่ม badge live/trend บน KPI และกล่องกิจกรรมล่าสุดจากเหตุการณ์ไลฟ์สตรีม (3.46.0)
- หน้า Dashboard: ปรับ content ภาพรวม Livestream เป็น layout ใหม่ตามแบบที่ผู้ใช้ต้องการ — มีการ์ด KPI พร้อมกราฟย่อ, กราฟจำนวนรับชมตามเวลา, แผนที่ตำแหน่งผู้ชมพร้อม Top Locations, breakdown browser/device/OS/source/resource group, ตารางกล้องยอดนิยม และกราฟเส้นแยกตามกลุ่มแบบเดิม รองรับ responsive + ธีมสว่าง/มืด โดยไม่เปลี่ยน nav menu (3.45.0)
- หน้า Dashboard: แผนที่ตำแหน่งผู้ชม (Geo Map) เปลี่ยนเป็นแผนที่โลกแบบเวกเตอร์ (SVG) — โหลดเร็วขึ้นมาก ไม่ต้องดึงรูปจากเซิร์ฟเวอร์แผนที่ภายนอก ใช้งานได้แม้ในเครือข่ายปิด สีแผนที่ปรับตามธีมสว่าง/มืดให้อัตโนมัติ ฟองสีเขียวแต่ละจุดยังบอกจำนวนผู้ชมเหมือนเดิม วางเมาส์เพื่อดูชื่อเมือง + จำนวนครั้ง + เปอร์เซ็นต์ (3.44.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → จัดการเมนู: badge "จำนวนเมนูย่อย" และ "เลือกแล้ว N" ย้ายมาอยู่หลังชื่อเมนูแล้ว (เดิมขึ้นชิดขวาสุดของแถว ต้องกวาดสายตาข้ามแถวเพื่อเชื่อมโยงกับเมนูได้) — ตอนนี้อ่านชื่อเมนูแล้วเห็น badge ติดกันเลย คล้ายกับฝั่งจัดการทรัพยากร (3.41.0)
- อัปเดต Real-time ทุกหน้าที่เปลี่ยนช่องทางจาก MQTT broker เดิมมายังช่องทางใหม่ของระบบ klynx-api (WebSocket hub) — หน้า biDash / kcontrol/map / kcontrol/mapif ที่เคยรับสดอยู่แล้วใช้ topic จริงที่ระบบเซิร์ฟเวอร์ปล่อยส่งให้ (ของเดิมหลายตัวไม่ตรงกับชื่อ topic ที่ส่งจริง เลยไม่มีข้อความเข้ามาเลย) และเพิ่มอีก 6 หน้าให้รับสดได้ครั้งแรก: Dashboard, VideoWall, รายการ kcontrol, รายการเหตุการณ์ kcontrol, อุณหภูมิ kcontrol, และรายการกล้อง — สิทธิ์ของแต่ละ topic ตรวจที่เซิร์ฟเวอร์แล้ว ผู้ใช้ที่ไม่มีสิทธิ์จะไม่เห็นข้อมูลข้ามองค์กร (3.39.0)
- หน้า ระบบอุปกรณ์ → กลุ่มอุปกรณ์ และ ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: badge แยกความหมายชัดขึ้น — กลุ่มย่อยเป็นสีเขียว, จำนวนอุปกรณ์เป็นสีเหลืองพร้อมไอคอนอุปกรณ์, และจำนวนที่เลือกเจาะจงเป็นสีเหลืองพร้อมไอคอน select ถึงพับกลุ่มอยู่ก็ยังเห็นว่าข้างในเลือกไว้กี่รายการ (3.38.0)
- หน้า ระบบอุปกรณ์ → กล้อง (เพิ่ม + แก้ไข): เพิ่มช่อง "รายละเอียดตอนกล้องออฟไลน์" — บันทึกได้ว่ากล้องนี้ออฟไลน์เพราะอะไร (ทดสอบ / ไฟดับ / ปรับปรุงสายสัญญาณ) เปิดได้ตลอด ไม่ต้องรอให้กล้องออฟไลน์ก่อน (3.37.0)
- หน้า Admin → Licenses: เพิ่มช่อง Max Organizations per Customer ตอนสร้าง/แก้ไข license และแสดง quota นี้ในหน้ารายละเอียด license / platform license — ค่าใน JSON artifact จะถูกใช้แก้ gate สร้างองค์กรที่ขึ้น cause=limit หลัง activate (3.36.0)
- หน้า Live: ผู้ใช้ที่ login แล้วเลือก org ได้จากหน้าแผนที่โดยตรง — ระบบใช้ org ล่าสุดเป็นค่า default และส่ง X-Active-Org ให้ /live/map + /live/map/options เพื่อไม่ให้กลุ่มจาก org อื่นหรือ org ที่ลบไปแล้วปนเข้ามา (3.36.0)
- หน้า ระบบผู้ใช้ → หน่วยงาน: badge นับจำนวนสมาชิกในแต่ละหน่วยงานโหลดเร็วขึ้นมาก — เดิมหน้าโหลดเรียก API ทีละหน่วย (กว่า 30 ครั้งในองค์กรใหญ่) ตอนนี้ฝั่งระบบส่งจำนวนสมาชิกมาในผลลัพธ์เดียวกับโครงสร้าง ลดเวลารอเปิดหน้าและภาระเซิร์ฟเวอร์ (3.35.0)
- หน้า ระบบอุปกรณ์ → กลุ่มอุปกรณ์: เปลี่ยนไอคอน badge นับอุปกรณ์ในกลุ่มจากไอคอน "คน" เป็นไอคอน "กล่อง" — สื่อชัดเจนกว่าว่านับอุปกรณ์ในกลุ่ม ไม่ใช่จำนวนคน (3.35.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ (เมนู + ทรัพยากร): ไอคอนสรุปขอบเขตสมาชิกในแบนเนอร์เปลี่ยนสีตาม scope — เขียวเมื่อใช้กับสมาชิกทุกคนใน OU (ค่าเริ่มต้น), เหลืองเมื่อระบุเจาะจงเฉพาะบางคน — มองเห็น scope ของ profile ได้ตั้งแต่แรก (3.35.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: ทุกแถวของกลุ่มในต้นไม้แสดงไอคอนชนิดอุปกรณ์ (กล้อง / kcontrol / edge) นำหน้าไอคอนโฟลเดอร์ — กลุ่มที่มีหลายชั้นและเนื้อหาผสม (เช่น kcontrol + กลุ่มย่อย) อ่านได้ทันทีว่ามีอุปกรณ์ชนิดใดอยู่ในสายนั้น (3.35.0)
- หน้า ระบบอุปกรณ์ → กล้อง: เพิ่มแถบ "กลุ่มที่กล้องนี้อยู่" และ "สิทธิ์ที่ผูกกับกล้องนี้" ใต้รายละเอียดกล้อง — คลิกกล้องในตารางครั้งเดียวเห็นทั้งกลุ่มและ profiles สิทธิ์ที่ครอบคลุมกล้องนั้น (เดิมต้องเปิดหน้าสิทธิ์ไปไล่ดูเอง) (3.34.0)
- หน้า ระบบควบคุม → K-Control: เพิ่มแถบ "กลุ่มที่อุปกรณ์นี้อยู่" ในรายละเอียดอุปกรณ์ — คลิก kcontrol ในตารางครั้งเดียวเห็นว่าอุปกรณ์อยู่กลุ่มไหนบ้าง (3.34.0)
- หน้า /systemDevices/groups + Permissions → Resource: เพิ่ม badge นับจำนวนอุปกรณ์ในแต่ละกลุ่ม (ไอคอนคน) แสดงคู่กับ badge กลุ่มย่อย — เห็นจำนวนกล้อง / kcontrol ที่อยู่ในกลุ่มได้ทันทีโดยไม่ต้องคลิกเข้าไปดู (3.32.0)
- หน้า Permissions: Save/Cancel แบบรวม (เลิก save ทันทีทุกคลิก)
- หน้า Permissions: ปุ่ม Expand/Collapse ทั้งหมดบนแท็บ Resource
- Group Device picker เห็น kcontrol นอกเหนือจากกล้อง
- kcontrol/map ใช้สิทธิ์ของผู้ใช้แล้ว (เดิมแสดงทุกตัวในองค์กร)
- Member picker ใน Permission tab โหลดได้ทุกคน (เดิมจำกัดแค่ 10)
- หน้า ระบบผู้ใช้ → ผู้ใช้: รายละเอียดผู้ใช้แสดงโครงสร้างหน่วยงาน — คลิกชิป "องค์กร" แล้วเห็นแผนผังหน่วยงานของ org นั้นพร้อมหน่วยงานที่ผู้ใช้สังกัด ไฮไลต์สีเขียว (ก่อนแก้ต้องเข้าไปไล่ดูใน /systemUsers/permissions/resource เอง)
- หน้า ระบบผู้ใช้ → ผู้ใช้: แผนผังหน่วยงานแสดงเฉพาะหน่วยงานที่ผู้ใช้สังกัด พร้อม path จากต้นทาง (root) ลงมา — เดิมแสดงทุกหน่วยงานในองค์กรพร้อมไฮไลต์ ทำให้ดูยากเมื่อมีหน่วยงานเยอะ พร้อมขึ้น badge "N หน่วยงาน" ที่หัวข้อด้วย (3.32.1)
- หน้า ระบบผู้ใช้ → ผู้ใช้: เพิ่มส่วน "สิทธิ์ที่ผูกกับผู้ใช้ในองค์กรนี้" ใต้แผนผังหน่วยงาน — คลิกชิปองค์กรครั้งเดียวเห็นทั้งโครงสร้างหน่วยงานและ permission profiles ที่ผู้ใช้สังกัดในองค์กรนั้น พร้อมจำนวน OU / สมาชิก / กลุ่ม / กล้อง / kcontrol / edge ในแต่ละ profile (เดิมต้องเปิดหน้า /systemUsers/permissions/resource ไปไล่ดูเอง) (3.33.0)
- หน้า ระบบผู้ใช้ → ผู้ใช้: รูปโปรไฟล์ในรายละเอียดผู้ใช้มีปุ่มแว่นขยาย กดแล้วดูรูปใหญ่ได้ทันทีโดยไม่ต้องออกจากหน้ารายการ (3.33.0)
Fixes67
- หน้า ระบบควบคุม → แผนที่ K-Control: ช่องค้นหาในแถบรายการอุปกรณ์ฝั่งขวาตอนนี้ค้นจากระบบหลังจริง — ค้นเจออุปกรณ์ที่อยู่นอกหน้าแรกได้แล้ว (เดิมกรองจากรายการที่โหลดมาเฉพาะหน้าปัจจุบัน ทำให้พิมพ์ชื่ออุปกรณ์แล้วบางตัวหาไม่เจอ) (3.90.1)
- หน้า ระบบควบคุม → แผนที่ K-Control: จุดสถานะอุปกรณ์ในแถบรายการฝั่งขวาแสดงสีเขียวเมื่อออนไลน์แล้ว — เดิมถ้าอุปกรณ์มีการแจ้งเตือนค้างอยู่ จุดจะเป็นสีส้มทับสถานะออนไลน์ ทำให้ดูสับสน ตอนนี้จุดในรายการบอก online/offline เท่านั้น (การแจ้งเตือนยังมีไอคอนไฟกระพริบของตัวเองบนแผนที่) (3.90.1)
- หน้า ระบบควบคุม → แผนที่ K-Control: ปุ่มกากบาทบน popup ของอุปกรณ์เห็นชัดขึ้น — ขนาดใหญ่ขึ้น สีดำบนพื้นขาวกลมพร้อมเงาเล็ก ๆ มองออกบนทั้งแบนเนอร์ alarm สีอ่อนและพื้นหลังโทนมืด (เดิม X สีขาวจางมองไม่เห็น) (3.90.1)
- หน้า กดรับทราบเหตุการณ์: ปุ่ม "ยืนยันรับทราบ" กลับมาให้กดได้ตลอดเวลาเมื่ออุปกรณ์ยังค้างสถานะ alarm — แม้ระบบหลังจะรายงานว่าไม่มีรายการแจ้งเตือนที่รอ ack ระบบจะดึงรายการล่าสุดของอุปกรณ์มาเป็นตัวสำรองให้ ack ได้ (ถ้าระบบหลังตอบว่า "รับทราบไปแล้ว" เราจะถือว่าสำเร็จและล้างสถานะ alarm ของอุปกรณ์ให้อัตโนมัติ) (3.90.1)
- หน้า ระบบควบคุม → แผนที่ K-Control: สถานะออนไลน์/ออฟไลน์ของอุปกรณ์ไม่เปลี่ยนตามสัญญาณ MQTT — ตอนนี้เมื่ออุปกรณ์ส่งสัญญาณสุขภาพหรือสัญญาณแจ้งเตือนเข้ามา หมุดบนแผนที่จะเปลี่ยนสีตามทันที (เดิมข้อมูลสด ๆ ที่เข้ามาถูกทับด้วยข้อมูลเก่าก่อนนำไปอัปเดต ทำให้หมุดค้างอยู่กับสถานะเดิมแม้แผงสรุปจะอัปเดตได้แล้ว) (3.90.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: แผนที่ OpenStreetMap ตอนนี้สลับเป็นโหมดมืดอัตโนมัติเมื่อผู้ใช้เปลี่ยนเป็น Dark mode + เพิ่มเมนูเลือกธีมแผนที่ OSM (Standard / Dark / Voyager) เหมือนหน้า /biDash (เดิมแผนที่ OSM ค้างที่ธีมสว่างเสมอ) (3.90.0)
- หน้า ระบบควบคุม → กดรับทราบเหตุการณ์: ปุ่ม "ยืนยันรับทราบ" ที่กดไม่ได้เมื่ออุปกรณ์ค้างสถานะ alarm แต่ไม่มีรายการให้รับทราบ — ตอนนี้ระบบซ่อนปุ่มทิ้งและเปลี่ยน "ยกเลิก" เป็น "ปิด" แทน ไม่ต้องเห็นปุ่มที่กดไม่ได้กับเครื่องหมายห้ามค้างอยู่บนหน้าจอ (3.90.0)
- หน้า ระบบควบคุม → กดรับทราบเหตุการณ์: ในโหมดมืด พื้นหลังของหน้าต่างเป็นสีขาวสว่างไม่ตรงตามธีม — แก้ให้เปลี่ยนเป็นโทนมืดตามธีมแล้ว (3.90.0)
- หน้า ระบบควบคุม → K-Control (รายการ): หน้าว่างเปล่าหลัง 3.89.0 — ตัวจัดการเหตุการณ์ที่เพิ่งเพิ่มเข้าไปวางผิดที่ในเลย์เอาต์ทำให้ Nuxt UI ตัด render ทิ้งทั้งหน้า ตอนนี้ตารางอุปกรณ์กลับมาแสดงตามปกติ + ป้าย "แจ้งเตือน" คลิกได้เปิดหน้าต่างกดรับทราบ (3.90.0)
- หน้า ระบบควบคุม → mapif: แผนที่ OpenStreetMap ไม่โหลดและขึ้นพื้นเทาว่างเปล่า — เพิ่มการ re-measure ขนาดกรอบแผนที่หลังโหลดเสร็จ ทำให้ tile ของ OSM เริ่ม render ครบหน้า (port มาจาก map.vue 3.66.0 — bug ลักษณะเดียวกัน) (3.90.0)
- หน้า ระบบควบคุม → เหตุการณ์: รายการเหตุการณ์ว่างเปล่าทุกครั้งที่เจ้าหน้าที่กดรับทราบครบทั้งหมด — เดิมหน้านี้แสดงเฉพาะ "ที่ยังไม่ได้รับทราบ" ตอนนี้แสดงประวัติเหตุการณ์ทั้งหมดโดยเรียงตามวันเวลาล่าสุดก่อน (ตัวกรอง "เฉพาะที่ยังไม่ได้รับทราบ" จะเพิ่มกลับมาในรุ่นถัดไป) (3.90.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: ไอคอนไฟกระพริบกลับมาแสดงบนหมุดอุปกรณ์ที่กำลังแจ้งเตือนแล้ว — เดิมบางครั้งหมุดของอุปกรณ์ที่มี alarm แสดงเป็นไอคอน CPU ปกติ ทำให้เจ้าหน้าที่มองข้ามเหตุการณ์และกดรับทราบไม่ได้ ปรับให้ระบบเชื่อตามค่า alarm ของอุปกรณ์เป็นหลัก ไม่ล้างค่าทิ้งจากข้อมูลสำรอง (ระบบเก่าใช้รายการแจ้งเตือนที่ยังไม่ได้รับทราบไปทับค่า alarm ของอุปกรณ์ — ถ้ารายการนั้นว่างจะทำให้ไฟดับเงียบ ๆ ทั้งที่อุปกรณ์ยังมีเหตุการณ์อยู่) — ใช้ได้ทั้งโหมด Google และ OpenStreetMap (3.90.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: เปิดหน้าต่างกดรับทราบเหตุการณ์ได้เหมือนเดิมหลังจากแก้ไอคอนไฟ — เดิมแม้คลิกหมุดของอุปกรณ์ที่ alarm แล้ว popup ก็ไม่มีปุ่ม "✓ รับทราบ" เพราะระบบมองว่าอุปกรณ์ไม่มี alarm (ผลข้างเคียงจากบั๊กไอคอนข้างต้น) ตอนนี้กดรับทราบจากหมุดได้ตามปกติ (3.90.0)
- หน้า ระบบควบคุม → แผนที่ K-Control: ปุ่มควบคุมบนแถบเครื่องมือ (Traffic / ธีม / Density) ไม่ขึ้นแล้วเมื่อใช้ OpenStreetMap เพราะเป็นปุ่มที่ทำงานเฉพาะกับ Google Maps — ตรงกันกับพฤติกรรมในหน้า /biDash ที่ใช้ pattern เดียวกัน (3.90.0)
- หน้า Live (popup กล้องบนแผนที่): คลิกหมุดกล้องแล้วเล่นสตรีมได้แล้ว เดิม popup ค้างที่กล่องดำว่าง ๆ ไม่มีภาพขึ้นมาเลย — เกิดจากระบบเรียกช่องทางสตรีมผิดตัว (ช่องทางสาธารณะที่ไม่ใส่ token ของผู้ใช้) ทำให้กล้องที่ต้องมีสิทธิ์ดูถูกปฏิเสธเงียบ ๆ ตอนนี้สลับไปใช้ช่องทางเดียวกับ VideoWall และ Dashboard popup ที่ทำงานปกติอยู่แล้ว สตรีมเริ่มเล่นในไม่กี่วินาทีเหมือนเดิม กล้องออฟไลน์ยังขึ้นป้าย "Maintenance Mode" ตามเดิม (3.88.1)
- หน้า VideoWall: กล้อง AIBOX (กล้อง AI ที่ sync จาก gateway) เล่นสตรีมได้แล้ว — เดิมระบบเลือกช่องทาง player จากยี่ห้อ ATA อย่างเดียว ทำให้กล้อง AIBOX ในช่อง VideoWall ถูกเลือกไปทาง WebRTC ที่ AIBOX ไม่รองรับ (เปิดแล้วต่อไม่ติดเงียบ ๆ) ตอนนี้ระบบรู้จัก AIBOX ผ่านยี่ห้อหรือต้นทาง gateway อัตโนมัติ และเลือกช่องทาง FLV ให้แทน — แก้ปัญหานี้กระจายไปยังทุกหน้าที่ดูสด (Live popup / Live preview แถบข้าง / Dashboard popup / Map InfoWindow / หน้าแก้ไขกล้อง preview) ผ่านตัวเลือกกลางตัวเดียว ทำให้พฤติกรรมการเลือก player สอดคล้องกันทั้งระบบ (3.80.3)
- หน้า ระบบอุปกรณ์ → กล้อง: ปุ่ม Sync รายแถวกลับมาแสดงสำหรับกล้องที่สร้างเองในระบบ (legacy local cameras) อีกครั้ง — เดิม (3.74.4–3.76.0) ระบบซ่อนปุ่ม Sync ทุกแถวที่ไม่มีต้นทาง edge ภายนอกเงียบ ๆ ตามสัญญาเก่า แต่ระบบหลังบ้านปัจจุบัน (klynx-api 4.62.0+) ยอมรับคำสั่ง force probe สำหรับกล้องทุกประเภทที่มี RTSP URL แล้ว ตอนนี้กล้อง legacy ที่สร้างเองในระบบจะแสดงปุ่ม Sync ตามปกติ กดแล้วระบบจะส่ง trigger ให้ commonmon probe กล้องตัวนั้นในรอบถัดไป (ไม่เกิน 30 วินาที) ถ้ายังไม่ตั้ง stream URL ระบบจะขึ้น toast เตือนให้ไปเพิ่มก่อน — สำหรับกล้องยี่ห้อ AIBOX / ATA (กล้อง AI ที่ sync อัตโนมัติผ่าน edgeAI + aiboxprobgw อยู่แล้ว) ยังคงซ่อนปุ่มตามเดิม (3.76.1)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์: แก้ปัญหา map เป็นพื้นดำได้แล้ว! เปลี่ยนเอนจิ้นแผนที่จาก MapLibre + deck.gl มาเป็น Leaflet + leaflet.markercluster (ตัวเดียวกับที่ใช้บน /biDash, /kcontrol/map, /live/map, /ksearch/chats) ซึ่งทำงานได้แล้วบน istio dev อย่างเสถียร: ตอนนี้แผนที่แสดง OpenStreetMap tiles + หมุดสีตามความรุนแรง + การจัดกลุ่มหมุดเมื่อ zoom out + popup คลิกหมุด + animation pulse สำหรับเหตุการณ์ใหม่ (10 วินาทีล่าสุด) + auto-fit zoom ให้พอดีกับหมุดทั้งหมด พร้อมเปลี่ยนสีแผนที่ตามธีมของระบบอัตโนมัติ (โหมดมืดใช้ CARTO Dark Matter ตามที่ใช้บน /biDash) — ผู้ใช้สลับธีมแล้วแผนที่เปลี่ยนตามทันที โหมด "ความหนาแน่น" (heatmap) ยังไม่ port มา รอ operator แจ้งถ้าต้องการ (3.74.8)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์: เจอ root cause ที่แท้จริงแล้ว — กรอบ canvas ของแผนที่มีขนาดเล็กกว่ากล่อง 138 พิกเซล (ระบบบันทึก 615×300 ทั้งที่กล่องคอนเทนเนอร์ 615×438) ทำให้ MapLibre เข้าวงรอบ resize ตัวเองวนซ้ำ (ที่ผู้ใช้รายงานว่า "console msg รัวๆ" รอบ 3.74.6) และไม่ paint tile ขึ้นจอจริง คราวนี้เพิ่มฟังก์ชัน forceCanvasContainerSize() บังคับ inline width/height ของ .maplibregl-canvas-container ให้เต็มกล่องที่ 4 จุดเวลา (load + RAF + 300ms + 1000ms) ครอบกรณี MapLibre พยายาม override style เดิม + เก็บ diagnostic ของกล่อง canvas-container เพิ่มเพื่อ confirm fix ในรอบ UAT ถัดไป (3.74.7)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์: ลองวิธีต่อไปสำหรับปัญหา map ขึ้นพื้นดำ (รอบ 3.74.2 ฝัง diagnostic ไว้แล้ว ระบบยืนยันว่า OpenStreetMap tiles โหลดได้ 12 ตัว + style ใช้งานได้ + กล่อง 615×438 px ครบ — แปลว่าไม่ใช่ปัญหา tile หรือ container) คราวนี้สลับโหมด overlay graphics จาก "ซ้อนสองชั้น canvas" (deck.gl ของหมุดทับ MapLibre tiles) มาเป็น "รวมเป็น canvas เดียว" (deck.gl ใช้ WebGL context เดียวกับ MapLibre) — ตามที่ทาง deck.gl ระบุว่ารองรับสำหรับ MapLibre v3+ ทั้งหมด เพื่อตัดปัญหาเรื่อง canvas บนสุดบังกล้องล่าง พร้อมเพิ่ม diagnostic log สำหรับ CSS computed ของ canvas (display / visibility / opacity / z-index / filter / transform) เพื่อให้ operator capture log บอกสาเหตุได้ครบในกรณียังไม่หาย (3.74.6)
- หน้า ระบบอุปกรณ์ → กล้อง: ปุ่ม Sync รายแถว — ตอนนี้กดแล้วทำงานจริงแล้ว เดิม (3.74.0–3.74.3) กดปุ่ม Sync แล้วระบบหลังบ้าน 404 ตลอด (endpoint ในสัญญา v1.3 §5.6 ไม่ได้ implement จริง) ตอนนี้ระบบหลังบ้าน 4.62.0 ได้สร้าง endpoint ใหม่ /forceProbe แล้ว — กดปุ่มแล้วระบบจะส่ง trigger ให้ commonmon probe กล้องตัวนั้นในรอบถัดไป (ไม่เกิน 30 วินาที) แทนการรอรอบ probe ปกติ; สถานะออนไลน์/ออฟไลน์จะอัปเดตในแถวอัตโนมัติ (ผ่านระบบ realtime ของ 3.74.3) เคยกดแล้วเจอ "404 Not Found" ก่อนหน้านี้ — เพราะกล้องส่วนใหญ่เป็น AIBOX ที่เราซ่อนปุ่มไว้แล้ว ผู้ใช้จึงไม่เจอข้อผิดพลาดในวงกว้าง แต่กล้องระบบ legacy (ATA/SVMS/iboc) ที่ยังเหลืออยู่จะเริ่มกดได้แล้ว (3.74.4)
- หน้า ระบบอุปกรณ์ → กล้อง: สถานะ Monitor ของกล้อง (Online / Offline / Suspect / Unknown) อัปเดตในแถวทันทีตอนระบบหลังบ้านแจ้งสถานะใหม่ — เดิมเมื่อมี event เข้ามา ระบบจะดึงรายการกล้องทั้งหมดใหม่ทำให้ตำแหน่ง scroll / การจัดเรียง / ตัวกรอง / ที่กดเลือกไว้ ถูกรีเซ็ตทุกครั้ง (และโหลดช้าเมื่อมีกล้อง 1,000+ ตัว) ตอนนี้แก้ให้แตะเฉพาะแถวที่เกี่ยวข้องเท่านั้น — ผู้ใช้กำลังดูตรงไหนจะอยู่ตรงนั้น; กรณี WSS หลุดแล้วต่อกลับ ระบบจะดึงข้อมูลใหม่ครั้งเดียวเพื่อให้สถานะตามทันเหตุการณ์ที่เกิดระหว่างขาด เชื่อมต่อ (3.74.3)
- หน้า AI Intelligence (Beta) /intDash — แผนที่เหตุการณ์: เพิ่มมาตรการป้องกันแผนที่เป็นพื้นดำ (UAT บน istio รอบที่ผ่านมา OpenStreetMap tiles โหลดสำเร็จแต่หน้าแผนที่ยังขึ้นพื้นดำ) — (1) ใส่ชั้น background สีเทาอ่อนใต้ tiles เพื่อแยกได้ว่าปัญหาอยู่ที่ "MapLibre ไม่ render เลย" (ยังดำ) หรือ "MapLibre render แต่ tiles ไม่ paint" (เห็นพื้นเทาแต่ไม่มี tiles) (2) เพิ่มการเรียก resize() แผนที่อีก 2 จุด (ตอน load + 300ms หลัง init) นอกเหนือจาก requestAnimationFrame เดิม กันกรณี container ขนาดยังไม่นิ่งตอน MapLibre วัดครั้งแรก (3) เปิด console.info ทุก event สำคัญของ MapLibre พร้อม prefix [AiEventMap] เพื่อให้ operator capture log แล้วชี้สาเหตุได้ในรอบ UAT ถัดไป (3.74.2)
- หน้า ระบบอุปกรณ์ → กล้อง: ปุ่ม Sync รายแถวซ่อนสำหรับกล้อง AIBOX แล้ว เพราะกล้อง AIBOX ระบบ sync อัตโนมัติผ่าน edgeAI + auto-refresh สถานะ online/offline ผ่าน aiboxprobgw อยู่แล้ว — ปุ่ม manual ซ้ำซ้อนไม่ได้ใช้งาน นอกจากนี้ป้าย "ATA" ในคอลัมน์ยี่ห้อเปลี่ยนเป็น "AIBOX" (ทั้งหมดเป็นยี่ห้อเดียวกัน) — กล้อง legacy ที่ไม่ใช่ AIBOX (ATA / SVMS / iboc บนระบบเดิม) ยังมีปุ่ม Sync ตามปกติ (3.74.1)
- หน้า ระบบค้นหา /ksearch/chats — การ์ดผลลัพธ์ AI: ปุ่มแว่นขยายมุมขวาบนของรูปแสดงไอคอนแล้ว เดิมขึ้นเป็นวงกลมเปล่า ๆ ไม่มีไอคอนข้างใน เพราะใช้ชื่อไอคอนผิด นอกจากนี้ตอนนี้คลิกที่ภาพได้โดยตรงเพื่อดูภาพขยาย (เดิมต้องคลิกที่ปุ่มเล็ก ๆ มุมขวาบนเท่านั้น) — ขยายพื้นที่ที่ใช้กดได้ ช่วยให้ตรวจสอบภาพง่ายขึ้น (3.73.0)
- ล็อกอินครั้งแรกหรือเปิดแท็บใหม่แล้วเข้าหน้า dashboard ได้แล้ว — เดิม (3.56.1) เคยแก้ให้บัญชีที่มีสิทธิ์ AI Intelligence (Beta) ไปเข้า /intDash แต่กรณีที่ระบบยังไม่ทันโหลดค่า "องค์กรที่ใช้งานอยู่" ทันเวลา ก็จะหลุดไปเข้าหน้า "โปรไฟล์ของฉัน" /profile แทนอยู่ดี ตอนนี้ระบบจะรอให้ค่าองค์กรพร้อมก่อนตัดสินใจ — เริ่มที่หน้า dashboard เป็นปลายทางมาตรฐานหลังล็อกอินทุกครั้ง แล้วจึงสลับไป /intDash อัตโนมัติถ้าผู้ใช้มีสิทธิ์เมนูนั้น หรือไปหน้าอื่นตามสิทธิ์ที่มี (3.57.1)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: "ระบุเจาะจงสมาชิก" ทำงานแยกตามหน่วยงานแล้ว — เดิมเลือก wemeet ในหน่วยงาน Unit 2 ระบบจะติ๊กชื่อ wemeet ค้างไปทุกหน่วยงานอื่นที่ wemeet เป็นสมาชิกอยู่ด้วย (test01, test02 ฯลฯ) ทำให้ดูเหมือนผูกสิทธิ์ผิดจากที่ตั้งใจ ตอนนี้คลิกหน่วยงานไหนช่อง "ระบุเจาะจง" ก็แสดงเฉพาะรายการของหน่วยงานนั้น — เลือกหรือไม่เลือก ก็เก็บแยกกัน ไม่ลามไปหน่วยงานอื่น ตามที่ผู้ใช้คาดหวัง พร้อมแผงสรุปด้านบนแสดงจำนวน OU ที่ใช้ทั้งหมด / ระบุเจาะจง / รายคนรวม + จำนวนกลุ่มทรัพยากรและอุปกรณ์ระบุเจาะจง อ่านได้ในที่เดียวโดยไม่ต้องคลิกแต่ละ OU; ป้ายชิปข้างหน่วยงานที่ระบุเจาะจงเปลี่ยนเป็น "ระบุเจาะจง N คน" สื่อความหมายชัดกว่าตัวเลขล้วน — สำหรับหน้า "จัดการเมนู" จะตามมาในรอบถัดไป (เพราะระบบหลังบ้านของหน้านั้นคนละชุดกัน) (3.57.0 + klynx-api 4.58.0)
- ล็อกอินสำเร็จแล้วเข้าหน้า dashboard เป็นค่าเริ่มต้น (เดิมบางบัญชีถูกพาไปหน้า "โปรไฟล์ของฉัน" /profile แทน) — และถ้าบัญชีนั้นได้รับสิทธิ์เมนู AI Intelligence (Beta) /intDash ระบบจะพาเข้า /intDash แทน dashboard อัตโนมัติ; บัญชีที่ไม่ได้รับสิทธิ์ทั้งสองเมนูยังคงเข้าหน้าโปรไฟล์เป็นปลายทางสำรองเหมือนเดิม — แก้ในระดับหน้าเว็บล้วน ไม่ต้องอัปเดตระบบหลังบ้าน (3.56.1)
- หน้า ระบบอุปกรณ์ → จัดกลุ่มอุปกรณ์: อัปโหลดไอคอนกลุ่มขนาดใหญ่ (เช่น 512×512 px ขึ้นไป) ไม่ขึ้น 400 "ขนาดไอคอนเกินช่วงที่อนุญาต" อีกแล้ว — ระบบหน้าเว็บย่อขนาดรูปต้นทางอัตโนมัติให้พอดีกับขนาดที่หมุดบนแผนที่จะใช้จริง (ประหยัด bandwidth และไม่กระทบความคมชัด) และระบบหลังบ้านขยายช่วงขนาดสูงสุดที่ยอมรับให้รองรับไฟล์ retina ที่ผู้ใช้มีอยู่แล้ว — รูปไฟล์เดิมที่อัปโหลดสำเร็จแล้วยังใช้งานได้ตามเดิม (3.55.0 + klynx-api 4.56.0)
- หน้า ระบบอุปกรณ์ → กล้อง (เพิ่ม + แก้ไข) / กระดานหลัก / แผนที่: แสดงแผนที่ได้แม้ระบบยังไม่ได้ตั้งค่า Google Maps API key — เดิมหน้าตั้งค่ากล้องไม่แสดงแผนที่ pin เลย ทำให้ admin กรอกพิกัด lat/long ไม่สะดวก ตอนนี้ถ้ายังไม่ตั้งคีย์ ระบบจะโหลด Google Maps ในโหมด development (มีลายน้ำของ Google) เพื่อให้ pin ตำแหน่งและดู preview ได้ แอดมินที่ตั้งคีย์ผ่าน ตั้งค่า → แผนที่ ไว้แล้วจะใช้งานเต็มรูปแบบเช่นเดิม (3.55.0)
- หน้า ตั้งค่า → แผนที่: ช่อง API key ของ Google Maps ไม่บังคับใส่อีกแล้ว — ตั้ง provider เป็น "google" ได้โดยไม่ต้องกรอกคีย์ ระบบจะใช้โหมด development แทน เหมาะกับทีมที่ทดสอบโดยยังไม่ได้เปิด billing บัญชี Google Cloud (3.55.0)
- หน้า AI Intelligence (Beta) /intDash: เลื่อนหน้าได้ตามปกติแล้ว + แผนที่แสดงตามจริง — เดิม (3.54.0) วางโครงหน้าเป็น layout แบบเก่าที่ไม่เข้ากับแถบเมนูข้าง ทำให้บนจอบางขนาดเลื่อนหน้าลงไปดูวิดเจ็ตสรุปด้านล่างไม่ได้ และแผนที่เป็นพื้นดำเพราะ MapLibre วัดขนาด canvas ก่อนที่ container จะเสร็จเลย์เอาต์ ตอนนี้ใช้โครงหน้ามาตรฐานเดียวกับหน้า Dashboard / Map / VideoWall (UDashboardPanel) — เลื่อนได้ครบทุกส่วน + แผนที่โหลด tile ถูกต้องตั้งแต่ครั้งแรก + ปุ่ม "รีเฟรช" และป้าย LIVE ย้ายขึ้นไปอยู่ที่แถบหัวให้สอดคล้องกับหน้าอื่นๆ (3.54.2)
- หน้า /map — ไอคอนกล้องตามที่กำหนดใน "กลุ่มอุปกรณ์" แสดงบนแผนที่แล้ว — เดิมหน้า /map แสดงเป็นไอคอนเริ่มต้น (เขียว/แดงตามสถานะออนไลน์-ออฟไลน์) ทุกตัว แม้กลุ่มที่กล้องอยู่จะอัปโหลดไอคอนกล้องไว้แล้ว ตอนนี้กล้องที่อยู่ในกลุ่มที่มีไอคอนกำหนดเอง จะแสดงไอคอนนั้นบนแผนที่อัตโนมัติ (แยกตามสถานะออนไลน์-ออฟไลน์) เหมือนหน้า Map (biDash) และ Live หมายเหตุ: กรณีเตือนภัย (alarm) / เตือน (warning) ยังคงใช้ไอคอนมาตรฐานเพื่อให้สังเกตได้ทันที — สำหรับหน้า K-Control map ยังคงใช้ไอคอนมาตรฐาน เพราะระบบหลังบ้านยังไม่ส่งไอคอนกลุ่มมาในผลลัพธ์ของ kcontrol (ต้องอัปเดตฝั่งระบบหลังก่อน) (3.53.2)
- หน้า Dashboard / Video Wall / Live — ฟิลเตอร์ "กลุ่มอุปกรณ์": ตัวเลือกในดรอปดาวน์เท่ากับหน้า Map (biDash) แล้ว — เดิม Dashboard / Video Wall / Live แสดง "กลุ่มภายในระบบ" ที่ไม่ควรเปิดให้ผู้ใช้ทั่วไปเห็น และเรียงไม่ตามชื่อ ตอนนี้ทั้ง 4 หน้าตัดกลุ่ม internal ออกเหมือนกัน + แสดงชื่อแบบ "กลุ่มแม่ / กลุ่มลูก" เพื่อให้แยกกลุ่มชื่อซ้ำที่อยู่คนละสายได้ + เรียงตามภาษาที่ใช้งาน (ไทย/อังกฤษ) — กดเลือกกลุ่มใน Dashboard แล้วจะได้รายการเดียวกับ Map และ Video Wall (3.53.1)
- ความปลอดภัย — หน้า ระบบผู้ใช้ → สิทธิ์ → จัดการเมนู / ทรัพยากร: ผู้ใช้ที่ไม่ใช่ผู้ดูแลองค์กรจะไม่เห็นรายการ Permission Profile ของคนอื่นอีกแล้ว แม้พิมพ์ URL เข้าตรง ๆ — เดิมเปิดดูข้อมูล profile / OU / กล้องที่ผูกกับ profile ได้แม้ไม่มีสิทธิ์แก้ไข ตอนนี้ระบบหลังบ้านปิดสิทธิ์อ่านสำหรับผู้ที่ไม่มี organization.manage และฝั่งหน้าเว็บแสดงข้อความ "ไม่มีสิทธิ์เข้าหน้านี้" พร้อมปุ่มกลับหน้าหลัก (เดิมแสดงรายการว่าง เหมือนไม่มี profile ในองค์กร) พร้อมซ่อนเมนู "จัดการสิทธิ์" ในแถบข้างให้ผู้ใช้ที่ไม่ใช่ผู้ดูแลองค์กร (klynx-api 4.53.0, FE 3.50.0)
- หน้า ตั้งค่า → ผังพื้นที่ (Floor Plans): กดสร้างผังครั้งแรก หรือแก้ไขผังเดิม ไม่ขึ้น 404 "route not found" อีกแล้ว — เดิม endpoint CRUD พื้นฐานเปิดไว้เฉพาะ deployment ที่เปิดฟีเจอร์ผังเสมือน (digital twin) ทำให้องค์กรปกติกดสร้างผังไม่ขึ้น ตอนนี้ CRUD พื้นฐานเปิดให้ทุก deployment ส่วนฟีเจอร์ผังเสมือนยังคงต้องเปิดฟีเจอร์เพิ่มแยก (klynx-api 4.53.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: เปิด profile ที่เลือกหลายกลุ่ม (เช่น "Device" + "Group 3") และระบุเจาะจงกล้องไว้ในกลุ่มหนึ่ง (เช่น 2 กล้องใน Group 3) — ตอนนี้ระบบให้สิทธิ์เห็นกล้องทั้งหมดของกลุ่มที่เลือกทั้งกลุ่ม + เฉพาะกล้องที่ระบุเจาะจงในกลุ่มที่ drilldown ลงไป (รวมเป็น 4 กล้อง) — เดิมระบบตัดกล้องของกลุ่มที่เลือกทั้งกลุ่มทิ้งเงียบ ๆ ทำให้เห็นแค่ 2 กล้องที่ระบุเจาะจง ขัดกับเจตนาผู้ใช้และ UI ที่ดูเหมือนเลือกทั้งกลุ่มแล้ว (klynx-api 4.47.0)
- หน้า ระบบอุปกรณ์ → จัดกลุ่มอุปกรณ์ (/systemDevices/groups): หลังกด "เพิ่มอุปกรณ์" หรือ "ลบที่เลือก" สำเร็จ ตัวเลขจำนวนอุปกรณ์ใน badge บนต้นไม้กลุ่มฝั่งซ้าย (เช่น "17") อัปเดตเป็นค่าใหม่ทันที — เดิมรีเฟรชแค่รายการอุปกรณ์ฝั่งขวา ตัวเลขใน badge ยังเป็นค่าเดิมจนกว่าจะออกไปเมนูอื่นแล้วกลับมา (3.43.2)
- หน้า ระบบอุปกรณ์ → จัดกลุ่มอุปกรณ์ (/systemDevices/groups): กดเลือกอุปกรณ์ทีละตัวด้วยการพิมพ์ค้นหา (เช่น ค้น "CC-030" แล้วติ๊ก ค้น "CC-031" แล้วติ๊กอีกตัว) ตอนกด "ลบที่เลือก (2)" หรือ "เพิ่มที่เลือก (2)" ระบบส่งทั้งสองตัวจริงแล้ว — เดิมส่งไปแค่ตัวล่าสุดที่ยังเห็นในรายการ ทำให้ noti บอกว่า 2 รายการแต่ระบบจริง ๆ ดำเนินการกับตัวเดียว (3.43.1)
- หน้า VideoWall (/videowall): ช่องค้นหากล้องในแถบด้านขวาเรียกใช้ระบบค้นหาฝั่งเซิร์ฟเวอร์แล้ว — พิมพ์คำค้นแล้วระบบจะค้นจากชื่อกล้อง / เขต / สถานที่ / รายละเอียด / รหัสกล้อง ครบทุกฟิลด์ที่ผู้ใช้มองเห็นได้ในรายละเอียดกล้อง เดิมระบบกรองเฉพาะฝั่งหน้าเว็บโดยดูแค่ชื่อ / เขต / รหัส ทำให้พิมพ์คำที่อยู่ในรายละเอียดหรือสถานที่แล้วไม่เจอ ตอนนี้ใช้พื้นฐานเดียวกับเซิร์ฟเวอร์ค้น (case-insensitive, substring) ผลค้นตรงกับสิ่งที่ผู้ใช้คาดหวัง (3.43.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: badge "เลือก N" บนแท็บ "เลือกอุปกรณ์" แสดงเฉพาะกลุ่มที่อยู่ในขอบเขตของ profile จริง ๆ — เดิม (หลังเปิดให้ขึ้นทุกกลุ่มที่มีอุปกรณ์เจาะจงใน 3.40.2) ถ้ากล้องตัวเดียวอยู่หลายกลุ่ม badge จะขึ้นทุกกลุ่มที่กล้องนั้นอยู่ แม้ profile ไม่ได้เลือกกลุ่มนั้น ตอนนี้ขึ้นเฉพาะกลุ่มที่ profile เลือกตรง ๆ หรือ parent ที่ติ๊ก "รวมกลุ่มย่อย" ไว้ (3.41.0)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: เปิด profile ที่มีสิทธิ์อุปกรณ์เจาะจง (เลือกระบุเจาะจง) ตอนนี้แท็บ "เลือกอุปกรณ์" แสดง badge "เลือก N" บนทุกกลุ่มที่มีอุปกรณ์เจาะจงในนั้น — เดิม badge ขึ้นเฉพาะกลุ่มที่กำลังเปิดดูอยู่ ทำให้ดูเหมือนไม่ได้เลือกอะไรไว้ ต้องคลิกแต่ละกลุ่มทีละอันถึงจะเห็น (3.40.2)
- หน้า ระบบผู้ใช้ → สิทธิ์ → ทรัพยากร: badge "ระบุเจาะจงสมาชิก" บนแท็บ "เลือกองค์กร/หน่วยงาน" แสดงเฉพาะหน่วยงานที่อยู่ในขอบเขตของ profile จริง ๆ — เดิมถ้าระบุเจาะจง member 1 คนที่อยู่ใน OU หลายแห่ง badge จะขึ้นทุก OU ที่มีคน ๆ นั้นอยู่ แม้ profile ไม่ได้เลือก OU นั้น (3.40.2)
- หน้า ระบบอุปกรณ์ → จัดกลุ่มอุปกรณ์ (แก้ไข): อัปโหลดไอคอนกลุ่มแล้วกด "บันทึก" ตอนนี้บันทึกไอคอนให้อัตโนมัติ — เดิมต้องกด "ใช้สีนี้" ก่อนทุกครั้ง ถ้าลืมกดแล้วบันทึกเลย ไอคอนจะหายไปเงียบ ๆ (ระบบไม่ได้ส่งไฟล์ไปที่เซิร์ฟเวอร์) ตอนนี้พอเลือกไฟล์แล้วระบบ tint สีตามที่เลือกอยู่ + อัปโหลดให้ทันที ปุ่ม "ใช้สีนี้" ยังใช้งานได้สำหรับเปลี่ยนสีใหม่ (3.40.1)
- หน้า /kcontrol/map + /kcontrol/mapif: ไอคอนหมุดสถานะออนไลน์/ออฟไลน์ปรับสัดส่วนใหม่ให้ขนาด+ทรงตรงกับหมุดของหน้า /map (กล้อง) และ /biDash แล้ว — เดิมเป็นวงกลมเล็กแบน (40×40 px) ดูเล็กผิดสัดส่วนกับหมุดกล้องบนหน้าจอเดียวกัน ตอนนี้เป็นรูปทรง drop-pin สูง (45×120 px) เหมือนกล้อง พร้อมไอคอนสัญญาณกระจาย (broadcast wave) สีขาวอยู่ภายในวงรีสีเขียว/แดง สื่อความหมาย IoT/sensor ของ kcontrol ส่วนไอคอนแจ้งเตือนไฟไหม้ (ตอนเกิดเหตุ alarm) ยังเป็นรูปไฟไหม้ขนาด 64×64 เหมือนเดิม ตั้งใจให้ต่างจากหมุดปกติเพื่อสะกิดสายตา (3.58.1)
- หน้า /kcontrol/map + /map: คลิกชื่ออุปกรณ์ในช่องค้นหาแล้วอุปกรณ์ที่ยังไม่ได้ตั้งพิกัด ระบบจะแสดง toast เตือนแทนการเงียบไม่ทำอะไร — เดิมคลิกแล้วแผนที่ไม่เลื่อน ไม่มีข้อความบอกว่าทำไม operator ไม่รู้ว่าอุปกรณ์ไม่มีพิกัด ตอนนี้ขึ้นข้อความ "อุปกรณ์ยังไม่มีพิกัด" พร้อมระบุว่าให้ไปตั้งที่หน้า ระบบอุปกรณ์ → จัดการอุปกรณ์ / จัดการกล้อง (3.58.1)
- หน้าทุกหน้าที่ใช้ realtime WebSocket (Dashboard, biDash, /kcontrol/map, /kcontrol/mapif ฯลฯ): สลับหน้าระหว่างหน้าจอเร็วๆ แล้วเหตุการณ์ realtime ตัวแรกหลังเข้าหน้าใหม่ไม่หาย — เดิมเปลี่ยนหน้าแล้วฝั่ง browser ปิด WebSocket ทันที พอหน้าใหม่ขึ้นและขอ subscribe ใหม่ ต้องสร้าง WebSocket ตั้งแต่ต้น ระหว่างนั้นถ้ามีเหตุการณ์ส่งจาก server จะส่งออกไม่ทันเพราะยังไม่มีใคร listen เลยตกหาย ตอนนี้ระบบรอ 500 มิลลิวินาทีก่อนปิด WebSocket ถ้าหน้าใหม่ขอ subscribe มาก่อน 500 ms WebSocket เดิมจะถูกใช้ต่อทันที ไม่มีช่วง gap (3.58.1)
- หน้า ระบบอุปกรณ์ → กล้อง (แก้ไข): เพิ่มช่อง "รหัสผ่านกล้อง" พร้อมปุ่มแสดง/ซ่อนรหัส — เดิมหน้าแก้ไขไม่มีช่องนี้เลย ทำให้ admin ที่วาง URL มาในรูป rtsp://user:pass@host/path ระบบจะตัด credentials ทิ้ง แต่ไม่มีที่กรอกใหม่ ตอนนี้กล้องที่เก็บไว้ไม่ครบจะแสดง toast เตือน "ข้อมูลล็อกอินกล้องไม่ครบ" แทนการ retry เงียบๆ จนเกิด Illegal Login Lock ที่ตัวกล้อง (3.40.0)
- เพิ่มหน้าแจ้งเตือนเต็มจอเมื่อไม่มีสิทธิ์เข้าใช้งาน (403) หรือระบบขัดข้อง (500) — เดิมเข้าหน้าที่ไม่มีสิทธิ์แล้วเห็นแค่ toast มุมขวาล่าง ส่วนเนื้อหาหน้ายังโผล่ครึ่งๆ ตอนนี้ระบบจะแสดงข้อความ "คุณไม่มีสิทธิ์เข้าใช้งานหน้านี้" หรือ "เกิดข้อผิดพลาดของระบบ" พร้อมปุ่ม "กลับหน้าแรก" / "ย้อนกลับ" / "ลองใหม่อีกครั้ง" (กรณี 500) แทน (3.35.0)
- หน้า Permissions → Resource: ยกเลิกเลือกกลุ่ม (เช่น Test01) แล้วกด Save ระบบลบสมาชิกที่ระบุเจาะจงใต้กลุ่มนั้นออกให้อัตโนมัติ — เดิมต้อง deselect รายชื่อทีละคนเอง แม้ uncheck กลุ่มแม่ไปแล้ว (3.31.1)
- หน้า Permissions → Resource: ในแท็บ "เลือกอุปกรณ์" รายการกลุ่มแต่ละบรรทัดมีไอคอนตามชนิดแล้ว — กล้อง / kcontrol / edge แยกสายตาได้ทันที (เดิมขึ้นรูป folder เหมือนกันหมด)
- หน้า Permissions → Resource: เลือกอุปกรณ์เจาะจง (kcontrol / edge) ใน profile ได้แล้ว — เดิมกด Save ขึ้น 404 "camera not found" เพราะหน้าส่ง id ของ kcontrol ลงไปในช่อง cameras รวมกัน ตอนนี้แยกเป็น cameras / kControls / edges ตามชนิดอุปกรณ์ก่อนส่ง
- หน้า /systemDevices/groups + Permissions → Resource: แสดงโครงสร้างกลุ่มอุปกรณ์ครบทุกชั้น แม้ในองค์กรที่มีกลุ่มเกิน 10 — เดิมระบบ paginate แล้วบางกลุ่มลูกตกหน้า 2 หาย เลยมองดูเหมือนจำนวนกลุ่มไม่เท่ากันระหว่าง 2 หน้านี้
- หัวหน้าหน่วยงาน (parent OU) เห็นกล้องของหน่วยงานลูกได้แล้ว แม้ profile ตั้ง memberIds เจาะจง — pre-fix ระบบกรอง parent OU ออกถ้าชื่อไม่อยู่ในรายการเจาะจง
- หน้า Permissions → Resource: เลือกสมาชิกจาก OU ลูกได้โดยไม่ต้อง tick OU ลูกก่อน — ระบบ auto-add OU ของสมาชิกที่เลือก แทนการ scrub ทิ้ง
- หน้า Permissions / จัดการหน่วยงาน: badge นับจำนวนหน่วยงานย่อย (`t§ N`) + จำนวนสมาชิก แสดงครบทุกระดับตั้งแต่โหลดครั้งแรก — เดิมเห็นจำนวนเฉพาะระดับที่กดเปิดแล้ว
- หน้า Permissions → เมนู: badge `✓ N` บนกลุ่มเมนู — เห็นจำนวน sub-menu ที่ tick ไว้โดยไม่ต้อง expand
- Sidebar: เมนู "อุณหภูมิ" (K-Control Temperature) ขึ้นในแถบข้างหลังตั้งสิทธิ์ — เดิม grant ใน picker แต่ sidebar ไม่ render leaf
- หน้า K-Control Temperature: คลิกเมนูแล้ว 500 "Unknown route middleware" — เกิดจาก draft template ค้าง middleware อ้างอิงที่ไม่มีอยู่ ตอนนี้เปิดหน้าได้ปกติ
- หน้า Permissions → Resource: บันทึก profile แล้วได้ 404 — ตอนนี้ scrub สมาชิกที่หลุดออกจาก OU แล้วเตือนผ่าน toast แทน
- Badge จำนวนสมาชิกเจาะจงใน Permission tree ขึ้นทุก OU โดยไม่ต้อง click — เดิมต้องคลิก folder ก่อน
- อัปโหลดรูป Profile (Settings → โปรไฟล์) ส่งภาพถึง server แล้ว — เดิม PATCH ไม่ได้แนบไฟล์
- หน้า System Users → Edit User: เลือกรูปเดิมซ้ำได้ preview จะ refresh — เดิม Chrome กั๊กการ fire @change
- Permission Profile status nil-keep — PATCH ไม่ได้ส่ง status แล้วถูกปิดเอง
- หน้าผู้ใช้ page=2 ว่าง: snap กลับไปหน้าสุดท้ายอัตโนมัติ
- ไอคอน Event Integration ขึ้น "ใช้งานได้" ทั้งที่ยังไม่ตั้ง gateway env
- หน่วยงานสร้างใหม่หาย จนกว่าจะรีเฟรช (event payload ใส่ parentId)
Resource Group icons + Excel round-trip + Dashboard counters
Features5
- Resource Group: ตั้งไอคอนกล้องบนแผนที่เป็นของตัวเอง (online + offline)
- อัปโหลดไอคอน .png .jpg .webp (≤ 500 KB, 16-256 px)
- Resource: Export / Import ผ่าน Excel template (cameras + groups 2 ชีต)
- Dashboard counters: รวม API call ตัวเลขแดชบอร์ดเป็น call เดียว (cache 10s)
- Admin endpoint: ดู credentials ของกล้องแบบ audit-logged
Improvements3
- CameraDTO: ลบ user / password ออกจาก URL อัตโนมัติ
- Permission Profile: includeResourceGroupChildren — ขยายให้ลูกหลานทั้งหมด
- Direct grants ของกล้อง / kcontrol แสดงในหน้า Resource ที่ผู้ใช้เห็นแล้ว
Fixes3
- Permission profile nil-keep regression — PATCH ไม่กระทบ field ที่ไม่ส่ง
- Camera URL credential leak (admin endpoint + public list ทั้งคู่)
- Dead code controller (devapi) ลบทิ้งทั้งหมด
สิทธิ์เจาะจงรายอุปกรณ์ + ระบบ Subscription / License
Features4
- Permission Profile: Phase 2a/2b — กำหนด camera / kcontrol โดยตรง (direct grants)
- Subscription / Billing: appliance license activation flow
- Enterprise license: รองรับ deployment profile หลายแบบ (saas / platform / appliance)
- Resource Group hierarchy: parent-child + cycle defense
Improvements2
- Permify resolver: รองรับ direct grants ทุกชนิด (camera, kcontrol, edge, group)
- Phibek webhook integration: เปิด/ปิด tenant flow
Fixes2
- Org subscription repair on activation
- Member cleanup เมื่อลบ user
Events query API + Live Map + Cross-org public visibility
Features5
- Events: REST query API (list / detail) — fetched on-demand จาก gateway-api
- Event refs index: pagination เร็ว (เก็บแค่ index ไม่ใช่ payload เต็ม)
- Live Map: anonymous mode + authenticated org-scoped view
- Cross-org public cameras: ตั้ง mapVisibility=public ให้คนอื่นเห็นได้
- Delivery status tracking: เห็นว่า event ถูกส่งสำเร็จหรือล้มเหลว
Improvements2
- Map clusters: แบ่งกลุ่มกล้องบนแผนที่แบบ zoom-aware
- Floor plan / Digital twin: รากฐาน rendering layer
รากฐาน Multi-tenant + Permission system + Camera management
Features7
- Multi-tenant: tenant / organization / org-unit hierarchy
- Permission Profile: org-unit + resource-group narrowing (Permify-backed)
- Camera management: register / sync / monitor / icon redaction
- K-Control: IoT device dashboard (sensor data, MQTT live)
- User management: RBAC (Keycloak realm + Permify org roles)
- Audit log: read/write trail สำหรับ admin endpoints
- Aliza-bot v1: Telegram bot สำหรับ ops command
ข้อมูลเทคนิค
รายละเอียดการรองรับและความสามารถ
รองรับกล้อง
- ONVIF 2.0+
- RTSP / RTMP
- ATA Edge
- Hikvision
- Dahua
- IP Camera ทั่วไป
การสตรีม
- WebRTC (low-latency)
- FLV over WebSocket
- HLS
- RTSP Proxy
- Snapshot on-demand
AI / Analytics
- Face Recognition
- License Plate (LPR)
- Pedestrian Detection
- Object Tracking
- Custom AI box (ATA / SVMS / iboc)
Browser / Mobile
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- Mobile responsive (กำลังพัฒนา native)
Integration
- gateway-api (events SoT)
- klynx-connector (Windows edge)
- Phibek webhook
- MQTT realtime
- Kafka pipeline
Security
- Keycloak SSO
- Permify RBAC
- JWT bearer + X-Active-Org
- Audit log
- URL credential redaction
- TLS only
แผนพัฒนาในอนาคต
ฟีเจอร์ที่กำลังจะมาถึง