diff --git a/data/state.json b/data/state.json
index e154ca7..39d3c42 100644
--- a/data/state.json
+++ b/data/state.json
@@ -1,5 +1,5 @@
{
- "last_updated": "2026-04-23T02:01:27Z",
+ "last_updated": "2026-05-18T03:15:28Z",
"rooms": {
"BARI1": {
"kode_ruang": "BARI1",
@@ -7,20 +7,20 @@
"nama_ruang": "RUANG BARITO KELAS 1",
"old_value": {
"kapasitas": 6,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 6,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T11:16:36Z"
+ "last_synced": "2026-05-18T02:36:40Z"
},
"BARI2": {
"kode_ruang": "BARI2",
@@ -28,20 +28,20 @@
"nama_ruang": "RUANG BARITO KELAS 2",
"old_value": {
"kapasitas": 4,
- "tersedia": 0,
+ "tersedia": 4,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 4
},
"new_value": {
"kapasitas": 4,
- "tersedia": 0,
+ "tersedia": 4,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 4
},
"changed": false,
- "last_synced": "2026-04-22T08:51:41Z"
+ "last_synced": "2026-05-18T02:35:52Z"
},
"BARI3": {
"kode_ruang": "BARI3",
@@ -49,20 +49,20 @@
"nama_ruang": "RUANG BARITO KELAS 3",
"old_value": {
"kapasitas": 11,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 11,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T14:36:44Z"
+ "last_synced": "2026-05-18T02:35:52Z"
},
"BARIV": {
"kode_ruang": "BARIV",
@@ -83,7 +83,7 @@
"tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T14:36:29Z"
+ "last_synced": "2026-05-18T02:35:49Z"
},
"BENG2": {
"kode_ruang": "BENG2",
@@ -91,20 +91,20 @@
"nama_ruang": "RUANG BENGAWAN SOLO KELAS 2",
"old_value": {
"kapasitas": 4,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 4,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T01:05:38Z"
+ "last_synced": "2026-05-11T10:23:47+07:00"
},
"BRAN2": {
"kode_ruang": "BRAN2",
@@ -112,20 +112,20 @@
"nama_ruang": "RUANG HCU BRANTAS",
"old_value": {
"kapasitas": 9,
- "tersedia": 3,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 2
},
"new_value": {
"kapasitas": 9,
- "tersedia": 3,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 2
},
"changed": false,
- "last_synced": "2026-04-22T18:01:28Z"
+ "last_synced": "2026-05-18T02:35:41Z"
},
"BROM3": {
"kode_ruang": "BROM3",
@@ -133,20 +133,20 @@
"nama_ruang": "RUANG BROMO KELAS 3",
"old_value": {
"kapasitas": 42,
- "tersedia": 4,
+ "tersedia": 12,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 12
},
"new_value": {
"kapasitas": 42,
- "tersedia": 4,
+ "tersedia": 12,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 12
},
"changed": false,
- "last_synced": "2026-04-23T01:26:28Z"
+ "last_synced": "2026-05-18T02:35:44Z"
},
"BUGV3": {
"kode_ruang": "BUGV3",
@@ -154,20 +154,20 @@
"nama_ruang": "RUANG BUGENVILE KELAS 3",
"old_value": {
"kapasitas": 20,
- "tersedia": 7,
+ "tersedia": 10,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 7
+ "tersedia_pria_wanita": 10
},
"new_value": {
"kapasitas": 20,
- "tersedia": 7,
+ "tersedia": 10,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 7
+ "tersedia_pria_wanita": 10
},
"changed": false,
- "last_synced": "2026-04-22T13:56:30Z"
+ "last_synced": "2026-05-18T02:35:56Z"
},
"BUNA2": {
"kode_ruang": "BUNA2",
@@ -175,20 +175,20 @@
"nama_ruang": "RUANG BUNAKEN KELAS 2",
"old_value": {
"kapasitas": 6,
- "tersedia": 1,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 3
},
"new_value": {
"kapasitas": 6,
- "tersedia": 1,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-22T15:21:29Z"
+ "last_synced": "2026-05-18T02:35:38Z"
},
"BUNA3": {
"kode_ruang": "BUNA3",
@@ -196,10 +196,10 @@
"nama_ruang": "RUANG BUNAKEN KELAS 3",
"old_value": {
"kapasitas": 16,
- "tersedia": 4,
+ "tersedia": 5,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 5
},
"new_value": {
"kapasitas": 16,
@@ -208,8 +208,8 @@
"tersedia_wanita": 0,
"tersedia_pria_wanita": 4
},
- "changed": false,
- "last_synced": "2026-04-22T14:46:30Z"
+ "changed": true,
+ "last_synced": "2026-05-18T03:15:28Z"
},
"CILI2": {
"kode_ruang": "CILI2",
@@ -217,20 +217,20 @@
"nama_ruang": "RUANG HCU CILIWUNG",
"old_value": {
"kapasitas": 28,
- "tersedia": 4,
+ "tersedia": 10,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 10
},
"new_value": {
"kapasitas": 28,
- "tersedia": 4,
+ "tersedia": 10,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 10
},
"changed": false,
- "last_synced": "2026-04-23T01:26:27Z"
+ "last_synced": "2026-05-11T10:23:47+07:00"
},
"CISA2": {
"kode_ruang": "CISA2",
@@ -238,20 +238,20 @@
"nama_ruang": "RUANG HCU CISADANE",
"old_value": {
"kapasitas": 40,
- "tersedia": 6,
+ "tersedia": 11,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 6
+ "tersedia_pria_wanita": 11
},
"new_value": {
"kapasitas": 40,
- "tersedia": 6,
+ "tersedia": 11,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 6
+ "tersedia_pria_wanita": 11
},
"changed": false,
- "last_synced": "2026-04-22T13:46:39Z"
+ "last_synced": "2026-05-18T03:02:15Z"
},
"DAHL1": {
"kode_ruang": "DAHL1",
@@ -259,20 +259,20 @@
"nama_ruang": "RUANG DAHLIA KELAS 1",
"old_value": {
"kapasitas": 38,
- "tersedia": 14,
+ "tersedia": 26,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 14
+ "tersedia_pria_wanita": 26
},
"new_value": {
"kapasitas": 38,
- "tersedia": 14,
+ "tersedia": 26,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 14
+ "tersedia_pria_wanita": 26
},
"changed": false,
- "last_synced": "2026-04-23T01:16:26Z"
+ "last_synced": "2026-05-18T02:35:57Z"
},
"GALG3": {
"kode_ruang": "GALG3",
@@ -293,7 +293,7 @@
"tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-23T01:11:31Z"
+ "last_synced": "2026-05-18T02:35:46Z"
},
"GILI1": {
"kode_ruang": "GILI1",
@@ -301,20 +301,20 @@
"nama_ruang": "RUANG GILI TRAWANGAN KELAS 1",
"old_value": {
"kapasitas": 2,
- "tersedia": 2,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 0
},
"new_value": {
"kapasitas": 2,
- "tersedia": 2,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 0
},
"changed": false,
- "last_synced": "2026-04-22T01:05:20Z"
+ "last_synced": "2026-05-18T02:35:39Z"
},
"GILI2": {
"kode_ruang": "GILI2",
@@ -322,20 +322,20 @@
"nama_ruang": "RUANG GILI TRAWANGAN KELAS 2",
"old_value": {
"kapasitas": 4,
- "tersedia": 1,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 3
},
"new_value": {
"kapasitas": 4,
- "tersedia": 1,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-22T02:50:36Z"
+ "last_synced": "2026-05-11T10:23:47+07:00"
},
"GILI3": {
"kode_ruang": "GILI3",
@@ -343,20 +343,20 @@
"nama_ruang": "RUANG GILI TRAWANGAN KELAS 3",
"old_value": {
"kapasitas": 9,
- "tersedia": 4,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 9,
- "tersedia": 4,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T09:11:32Z"
+ "last_synced": "2026-05-18T02:35:39Z"
},
"HMEL1": {
"kode_ruang": "HMEL1",
@@ -377,7 +377,7 @@
"tersedia_pria_wanita": 7
},
"changed": false,
- "last_synced": "2026-04-22T01:05:46Z"
+ "last_synced": "2026-05-18T02:35:56Z"
},
"IMEL1": {
"kode_ruang": "IMEL1",
@@ -385,20 +385,20 @@
"nama_ruang": "RUANG ICU INFEKSI MELATI",
"old_value": {
"kapasitas": 6,
- "tersedia": 4,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 6,
- "tersedia": 4,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T21:36:27Z"
+ "last_synced": "2026-05-18T02:35:37Z"
},
"JIMB2": {
"kode_ruang": "JIMB2",
@@ -406,20 +406,20 @@
"nama_ruang": "RUANG JIMBARAN KELAS 2",
"old_value": {
"kapasitas": 28,
- "tersedia": 2,
+ "tersedia": 13,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 13
},
"new_value": {
"kapasitas": 28,
- "tersedia": 2,
+ "tersedia": 13,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 13
},
"changed": false,
- "last_synced": "2026-04-22T13:06:38Z"
+ "last_synced": "2026-05-18T02:52:15Z"
},
"KAPA1": {
"kode_ruang": "KAPA1",
@@ -427,20 +427,20 @@
"nama_ruang": "RUANG ICU KAPUAS A",
"old_value": {
"kapasitas": 16,
- "tersedia": 0,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 3
},
"new_value": {
"kapasitas": 16,
- "tersedia": 0,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-22T15:16:30Z"
+ "last_synced": "2026-05-18T02:35:55Z"
},
"KAPB1": {
"kode_ruang": "KAPB1",
@@ -448,20 +448,20 @@
"nama_ruang": "RUANG ICU KAPUAS B",
"old_value": {
"kapasitas": 9,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 9,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T19:11:33Z"
+ "last_synced": "2026-05-18T02:35:55Z"
},
"KAPC1": {
"kode_ruang": "KAPC1",
@@ -469,20 +469,20 @@
"nama_ruang": "RUANG ICU KAPUAS C KELAS 1",
"old_value": {
"kapasitas": 14,
- "tersedia": 2,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 3
},
"new_value": {
"kapasitas": 14,
- "tersedia": 2,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-22T22:46:27Z"
+ "last_synced": "2026-05-18T02:35:56Z"
},
"KELI1": {
"kode_ruang": "KELI1",
@@ -490,20 +490,20 @@
"nama_ruang": "RUANG KELIMUTU KELAS 1",
"old_value": {
"kapasitas": 16,
- "tersedia": 9,
+ "tersedia": 7,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 9
+ "tersedia_pria_wanita": 7
},
"new_value": {
"kapasitas": 16,
- "tersedia": 9,
+ "tersedia": 7,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 9
+ "tersedia_pria_wanita": 7
},
"changed": false,
- "last_synced": "2026-04-22T19:16:35Z"
+ "last_synced": "2026-05-18T02:35:47Z"
},
"KELI2": {
"kode_ruang": "KELI2",
@@ -511,20 +511,20 @@
"nama_ruang": "RUANG KELIMUTU KELAS 2",
"old_value": {
"kapasitas": 8,
- "tersedia": 2,
+ "tersedia": 4,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 4
},
"new_value": {
"kapasitas": 8,
- "tersedia": 2,
+ "tersedia": 4,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 4
},
"changed": false,
- "last_synced": "2026-04-23T01:41:33Z"
+ "last_synced": "2026-05-18T02:35:48Z"
},
"KERC2": {
"kode_ruang": "KERC2",
@@ -532,20 +532,20 @@
"nama_ruang": "RUANG KERINCI KELAS 2",
"old_value": {
"kapasitas": 8,
- "tersedia": 0,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 2
},
"new_value": {
"kapasitas": 8,
- "tersedia": 0,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 2
},
"changed": false,
- "last_synced": "2026-04-22T17:16:29Z"
+ "last_synced": "2026-05-18T02:35:58Z"
},
"KERC3": {
"kode_ruang": "KERC3",
@@ -553,20 +553,20 @@
"nama_ruang": "RUANG KERINCI KELAS 3",
"old_value": {
"kapasitas": 18,
- "tersedia": 4,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 18,
- "tersedia": 4,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-23T01:16:27Z"
+ "last_synced": "2026-05-18T02:52:15Z"
},
"KRAK1": {
"kode_ruang": "KRAK1",
@@ -574,20 +574,20 @@
"nama_ruang": "RUANG PICU KRAKATAU",
"old_value": {
"kapasitas": 17,
- "tersedia": 2,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 0
},
"new_value": {
"kapasitas": 17,
- "tersedia": 2,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 0
},
"changed": false,
- "last_synced": "2026-04-22T15:41:36Z"
+ "last_synced": "2026-05-18T02:35:49Z"
},
"LOSA3": {
"kode_ruang": "LOSA3",
@@ -595,20 +595,20 @@
"nama_ruang": "RUANG LOSARI KELAS 3",
"old_value": {
"kapasitas": 14,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 14,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T15:26:29Z"
+ "last_synced": "2026-05-18T02:35:43Z"
},
"MAHA2": {
"kode_ruang": "MAHA2",
@@ -616,20 +616,20 @@
"nama_ruang": "RUANG HCU MAHAKAM",
"old_value": {
"kapasitas": 20,
- "tersedia": 10,
+ "tersedia": 8,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 8
},
"new_value": {
"kapasitas": 20,
- "tersedia": 10,
+ "tersedia": 8,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 8
},
"changed": false,
- "last_synced": "2026-04-23T00:11:27Z"
+ "last_synced": "2026-05-18T02:35:40Z"
},
"MUSI1": {
"kode_ruang": "MUSI1",
@@ -650,7 +650,7 @@
"tersedia_pria_wanita": 2
},
"changed": false,
- "last_synced": "2026-04-22T13:51:31Z"
+ "last_synced": "2026-05-18T02:35:50Z"
},
"MWAR1": {
"kode_ruang": "MWAR1",
@@ -658,20 +658,20 @@
"nama_ruang": "RUANG MAWAR KELAS 1",
"old_value": {
"kapasitas": 30,
- "tersedia": 10,
+ "tersedia": 13,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 13
},
"new_value": {
"kapasitas": 30,
- "tersedia": 10,
+ "tersedia": 13,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 13
},
"changed": false,
- "last_synced": "2026-04-22T23:31:28Z"
+ "last_synced": "2026-05-18T03:02:15Z"
},
"PANG3": {
"kode_ruang": "PANG3",
@@ -679,20 +679,20 @@
"nama_ruang": "RUANG PANGANDARAN",
"old_value": {
"kapasitas": 35,
- "tersedia": 2,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 3
},
"new_value": {
"kapasitas": 35,
- "tersedia": 2,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-22T16:31:29Z"
+ "last_synced": "2026-05-18T02:35:41Z"
},
"PARA3": {
"kode_ruang": "PARA3",
@@ -700,20 +700,20 @@
"nama_ruang": "RUANG PARANGTRITIS",
"old_value": {
"kapasitas": 30,
- "tersedia": 4,
+ "tersedia": 6,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 6
},
"new_value": {
"kapasitas": 30,
- "tersedia": 4,
+ "tersedia": 5,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 5
},
- "changed": false,
- "last_synced": "2026-04-23T01:46:26Z"
+ "changed": true,
+ "last_synced": "2026-05-18T03:15:28Z"
},
"RANKB3": {
"kode_ruang": "RANKB3",
@@ -721,20 +721,20 @@
"nama_ruang": "RUANG RANU KUMBOLO (BAYI) KELAS 3",
"old_value": {
"kapasitas": 1,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 1,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T03:30:23Z"
+ "last_synced": "2026-05-18T02:35:47Z"
},
"RANU2": {
"kode_ruang": "RANU2",
@@ -742,20 +742,20 @@
"nama_ruang": "RUANG HCU RANU GRATI",
"old_value": {
"kapasitas": 8,
- "tersedia": 2,
+ "tersedia": 4,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 4
},
"new_value": {
"kapasitas": 8,
- "tersedia": 2,
+ "tersedia": 4,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 4
},
"changed": false,
- "last_synced": "2026-04-22T22:36:28Z"
+ "last_synced": "2026-05-18T02:35:54Z"
},
"RANU3": {
"kode_ruang": "RANU3",
@@ -763,20 +763,20 @@
"nama_ruang": "RUANG RANU KUMBOLO KELAS 3",
"old_value": {
"kapasitas": 18,
- "tersedia": 8,
+ "tersedia": 12,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 8
+ "tersedia_pria_wanita": 12
},
"new_value": {
"kapasitas": 18,
- "tersedia": 8,
+ "tersedia": 12,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 8
+ "tersedia_pria_wanita": 12
},
"changed": false,
- "last_synced": "2026-04-22T15:01:31Z"
+ "last_synced": "2026-05-18T02:35:59Z"
},
"RGPLT21": {
"kode_ruang": "RGPLT21",
@@ -784,20 +784,20 @@
"nama_ruang": "RUANG GRAND PAV LANTAI 2 KELAS 1",
"old_value": {
"kapasitas": 12,
- "tersedia": 10,
+ "tersedia": 7,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 7
},
"new_value": {
"kapasitas": 12,
- "tersedia": 10,
+ "tersedia": 7,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 7
},
"changed": false,
- "last_synced": "2026-04-22T06:51:32Z"
+ "last_synced": "2026-05-18T02:36:07Z"
},
"RGPLT2VIP": {
"kode_ruang": "RGPLT2VIP",
@@ -805,20 +805,20 @@
"nama_ruang": "RUANG GRAND PAV LANTAI 2 KELAS VIP",
"old_value": {
"kapasitas": 5,
- "tersedia": 3,
+ "tersedia": 5,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 5
},
"new_value": {
"kapasitas": 5,
- "tersedia": 3,
+ "tersedia": 5,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 5
},
"changed": false,
- "last_synced": "2026-04-22T12:36:32Z"
+ "last_synced": "2026-05-18T02:36:09Z"
},
"RGPLT3": {
"kode_ruang": "RGPLT3",
@@ -839,28 +839,7 @@
"tersedia_pria_wanita": 15
},
"changed": false,
- "last_synced": "2026-04-23T01:26:29Z"
- },
- "RGPLT4": {
- "kode_ruang": "RGPLT4",
- "kodekelas": "VIP",
- "nama_ruang": "RUANG GRAND PAV LANTAI 4 KELAS VIP A",
- "old_value": {
- "kapasitas": 24,
- "tersedia": 24,
- "tersedia_pria": 0,
- "tersedia_wanita": 0,
- "tersedia_pria_wanita": 24
- },
- "new_value": {
- "kapasitas": 24,
- "tersedia": 24,
- "tersedia_pria": 0,
- "tersedia_wanita": 0,
- "tersedia_pria_wanita": 24
- },
- "changed": false,
- "last_synced": "2026-04-22T01:06:01Z"
+ "last_synced": "2026-05-18T02:36:01Z"
},
"RGPLT7VIP": {
"kode_ruang": "RGPLT7VIP",
@@ -868,20 +847,20 @@
"nama_ruang": "RUANG GRAND PAV LANTAI 7 KELAS VIP",
"old_value": {
"kapasitas": 3,
- "tersedia": 3,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 2
},
"new_value": {
"kapasitas": 3,
- "tersedia": 3,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 2
},
"changed": false,
- "last_synced": "2026-04-22T01:06:03Z"
+ "last_synced": "2026-05-18T02:36:08Z"
},
"RHCKW2": {
"kode_ruang": "RHCKW2",
@@ -889,20 +868,20 @@
"nama_ruang": "RUANG HCU KAWI KELAS 2",
"old_value": {
"kapasitas": 9,
- "tersedia": 8,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 8
+ "tersedia_pria_wanita": 3
},
"new_value": {
"kapasitas": 9,
- "tersedia": 8,
+ "tersedia": 3,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 8
+ "tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-22T04:01:45Z"
+ "last_synced": "2026-05-18T02:36:03Z"
},
"RHRP3": {
"kode_ruang": "RHRP3",
@@ -910,20 +889,20 @@
"nama_ruang": "RUANG HCU RANU PANE KELAS 2",
"old_value": {
"kapasitas": 38,
- "tersedia": 30,
+ "tersedia": 26,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 30
+ "tersedia_pria_wanita": 26
},
"new_value": {
"kapasitas": 38,
- "tersedia": 30,
+ "tersedia": 26,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 30
+ "tersedia_pria_wanita": 26
},
"changed": false,
- "last_synced": "2026-04-23T00:31:34Z"
+ "last_synced": "2026-05-18T02:36:05Z"
},
"RINJ1": {
"kode_ruang": "RINJ1",
@@ -931,20 +910,20 @@
"nama_ruang": "RUANG RINJANI KELAS 1",
"old_value": {
"kapasitas": 2,
- "tersedia": 1,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 0
},
"new_value": {
"kapasitas": 2,
- "tersedia": 1,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 0
},
"changed": false,
- "last_synced": "2026-04-22T07:51:42Z"
+ "last_synced": "2026-05-18T02:35:44Z"
},
"RINJ2": {
"kode_ruang": "RINJ2",
@@ -952,20 +931,20 @@
"nama_ruang": "RUANG RINJANI KELAS 2",
"old_value": {
"kapasitas": 2,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"new_value": {
"kapasitas": 2,
- "tersedia": 0,
+ "tersedia": 1,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 0
+ "tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T01:05:29Z"
+ "last_synced": "2026-05-11T10:23:47+07:00"
},
"RINJ3": {
"kode_ruang": "RINJ3",
@@ -973,20 +952,20 @@
"nama_ruang": "RUANG RINJANI KELAS 3",
"old_value": {
"kapasitas": 18,
- "tersedia": 1,
+ "tersedia": 8,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 8
},
"new_value": {
"kapasitas": 18,
- "tersedia": 1,
+ "tersedia": 8,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 1
+ "tersedia_pria_wanita": 8
},
"changed": false,
- "last_synced": "2026-04-22T22:01:28Z"
+ "last_synced": "2026-05-18T02:52:15Z"
},
"RNICU1": {
"kode_ruang": "RNICU1",
@@ -994,20 +973,20 @@
"nama_ruang": "RUANG NICU MANINJAU KELAS 1",
"old_value": {
"kapasitas": 12,
- "tersedia": 3,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 0
},
"new_value": {
"kapasitas": 12,
- "tersedia": 3,
+ "tersedia": 0,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 3
+ "tersedia_pria_wanita": 0
},
"changed": false,
- "last_synced": "2026-04-23T01:21:36Z"
+ "last_synced": "2026-05-18T02:36:06Z"
},
"RNS1": {
"kode_ruang": "RNS1",
@@ -1015,20 +994,20 @@
"nama_ruang": "RUANG NUSA DUA KELAS 1",
"old_value": {
"kapasitas": 20,
- "tersedia": 2,
+ "tersedia": 9,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 9
},
"new_value": {
"kapasitas": 20,
- "tersedia": 2,
+ "tersedia": 8,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 2
+ "tersedia_pria_wanita": 8
},
- "changed": false,
- "last_synced": "2026-04-23T01:01:35Z"
+ "changed": true,
+ "last_synced": "2026-05-18T03:15:28Z"
},
"ROE2": {
"kode_ruang": "ROE2",
@@ -1036,20 +1015,20 @@
"nama_ruang": "RUANG ROE KELAS 2",
"old_value": {
"kapasitas": 10,
- "tersedia": 4,
+ "tersedia": 9,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 9
},
"new_value": {
"kapasitas": 10,
- "tersedia": 4,
+ "tersedia": 9,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 4
+ "tersedia_pria_wanita": 9
},
"changed": false,
- "last_synced": "2026-04-22T23:16:33Z"
+ "last_synced": "2026-05-18T02:36:00Z"
},
"RSING3": {
"kode_ruang": "RSING3",
@@ -1057,20 +1036,20 @@
"nama_ruang": "RUANG SINGKARAK KELAS 3",
"old_value": {
"kapasitas": 30,
- "tersedia": 10,
+ "tersedia": 26,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 26
},
"new_value": {
"kapasitas": 30,
- "tersedia": 10,
+ "tersedia": 26,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 10
+ "tersedia_pria_wanita": 26
},
"changed": false,
- "last_synced": "2026-04-23T02:01:27Z"
+ "last_synced": "2026-05-18T02:36:04Z"
},
"RTOBY2": {
"kode_ruang": "RTOBY2",
@@ -1091,7 +1070,7 @@
"tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T01:05:57Z"
+ "last_synced": "2026-05-18T02:36:03Z"
},
"SARA2": {
"kode_ruang": "SARA2",
@@ -1099,20 +1078,20 @@
"nama_ruang": "RUANG HCU SARANGAN",
"old_value": {
"kapasitas": 11,
- "tersedia": 6,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 6
+ "tersedia_pria_wanita": 2
},
"new_value": {
"kapasitas": 11,
- "tersedia": 6,
+ "tersedia": 2,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 6
+ "tersedia_pria_wanita": 2
},
"changed": false,
- "last_synced": "2026-04-23T01:01:26Z"
+ "last_synced": "2026-05-18T02:35:48Z"
},
"SEME3": {
"kode_ruang": "SEME3",
@@ -1120,20 +1099,20 @@
"nama_ruang": "RUANG SEMERU",
"old_value": {
"kapasitas": 43,
- "tersedia": 11,
+ "tersedia": 34,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 11
+ "tersedia_pria_wanita": 34
},
"new_value": {
"kapasitas": 43,
- "tersedia": 11,
+ "tersedia": 34,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 11
+ "tersedia_pria_wanita": 34
},
"changed": false,
- "last_synced": "2026-04-23T00:31:33Z"
+ "last_synced": "2026-05-18T02:35:53Z"
},
"TOBA1": {
"kode_ruang": "TOBA1",
@@ -1154,7 +1133,7 @@
"tersedia_pria_wanita": 1
},
"changed": false,
- "last_synced": "2026-04-22T01:05:40Z"
+ "last_synced": "2026-05-18T02:35:53Z"
},
"TOIB1": {
"kode_ruang": "TOIB1",
@@ -1175,7 +1154,7 @@
"tersedia_pria_wanita": 4
},
"changed": false,
- "last_synced": "2026-04-23T02:01:26Z"
+ "last_synced": "2026-05-18T02:52:15Z"
},
"TOIB2": {
"kode_ruang": "TOIB2",
@@ -1196,7 +1175,7 @@
"tersedia_pria_wanita": 3
},
"changed": false,
- "last_synced": "2026-04-23T01:36:27Z"
+ "last_synced": "2026-05-18T02:52:15Z"
},
"TOND3": {
"kode_ruang": "TOND3",
@@ -1204,20 +1183,20 @@
"nama_ruang": "RUANG TONDANO",
"old_value": {
"kapasitas": 50,
- "tersedia": 26,
+ "tersedia": 29,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 26
+ "tersedia_pria_wanita": 29
},
"new_value": {
"kapasitas": 50,
- "tersedia": 26,
+ "tersedia": 28,
"tersedia_pria": 0,
"tersedia_wanita": 0,
- "tersedia_pria_wanita": 26
+ "tersedia_pria_wanita": 28
},
- "changed": false,
- "last_synced": "2026-04-22T22:41:38Z"
+ "changed": true,
+ "last_synced": "2026-05-18T03:15:28Z"
}
}
}
\ No newline at end of file
diff --git a/internal/admin/admin.go b/internal/admin/admin.go
new file mode 100644
index 0000000..ae76ea0
--- /dev/null
+++ b/internal/admin/admin.go
@@ -0,0 +1,576 @@
+package admin
+
+import (
+ "api-service/internal/config"
+ "api-service/internal/database"
+ "context"
+ "database/sql"
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "strconv"
+ "time"
+
+ "github.com/gin-gonic/gin"
+)
+
+type Ruangan struct {
+ No int
+ Nama string
+ JumlahTT int
+ KodeKelas sql.NullString
+ KodeAplicare sql.NullString
+ NamaRuang sql.NullString
+ StAktif int
+}
+
+type AdminHandler struct {
+ db database.Service
+}
+
+type AdminHandlerConfig struct {
+ Config *config.Config
+}
+
+func NewAdminHandler(cfg AdminHandlerConfig) *AdminHandler {
+ return &AdminHandler{db: database.New(cfg.Config)}
+}
+
+func (h *AdminHandler) getRuangan(ctx context.Context) ([]Ruangan, error) {
+ db, err := h.db.GetDB("simrs")
+ if err != nil {
+ return nil, fmt.Errorf("koneksi simrs gagal: %w", err)
+ }
+
+ rows, err := db.QueryContext(ctx, `
+ SELECT no, nama, jumlah_tt, kode_kelas, kode_aplicare, nama_ruang, st_aktif
+ FROM m_ruang
+ WHERE subsistem LIKE '%RAWAT INAP%'
+ ORDER BY no
+ `)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+
+ var result []Ruangan
+ for rows.Next() {
+ var r Ruangan
+ if err := rows.Scan(&r.No, &r.Nama, &r.JumlahTT,
+ &r.KodeKelas, &r.KodeAplicare, &r.NamaRuang, &r.StAktif); err != nil {
+ return nil, err
+ }
+ result = append(result, r)
+ }
+ return result, rows.Err()
+}
+
+// GetPage — GET /admin/aplicares
+func (h *AdminHandler) GetPage(c *gin.Context) {
+ ctx, cancel := context.WithTimeout(c.Request.Context(), 30*time.Second)
+ defer cancel()
+
+ ruangans, err := h.getRuangan(ctx)
+ if err != nil {
+ c.String(http.StatusInternalServerError, "Error: "+err.Error())
+ return
+ }
+
+ type RuanganJSON struct {
+ No int `json:"no"`
+ Nama string `json:"nama"`
+ JumlahTT int `json:"jumlah_tt"`
+ KodeKelas string `json:"kode_kelas"`
+ KodeAplicare string `json:"kode_aplicare"`
+ NamaRuang string `json:"nama_ruang"`
+ SudahMapping bool `json:"sudah_mapping"`
+ StAktif int `json:"st_aktif"`
+ }
+
+ var data []RuanganJSON
+ belumMapping := 0
+ for _, r := range ruangans {
+ sudah := r.KodeKelas.Valid && r.KodeKelas.String != "" &&
+ r.KodeAplicare.Valid && r.KodeAplicare.String != ""
+ if !sudah {
+ belumMapping++
+ }
+ data = append(data, RuanganJSON{
+ No: r.No,
+ Nama: r.Nama,
+ JumlahTT: r.JumlahTT,
+ KodeKelas: r.KodeKelas.String,
+ KodeAplicare: r.KodeAplicare.String,
+ NamaRuang: r.NamaRuang.String,
+ SudahMapping: sudah,
+ StAktif: r.StAktif,
+ })
+ }
+
+ jsonData, _ := json.Marshal(data)
+
+ html := `
+
+
+
+
+Admin Aplicares
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | No |
+ Nama Ruangan (SIMRS) |
+ Kapasitas |
+ Status |
+ Kode Kelas |
+ Kode BPJS |
+ Status |
+ Aksi |
+
+
+
+
+
+
+
+
+
+
+
Edit Mapping Ruangan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tambah Ruangan Baru
+
Data akan ditambahkan ke SIMRS + mapping BPJS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`
+
+ c.Header("Content-Type", "text/html; charset=utf-8")
+ c.String(http.StatusOK, html)
+}
+
+func kelasOptions() string {
+ opts := `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `
+ return opts
+}
+
+// GetRuangan — GET /api/v1/admin/aplicares/ruangan (JSON)
+func (h *AdminHandler) GetRuangan(c *gin.Context) {
+ ctx, cancel := context.WithTimeout(c.Request.Context(), 30*time.Second)
+ defer cancel()
+
+ ruangans, err := h.getRuangan(ctx)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
+ return
+ }
+
+ type Resp struct {
+ No int `json:"no"`
+ Nama string `json:"nama"`
+ JumlahTT int `json:"jumlah_tt"`
+ KodeKelas string `json:"kode_kelas"`
+ KodeAplicare string `json:"kode_aplicare"`
+ NamaRuang string `json:"nama_ruang"`
+ SudahMapping bool `json:"sudah_mapping"`
+ }
+
+ var data []Resp
+ belum := 0
+ for _, r := range ruangans {
+ sudah := r.KodeKelas.Valid && r.KodeKelas.String != "" &&
+ r.KodeAplicare.Valid && r.KodeAplicare.String != ""
+ if !sudah {
+ belum++
+ }
+ data = append(data, Resp{
+ No: r.No, Nama: r.Nama, JumlahTT: r.JumlahTT,
+ KodeKelas: r.KodeKelas.String, KodeAplicare: r.KodeAplicare.String,
+ NamaRuang: r.NamaRuang.String, SudahMapping: sudah,
+ })
+ }
+
+ c.JSON(http.StatusOK, gin.H{
+ "total": len(data), "belum_mapping": belum,
+ "sudah_mapping": len(data) - belum, "data": data,
+ })
+}
+
+// UpdateRuangan — PUT /api/v1/admin/aplicares/ruangan/:no
+func (h *AdminHandler) UpdateRuangan(c *gin.Context) {
+ no, err := strconv.Atoi(c.Param("no"))
+ if err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"error": "no tidak valid"})
+ return
+ }
+
+ var body struct {
+ KodeKelas string `json:"kode_kelas"`
+ KodeAplicare string `json:"kode_aplicare"`
+ NamaRuang string `json:"nama_ruang"`
+ JumlahTT int `json:"jumlah_tt"`
+ StAktif int `json:"st_aktif"`
+ }
+ if err := c.ShouldBindJSON(&body); err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
+ return
+ }
+ if body.KodeKelas == "" || body.KodeAplicare == "" {
+ c.JSON(http.StatusBadRequest, gin.H{"error": "kode_kelas dan kode_aplicare wajib diisi"})
+ return
+ }
+
+ db, err := h.db.GetDB("simrs")
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": "koneksi DB gagal"})
+ return
+ }
+
+ ctx, cancel := context.WithTimeout(c.Request.Context(), 10*time.Second)
+ defer cancel()
+
+ result, err := db.ExecContext(ctx, `
+ UPDATE m_ruang SET kode_kelas=$1, kode_aplicare=$2, nama_ruang=$3, jumlah_tt=$4, st_aktif=$5 WHERE no=$6
+ `, body.KodeKelas, body.KodeAplicare, body.NamaRuang, body.JumlahTT, body.StAktif, no)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": "update gagal: " + err.Error()})
+ return
+ }
+ rowsAffected, _ := result.RowsAffected()
+ if rowsAffected == 0 {
+ c.JSON(http.StatusOK, gin.H{"error": "tidak ada row yang terupdate, no=" + fmt.Sprintf("%d", no)})
+ return
+ }
+ c.JSON(http.StatusOK, gin.H{"message": "berhasil diupdate", "no": no, "rows_affected": rowsAffected})
+}
+
+// CreateRuangan — POST /api/v1/admin/aplicares/ruangan
+func (h *AdminHandler) CreateRuangan(c *gin.Context) {
+ var body struct {
+ Nama string `json:"nama"`
+ JumlahTT int `json:"jumlah_tt"`
+ KodeKelas string `json:"kode_kelas"`
+ KodeAplicare string `json:"kode_aplicare"`
+ NamaRuang string `json:"nama_ruang"`
+ }
+ if err := c.ShouldBindJSON(&body); err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
+ return
+ }
+ if body.Nama == "" || body.KodeKelas == "" || body.KodeAplicare == "" {
+ c.JSON(http.StatusBadRequest, gin.H{"error": "nama, kode_kelas, kode_aplicare wajib diisi"})
+ return
+ }
+
+ db, err := h.db.GetDB("simrs")
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": "koneksi DB gagal"})
+ return
+ }
+
+ ctx, cancel := context.WithTimeout(c.Request.Context(), 10*time.Second)
+ defer cancel()
+
+ // Auto generate no = MAX(no) + 1
+ var maxNo int
+ err = db.QueryRowContext(ctx, `SELECT COALESCE(MAX(no), 0) FROM m_ruang`).Scan(&maxNo)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": "gagal generate no: " + err.Error()})
+ return
+ }
+ newNo := maxNo + 1
+
+ _, err = db.ExecContext(ctx, `
+ INSERT INTO m_ruang (no, nama, jumlah_tt, subsistem, st_aktif, kode_kelas, kode_aplicare, nama_ruang)
+ VALUES ($1, $2, $3, 'RAWAT INAP', 1, $4, $5, $6)
+ `, newNo, body.Nama, body.JumlahTT, body.KodeKelas, body.KodeAplicare, body.NamaRuang)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": "insert gagal: " + err.Error()})
+ return
+ }
+ c.JSON(http.StatusOK, gin.H{"message": "ruangan berhasil ditambahkan", "no": newNo})
+}
diff --git a/internal/routes/v1/routes.go b/internal/routes/v1/routes.go
index 00ad537..84e5bca 100644
--- a/internal/routes/v1/routes.go
+++ b/internal/routes/v1/routes.go
@@ -1,6 +1,7 @@
package v1
import (
+ "api-service/internal/admin"
AplicareHandler "api-service/internal/aplicare"
"api-service/internal/config"
"api-service/internal/database"
@@ -145,6 +146,18 @@ func RegisterRoutes(cfg *config.Config) *gin.Engine {
ag.GET("/logs", aplicaresHandler.GetSyncLogs)
}
+ adminHandler := admin.NewAdminHandler(admin.AdminHandlerConfig{
+ Config: cfg,
+ })
+
+ adminGroup := v1.Group("/admin/aplicares")
+ {
+ adminGroup.GET("/ruangan", adminHandler.GetRuangan) // JSON API
+ adminGroup.PUT("/ruangan/:no", adminHandler.UpdateRuangan) // update mapping
+ adminGroup.POST("/ruangan", adminHandler.CreateRuangan)
+ }
+
+ router.GET("/admin", adminHandler.GetPage)
// =============================================================================
// PROTECTED ROUTES (Authentication Required)
// =============================================================================
diff --git a/internal/ruang/database.go b/internal/ruang/database.go
new file mode 100644
index 0000000..4e966d3
--- /dev/null
+++ b/internal/ruang/database.go
@@ -0,0 +1,39 @@
+package ruang
+
+import (
+ "context"
+ "fmt"
+)
+
+func (s *SimrsDB) GetMRuangan(ctx context.Context) ([]Ruangan, error) {
+ db, err := s.db.GetDB("simrs")
+ if err != nil {
+ return nil, fmt.Errorf("koneksi simrs gagal: %w", err)
+ }
+
+ query := `
+ SELECT no, nama, jumlah_tt,kode_aplicare, nama_ruang, kode_kelas
+ FROM m_ruang
+ where st_aktif = 1
+ ORDER BY no
+ `
+
+ rows, err := db.QueryContext(ctx, query)
+ if err != nil {
+ return nil, fmt.Errorf("query m_ruang gagal: %w", err)
+ }
+ defer rows.Close()
+
+ var result []Ruangan
+ for rows.Next() {
+ var r Ruangan
+ if err := rows.Scan(
+ &r.No, &r.Nama, &r.JumlahTT,
+ &r.KodeRuang, &r.NamaRuang, &r.KelasRuang,
+ ); err != nil {
+ return nil, fmt.Errorf("scan m_ruang gagal: %w", err)
+ }
+ result = append(result, r)
+ }
+ return result, rows.Err()
+}
diff --git a/internal/ruang/models.go b/internal/ruang/models.go
new file mode 100644
index 0000000..1965537
--- /dev/null
+++ b/internal/ruang/models.go
@@ -0,0 +1,12 @@
+package ruang
+
+import "database/sql"
+
+type Ruangan struct {
+ No int `db:"no"`
+ Nama string `db:"nama"`
+ JumlahTT int `db:"jumlah_tt"`
+ KodeRuang sql.NullString `db:"kode_aplicare"` // diisi manual, dikirim ke BPJS
+ NamaRuang sql.NullString `db:"nama_ruang"` // diisi manual, dikirim ke BPJS
+ KelasRuang sql.NullString `db:"kode_kelas"` // diisi manual, dikirim ke BPJS
+}
diff --git a/internal/ruang/ruang.go b/internal/ruang/ruang.go
new file mode 100644
index 0000000..4fcfdd4
--- /dev/null
+++ b/internal/ruang/ruang.go
@@ -0,0 +1,44 @@
+package ruang
+
+import (
+ "api-service/internal/config"
+ "api-service/internal/database"
+ "api-service/pkg/logger"
+ "context"
+ "github.com/gin-gonic/gin"
+ "github.com/go-playground/validator/v10"
+ "net/http"
+ "sync"
+ "time"
+)
+
+type MruangHandler struct {
+ simrs *SimrsDB
+ validator *validator.Validate
+ logger logger.Logger
+ cfg *config.Config
+ once sync.Once
+ interval time.Duration
+}
+
+type MruangHandlerConfig struct {
+ Config *config.Config
+ Logger logger.Logger
+ Validator *validator.Validate
+}
+type SimrsDB struct {
+ db database.Service
+}
+
+func (h *MruangHandler) NewMruangHandler(c *gin.Context) {
+ ctx, cancel := context.WithTimeout(c.Request.Context(), 120*time.Second)
+ defer cancel()
+
+ ruangans, err := h.simrs.GetMRuangan(ctx)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
+ return
+ }
+
+ c.JSON(http.StatusOK, ruangans)
+}
diff --git a/logs/sync.log b/logs/sync.log
index 10f3b64..68aa42c 100644
--- a/logs/sync.log
+++ b/logs/sync.log
@@ -772,3 +772,743 @@
{"timestamp":"2026-04-23T02:01:26Z","kode_ruang":"TOIB1","nama_ruang":"RUANG TOBA (IBU) KELAS 1","kode_kelas":"KL1","kapasitas":10,"tersedia":4,"action":"post","status":"sukses","response_ms":1125}
{"timestamp":"2026-04-23T02:01:27Z","kode_ruang":"RSING3","nama_ruang":"RUANG SINGKARAK KELAS 3","kode_kelas":"KL3","kapasitas":30,"tersedia":10,"action":"post","status":"sukses","response_ms":765}
{"action":"batch_sync","changed":2,"dry_run":false,"errors":null,"posted":2,"status":"sukses","timestamp":"2026-04-23T02:01:27Z","total_rooms":58}
+{"action":"batch_sync","changed":40,"dry_run":true,"errors":null,"posted":40,"status":"sukses","timestamp":"2026-05-11T10:23:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:28:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:33:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:38:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:43:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:48:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:53:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T10:58:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:03:47+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:08:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:13:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:18:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:23:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:28:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:33:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:38:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:43:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:48:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:53:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T11:58:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:03:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:08:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:13:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:18:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:23:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:28:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:33:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:38:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:43:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:48:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:53:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T12:58:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:03:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:08:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:13:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:18:11+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:21:13+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:24:56+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:29:56+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:34:21+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:38:38+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:40:30+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T13:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:07:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:12:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:17:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:22:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:27:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:32:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:37:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T14:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:07:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:12:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:17:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:22:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:27:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:32:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:37:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T15:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:07:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:12:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:17:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:22:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:27:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:32:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:37:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T16:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:07:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:12:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:17:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:22:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:27:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:32:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:37:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T17:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:07:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:12:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:17:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:22:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:27:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:32:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:37:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T18:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:07:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:12:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:17:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:22:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:27:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:32:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:37:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:42:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:47:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:52:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T19:57:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:02:58+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T20:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T21:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T22:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-11T23:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T00:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T01:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T02:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T03:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T04:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T05:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T06:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T07:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T08:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T09:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T10:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T11:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T12:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T13:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T14:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T15:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T16:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T17:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:43:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:48:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:53:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T18:58:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:03:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:08:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:13:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:18:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:23:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:28:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:33:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:38:00+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T19:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T20:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T21:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T22:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-12T23:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T00:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T01:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T02:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T03:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T04:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T05:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T06:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T07:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T08:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:38:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:43:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:48:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:53:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T09:58:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:03:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:08:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:13:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:18:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:23:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:28:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:33:02+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T10:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T11:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T12:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T13:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T14:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T15:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T16:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:33:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:38:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:43:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:48:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:53:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T17:58:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T18:03:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T18:08:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T18:13:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T18:18:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T18:23:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-13T18:28:03+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-18T08:56:20+07:00","total_rooms":46}
+{"action":"batch_sync","changed":1,"dry_run":true,"errors":null,"posted":1,"status":"sukses","timestamp":"2026-05-18T09:01:20+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-18T09:22:49+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-18T09:27:49+07:00","total_rooms":46}
+{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-05-18T09:32:02+07:00","total_rooms":46}
+{"timestamp":"2026-05-18T02:35:37Z","kode_ruang":"IMEL1","nama_ruang":"RUANG ICU INFEKSI MELATI","kode_kelas":"ISO","kapasitas":6,"tersedia":1,"action":"post","status":"sukses","response_ms":5213}
+{"timestamp":"2026-05-18T02:35:38Z","kode_ruang":"BUNA2","nama_ruang":"RUANG BUNAKEN KELAS 2","kode_kelas":"KL2","kapasitas":6,"tersedia":3,"action":"post","status":"sukses","response_ms":496}
+{"timestamp":"2026-05-18T02:35:38Z","kode_ruang":"BUNA3","nama_ruang":"RUANG BUNAKEN KELAS 3","kode_kelas":"KL3","kapasitas":16,"tersedia":7,"action":"post","status":"sukses","response_ms":518}
+{"timestamp":"2026-05-18T02:35:39Z","kode_ruang":"GILI1","nama_ruang":"RUANG GILI TRAWANGAN KELAS 1","kode_kelas":"KL1","kapasitas":2,"action":"post","status":"sukses","response_ms":460}
+{"timestamp":"2026-05-18T02:35:39Z","kode_ruang":"GILI3","nama_ruang":"RUANG GILI TRAWANGAN KELAS 3","kode_kelas":"KL3","kapasitas":9,"tersedia":1,"action":"post","status":"sukses","response_ms":524}
+{"timestamp":"2026-05-18T02:35:40Z","kode_ruang":"MAHA2","nama_ruang":"RUANG HCU MAHAKAM","kode_kelas":"HCU","kapasitas":20,"tersedia":8,"action":"post","status":"sukses","response_ms":908}
+{"timestamp":"2026-05-18T02:35:41Z","kode_ruang":"BRAN2","nama_ruang":"RUANG HCU BRANTAS","kode_kelas":"HCU","kapasitas":9,"tersedia":2,"action":"post","status":"sukses","response_ms":853}
+{"timestamp":"2026-05-18T02:35:41Z","kode_ruang":"PANG3","nama_ruang":"RUANG PANGANDARAN","kode_kelas":"KL3","kapasitas":35,"tersedia":3,"action":"post","status":"sukses","response_ms":461}
+{"timestamp":"2026-05-18T02:35:42Z","kode_ruang":"PARA3","nama_ruang":"RUANG PARANGTRITIS","kode_kelas":"KL3","kapasitas":30,"tersedia":6,"action":"post","status":"sukses","response_ms":474}
+{"timestamp":"2026-05-18T02:35:43Z","kode_ruang":"LOSA3","nama_ruang":"RUANG LOSARI KELAS 3","kode_kelas":"KL3","kapasitas":14,"tersedia":1,"action":"post","status":"sukses","response_ms":957}
+{"timestamp":"2026-05-18T02:35:44Z","kode_ruang":"BROM3","nama_ruang":"RUANG BROMO KELAS 3","kode_kelas":"KL3","kapasitas":42,"tersedia":12,"action":"post","status":"sukses","response_ms":873}
+{"timestamp":"2026-05-18T02:35:44Z","kode_ruang":"RINJ1","nama_ruang":"RUANG RINJANI KELAS 1","kode_kelas":"KL1","kapasitas":2,"action":"post","status":"sukses","response_ms":882}
+{"timestamp":"2026-05-18T02:35:45Z","kode_ruang":"RINJ3","nama_ruang":"RUANG RINJANI KELAS 3","kode_kelas":"KL3","kapasitas":18,"tersedia":9,"action":"post","status":"sukses","response_ms":893}
+{"timestamp":"2026-05-18T02:35:46Z","kode_ruang":"GALG3","nama_ruang":"RUANG GALUNGGUNG KELAS 3","kode_kelas":"KL3","kapasitas":16,"tersedia":1,"action":"post","status":"sukses","response_ms":518}
+{"timestamp":"2026-05-18T02:35:47Z","kode_ruang":"RANKB3","nama_ruang":"RUANG RANU KUMBOLO (BAYI) KELAS 3","kode_kelas":"KL3","kapasitas":1,"tersedia":1,"action":"post","status":"sukses","response_ms":743}
+{"timestamp":"2026-05-18T02:35:47Z","kode_ruang":"KELI1","nama_ruang":"RUANG KELIMUTU KELAS 1","kode_kelas":"KL1","kapasitas":16,"tersedia":7,"action":"post","status":"sukses","response_ms":664}
+{"timestamp":"2026-05-18T02:35:48Z","kode_ruang":"KELI2","nama_ruang":"RUANG KELIMUTU KELAS 2","kode_kelas":"KL2","kapasitas":8,"tersedia":4,"action":"post","status":"sukses","response_ms":347}
+{"timestamp":"2026-05-18T02:35:48Z","kode_ruang":"SARA2","nama_ruang":"RUANG HCU SARANGAN","kode_kelas":"HCU","kapasitas":11,"tersedia":2,"action":"post","status":"sukses","response_ms":505}
+{"timestamp":"2026-05-18T02:35:49Z","kode_ruang":"TOND3","nama_ruang":"RUANG TONDANO","kode_kelas":"KL3","kapasitas":50,"tersedia":30,"action":"post","status":"sukses","response_ms":369}
+{"timestamp":"2026-05-18T02:35:49Z","kode_ruang":"KRAK1","nama_ruang":"RUANG PICU KRAKATAU","kode_kelas":"PIC","kapasitas":17,"action":"post","status":"sukses","response_ms":424}
+{"timestamp":"2026-05-18T02:35:49Z","kode_ruang":"BARIV","nama_ruang":"RUANG BARITO VIP","kode_kelas":"VIP","kapasitas":2,"tersedia":1,"action":"post","status":"sukses","response_ms":506}
+{"timestamp":"2026-05-18T02:35:50Z","kode_ruang":"MUSI1","nama_ruang":"RUANG CVCU MUSI","kode_kelas":"ICC","kapasitas":13,"tersedia":2,"action":"post","status":"sukses","response_ms":430}
+{"timestamp":"2026-05-18T02:35:51Z","kode_ruang":"BARI1","nama_ruang":"RUANG BARITO KELAS 1","kode_kelas":"KL1","kapasitas":6,"action":"post","status":"sukses","response_ms":688}
+{"timestamp":"2026-05-18T02:35:51Z","kode_ruang":"TOIB1","nama_ruang":"RUANG TOBA (IBU) KELAS 1","kode_kelas":"KL1","kapasitas":10,"tersedia":5,"action":"post","status":"sukses","response_ms":535}
+{"timestamp":"2026-05-18T02:35:52Z","kode_ruang":"BARI2","nama_ruang":"RUANG BARITO KELAS 2","kode_kelas":"KL2","kapasitas":4,"tersedia":4,"action":"post","status":"sukses","response_ms":660}
+{"timestamp":"2026-05-18T02:35:52Z","kode_ruang":"BARI3","nama_ruang":"RUANG BARITO KELAS 3","kode_kelas":"KL3","kapasitas":11,"tersedia":1,"action":"post","status":"sukses","response_ms":385}
+{"timestamp":"2026-05-18T02:35:53Z","kode_ruang":"TOBA1","nama_ruang":"RUANG TOBA (BAYI) KELAS 1","kode_kelas":"KL1","kapasitas":1,"tersedia":1,"action":"post","status":"sukses","response_ms":380}
+{"timestamp":"2026-05-18T02:35:53Z","kode_ruang":"CISA2","nama_ruang":"RUANG HCU CISADANE","kode_kelas":"HCU","kapasitas":40,"tersedia":11,"action":"post","status":"sukses","response_ms":359}
+{"timestamp":"2026-05-18T02:35:53Z","kode_ruang":"SEME3","nama_ruang":"RUANG SEMERU","kode_kelas":"KL3","kapasitas":43,"tersedia":34,"action":"post","status":"sukses","response_ms":396}
+{"timestamp":"2026-05-18T02:35:54Z","kode_ruang":"RANU2","nama_ruang":"RUANG HCU RANU GRATI","kode_kelas":"HCU","kapasitas":8,"tersedia":4,"action":"post","status":"sukses","response_ms":349}
+{"timestamp":"2026-05-18T02:35:54Z","kode_ruang":"TOIB2","nama_ruang":"RUANG TOBA (IBU) KELAS 2","kode_kelas":"KL2","kapasitas":8,"tersedia":4,"action":"post","status":"sukses","response_ms":404}
+{"timestamp":"2026-05-18T02:35:55Z","kode_ruang":"KAPA1","nama_ruang":"RUANG ICU KAPUAS A","kode_kelas":"ICU","kapasitas":16,"tersedia":3,"action":"post","status":"sukses","response_ms":652}
+{"timestamp":"2026-05-18T02:35:55Z","kode_ruang":"KAPB1","nama_ruang":"RUANG ICU KAPUAS B","kode_kelas":"ICU","kapasitas":9,"tersedia":1,"action":"post","status":"sukses","response_ms":407}
+{"timestamp":"2026-05-18T02:35:56Z","kode_ruang":"HMEL1","nama_ruang":"RUANG HCU INFEKSI MELATI","kode_kelas":"ISO","kapasitas":8,"tersedia":7,"action":"post","status":"sukses","response_ms":400}
+{"timestamp":"2026-05-18T02:35:56Z","kode_ruang":"BUGV3","nama_ruang":"RUANG BUGENVILE KELAS 3","kode_kelas":"ISO","kapasitas":20,"tersedia":10,"action":"post","status":"sukses","response_ms":403}
+{"timestamp":"2026-05-18T02:35:56Z","kode_ruang":"KAPC1","nama_ruang":"RUANG ICU KAPUAS C KELAS 1","kode_kelas":"ICU","kapasitas":14,"tersedia":3,"action":"post","status":"sukses","response_ms":413}
+{"timestamp":"2026-05-18T02:35:57Z","kode_ruang":"DAHL1","nama_ruang":"RUANG DAHLIA KELAS 1","kode_kelas":"KL1","kapasitas":38,"tersedia":26,"action":"post","status":"sukses","response_ms":533}
+{"timestamp":"2026-05-18T02:35:58Z","kode_ruang":"MWAR1","nama_ruang":"RUANG MAWAR KELAS 1","kode_kelas":"KL1","kapasitas":30,"tersedia":15,"action":"post","status":"sukses","response_ms":744}
+{"timestamp":"2026-05-18T02:35:58Z","kode_ruang":"JIMB2","nama_ruang":"RUANG JIMBARAN KELAS 2","kode_kelas":"KL2","kapasitas":28,"tersedia":14,"action":"post","status":"sukses","response_ms":344}
+{"timestamp":"2026-05-18T02:35:58Z","kode_ruang":"KERC2","nama_ruang":"RUANG KERINCI KELAS 2","kode_kelas":"KL2","kapasitas":8,"tersedia":2,"action":"post","status":"sukses","response_ms":408}
+{"timestamp":"2026-05-18T02:35:59Z","kode_ruang":"KERC3","nama_ruang":"RUANG KERINCI KELAS 3","kode_kelas":"KL3","kapasitas":18,"action":"post","status":"sukses","response_ms":484}
+{"timestamp":"2026-05-18T02:35:59Z","kode_ruang":"RANU3","nama_ruang":"RUANG RANU KUMBOLO KELAS 3","kode_kelas":"KL3","kapasitas":18,"tersedia":12,"action":"post","status":"sukses","response_ms":365}
+{"timestamp":"2026-05-18T02:36:00Z","kode_ruang":"ROE2","nama_ruang":"RUANG ROE KELAS 2","kode_kelas":"KL2","kapasitas":10,"tersedia":9,"action":"post","status":"sukses","response_ms":493}
+{"timestamp":"2026-05-18T02:36:01Z","kode_ruang":"RGPLT3","nama_ruang":"RUANG GRAND PAV LANTAI 3 KELAS VIP A","kode_kelas":"VIP","kapasitas":24,"tersedia":15,"action":"post","status":"sukses","response_ms":893}
+{"timestamp":"2026-05-18T02:36:02Z","kode_ruang":"RNS1","nama_ruang":"RUANG NUSA DUA KELAS 1","kode_kelas":"KL1","kapasitas":20,"tersedia":10,"action":"post","status":"sukses","response_ms":941}
+{"timestamp":"2026-05-18T02:36:03Z","kode_ruang":"RHCKW2","nama_ruang":"RUANG HCU KAWI KELAS 2","kode_kelas":"HCU","kapasitas":9,"tersedia":3,"action":"post","status":"sukses","response_ms":1003}
+{"timestamp":"2026-05-18T02:36:03Z","kode_ruang":"RTOBY2","nama_ruang":"RUANG TOBA (BAYI) KELAS 2","kode_kelas":"KL2","kapasitas":1,"tersedia":1,"action":"post","status":"sukses","response_ms":530}
+{"timestamp":"2026-05-18T02:36:04Z","kode_ruang":"RSING3","nama_ruang":"RUANG SINGKARAK KELAS 3","kode_kelas":"KL3","kapasitas":30,"tersedia":26,"action":"post","status":"sukses","response_ms":1016}
+{"timestamp":"2026-05-18T02:36:05Z","kode_ruang":"RHRP3","nama_ruang":"RUANG HCU RANU PANE KELAS 2","kode_kelas":"HCU","kapasitas":38,"tersedia":26,"action":"post","status":"sukses","response_ms":873}
+{"timestamp":"2026-05-18T02:36:06Z","kode_ruang":"RNICU1","nama_ruang":"RUANG NICU MANINJAU KELAS 1","kode_kelas":"NIC","kapasitas":12,"action":"post","status":"sukses","response_ms":1138}
+{"timestamp":"2026-05-18T02:36:07Z","kode_ruang":"RGPLT21","nama_ruang":"RUANG GRAND PAV LANTAI 2 KELAS 1","kode_kelas":"KL1","kapasitas":12,"tersedia":7,"action":"post","status":"sukses","response_ms":940}
+{"timestamp":"2026-05-18T02:36:08Z","kode_ruang":"RGPLT7VIP","nama_ruang":"RUANG GRAND PAV LANTAI 7 KELAS VIP","kode_kelas":"VIP","kapasitas":3,"tersedia":2,"action":"post","status":"sukses","response_ms":981}
+{"timestamp":"2026-05-18T02:36:09Z","kode_ruang":"RGPLT2VIP","nama_ruang":"RUANG GRAND PAV LANTAI 2 KELAS VIP","kode_kelas":"VIP","kapasitas":5,"tersedia":5,"action":"post","status":"sukses","response_ms":878}
+{"action":"batch_sync","changed":53,"dry_run":false,"errors":null,"posted":53,"status":"sukses","timestamp":"2026-05-18T02:36:09Z","total_rooms":57}
+{"action":"batch_sync","changed":1,"dry_run":true,"errors":null,"posted":1,"status":"sukses","timestamp":"2026-05-18T02:36:40Z","total_rooms":57}
+{"action":"batch_sync","changed":9,"dry_run":true,"errors":null,"posted":9,"status":"sukses","timestamp":"2026-05-18T02:52:15Z","total_rooms":57}
+{"action":"batch_sync","changed":2,"dry_run":true,"errors":null,"posted":2,"status":"sukses","timestamp":"2026-05-18T02:57:15Z","total_rooms":57}
+{"action":"batch_sync","changed":4,"dry_run":true,"errors":null,"posted":4,"status":"sukses","timestamp":"2026-05-18T03:02:15Z","total_rooms":57}
+{"action":"batch_sync","changed":4,"dry_run":true,"errors":null,"posted":4,"status":"sukses","timestamp":"2026-05-18T03:15:28Z","total_rooms":57}