Edge & Approvals • 8 พฤษภาคม 2569
Web v3.76.1API v—

Klynx PlatformChangelog

ประวัติการพัฒนา รายละเอียดเวอร์ชัน และข้อมูลเทคนิคของระบบ

What's New

ไฮไลท์ใน Edge & Approvals

ฟีเจอร์ใหม่และการปรับปรุงที่สำคัญ

IMPROVED

ดูสตรีมสดผ่านระบบใหม่ — ปลอดภัยขึ้น + รองรับ AIBOX

เปลี่ยนช่องทางดู FLV ของกล้อง ATA / AIBOX มาผ่านระบบ klynx-api แทนต่อตรงไป edgeAI — ระบบจะขอ ticket แบบใช้ครั้งเดียวก่อนเปิดสตรีม โทเค็นของ edgeAI ไม่หลุดมาฝั่งผู้ใช้อีกแล้ว ใช้กับ /live, /biDash, /videowall, /map, และหน้าแก้ไขกล้อง

BETA

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 โหมดเปิดให้ผู้ดูแลสิทธิ์ลองเปิดได้ที่หน้า "ระบบผู้ใช้ → สิทธิ์ → จัดการเมนู"

NEW

AI Investigation Center

หน้า /ksearch/chats เปลี่ยนเป็น workspace สืบค้นเหตุการณ์จากกล้องด้วย AI พร้อม cards, timeline และ map context

NEW

อัปเดตสถานะอุปกรณ์แบบ Real-time ทุกหน้า

หน้า Dashboard / K-Control / VideoWall / รายการกล้อง / รายการ kcontrol / Map / mapif รับสถานะออนไลน์-ออฟไลน์และเหตุการณ์ใหม่ทันที โดยไม่ต้องกด refresh — ระบบเชื่อมต่อแบบใหม่ที่ปลอดภัยขึ้นและไม่หลุดสิทธิ์ข้ามองค์กร

NEW

หน้า K-Control Temperature

ดูอุณหภูมิย้อนหลังต่ออุปกรณ์ พร้อมกราฟ + ตั้งเกณฑ์เตือนได้ที่หน้า /kcontrol/temperature

NEW

กำหนดสิทธิ์เป็นรายคน

เลือกได้ว่าจะให้ใครในหน่วยงานเห็นกล้อง / kcontrol ตัวไหนบ้าง โดยไม่ต้องสร้างกลุ่มสิทธิ์ใหม่ทุกคน

NEW

ไอคอนกล้องบนแผนที่ตามกลุ่ม

แต่ละกลุ่มอุปกรณ์ตั้งไอคอนของตัวเองได้ — แยกสีตอนออนไลน์ / ออฟไลน์ ดูแผนที่แล้วเข้าใจสถานะทันที

NEW

สิทธิ์เข้าถึง Edge Device

จำกัดได้ว่าใครเห็น Edge ตัวไหนบ้าง (ATA / SVMS / iboc) — เหมือนระบบสิทธิ์กล้องที่มีอยู่แล้ว

IMPROVED

Export รายชื่อ / กล้อง เป็น Excel ทุกหน้า

ของเดิม export ได้แค่หน้าปัจจุบัน ตอนนี้ดึงครบทั้งองค์กร พร้อมใช้งานทันที

IMPROVED

เปิด / ปิด Permission Profile

หยุดใช้งาน Profile ชั่วคราวได้โดยไม่ต้องลบ — ค่า OU / Member ที่ตั้งไว้คงเดิม

SECURITY

ปิดช่องโหว่สตรีมข้ามสิทธิ์

ผู้ใช้ที่ไม่มีสิทธิ์ดูกล้อง จะเปิดสตรีมไม่ได้แล้ว แม้รู้รหัสกล้อง — เดิมเช็คแค่ระดับองค์กร

10K+รองรับกล้องต่อองค์กร
99.9%Uptime SLA
< 500msReal-time Latency
ไม่จำกัดรองรับเหตุการณ์ / วัน
Release History

ประวัติเวอร์ชัน

รายละเอียดการเปลี่ยนแปลงทั้งหมด

LATESTพ.ค. 2026 — Edge & Approvals3-18 พ.ค. 2569

K-Control Temperature + การจัดการสิทธิ์ Edge + เวิร์กโฟลว์อนุมัติบั๊ก Aliza-bot

Features19

  • หน้า 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)

Improvements48

  • หน้า 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)

Fixes51

  • หน้า ระบบอุปกรณ์ → กล้อง: ปุ่ม 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)
เม.ย. 2026 — Resource Icons & Import/Export30 เม.ย. - 2 พ.ค. 2569

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) ลบทิ้งทั้งหมด
มี.ค. - เม.ย. 2026 — Direct Grants & Subscriptionมี.ค. - เม.ย. 2569

สิทธิ์เจาะจงรายอุปกรณ์ + ระบบ 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
ก.พ. 2026 — Events & Mapก.พ. - มี.ค. 2569

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
ก่อน ก.พ. 2026 — Foundationก.ย. 2568 - ก.พ. 2569

รากฐาน 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
Technical

ข้อมูลเทคนิค

รายละเอียดการรองรับและความสามารถ

รองรับกล้อง

  • 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
Roadmap

แผนพัฒนาในอนาคต

ฟีเจอร์ที่กำลังจะมาถึง

Q2 2569แผนที่รวมอุปกรณ์ทุกประเภท (กล้อง + kcontrol + edge + sensor)กำลังพัฒนา
Q2 2569Cross-org icon resolution บนแผนที่ public anonymousวางแผนไว้
Q3 2569Mobile App (iOS / Android native)วางแผนไว้
Q3 2569Cloud Recording (NVR ในคลาวด์)วางแผนไว้
Q3 2569Klynx-connector — Windows edge phase 2 (appliance + gateway integrations)วางแผนไว้
Q4 2569AI Custom Model uploadวางแผนไว้

ต้องการข้อมูลเพิ่มเติม?

อ่านเอกสารหรือติดต่อทีมงานได้เลย