📊 Dashboard Overview
ຫາ
ບໍລິການທັງໝົດ
—
ກຳລັງໃຫ້ບໍລິການ
—
ເກີນເວລາ (ທັງໝົດ)
—
ສະເລ່ຍ (ນາທີ)
—
ພະນັກງານ (ຄົນ)
—
ສາຂາທີ່ບໍລິການຫຼາຍສຸດ
ປະເພດບໍລິການຍອດນິຍົມ
🔴 Real-time Live Sessions
| ຊ່ອງ | ລູກຄ້າ | ພະນັກງານ | ສາຂາ | ປະເພດ | ເວລາເລີ່ມ | ໄລຍະເວລາ | Actions |
|---|
📜 ປະຫວັດການບໍລິການທັງໝົດ
-- ທຸກສາຂາ --
- ທັງໝົດ
- ສຳນັກງານໃຫຍ່ ແຂວງຫຼວງພະບາງ
- ໜ່ວຍບໍລິການ ແຂວງໄຊຍະບູລີ
- ສາຂາ ແຂວງອຸດົມໄຊ
- ໜ່ວຍບໍລິການ ແຂວງບໍ່ແກ້ວ
- ໜ່ວຍບໍລິການ ແຂວງຫຼວງນ້ຳທາ
- ໜ່ວຍບໍລິການ ແຂວງຜົ້ງສາລີ
- ສາຂາ ນະຄອນຫຼວງວຽງຈັນ
- ສາຂາ ແຂວງໄຊສົມບູນ
-- ທຸກບໍລິການ --
- ທັງໝົດ
-- ທຸກຮູບແບບ --
- ທັງໝົດ
- ປົກກະຕິ
- ອອນລາຍ
- ນອກສະຖານທີ່
ທັງໝົດ
0
ລວມເວລາປົກກະຕິ
0
ນາທີ
ລວມເວລາເກີນ
0
ນາທີ
ພະນັກງານເຂົ້າບໍລິການ
0
ຄົນ
| ຊ່ອງ | ລູກຄ້າ | ປະເພດ | ຮູບແບບ | ພະນັກງານ | ສາຂາ | ເລີ່ມ - ສິ້ນສຸດ | ນາທີ | ເກີນເວລາ | ໝາຍເຫດ | Actions |
|---|
👥 ຈັດການ Users
| Username | ຊື່ - ນາມສະກຸນ | ສາຂາ | Role | Actions |
|---|
⚙️ ຈັດການປະເພດບໍລິການ
| ຊື່ບໍລິການ | ເວລາມາດຕະຖານ (ນາທີ) | Actions |
|---|
📗 Google Sheet Integration
ຕັ້ງຄ່າ Google Sheet
ວິທີໃຊ້: ເປີດ Google Sheet → Extensions → Apps Script → ວາງ script ດ້ານລຸ່ມ → Deploy as Web App → Copy URL
🔄 Sync ຂໍ້ມູນໄປ Google Sheet
📋 Google Apps Script Code
Copy script ນີ້ໄປໃສ່ Google Apps Script:
function doPost(e) {
try {
var data = JSON.parse(e.postData.contents);
if (data.action === 'appendRow') {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(data.sheet) || ss.insertSheet(data.sheet);
// Add headers if sheet is empty
if (sheet.getLastRow() === 0) {
sheet.appendRow(['Timestamp','ຊ່ອງ','ລູກຄ້າ','ພະນັກງານ','ID','ສາຂາ','ປະເພດ','ຮູບແບບ','ເລີ່ມ','ສີ້ນສຸດ','ນາທີ','ໝາຍເຫດ','Firebase ID']);
sheet.getRange(1,1,1,13).setFontWeight('bold').setBackground('#1155CC').setFontColor('#FFFFFF');
}
var d = data.data;
sheet.appendRow([d.timestamp,d.counter,d.customerName,d.employeeName,d.ownerId,d.branchName,d.serviceType,d.serviceModel,d.startTime,d.endTime,d.durationMinutes,d.note,d.firebaseId]);
}
return ContentService.createTextOutput(JSON.stringify({status:'ok'})).setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService.createTextOutput(JSON.stringify({status:'error',message:err.message})).setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
if (e.parameter.action === 'ping') {
return ContentService.createTextOutput(JSON.stringify({status:'ok'})).setMimeType(ContentService.MimeType.JSON);
}
return ContentService.createTextOutput('SSMI Service Timer GSheet API').setMimeType(ContentService.MimeType.TEXT);
}
📋 Activity Logs
→
ທັງໝົດ
—
Login
—
Save Session
—
Delete
—
ມື້ນີ້
—
ສະແດງ: 0 ລາຍການ
| ເວລາ | User | Action | ລາຍລະອຽດ | IP / Device | Status |
|---|
🛠 Tools & Maintenance
🔍 ລ້າງຂໍ້ມູນຊໍ້າ (Duplicate Cleanup)
ຄົ້ນຫາ ແລະ ລົບຂໍ້ມູນ session ທີ່ຊໍ້າ (User, ວັນ, ເວລາ, ບໍລິການ ດຽວກັນ)
🔴 ລ້າງ Active Sessions
ລ້າງ sessions ທີ່ຄ້າງຢູ່ (stuck) ທີ່ user ບໍ່ໄດ້ save ກ່ອນ logout
📊 Export ຂໍ້ມູນທັງໝົດ
Export ຂໍ້ມູນປະຫວັດທັງໝົດ ອອກເປັນ CSV
🏥 System Health
Firebase: ກຳລັງກວດ...
Sessions: —
Active: —
Users: —
Services: —