From be7fe060e7e3d83aaf945cdc88c2dd228c36f3fb Mon Sep 17 00:00:00 2001 From: ahdan15 Date: Fri, 26 Jun 2026 11:25:06 +0700 Subject: [PATCH] penambahan field beds --- data/state.json | 454 +++++++++++++++++----------------- internal/aplicare/database.go | 31 ++- logs/sync-2026-06-17.log | 1 + logs/sync-2026-06-26.log | 4 + 4 files changed, 259 insertions(+), 231 deletions(-) create mode 100644 logs/sync-2026-06-17.log create mode 100644 logs/sync-2026-06-26.log diff --git a/data/state.json b/data/state.json index 989186a..ee01c5f 100644 --- a/data/state.json +++ b/data/state.json @@ -1,5 +1,5 @@ { - "last_updated": "2026-06-11T11:43:24+07:00", + "last_updated": "2026-06-26T11:23:51+07:00", "rooms": { "BARI1": { "kode_ruang": "BARI1", @@ -7,20 +7,20 @@ "nama_ruang": "RUANG BARITO KELAS 1", "old_value": { "kapasitas": 6, - "tersedia": 2, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 1 }, "new_value": { "kapasitas": 6, - "tersedia": 2, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 1 }, "changed": false, - "last_synced": "2026-06-11T11:29:39+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "BARI2": { "kode_ruang": "BARI2", @@ -28,20 +28,20 @@ "nama_ruang": "RUANG BARITO KELAS 2", "old_value": { "kapasitas": 4, - "tersedia": 1, + "tersedia": 0, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 0 }, "new_value": { "kapasitas": 4, - "tersedia": 1, + "tersedia": 0, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 0 }, "changed": false, - "last_synced": "2026-06-11T11:29:40+07:00" + "last_synced": "2026-06-26T11:21:13+07:00" }, "BARI3": { "kode_ruang": "BARI3", @@ -62,7 +62,7 @@ "tersedia_pria_wanita": 0 }, "changed": false, - "last_synced": "2026-05-18T04:30:15Z" + "last_synced": "2026-06-26T04:11:09Z" }, "BARIV": { "kode_ruang": "BARIV", @@ -70,20 +70,20 @@ "nama_ruang": "RUANG BARITO VIP", "old_value": { "kapasitas": 2, - "tersedia": 2, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 1 }, "new_value": { "kapasitas": 2, - "tersedia": 2, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 1 }, "changed": false, - "last_synced": "2026-06-11T11:29:38+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "BENG2": { "kode_ruang": "BENG2", @@ -104,7 +104,7 @@ "tersedia_pria_wanita": 0 }, "changed": false, - "last_synced": "2026-06-11T11:29:39+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "BRAN2": { "kode_ruang": "BRAN2", @@ -112,20 +112,20 @@ "nama_ruang": "RUANG HCU BRANTAS", "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-06-11T11:29:31+07:00" + "last_synced": "2026-06-17T04:06:51Z" }, "BROM3": { "kode_ruang": "BROM3", @@ -133,20 +133,20 @@ "nama_ruang": "RUANG BROMO KELAS 3", "old_value": { "kapasitas": 42, - "tersedia": 4, + "tersedia": 8, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 8 }, "new_value": { "kapasitas": 42, - "tersedia": 4, + "tersedia": 8, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 8 }, "changed": false, - "last_synced": "2026-06-11T11:37:54+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "BUGV3": { "kode_ruang": "BUGV3", @@ -154,20 +154,20 @@ "nama_ruang": "RUANG BUGENVILE KELAS 3", "old_value": { "kapasitas": 20, - "tersedia": 1, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 3 }, "new_value": { "kapasitas": 20, - "tersedia": 1, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 3 }, "changed": false, - "last_synced": "2026-06-11T11:29:43+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "BUNA2": { "kode_ruang": "BUNA2", @@ -175,20 +175,20 @@ "nama_ruang": "RUANG BUNAKEN KELAS 2", "old_value": { "kapasitas": 6, - "tersedia": 3, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 1 }, "new_value": { "kapasitas": 6, - "tersedia": 3, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 1 }, "changed": false, - "last_synced": "2026-05-18T02:35:38Z" + "last_synced": "2026-06-26T04:11:09Z" }, "BUNA3": { "kode_ruang": "BUNA3", @@ -196,20 +196,20 @@ "nama_ruang": "RUANG BUNAKEN KELAS 3", "old_value": { "kapasitas": 16, - "tersedia": 4, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 16, - "tersedia": 4, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-05-18T03:15:28Z" + "last_synced": "2026-06-26T04:11:09Z" }, "CILI2": { "kode_ruang": "CILI2", @@ -217,20 +217,20 @@ "nama_ruang": "RUANG HCU CILIWUNG", "old_value": { "kapasitas": 28, - "tersedia": 5, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 5 + "tersedia_pria_wanita": 4 }, "new_value": { "kapasitas": 28, - "tersedia": 5, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 5 + "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:30+07:00" + "last_synced": "2026-06-26T11:21:13+07:00" }, "CISA2": { "kode_ruang": "CISA2", @@ -238,20 +238,20 @@ "nama_ruang": "RUANG HCU CISADANE", "old_value": { "kapasitas": 40, - "tersedia": 8, + "tersedia": 7, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 8 + "tersedia_pria_wanita": 7 }, "new_value": { "kapasitas": 40, - "tersedia": 8, + "tersedia": 7, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 8 + "tersedia_pria_wanita": 7 }, "changed": false, - "last_synced": "2026-06-11T11:43:24+07:00" + "last_synced": "2026-06-17T04:06:51Z" }, "DAHL1": { "kode_ruang": "DAHL1", @@ -259,20 +259,20 @@ "nama_ruang": "RUANG DAHLIA KELAS 1", "old_value": { "kapasitas": 38, - "tersedia": 14, + "tersedia": 13, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 14 + "tersedia_pria_wanita": 13 }, "new_value": { "kapasitas": 38, - "tersedia": 14, + "tersedia": 13, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 14 + "tersedia_pria_wanita": 13 }, "changed": false, - "last_synced": "2026-06-11T11:29:44+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "GALG3": { "kode_ruang": "GALG3", @@ -293,7 +293,7 @@ "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:35+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "GILI1": { "kode_ruang": "GILI1", @@ -301,20 +301,20 @@ "nama_ruang": "RUANG GILI TRAWANGAN KELAS 1", "old_value": { "kapasitas": 2, - "tersedia": 1, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 2, - "tersedia": 1, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:29:29+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "GILI2": { "kode_ruang": "GILI2", @@ -322,20 +322,20 @@ "nama_ruang": "RUANG GILI TRAWANGAN KELAS 2", "old_value": { "kapasitas": 4, - "tersedia": 3, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 4, - "tersedia": 3, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:41:01+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "GILI3": { "kode_ruang": "GILI3", @@ -356,7 +356,7 @@ "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:41:00+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "HMEL1": { "kode_ruang": "HMEL1", @@ -364,20 +364,20 @@ "nama_ruang": "RUANG HCU INFEKSI MELATI", "old_value": { "kapasitas": 8, - "tersedia": 0, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 4 }, "new_value": { "kapasitas": 8, - "tersedia": 0, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:43+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "IMEL1": { "kode_ruang": "IMEL1", @@ -385,20 +385,20 @@ "nama_ruang": "RUANG ICU INFEKSI MELATI", "old_value": { "kapasitas": 6, - "tersedia": 2, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 3 }, "new_value": { "kapasitas": 6, - "tersedia": 2, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 3 }, "changed": false, - "last_synced": "2026-06-11T11:29:29+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "JIMB2": { "kode_ruang": "JIMB2", @@ -406,20 +406,20 @@ "nama_ruang": "RUANG JIMBARAN KELAS 2", "old_value": { "kapasitas": 28, - "tersedia": 3, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 4 }, "new_value": { "kapasitas": 28, - "tersedia": 3, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:45+07:00" + "last_synced": "2026-06-26T11:21:13+07:00" }, "KAPA1": { "kode_ruang": "KAPA1", @@ -427,20 +427,20 @@ "nama_ruang": "RUANG ICU KAPUAS A", "old_value": { "kapasitas": 16, - "tersedia": 1, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 3 }, "new_value": { "kapasitas": 16, - "tersedia": 1, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 3 }, "changed": false, - "last_synced": "2026-06-11T11:29:42+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "KAPB1": { "kode_ruang": "KAPB1", @@ -461,7 +461,7 @@ "tersedia_pria_wanita": 0 }, "changed": false, - "last_synced": "2026-06-11T11:29:42+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "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-06-11T11:29:44+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "KELI1": { "kode_ruang": "KELI1", @@ -490,20 +490,20 @@ "nama_ruang": "RUANG KELIMUTU KELAS 1", "old_value": { "kapasitas": 16, - "tersedia": 1, + "tersedia": 0, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 0 }, "new_value": { "kapasitas": 16, - "tersedia": 1, + "tersedia": 0, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 0 }, "changed": false, - "last_synced": "2026-06-11T11:41:01+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "KELI2": { "kode_ruang": "KELI2", @@ -511,20 +511,20 @@ "nama_ruang": "RUANG KELIMUTU 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-06-11T11:29:36+07:00" + "last_synced": "2026-06-17T04:06:51Z" }, "KERC2": { "kode_ruang": "KERC2", @@ -532,20 +532,20 @@ "nama_ruang": "RUANG KERINCI KELAS 2", "old_value": { "kapasitas": 8, - "tersedia": 4, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 8, - "tersedia": 4, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:29:46+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "KERC3": { "kode_ruang": "KERC3", @@ -553,20 +553,20 @@ "nama_ruang": "RUANG KERINCI KELAS 3", "old_value": { "kapasitas": 18, - "tersedia": 2, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 3 }, "new_value": { "kapasitas": 18, - "tersedia": 2, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 2 + "tersedia_pria_wanita": 3 }, "changed": false, - "last_synced": "2026-06-11T11:29:46+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "KRAK1": { "kode_ruang": "KRAK1", @@ -587,7 +587,7 @@ "tersedia_pria_wanita": 7 }, "changed": false, - "last_synced": "2026-06-11T11:29:37+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "LOSA3": { "kode_ruang": "LOSA3", @@ -595,20 +595,20 @@ "nama_ruang": "RUANG LOSARI KELAS 3", "old_value": { "kapasitas": 14, - "tersedia": 1, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 14, - "tersedia": 1, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-05-18T02:35:43Z" + "last_synced": "2026-06-26T11:21:13+07:00" }, "MAHA2": { "kode_ruang": "MAHA2", @@ -629,7 +629,7 @@ "tersedia_pria_wanita": 11 }, "changed": false, - "last_synced": "2026-06-11T11:29:31+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "MUSI1": { "kode_ruang": "MUSI1", @@ -637,20 +637,20 @@ "nama_ruang": "RUANG CVCU MUSI", "old_value": { "kapasitas": 13, - "tersedia": 4, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 13, - "tersedia": 4, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:29:38+07:00" + "last_synced": "2026-06-26T11:21:13+07:00" }, "MWAR1": { "kode_ruang": "MWAR1", @@ -658,20 +658,20 @@ "nama_ruang": "RUANG MAWAR KELAS 1", "old_value": { "kapasitas": 30, - "tersedia": 9, + "tersedia": 8, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 9 + "tersedia_pria_wanita": 8 }, "new_value": { "kapasitas": 30, - "tersedia": 9, + "tersedia": 8, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 9 + "tersedia_pria_wanita": 8 }, "changed": false, - "last_synced": "2026-06-11T11:29:45+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "PANG3": { "kode_ruang": "PANG3", @@ -679,20 +679,20 @@ "nama_ruang": "RUANG PANGANDARAN", "old_value": { "kapasitas": 35, - "tersedia": 5, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 5 + "tersedia_pria_wanita": 4 }, "new_value": { "kapasitas": 35, - "tersedia": 5, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 5 + "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:32+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "PARA3": { "kode_ruang": "PARA3", @@ -700,20 +700,20 @@ "nama_ruang": "RUANG PARANGTRITIS", "old_value": { "kapasitas": 30, - "tersedia": 0, + "tersedia": 7, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 7 }, "new_value": { "kapasitas": 30, - "tersedia": 0, + "tersedia": 7, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 7 }, "changed": false, - "last_synced": "2026-06-11T11:29:33+07:00" + "last_synced": "2026-06-17T04:06:51Z" }, "RANKB3": { "kode_ruang": "RANKB3", @@ -721,20 +721,20 @@ "nama_ruang": "RUANG RANU KUMBOLO (BAYI) KELAS 3", "old_value": { "kapasitas": 1, - "tersedia": 1, + "tersedia": 0, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 0 }, "new_value": { "kapasitas": 1, - "tersedia": 1, + "tersedia": 0, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 0 }, "changed": false, - "last_synced": "2026-05-18T02:35:47Z" + "last_synced": "2026-06-26T04:11:09Z" }, "RANU2": { "kode_ruang": "RANU2", @@ -742,20 +742,20 @@ "nama_ruang": "RUANG HCU RANU GRATI", "old_value": { "kapasitas": 8, - "tersedia": 4, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 3 }, "new_value": { "kapasitas": 8, - "tersedia": 4, + "tersedia": 3, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 3 }, "changed": false, - "last_synced": "2026-06-11T11:29:41+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RANU3": { "kode_ruang": "RANU3", @@ -763,20 +763,20 @@ "nama_ruang": "RUANG RANU KUMBOLO KELAS 3", "old_value": { "kapasitas": 18, - "tersedia": 3, + "tersedia": 5, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 5 }, "new_value": { "kapasitas": 18, - "tersedia": 3, + "tersedia": 5, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 5 }, "changed": false, - "last_synced": "2026-06-11T11:29:47+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RGPLT21": { "kode_ruang": "RGPLT21", @@ -784,20 +784,20 @@ "nama_ruang": "RUANG GRAND PAV LANTAI 2 KELAS 1", "old_value": { "kapasitas": 12, - "tersedia": 8, + "tersedia": 6, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 8 + "tersedia_pria_wanita": 6 }, "new_value": { "kapasitas": 12, - "tersedia": 8, + "tersedia": 6, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 8 + "tersedia_pria_wanita": 6 }, "changed": false, - "last_synced": "2026-06-11T11:29:51+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RGPLT2VIP": { "kode_ruang": "RGPLT2VIP", @@ -839,7 +839,7 @@ "tersedia_pria_wanita": 14 }, "changed": false, - "last_synced": "2026-06-11T11:29:48+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RGPLT7VIP": { "kode_ruang": "RGPLT7VIP", @@ -860,7 +860,7 @@ "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-05-18T02:36:08Z" + "last_synced": "2026-06-26T04:11:09Z" }, "RHCKW2": { "kode_ruang": "RHCKW2", @@ -868,20 +868,20 @@ "nama_ruang": "RUANG HCU KAWI KELAS 2", "old_value": { "kapasitas": 9, - "tersedia": 6, + "tersedia": 7, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 6 + "tersedia_pria_wanita": 7 }, "new_value": { "kapasitas": 9, - "tersedia": 6, + "tersedia": 7, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 6 + "tersedia_pria_wanita": 7 }, "changed": false, - "last_synced": "2026-06-11T11:29:49+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RHRP3": { "kode_ruang": "RHRP3", @@ -889,20 +889,20 @@ "nama_ruang": "RUANG HCU RANU PANE KELAS 2", "old_value": { "kapasitas": 38, - "tersedia": 22, + "tersedia": 23, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 22 + "tersedia_pria_wanita": 23 }, "new_value": { "kapasitas": 38, - "tersedia": 22, + "tersedia": 23, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 22 + "tersedia_pria_wanita": 23 }, "changed": false, - "last_synced": "2026-06-11T11:29:50+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RINJ1": { "kode_ruang": "RINJ1", @@ -910,20 +910,20 @@ "nama_ruang": "RUANG RINJANI KELAS 1", "old_value": { "kapasitas": 2, - "tersedia": 0, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 2, - "tersedia": 0, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-05-18T02:35:44Z" + "last_synced": "2026-06-26T04:11:09Z" }, "RINJ2": { "kode_ruang": "RINJ2", @@ -931,20 +931,20 @@ "nama_ruang": "RUANG RINJANI KELAS 2", "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-06-11T11:29:34+07:00" + "last_synced": "2026-06-17T04:06:51Z" }, "RINJ3": { "kode_ruang": "RINJ3", @@ -965,7 +965,7 @@ "tersedia_pria_wanita": 1 }, "changed": false, - "last_synced": "2026-06-11T11:29:35+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RNICU1": { "kode_ruang": "RNICU1", @@ -973,20 +973,20 @@ "nama_ruang": "RUANG NICU MANINJAU KELAS 1", "old_value": { "kapasitas": 12, - "tersedia": 3, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 12, - "tersedia": 3, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:29:51+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RNS1": { "kode_ruang": "RNS1", @@ -994,20 +994,20 @@ "nama_ruang": "RUANG NUSA DUA KELAS 1", "old_value": { "kapasitas": 20, - "tersedia": 3, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 20, - "tersedia": 3, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:29:49+07:00" + "last_synced": "2026-06-26T04:16:09Z" }, "ROE2": { "kode_ruang": "ROE2", @@ -1015,20 +1015,20 @@ "nama_ruang": "RUANG ROE KELAS 2", "old_value": { "kapasitas": 10, - "tersedia": 1, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 4 }, "new_value": { "kapasitas": 10, - "tersedia": 1, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 1 + "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:48+07:00" + "last_synced": "2026-06-17T04:06:51Z" }, "RSING3": { "kode_ruang": "RSING3", @@ -1036,20 +1036,20 @@ "nama_ruang": "RUANG SINGKARAK KELAS 3", "old_value": { "kapasitas": 30, - "tersedia": 8, + "tersedia": 14, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 8 + "tersedia_pria_wanita": 14 }, "new_value": { "kapasitas": 30, - "tersedia": 8, + "tersedia": 14, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 8 + "tersedia_pria_wanita": 14 }, "changed": false, - "last_synced": "2026-06-11T11:29:50+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "RTOBY2": { "kode_ruang": "RTOBY2", @@ -1078,20 +1078,20 @@ "nama_ruang": "RUANG HCU SARANGAN", "old_value": { "kapasitas": 11, - "tersedia": 0, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 2 }, "new_value": { "kapasitas": 11, - "tersedia": 0, + "tersedia": 2, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 0 + "tersedia_pria_wanita": 2 }, "changed": false, - "last_synced": "2026-06-11T11:29:36+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "SEME3": { "kode_ruang": "SEME3", @@ -1099,20 +1099,20 @@ "nama_ruang": "RUANG SEMERU", "old_value": { "kapasitas": 43, - "tersedia": 5, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 5 + "tersedia_pria_wanita": 4 }, "new_value": { "kapasitas": 43, - "tersedia": 5, + "tersedia": 4, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 5 + "tersedia_pria_wanita": 4 }, "changed": false, - "last_synced": "2026-06-11T11:29:40+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "TOBA1": { "kode_ruang": "TOBA1", @@ -1141,20 +1141,20 @@ "nama_ruang": "RUANG TOBA (IBU) KELAS 1", "old_value": { "kapasitas": 10, - "tersedia": 4, + "tersedia": 6, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 6 }, "new_value": { "kapasitas": 10, - "tersedia": 4, + "tersedia": 6, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 4 + "tersedia_pria_wanita": 6 }, "changed": false, - "last_synced": "2026-05-18T02:52:15Z" + "last_synced": "2026-06-26T04:11:09Z" }, "TOIB2": { "kode_ruang": "TOIB2", @@ -1162,20 +1162,20 @@ "nama_ruang": "RUANG TOBA (IBU) KELAS 2", "old_value": { "kapasitas": 8, - "tersedia": 3, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 1 }, "new_value": { "kapasitas": 8, - "tersedia": 3, + "tersedia": 1, "tersedia_pria": 0, "tersedia_wanita": 0, - "tersedia_pria_wanita": 3 + "tersedia_pria_wanita": 1 }, "changed": false, - "last_synced": "2026-06-11T11:29:41+07:00" + "last_synced": "2026-06-26T04:11:09Z" }, "TOND3": { "kode_ruang": "TOND3", @@ -1196,7 +1196,7 @@ "tersedia_pria_wanita": 24 }, "changed": false, - "last_synced": "2026-06-11T11:29:37+07:00" + "last_synced": "2026-06-26T04:11:09Z" } } } \ No newline at end of file diff --git a/internal/aplicare/database.go b/internal/aplicare/database.go index 1e34c77..ac08365 100644 --- a/internal/aplicare/database.go +++ b/internal/aplicare/database.go @@ -9,7 +9,6 @@ import ( 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 @@ -44,7 +43,7 @@ func (s *SimrsDB) GetRuangan(ctx context.Context) ([]Ruangan, error) { } query := ` - SELECT no, nama, jumlah_tt,kode_aplicare, nama_ruang, kode_kelas + SELECT no, jumlah_tt,kode_aplicare, nama_ruang, kode_kelas FROM m_ruang where st_aktif = 1 AND kode_aplicare IS NOT NULL ORDER BY no @@ -60,7 +59,7 @@ func (s *SimrsDB) GetRuangan(ctx context.Context) ([]Ruangan, error) { for rows.Next() { var r Ruangan if err := rows.Scan( - &r.No, &r.Nama, &r.JumlahTT, + &r.No, &r.JumlahTT, &r.KodeRuang, &r.NamaRuang, &r.KelasRuang, ); err != nil { return nil, fmt.Errorf("scan m_ruang gagal: %w", err) @@ -103,6 +102,25 @@ func (s *SimrsDB) GetBedDetails(ctx context.Context) (map[string][]BedDetail, er return result, rows.Err() } +var NamaKelasMap = map[string]string{ + "NON": "-", + "VVP": "VVIP", + "VIP": "VIP", + "UTM": "UTAMA", + "KL1": "KELAS I", + "KL2": "KELAS II", + "KL3": "KELAS III", + "ICU": "ICU", + "ICC": "ICCU", + "NIC": "NICU", + "PIC": "PICU", + "IGD": "IGD", + "UGD": "UGD", + "SAL": "RUANG BERSALIN", + "HCU": "HCU", + "ISO": "RUANG ISOLASI", +} + // ============================================= // TRANSFORM // ============================================= @@ -111,6 +129,7 @@ func (s *SimrsDB) GetBedDetails(ctx context.Context) (map[string][]BedDetail, er type BedData struct { No int `json:"no"` KodeKelas string `json:"kodekelas"` + NamaKelas string `json:"namakelas"` KodeRuang string `json:"koderuang"` NamaRuang string `json:"namaruang"` Kapasitas int `json:"kapasitas"` @@ -138,10 +157,14 @@ func buildBedData(ruangans []Ruangan, detailMap map[string][]BedDetail) []BedDat if r.JumlahTT == 0 { continue } - + namaKelas := NamaKelasMap[r.KelasRuang.String] + if namaKelas == "" { + namaKelas = r.KelasRuang.String + } result = append(result, BedData{ No: r.No, KodeKelas: r.KelasRuang.String, + NamaKelas: namaKelas, KodeRuang: r.KodeRuang.String, NamaRuang: r.NamaRuang.String, Kapasitas: r.JumlahTT, diff --git a/logs/sync-2026-06-17.log b/logs/sync-2026-06-17.log new file mode 100644 index 0000000..830d07b --- /dev/null +++ b/logs/sync-2026-06-17.log @@ -0,0 +1 @@ +{"action":"batch_sync","changed":49,"dry_run":true,"errors":null,"posted":49,"status":"sukses","timestamp":"2026-06-17T04:06:51Z","total_rooms":57} diff --git a/logs/sync-2026-06-26.log b/logs/sync-2026-06-26.log new file mode 100644 index 0000000..dd8004e --- /dev/null +++ b/logs/sync-2026-06-26.log @@ -0,0 +1,4 @@ +{"action":"batch_sync","changed":46,"dry_run":true,"errors":null,"posted":46,"status":"sukses","timestamp":"2026-06-26T04:11:09Z","total_rooms":57} +{"action":"batch_sync","changed":2,"dry_run":true,"errors":null,"posted":2,"status":"sukses","timestamp":"2026-06-26T04:16:09Z","total_rooms":57} +{"action":"batch_sync","changed":5,"dry_run":true,"errors":null,"posted":5,"status":"sukses","timestamp":"2026-06-26T11:21:13+07:00","total_rooms":57} +{"action":"batch_sync","changed":0,"dry_run":true,"errors":null,"posted":0,"status":"sukses","timestamp":"2026-06-26T11:23:51+07:00","total_rooms":57}