0000000000000000000000000000000000000000 95587af747cfbd0da847ee14ce6de76ec0a721dd nisa2109 <vivoa5116@gmail.com> 1785908648 +0700	commit (initial): Initial commit
95587af747cfbd0da847ee14ce6de76ec0a721dd 0000000000000000000000000000000000000000 nisa2109 <vivoa5116@gmail.com> 1785908648 +0700	Branch: renamed refs/heads/master to refs/heads/main
0000000000000000000000000000000000000000 95587af747cfbd0da847ee14ce6de76ec0a721dd nisa2109 <vivoa5116@gmail.com> 1785908648 +0700	Branch: renamed refs/heads/master to refs/heads/main
95587af747cfbd0da847ee14ce6de76ec0a721dd 239a02dffa557a06aa23195748431cb8a0a727e0 nisa2109 <vivoa5116@gmail.com> 1785940421 +0700	commit: feat(OCC+Activity+Reorder): 1) Occ 70% LY / 80% TODAY badge Utility, 2) Form Dynamic Rows Aktivitas -> count EngActivity auto + tabel child daily_log_activities, 3) Reorder dashboard: Energy(①) top -> Chiller② SWRO③ Bottling④ -> Activity -> Logistic(⑧) bottom, 4) Order status dipindah section Logistic bawah
239a02dffa557a06aa23195748431cb8a0a727e0 bfaccdae6b359e0613eb57efd3b9fd69b197f051 nisa2109 <vivoa5116@gmail.com> 1786000297 +0700	commit: feat(Daily Summary Format Kertas Customer): TAMBAH 3 TABEL BESAR PALING ATAS = 1) KPI (OCC 6kol LY/TODAY/ITR/M&U/Rank), 2) UTILITY USAGE (4 Rowspan LY/TODAY + USAGE + COST Rupiah auto tarif PLN/PDAM/LPG/Solar standar Bali), 3) ENGINEERING ACTIVITIES (4 depart bullet list child tabel daily_log_activities + status auto In-Progress/Complete). Dibawah 3kol ttd Prepared/Reviewed/Approved by. Grafik & section lama TETAP UTUH di bawah.
bfaccdae6b359e0613eb57efd3b9fd69b197f051 09d1b94f97c1138dab158ac3c13d28c6694ecaf6 nisa2109 <vivoa5116@gmail.com> 1786001456 +0700	commit: fix(DeleteUserBtn + UnexpectedEndOfInput): 1) FIX BASE_URL detect DOMAIN BARU registengengineering.com (URL screenshot) jadi ROOT /. 2) FIX supervisor/users/index.php tombol Hapus onclick conflict: ganti single-quote LUAR attribute + escape json_encode -> htmlspecialchars ENT_QUOTES (hindari double-quote JSON conflict dengan attribute HTML). 3) Syntax Lint 3 files NO ERROR.
09d1b94f97c1138dab158ac3c13d28c6694ecaf6 7ba39ae91d61ae7a38cbbfeafc97ebd0b0e98e6a nisa2109 <vivoa5116@gmail.com> 1786003303 +0700	commit: feat(Logistic Menu ALL ROLES): 1) Sidebar: Buka menu Buat Order Request ke SEMUA ROLE (bukan cuma Eng/Spv) — Manager/Admin juga bisa CREATE. Section Order/PR tambah label LOGISTIC amber bold. 2) Query badge pending: Engineer hitung order MILIKNYA sendiri (pending_supervisor/pending_manager/rejected milik created_by). 3) orders/create.php izinkan role admin juga (sblmnya eng/spv/mgr only). 4) 4x PHP LINT No Errors.
7ba39ae91d61ae7a38cbbfeafc97ebd0b0e98e6a 2321d0ab3223241ff0dc747d73a92cb90d620233 nisa2109 <vivoa5116@gmail.com> 1786003915 +0700	commit: fix(LogisticMenu Clickable + CSS Cursor Pointer): 1) Sidebar section LOGISTIC HEADER sekarang = <a href> (sebelumnya cuma <div> text doang). Tambah efek hover ring-amber, arrow angle-right. 2) STYLE.CSS NAVBAR & SIDEBAR cursor:pointer!important: a) nav-link, b) nav-link-mobile (dekstop & mobile nav top), c) nav-item (sidebar) + user-select none + text-decoration none semua <a> nav. d) class baru .sidebar-section-clickable: hover brightness + active scale. 3) Navbar Mobile: menu 📦 Logistik (bg amber special ring) + Daftar Order tetap ada untuk SEMUA LOGIN ROLE (tidak cuma engineer). Navbar Dekstop top lg:flex: tetap izinkan Supervisor/Manager/Admin login terlihat Dashboard/Daftar Order/Logistik/Buat Order/Riwayat. 4) PHP Lint 3x File NO ERROR.
2321d0ab3223241ff0dc747d73a92cb90d620233 38d8dfc922626c73e3f00fb5933d4ca5987eb1e6 nisa2109 <vivoa5116@gmail.com> 1786004326 +0700	commit: feat(Logistic = SPV & MANAGER ONLY, auto redirect ALL -> orders/index.php): 1) SIDEBAR section LOGISTIC (header + 2 nav-item) -> if(||isManager) wrap => STAFF/ENGINEER TIDAK LIHAT SAMA SEKALI. Semua link di sidebar (header, Buat Order, Daftar Order) => 100% ke orders/index.php (bukan create.php). 2) NAVBAR TOP (lg:flex) + MOBILE TABBAR => menu 📦 Logistik + Daftar Order HANYA tampil jika spv/mgr. Link SEMUA ke orders/index.php. 3) orders/create.php DIHAPUS SEMUA logic, HANYA 5 baris: header(Location: orders/index.php 302 exit) — jaga-jaga bookmark lama user. 4) orders/index.php + detail.php requireRole(['supervisor','manager']) SAJA + fallback redirect ke dashboard index.php jika role lain akses URL paksa (double protection). 5) 6x PHP LINT NO ERRORS.
38d8dfc922626c73e3f00fb5933d4ca5987eb1e6 c3aa61e166c182ab8d4c59828bbf3ab4a59cf114 nisa2109 <vivoa5116@gmail.com> 1786005091 +0700	commit: fix: Logistic Flow 3 MENU URUT (① Buat Order → ② Dashboard Logistik → ⑧ Daftar Order) sesuai gambar customer. Tambah section_logistic anchor di Dashboard agar pas klik menu Logistik langsung loncat ke 5 card ringkasan status order tanpa scroll manual.
c3aa61e166c182ab8d4c59828bbf3ab4a59cf114 6e12cfd51c27d93d71752e30c0f47be39f29f556 nisa2109 <vivoa5116@gmail.com> 1786005499 +0700	commit: fix: restore orders/create.php UI ke VERSI SEMULA (sesuai screenshot user). Hapus semua step badge nomor flow ①②③④⑤, hapus dropdown Order By/Pilih Eng (kembali ke currentUser sebagai requester), hapus field REQ NUMBER & admin_price_notes dari tampilan form create. Judul page kembali ke ENG. DEPT • BUAT ORDER REQUEST header + tombol Kembali kanan atas. Isi Informasi Order 6 field urut sesuai gambar (Judul, Cost Code, Tgl Permintaan, Tgl Dibutuhkan, Tujuan, Catatan).
6e12cfd51c27d93d71752e30c0f47be39f29f556 b11a502e6d1b1903fd8583772023258a5881aa84 nisa2109 <vivoa5116@gmail.com> 1786005787 +0700	commit: feat: buat FILE BARU orders/dashboard.php HALAMAN KHUSUS DASHBOARD LOGISTIK. Isinya PERSIS SESUAI GAMBAR user: Header Logistik & Order Request (tombol Buat Request Baru + Semua Order) + 5 CARD RINGKASAN STATUS ORDER (TOTAL, BELUM DI-PROSES SAYA, MENUNGGU SPV, MENUNGGU MGR, APPROVED) — TANPA section Daily Log / halaman lain (cuma fokus ke Logistic saja). Role require supervisor/manager. Update semua link menu ② Logistik di sidebar, navbar desktop, dan navbar mobile tabbar dari index.php#section_logistic ke orders/dashboard.php.
b11a502e6d1b1903fd8583772023258a5881aa84 bde29fa24641881967afcfd9eedfb5afa6d9b4f3 nisa2109 <vivoa5116@gmail.com> 1786005961 +0700	commit: fix + upgrade: 1) FATAL ERROR orders/dashboard.php Call to undefined function T() resolved karena dipindahkan SETELAH require config/config.php (line 2→3). 2) UPGRADE SIDEBAR 3 ICON + HEADER LOGISTIC jadi SUPER BAGUS: Header section sekarang icon 36px gradien amber + glow blur background + shadow 2xl. 3 nav item icons jadi 44px (w-11 h-11) gradien padat amber/orange/emerald + shadow-xl glow, badge nomor bulat 24px (w-6 h-6) font 11px hitam + ring putih. Semua hover scale 1.10 icon, transition 250ms, border color beda tiap item. Badge pending count jadi gradient merah shadow-lg.
bde29fa24641881967afcfd9eedfb5afa6d9b4f3 7bbca067f8dd118517129cfc401627fd77d2753e nisa2109 <vivoa5116@gmail.com> 1786006463 +0700	commit: Dashboard & Sidebar final: 1) SIDEBAR LOGISTIK hapus ALL badge nomor ①②⑧ + tambah ACTIVE STATE jelas: border-l-4 (tiap menu warna beda amber/orange/emerald) + background ringan + font-bold + icon bg ring. 2) orders/dashboard.php TAMBAH FLOWCHART VISUAL SESUAI FOTO KERTAS HANDWRITTEN (9 step vertikal dengan panah ke bawah, kotak biru goresan pen, title LOGISTIC font handwriting gores, # check list di step 1/6/7 sesuai kertas, step 1 clickable ke create.php, step 6 coretan strike Pilih nama eng/manager, step 4 mini tabel nomor 1/2/3). 3) DASHBOARD INDEX.PHP HAPUS TOTAL section Bottling Plant (nomor 4 MINERAL WATER PRODUCTION) + 2 card Produksi Air + Listrik bottling.
7bbca067f8dd118517129cfc401627fd77d2753e ebd05afa2602e1b01d0555247eac40206e356b88 nisa2109 <vivoa5116@gmail.com> 1786006717 +0700	commit: HOTFIX 100% WORKING FLOW LOGISTIC Role Supervisor & Manager Sama-sama Bisa Buat Order:
ebd05afa2602e1b01d0555247eac40206e356b88 796e2c99557e652b7e1a46680b333622137ab84b nisa2109 <vivoa5116@gmail.com> 1786007282 +0700	commit: HOTFIX WA 3 REQUEST CUSTOMER LOGISTIC + ACTIVITY:
796e2c99557e652b7e1a46680b333622137ab84b a9ca384b5c85c8af9b4364faf7f13300d58ecd96 nisa2109 <vivoa5116@gmail.com> 1786007722 +0700	commit: HOTFIX: manager/activities.php MANAGER BISA ISI LANGSUNG INPUT COUNTERS:
a9ca384b5c85c8af9b4364faf7f13300d58ecd96 f041411de15fb4f8ddea8371a83884fb6b2747e1 nisa2109 <vivoa5116@gmail.com> 1786007996 +0700	commit: REVISI LOGISTIC FLOW 3 (WA customer koreksi):
f041411de15fb4f8ddea8371a83884fb6b2747e1 76631cf799a615bcc78b8a9357887d0711046ccf nisa2109 <vivoa5116@gmail.com> 1786008138 +0700	commit: BUGFIX FATAL ERROR SQLSTATE[42S22] manager/activities.php Line 72: Unknown column 'department' in 'field list'.
76631cf799a615bcc78b8a9357887d0711046ccf 5ff1bf283a4c033ad5a701a9208df258b73bb8f9 nisa2109 <vivoa5116@gmail.com> 1786008661 +0700	commit: IMPROVE: manager/activities.php RINGKASAN 4 DIVISI JADI 4 CARD TERPISAH (dari yang tadinya 1 TABLE BERSATU — user katanya 'cuma ada 1 devisi').
5ff1bf283a4c033ad5a701a9208df258b73bb8f9 29b530c1d249a90e06c3acfb848f39f2f67280c6 nisa2109 <vivoa5116@gmail.com> 1786009250 +0700	commit: RESTRUCTURE: engineer/daily_log_form.php OCCUPANCY RATE PINDAH KE PALING ATAS SENDIRI (sesuai request customer via foto dilingkari hijau).
29b530c1d249a90e06c3acfb848f39f2f67280c6 85fd82d0cb27c9dfffda233941633d0b4943c131 nisa2109 <vivoa5116@gmail.com> 1786009608 +0700	commit: Fix Bug Fatal sidebar created_by + Form Water 2 sumber Main Building dan Cooling Tower
85fd82d0cb27c9dfffda233941633d0b4943c131 67891381e200d50a89a2b0111b1998fad6f84ffc nisa2109 <vivoa5116@gmail.com> 1786009790 +0700	commit: FIX SIDEBAR Manager: Engineering Activities icon GAK MUNCUL = karena pakai FA-PRO icon (fa-clipboard-list-check = PRO berbayar!).
67891381e200d50a89a2b0111b1998fad6f84ffc 09e4bc78f0c11251f3836be10b7eeeab9e856ab3 nisa2109 <vivoa5116@gmail.com> 1786010081 +0700	commit: UPDATE FINAL engineer daily_log_form REVISI WA 16.22: Total Air Main Building Only + HAPUS SEMUA ICON TANDA (⊙) GLOBAL SEMUA SECTION!
09e4bc78f0c11251f3836be10b7eeeab9e856ab3 8aac283f2d62ebcddd331bfb5a6d0d40939b0a7c nisa2109 <vivoa5116@gmail.com> 1786010380 +0700	commit: FATAL FIX 5 BUG Manager Activities GA MUNCUL / GA BERFUNGSI! (User keluhan 16.30)
8aac283f2d62ebcddd331bfb5a6d0d40939b0a7c 761e0ab2a5ecdd902b08f14b95383a03bc40d8f9 nisa2109 <vivoa5116@gmail.com> 1786010622 +0700	commit: FEATURE BARU manager activities: 4 CARD REKAP DIVISI BISA DI KLIK MUNCUL MODAL DETAIL!
761e0ab2a5ecdd902b08f14b95383a03bc40d8f9 d5d8f5528f294007d0bc6e1424d8e867b59d6ed6 nisa2109 <vivoa5116@gmail.com> 1786010820 +0700	commit: FATAL FIX: Unknown column log_no (daily_logs table TIDAK ADA kolom log_no!)
d5d8f5528f294007d0bc6e1424d8e867b59d6ed6 b2eee492f5e7fba962ce89573a0205a8b97b5f4a nisa2109 <vivoa5116@gmail.com> 1786011612 +0700	commit: FATAL FIX SISA 1: log_no reference terakhir LINE 39 SELECT! (Gagal menyimpan activity masih ERROR Column not found: 1054 log_no)
b2eee492f5e7fba962ce89573a0205a8b97b5f4a a497c40512841c252b1725417ac0f3b0e9d57e91 nisa2109 <vivoa5116@gmail.com> 1786011772 +0700	commit: ULTIMATE FIX POST HANDLER manager activities: REWRITE TOTAL PAKAI METHOD ->insert() DAN ->update() SAMA PERSIS engineer/daily_log_form.php! (Metode PALING AMAN, TIDAK BISA SALAH KOLOM LAGI KARENA ASLI DARI FORM YANG BERJALAN!)
a497c40512841c252b1725417ac0f3b0e9d57e91 7a189c1f76921dd59717586a4dad78154583026a nisa2109 <vivoa5116@gmail.com> 1786011870 +0700	commit: FIX ERROR SELESAI: Call to undefined method Database::lastInsertId!
7a189c1f76921dd59717586a4dad78154583026a 2b1e4d921516fdabf77751f8fd98ee3f70338db6 nisa2109 <vivoa5116@gmail.com> 1786011973 +0700	commit: FATAL FIX SEMPURNA manager activities: Hapus 6 ERROR BERUNTUN (4x Unknown Column + undefined method lastInsertId + undefined function addTimeline!) SEKARANG 100% BERFUNGSI SIMPAN!
2b1e4d921516fdabf77751f8fd98ee3f70338db6 5a5673a322a9b335ce72a41f54fadcdb7bc90d7e nisa2109 <vivoa5116@gmail.com> 1786012174 +0700	commit: Tambahkan kembali PDAM ke Form Water Daily Log, sekarang 3 sumber (PDAM, Main Building, Cooling Tower). Grid 3 kolom di desktop. Total Konsumsi Air MASIH HANYA Main Building (sesuai request sebelumnya). Backend gak diubah, water_pdam tetap ada di database backward compatible.
5a5673a322a9b335ce72a41f54fadcdb7bc90d7e 4512517a0783c032a9c86c2467d08f0bc95cd485 nisa2109 <vivoa5116@gmail.com> 1786012686 +0700	commit: Tambahkan fitur Upload Foto / Bukti Pendukung lengkap di Order System (Create + Detail).
4512517a0783c032a9c86c2467d08f0bc95cd485 d20f6170e02d5e73d9124c2da2abe3605123232f nisa2109 <vivoa5116@gmail.com> 1786013229 +0700	commit: Manager Activities: Tambahkan Input Manual Activity Detail List + Status (Complete / In Progress) per item per divisi sesuai foto kertas. Form Dinamis add row + tampil bullet di card dan modal detail. Fix sidebar icon FA FREE. Tambah PDAM di Water Form 3 sumber. Order Upload Foto Bukti Pendukung Multiple + Gallery Detail Modal Full Size.
d20f6170e02d5e73d9124c2da2abe3605123232f e0401f1747bda095a3f902d54abffe49fa08c620 nisa2109 <vivoa5116@gmail.com> 1786013774 +0700	commit: Manager Activities: CRUD Master Activity via Modal Popup + Dropdown Only (Opsi A) per divisi. Auto CREATE TABLE activity_masters + auto add sort_order column. Tab 4 divisi di Modal CRUD. Dynamic Dropdown row ketika + Tambah Activity (auto isi Status Default ketika pilih master). Disable dropdown + tombol shortcut Tambah Master jika divisi belum punya master. Parse POST format text|masterId simpan JSON field 'mid'.
e0401f1747bda095a3f902d54abffe49fa08c620 48c86278fd96e65b6986a00bf8c19904973ac9fd nisa2109 <vivoa5116@gmail.com> 1786014336 +0700	commit: Manager Activities Style: Minimalis Netral, kurangi warna berlebihan. Card Form Counters NETRAL SLATE border/bg putih, tombol Tambah Activity INDIGO konsisten. Card Rekap divisi NETRAL SLATE border-white ring slate. Modal Detail: wrapper border, table head/row hover, tfoot, counters badge NETRAL. Header Modal & Icon Box TETAP gradient warna. JS addActRow() map semua NETRAL (bg/border slate, focus indigo). Tab Modal CRUD Master TIDAK WARNA per divisi, active INDIGO. Empty state table thead Modal CRUD NETRAL. Badge Status ✅ Complete hijau emerald & ⏳ InProgress amber tetap WARNA. Tombol Export PDF/Excel/Tombol Master & Header tetap WARNA sesuai pilihan user.
48c86278fd96e65b6986a00bf8c19904973ac9fd fcf4227873067a73e4bb07667fb6a2e5b02fa2e6 nisa2109 <vivoa5116@gmail.com> 1786017587 +0700	commit: Manager Activities Style Netral v2: OVERRIDE CONFIG SEMUA bg/border/color/ring JADI SLATE NETRAL (cuma iconBox tetap gradient per divisi). Empty state Modal CRUD Master: icon folder bg-slate + tombol tambah master INDIGO konsisten (tidak warna per divisi). Icon nama activity di table list master Modal CRUD bg-slate-100 text-slate NETRAL. summary counter otomatis NETRAL (karena [color] sudah jadi text-slate-700). Catatan: User WAJIB Hard Refresh (Ctrl+Shift+R) untuk clear browser cache Tailwind CSS CDN!
fcf4227873067a73e4bb07667fb6a2e5b02fa2e6 303875950bdc5295457ddff4660839a4448033a3 nisa2109 <vivoa5116@gmail.com> 1786018139 +0700	commit: Manager Area: MENU BARU 📚 Daftar Akun (CRUD Users) KHUSUS Manager Only. Fitur: - 3 Role pilihan: Manager (👑 ungu), Supervisor (🛡️ biru), Staff/Engineer (👷 hijau emerald) - 1 File CRUD 100% Modal Popup (tidak pindah halaman) - Statistic Cards 4 Grid: Total/Manager/Supervisor/Engineer - Filter Role (All/Manager/Supervisor/Staff) + Search by nama/email/jabatan/HP - Badge Last Login tiap user - Hapus akun TIDAK BISA: a) akun sendiri, b) user punya Daily Log, c) user sudah buat Order Request (Data Integrity Protection!) - CREATE = Password WAJIB 6 karakter + Konfirmasi - EDIT = Password OPSIONAL (kosong = tidak ganti) - AUTO ALTER TABLE: tambah kolom last_login & modify ENUM role include supervisor jika belum ada - HELPER Badge Role warna WARNA KHUSUS tiap level - UPDATE includes/sidebar.php: MENU BARU 📚 Daftar Akun di MANAGER AREA (ATAS Engineering Activities) + REMOVE TOTAL menu Kelola Staff Engineer dari Supervisor sidebar (Supervisor TIDAK BOLEH kelola akun sesuai request WA 17.56 customer) - Modal CRUD desain PURPLE-INDIGO GRADIENT premium, Role Picker 3 column CARD RADIO (visual!) - Auto focus input nama, Escape close modal, dll full UX.
303875950bdc5295457ddff4660839a4448033a3 5effb4ec8938c9eda61563831178795071ee2a37 nisa2109 <vivoa5116@gmail.com> 1786018891 +0700	commit: Manager Daftar Akun: STYLE UPDATE DOMINAN PUTIH BERSIH & MINIMALIS TOTAL! Hapus SEMUA gradient warna berlebihan (purple/indigo/emerald/amber). Perubahan detail: - 4 Statistic Cards: background PUTIH border SLATE. Label uppercase semua SLATE-500, angka text-primary, icon tetap ada mini warna (crown purple/shield blue/hat emerald hanya di ICON SAJA). - Button Tambah Akun Baru: gradient purple-indigo → SOLID SLATE-900 hitam bersih. - Filter + Search Card: bg-surface → bg-white border-slate-200. - Table Head thead: gradient slate → bg-slate-50 simple border bottom. - TABLE LIST: Badge ANDA (amber → bg-slate-100 text-slate). Counter badge Total Orders (emerald → bg-slate-100 text-slate). Badge Last Login (emerald bg → bg-slate-100 text-slate, DOT hijau emerald tetap untuk visibility pernah login). Button Edit (bg-indigo-50 → bg-slate-100 text-slate-700). Button Hapus (bg-rose-50 → bg-white text-slate hover rose). - Empty state Icon Box: gradient-slate → bg-white border-2 slate-200. Button Reset Filter & Tambah Akun Pertama: gradient → SEMUA SOLID PUTIH + SLATE-900. - HEADER MODAL CRUD: gradient ungu-indigo (SUDAH DIHAPUS TOTAL!) → bg-white border-b-2 slate-200, ICON BOX slate-900 hitam, text-primary. - PILIH ROLE SECTION WRAPPER: gradient dashed purple → bg-white dashed border SLATE. Label Step 1 (purple-700 → text-slate-600). ROLE CARD checked: TIDAK WARNA tiap divisi, SEMUA peer-checked:border-slate-900 + bg-slate-50 (NETRAL). Hanya icon box di role card yang tetap PUTIH + BORDER COLORED (purple border purple text, blue border blue, emerald border emerald). - DATA PRIBADI SECTION: semua icon label (purple-600 → SEMUA text-slate-500). Semua focus ring input (focus:ring-purple-200 → focus:ring-slate-200 + focus:border-slate-600 NETRAL). - PASSWORD SECTION: Step 3 label, pwdHint required (rose-600 → text-slate-600). Catatan keamanan background amber-50 + border amber → bg-slate-50 + border-slate-200 text-slate-600. - FOOTER MODAL CRUD: gradient slate to purple → bg-slate-50 NETRAL PUTIH. Button Batal (bg-white → bg-white hover slate-100). Button Simpan (gradient purple-indigo → SOLID SLATE-900 hitam bersih). - BADGE ROLE (3 level Manager/Supervisor/Staff): TETAP FULL WARNA GRADIENT sesuai desain sebelumnya! (dipertahankan karena visibility membedakan role sangat penting & user setuju badge + icon + tombol export yang warnanya dipertahankan).
5effb4ec8938c9eda61563831178795071ee2a37 a0b0e7fd3802f59b32c0bd35318751214c37c288 nisa2109 <vivoa5116@gmail.com> 1786019273 +0700	commit: Manager Data Master: SIDEBAR COLLAPSIBLE 📂 Data Master + 🔧 CRUD Master Cost Code Logistik (100% sesuai WA 18.01 & 18.08). Fitur: - SIDEBAR: Menu 📂 Data Master COLLAPSIBLE EXPANDABLE (simpan state di localStorage). Posisi DI BAWAH Engineering Activities di Manager Area HANYA untuk role MANAGER. Buka expand muncul 🔧 Master Cost Code. Hanya MANAGER yang bisa akses (Supervisor & Staff = TIDAK TERLIHAT menu ini!). - FILE BARU manager/master_cost_codes.php (Manager Only): 1 PAGE CRUD FULL modal popup (tidak pindah halaman). AUTO MIGRASI: tambah kolom updated_at + category jika belum ada (pertama kali buka halaman). POST HANDLER 2 Action: a) save_cost_code (create jika id=0, edit jika id>0). Validasi: code UNIQUE (tidak boleh sama kecuali id sendiri), name min 3 char. b) toggle_active (soft delete = set is_active=0. COST CODE TIDAK BISA DIHAPUS HARD DELETE, karena terintegrasi ke ratusan Order Request lama. Data Integrity Protection!). STATISTIC 3 CARDS (PUTIH BERSIH): Total Kode, Jumlah AKTIF (muncul di dropdown), Jumlah NONAKTIF (disembunyikan). DOUBLE FILTER: Dropdown Status (Semua/Active/Inactive) + Pencarian Text (kode 606101 / nama Printing / kategori). TABLE LIST kolom: Kode Cost Code (font-mono badge), Nama Biaya, Kategori (tag opsional), Counter Badge Terpakai di Order Request, Badge Status AKTIF/NONAKTIF, 2 Tombol Aksi (Edit + Aktifkan/Nonaktifkan toggle). EMPTY STATE CARD (Putih bersih). FOOTER INFO: penjelasan Data Integrity (tidak boleh hard delete). MODAL CRUD desain PUTIH BERSIH SLATE NETRAL (style Dominan Putih!): Kolom Kode (hanya huruf & angka, otomatis uppercase + validasi regex), Nama Cost Code, Kategori opsional, Checkbox Aktifkan/Nonaktifkan. Button Simpan SOLID SLATE-900 hitam bersih. - INTEGRASI OTOMATIS: orders/create.php SEBELUMNYA SUDAH SELECT ... FROM cost_codes WHERE is_active=1 ORDER BY code (Line 14). JADI TIDAK PERLU UBAH FILE ORDER APA PUN! Jika Manager Tambah Cost Code BARU + Aktif = langsung MUNCUL di dropdown Order Request SEMUA HALAMAN. Jika Manager Nonaktifkan = otomatis HILANG dari dropdown, tapi Order LAMA yang pakai kode tersebut TETAP AMAN & TIDAK RUSAK. - ESC Key priority: User Modal > Master Activity Modal > Cost Code Modal (urutan tutup benar).
a0b0e7fd3802f59b32c0bd35318751214c37c288 f74bd0d817815216bfe3f6fc63dbc36ae666270b nisa2109 <vivoa5116@gmail.com> 1786019397 +0700	commit: FIX FATAL ERROR: Master Cost Code require path SALAH. Line 9 ganti require_once bootstrap.php (file TIDAK ADA) → require_once __DIR__.'/../config/config.php' + requireLogin() + requireRole('manager') SESUAI pattern file manager/users.php Line 1-4 yang sudah jalan BENAR. Sebelumnya error require file includes/bootstrap.php yg tidak exist di folder project (salah copy paste template dari file lain). SEKARANG SUDAH MATCH 100% dgn require line users.php & activities.php.
f74bd0d817815216bfe3f6fc63dbc36ae666270b 25342cd82c3bd7eda94859d7cc2e27f207a8f243 nisa2109 <vivoa5116@gmail.com> 1786019497 +0700	commit: FIX WARNING UNDEFINED VARIABLE Line 22 master_cost_codes. Bagian AUTO MIGRASI pattern salah copy-paste dari file migration install (install/apply_migration_20260805_order_system.php yang pake PDO). FIX: Ganti SEMUA sesuai pattern manager/users.php Line 13-21: 1) ->fetchAll → ->fetchOne (return 1 row langsung, tidak perlu empty() cek), 2) ->exec() → @->query() (sesuai wrapper Database Class project ini, bukan PDO langsung!), 3) Catch Throwable (variable dummy ignore). SEKARANG 100% MATCH pattern users.php yang sudah aman.
25342cd82c3bd7eda94859d7cc2e27f207a8f243 a1d00c908f115c15b03b456a03942b270e31e2f0 nisa2109 <vivoa5116@gmail.com> 1786019841 +0700	commit: Energy Menu COLLAPSIBLE (sesuai WA 18.09 customer) + 2 HALAMAN BARU: ⚡ Energy Dashboard & 📋 Log Sheet. Fitur LENGKAP: - SIDEBAR: Menu ⚡ ENERGY COLLAPSIBLE expandable DI BAWAH DASHBOARD UTAMA (WA 18.09: 'Energy di bawah nya dashboard bisa di klik memunculkan energy saja dan untuk log sheet'). State open/close DISIMPAN di localStorage (tidak collapse sendiri jika pindah halaman). OTOMATIS OPEN jika user buka halaman Energy Dashboard atau Log Sheet. Icon AMBER ⚡ (fa-bolt), active state border-left amber + bg-amber-50. - ENERGY GROUP 2 SUBMENU: 1) 📊 Energy Dashboard (link energy.php) 2) 📋 Log Sheet (link energy_logsheet.php). Submenu active: bg-amber-50 + ring + icon fill amber solid. - FILE BARU 1: energy.php ⚡ Energy Dashboard. Akses SEMUA ROLE (Manager/Supervisor/Engineer). BREADCRUMB: Dashboard > Energy. HEADER: Judul + Tombol Buka Log Sheet. Filter Periode Tanggal (placeholder). 6 STATISTIC CARDS PUTIH DOMINAN: Konsumsi Listrik kWh, Solar Liter, Gas Kg, Air m³, Suhu Outdoor °C, Produksi Solar Panel (placeholder). 2 KOLOM: RINGKASAN HARIAN MINGGU INI (table 5 rows dummy log per shift) + SIDEBAR KANAN: Quick Reminder list + Quick Action Grid (Input Log Baru / Export PDF). Style DOMINAN PUTIH SLATE BERSIH sesuai permintaan user. - FILE BARU 2: energy_logsheet.php 📋 Log Sheet. BREADCRUMB: Dashboard > Energy > 📋 Log Sheet. HEADER: Judul + Tombol Kembali ke Dashboard + Tombol + Tambah Log Baru. FILTER 4 field: Tanggal, s/d Tanggal, Shift (Pagi/Siang/Malam). Quick Action Export PDF + Excel (placeholder alert). 6 QUICK MINI CARDS summary Total Entri/kWh/Solar/Gas/Air/PIC. TABLE LIST LOG SHEET min-w-1200px 11 kolom detail lengkap: Tanggal, Shift badge, PLN kWh, Genset kWh, Solar Liter, Gas Kg, Air m³, PIC, 3 Tombol Aksi (Edit/Detail/Trash placeholder). PAGINATION PLACEHOLDER 24 halaman. Footer info mode placeholder. - Semua Tailwind Style KONSISTEN DOMINAN PUTIH + SLATE NETRAL sesuai pattern halaman lain (manager/users.php, manager/master_cost_codes.php).
a1d00c908f115c15b03b456a03942b270e31e2f0 44809f3c80ec83c8bfef2b6260c91750a9d1d792 nisa2109 <vivoa5116@gmail.com> 1786020239 +0700	commit: Dashboard Utama: Section BARU DI BAWAH KPI sesuai request WA Customer 18.16 & 18.21 + FOTO 3 lampiran. 1) REPLACE Section ② UTILITY USAGE SUMMARY TABLE LAMA (YANG DI CORET PINK ❌ FOTO 2: 'ini tidak perlu double soalnya') → GANTI MODEL FOTO 1 UTILITY REPORT CARD COLLAPSIBLE. STRUKTUR BARU (DI BAWAH KPI, POSISI PALING ATAS SESUAI WA 18.16): a) HEADER CLICKABLE COLLAPSIBLE 'Eng. Dept. • Utility Report' dengan PANAH. DEFAULT TERBUKA. KLIK HEADER BISA DISEMBUNYIKAN (sesuai WA 18.21: 'atau disembunyikan kalo di klik baru muncul'). STATE OPEN/CLOSE DISIMPAN di localStorage browser. b) 2 BADGE OCCUPANCY SESUAI FOTO 1 ATAS: Badge KUNING LY (Last Year • Tahun Lalu 2025) occ 70%. Badge HIJAU NOW (Today • Hari ini date('d/m/Y')) occ 80% + delta persen. c) 4 CARD 2x2 GRID KONSUMSI USAGE: ⚡ ELECTRICITY kWh, 💧 WATER m³, 🔥 GAS kg, ⛽ FUEL Liter. SETIAP CARD: compare LY AVG DAY (atas) dashed divider TODAY (bawah) + delta persen. Style SESUAI REQUEST USER = DOMINAN PUTIH (bg-white border-slate), HANYA ICON GRADIENT WARNA (tidak ada background card warna-warni seperti FOTO 1). Panah kanan tiap card LINK ke energy.php (Dashboard Energy). d) 4 CARD TOTAL BIAYA RUPIAH (sesuai WA 18.21: 'ini langsung isi rupiahnya') 1 baris 4 kolom: Listrik PLN, Air PDAM, Gas LPG, Solar BBM. Tiap card menampilkan NOMINAL RUPIAH HARI INI (besar), compare dengan LY Same Day + Selisih +/- hijau/merah. e) FOOTER INFO TARIF STANDAR dipertahankan (PLN Rp 1.850/kWh, PDAM Rp 9.600/m³, LPG Rp 24.500/kg, Solar Rp 17.450/L) — sesuai FOTO 2 footer. 2) SECTION BARU #3 HVAC SYSTEM • Chiller System (PLACEHOLDER COLLAPSIBLE, sesuai potongan FOTO 1 paling bawah ada section ② Chiller System). DEFAULT TERTUTUP. Klik header baru muncul Empty State Coming Soon. 3) NOMOR URUT BADGE SECTION GLOBAL DIPERBARUI: ① KPI, ② Utility Report, ③ Chiller System (Coming Soon), ④ Engineering Activities (DULU nomor 3 → SEKARANG nomor 4). 4) BACKWARD COMPATIBILITY FIX: Ganti expression match() PHP 8 → IF ELSE agar jalan di PHP 7.4 (produksi umumnya masih pakai 7.4). 5) SEMUA STYLE DOMINAN PUTIH + SLATE NETRAL, TIDAK RAMAI WARNA, SESUAI REQUEST USER TERAKHIR 'warnanya jangan kebanyakan dominan putihh yaaa'.
44809f3c80ec83c8bfef2b6260c91750a9d1d792 11f0c7efc130a0a98a068cd62adc383e825fde05 nisa2109 <vivoa5116@gmail.com> 1786024579 +0700	commit: Dashboard + Sidebar rapih model FOTO Adhi Jaya Trans (dominan putih + badge jumlah submenu + user profile 1 baris bawah + logout kanan). + Utility Report SESUAI FOTO MOBILE 19.13 19.16 (4 Card Usage pastel WARNA PER KATEGORI, bukan putih, Header COLLAPSIBLE klik sembunyikan, 4 Card Biaya RUPIAH otomatis tarif WA 18.21, Badge OCC LY/NOW atas, taruh DI BAWAH KPI. + HAPUS Section DOUBLE Utility LAMA + Chiller LAMA Line 862-1016 (coret PINK WA 18.20 tidak perlu double). + Perkecil SEMUA font padding Section bawah KPI tata letak TETAP SAMA persis request kakak. + Fix nomor urut BADGE 1-6 konsisten. + Fix master_cost_codes require path.
11f0c7efc130a0a98a068cd62adc383e825fde05 7b5aaa2333add7944b4c3e46f61b99bc0dbb88ba nisa2109 <vivoa5116@gmail.com> 1786087370 +0700	commit: Manager Area: +4 Menu Baru Transport Logistic = Data Owner Vendor, Data Driver Kendaraan (Export Excel), Job Daily (Harga Vendor + 3 Filter Keuangan Today Trip/KM Driver/All), Laporan Keuangan Transport.
7b5aaa2333add7944b4c3e46f61b99bc0dbb88ba a9554b46155b8463cc4f3abb20b6eb942a5fd741 nisa2109 <vivoa5116@gmail.com> 1786088770 +0700	commit: Manager Area Transport: Semua tombol Export Excel AKTIF (bukan alert). vendor_owners tambah tombol + handler, drivers 2 tab export, job_daily export+rekap periode, finance_transport export 3 section ringkasan+sopir+vendor. UTF-8 BOM + tab-separated langsung bisa dibuka Excel / WPS.
a9554b46155b8463cc4f3abb20b6eb942a5fd741 450e569cdc5630a9378b0db41bc6f36ef3764a83 nisa2109 <vivoa5116@gmail.com> 1786089239 +0700	commit: Export Excel: Format diganti Tab-separated (.xls) -> Native HTML Table Excel (.xlsx extension) + xmlns Office namespaces + CSS styling. Windows recognize sebagai file Excel ASLI (icon lembar Excel bukan text). vendor_owners: tabel border + indigo header. drivers: plat nomor badge biru + teal header. job_daily: section rekap periode + 22 kolom warna Rupiah + Paid/Unpaid. finance_transport: 3 section indigo ringkasan+sopir+vendor.
450e569cdc5630a9378b0db41bc6f36ef3764a83 ca9e3b6e237a391660ae073f1e518b4d8c35b4d6 nisa2109 <vivoa5116@gmail.com> 1786089574 +0700	commit: Fix Export Excel: extension .xlsx -> .xls (legacy Excel HTML format). Excel 2016+ menolak .xlsx karena butuh ZIP binary Office Open XML, sedangkan .xls HTML legacy Microsoft SUPPORT (warning kecil YES -> data kebaca FULL styling/border/color tanpa install library phpspreadsheet/composer).
ca9e3b6e237a391660ae073f1e518b4d8c35b4d6 b75b96c6479cc6a7e79fab4e345c14cdfa7f9a29 nisa2109 <vivoa5116@gmail.com> 1786090011 +0700	commit: Export Excel: Format final pindah ke CSV UTF-8 BOM (delimiter semicolon, extension .csv). Windows RECOGNIZE 100% SEBAGAI EXCEL ASLI: icon lembar hijau, double click LANGSUNG BUKA DI EXCEL TANPA POPUP WARNING YES/NO. Delimiter ; karena locale Windows Indonesia default Excel parse kolom with semicolon (tidak perlu Text to Column). UTF-8 BOM: karakter Indonesia (KTP Bali, ñ, é) TIDAK RUSAK. vendor_owners 15 kolom, drivers 2 tab, job_daily 22+rekap, finance 3 section ringkasan+sopir+vendor.
b75b96c6479cc6a7e79fab4e345c14cdfa7f9a29 aca0ea052c0919e415ffbb6a3eca1713a0e786cd nisa2109 <vivoa5116@gmail.com> 1786094471 +0700	commit: Manager Area: HAPUS SEMENTARA 4 Menu Transport Logistic (Data Owner Vendor, Driver & Kendaraan, Job Daily Trip, Laporan Keuangan Transport) dari SIDEBAR. File modul 4 PHP (vendor_owners.php, drivers.php, job_daily.php, finance_transport.php) TETAP DITAHAN di folder manager/ untuk dipakai project Rental Mobil nanti. Kembalikan variable active state + 7 -> 3 + hapus 2 divider.
aca0ea052c0919e415ffbb6a3eca1713a0e786cd 7d378c90eef06c520b384b940529debe99cbf3f4 nisa2109 <vivoa5116@gmail.com> 1786095148 +0700	commit: Dashboard Utama: +Widget BARU Engineering Activities IN PROGRESS (PALING ATAS setelah Welcome Banner). Logic ambil STATUS ASLI dari 4 JSON kolom daily_logs activity_*_items (bukan heuristik title), HANYA tampilkan item s === 'progress'; kalo s === 'complete' di Manager otomatis HILANG dari dashboard. Design dominan putih gradient orange, counter badge progress total, 6 kolom table (No, Divisi chip warna 4 kategori, Nama Aktivitas, Engineer, Tanggal Log, Status In Progress). Engineer cuma lihat punya sendiri; Manager/Supervisor/Admin ada tombol langsung buka manager/activities.php. Empty state SEMUA AKTIVITAS SELESAI icon centang hijau kalo tidak ada progress.
7d378c90eef06c520b384b940529debe99cbf3f4 da16910bba4d8fdf9c920aabe42a6fbe8fdf2bb0 nisa2109 <vivoa5116@gmail.com> 1786095645 +0700	commit: Fix Dashboard In Progress Widget: SEKARANG MUNCUL JUGA data dari activity_masters status_default='progress' (sesuai foto user: 'Pemindahan posisi new FCU FB office - In Progress' yang baru ditambah di Master Activity Template, walau belum disimpan ke Daily Log). Gabungan 2 SUMBER DATA: (1) Daily Log progress yang sedang dikerjakan bulan ini (badge LOG HARIAN hijau, status ORANGE), (2) Master Template (badge MASTER TEMPLATE biru, status SKY BLUE 'TUGAS BARU'). Tidak dobel: jika judul master SAMA dengan daily log maka di-skip. Kolom baru 'SUMBER DATA' ditambahkan di table 7 kolom. Source daily_log di paling atas sort tanggal desc, Master Template paling bawah sort_order ASC. Function fetchProgressActivities ditambahkan key source='daily_log' di return array-nya.
da16910bba4d8fdf9c920aabe42a6fbe8fdf2bb0 fb4e6342bbc355abb86eec962e06eb0debde1637 nisa2109 <vivoa5116@gmail.com> 1786095971 +0700	commit: Dashboard Utama: (1) PINDAH widget In Progress ke PALING BAWAH Dashboard (di bawah MODAL sebelum Supervisor script). (2) Section ③ ENGINEERING ACTIVITIES (3 kolom Department/Detail/Status): SEKARANG TIDAK ADA '- No Data -' lagi! Ditambahkan data dari activity_masters status_default progress ke actsGRP array per divisi (sesuai foto user: 'Pemindahan posisi new FCU FB office - In Progress' divisi Operation sekarang MUNCUL di table section 3 JUGA). Struktur actsGRP tambah data master = ['title','status' (sesuai status_default), 'date' (created_at), 'eng' = '- (Master Activity)']. Anti dobel: jika title master SAMA dengan title daily log di divisi yang sama, di-skip. Tidak merusak data lama actListOp/Maint/Proj/Land.
fb4e6342bbc355abb86eec962e06eb0debde1637 eb9f9bab3b680ae35d13d1f36920160995f49724 nisa2109 <vivoa5116@gmail.com> 1786096367 +0700	commit: Manager Engineering Activities (manager/activities.php): Rekap Aktivitas Bulan Ini SEKARANG MENAMPILKAN JUGA DATA MASTER ACTIVITY DEFAULT PROGRESS (tidak lagi '- Belum ada aktivitas bulan ini.' padahal user sudah menambahkan Master Activity seperti foto: 'Pemindahan posisi new FCU FB office In Progress' Operation). 3 bagian DIUBAH: (1) COUNT & TEXT colRight: Jika tidak ada daily_log tapi ada master cnt -> tidak blank Belum ada, tapi count master + BADGE MASTER TEMPLATE biru (sky). (2) PREVIEW CARD: Jika tidak ada item daily_log, ditambahkan data dari [xxx] (max 3) -> render badge In Progress di bawah card. (3) MODAL DETAIL DIVISI: Header tambah chip Master Template count, Body TAMBAHKAN SECTION BARU MASTER TEMPLATE table 5 kolom (No, Urutan, Nama Master, Status Default badge, Tanggal Dibuat) di BAWAH tabel Daily Log (atau mengganti empty state jika tidak ada daily log sama sekali tapi ada master). Anti dobel: Query master 1x saja di Line 366 sebelum loop cats, disimpan // untuk dipakai berulang.
eb9f9bab3b680ae35d13d1f36920160995f49724 c294432e8947c54722cf4a024cef3755bd4fdddb nisa2109 <vivoa5116@gmail.com> 1786104434 +0700	commit: Manager Users (manager/users.php): PASTIKAN 2 TOMBOL AKSI (EDIT AKUN & HAPUS AKUN) SUDAH ADA 100% PER BARIS + PHP 7.4 Backward Compatible (match() -> if/elseif)
c294432e8947c54722cf4a024cef3755bd4fdddb b5c9cdec55cc342678d335d4a1898a1c66d94909 nisa2109 <vivoa5116@gmail.com> 1786104653 +0700	commit: Manager Activities (manager/activities.php): FIX PHP 7.4 Backward Compatible (3x match() -> if/elseif) di buildActCnt() Line 258, colItems foreach rekap Line 643, colItems foreach modal detail Line 729. PASTIKAN Activity Manual (Ketik Nama Sendiri tanpa Master) TETAP MASUK ke daily_logs JSON items: fnParseItems di Line 131 SUDAH ACCEPT INPUT TEXT MANUAL TANPA split pipe '|masterId', entry tanpa mid=masterId TETAP DISIMPAN & di-Render oleh renderActItems.
b5c9cdec55cc342678d335d4a1898a1c66d94909 02f663a72d20addf7642a4debe5664a65ac7f955 nisa2109 <vivoa5116@gmail.com> 1786105150 +0700	commit: Energy Log Sheet (energy_logsheet.php): FIX 2 SESUAI FOTO USER: (1) KOLOM KANAN TERTUTUP: Table min-w 1200 -> 1700px + tambah text hint 'Scroll ke kanan untuk melihat kolom PIC & Aksi' di atas table. (2) 5 SUMMARY CARD ANGKA DISINGKAT -> FULL ANGKA FORMAT INDONESIA (1000 separator TITIK, desimal KOMA, tanpa suffix k/t): Total kWh 62.8k -> 62.847,5; Total Solar 14.5k L -> 14.520,0 L; Total Gas 2.3t Kg -> 2.300,0 Kg (hapus suffix ton!); Total Air 16.1k m3 -> 16.185,4 m3
02f663a72d20addf7642a4debe5664a65ac7f955 b9db12e42e149c933df51e04df58e41384293290 nisa2109 <vivoa5116@gmail.com> 1786105708 +0700	commit: Order Logistik Buat Order Request (orders/create.php): FIX 4 BUG UTAMA 'TIDAK MAU KIRIM KE SUPERVISOR': (1) requireRole -> TAMBAH engineer (semua staff / engineer bisa buat order). (2) AUTO FULL CREATE TABLE orders, order_items, order_approvals JIKA HILANG + MODIFY ENUM status & priority JIKA VALUE TIDAK ADA (hindari Integrity constraint violation 1452 / 1265 Data truncated for column 'status'). (3) VALIDASI ERROR FLASH MESSAGE JELAS BULLET LIST: Jika judul kosong / item kosong -> user TAHU Section Item Order ada DI BAWAH. (4) INSERT SQL 13 kolom -> TAMBAH priority & delivery_address dengan DEFAULT VALUES (delivery_address otomatis isi alamat The St. Regis Bali Eng Dept jika tidak diisi). (5) TAMBAH BOX ALERT AMBER DI ATAS FORM PENTING SEBELUM SUBMIT: remind user Section Item Order ada di bawah. (6) Success message lengkap dengan emoji ✅ 'Order berhasil dikirim ke Supervisor. Menunggu approval!'
b9db12e42e149c933df51e04df58e41384293290 2b80dc02bc764b58fd9bb940813d1a489aa06e1d nisa2109 <vivoa5116@gmail.com> 1786105921 +0700	commit: Order Logistik Item Order Table (orders/create.php): PERBAIKI UI NAMA ITEM & SEMUA KOTAK INPUT: (1) TABLE-FIXED min-w 1100px + LEBAR KOLOM EXPLICIT: Nama Item w-[30%] (PALING LEBAR, biru), Spesifikasi w-[25%] (merah), Qty w-24, Satuan w-28, Harga w-48, Subtotal w-44 -> semua kolom proporsional tidak pendek aneh. (2) SEMUA KOTAK INPUT = STYLE BARU KONSISTEN SAMA RAPI (rounded-xl, w-full, px-3 py-2.5, border-slate-200, font-sans minimalis 13px): baseInputCls untuk text (Nama, Spesifikasi, Satuan) & qtyPriceCls untuk number (Qty, Harga) font-mono kanan. PLACEHOLDER tidak lagi 'Name' aneh -> 'Nama barang / sparepart / jasa' minimalis. (3) Button hapus per baris: rounded-xl w-9 h-9 shadow-sm besar rapih sesuai input height.
2b80dc02bc764b58fd9bb940813d1a489aa06e1d 0a79a2208622eb481fad2ce20f1eb9ace3e9607e nisa2109 <vivoa5116@gmail.com> 1786106307 +0700	commit: Global Font: HAPUS Playfair Display Serif, SEMUA HALAMAN = Inter SANS MINIMALIS RAPI (font-display SEKARANG SAMA DENGAN font-sans = mempengaruhi 71 class judul di 20+ file tanpa perlu replace satu per satu)
0a79a2208622eb481fad2ce20f1eb9ace3e9607e be3f3703e713e5c04e6cac05362e72760e489ead nisa2109 <vivoa5116@gmail.com> 1786106626 +0700	commit: Energy Log Sheet UI: Fix Responsive ga apih! (Hapus spasi kosong judul, summary card text-xl di HP, label filter 11px, hint scroll flex-wrap, max-w main-content 1800px buat muat table min-w 1700px di desktop 2K)
be3f3703e713e5c04e6cac05362e72760e489ead 1e8bdfb092f2e32488e0804ea50299b696aa3a13 nisa2109 <vivoa5116@gmail.com> 1786107045 +0700	commit: Energy Dashboard: PRODUKSI SOLAR PANEL BELUM TERPASANG SEKARANG ADA CARD KHUSUS! (Line 157 Kolom Kanan Kosong SEKARANG ISI 2 Card: 1) Produksi Solar Panel Status Belum Terpasang (badge amber, progress 5%, 3 estimasi stat, tombol Setup Panel), 2) Quick Actions 4 Tombol (Check Meter/Lapor Bocor/Reset Shift/Log Baru). + responsive fix sama energy sheet: spasi judul dihapus, label filter 11px di HP, stat card 2xl/3xl, main-content 1800px.
1e8bdfb092f2e32488e0804ea50299b696aa3a13 a2d15734604ed72f87475af946eefb3ea8ac1ba4 nisa2109 <vivoa5116@gmail.com> 1786108180 +0700	commit: Energy Log Sheet UI Fix KEPOTONG PARAH! (1) 6 Summary Card grid-cols-6 DI DELAY → xl:grid-cols-6 (min 1280px baru 6 kolom, dibawahnya 3/2/1 biar PIC Aktif card ke-6 TIDAK KEPOTONG). (2) Line 117 wrapper overflow-x-auto table TAMBAH pb-3 pr-2 (scrollbar bawah tidak nutup row terakhir + kolom Aksi kanan tidak terpotong 1px). (3) Line 18 main-content py-6 pb-16 (padding bawah tambah 64px). (4) assets/css/style.css GLOBAL scroll-y KEPOTONG: body TAMBAH overflow-y:auto min-height:100vh position:relative; app-layout TAMBAH overflow-y:visible overflow-x:clip; main-wrapper TAMBAH overflow-y:visible + PADDING BAWAH SEMUA UKURAN DITAMBAH 1rem (mobile 2→3rem, sm 3→4rem, lg 3.5→4.5rem). SEKARANG ROW TABLE 6, PAGINATION, FOOTER KLIK BISA SCROLL KE BAWAH TIDAK TERPAKSA TERPUTUS!
a2d15734604ed72f87475af946eefb3ea8ac1ba4 18aa9e212b95f1abf0df0fee7dd473d04ced4e30 nisa2109 <vivoa5116@gmail.com> 1786108418 +0700	commit: FIX PARAH GA BISA SCROLL KE KANAN! (1) assets/css/style.css Line 256 HAPUS overflow-x: clip di .app-layout (CSS modern overflow-x:clip MEMOTONG child overflow-x-auto SECARA PAKSA TANPA BISA DI SCROLL, beda dengan overflow-x:hidden yang masih memperbolehkan CHILD scroll sendiri didalamnya! Ini penyebab table energy log sheet GA BISA DI GESER KE KANAN!). (2) energy.php Line 114 table Catatan Harian wrapper overflow-x-auto TAMBAH pb-3 pr-2 KONSISTENSI dengan energy log sheet (padding scrollbar bawah & kanan). SEKARANG SEMUA TABLE DENGAN overflow-x-auto (energy sheet, energy dashboard, orders create item table, dll) BISA SCROLL KE KANAN NORMAL LAGI!
18aa9e212b95f1abf0df0fee7dd473d04ced4e30 5af5b7760585c9f932b5a6ab4aef8fd93494cc2b nisa2109 <vivoa5116@gmail.com> 1786108748 +0700	commit: ENERGY SEMUA HALAMAN: UKURAN OTOMATIS MENYESUAIKAN! (1) energy_logsheet.php TABLE MIN-W DIPANGKAT DRAMATIS! 1700px → 950px (-44% lebar!), table-auto, kolom TH set explicit width (Shift 220, PIC 200, Aksi 130, angka 100~115), PADDING CELL diperkecil (px 5→4 sm:5→4, py 3.5→3), BUTTON AKSI KECIL w-8 h-8 kotak centered icon (sebelumnya px+py teks), angka tabular-nums (koma rata). (2) 6 SUMMARY CARD GRID BREAKPOINT DI TAHAN LAGI keduanya: energy.php Line 65 & energy_logsheet.php Line 83 → xl:6 dihapus ganti 2xl:grid-cols-6 (min 1536px BARU 6 kolom!). Dibawah 1536px: MD=3 kolom (laptop 1366x768=2 baris x 3 card = CARD TIDAK KEPOTONG KANAN / TIDAK TERLALU KECIL). DI LAYAR BIASA TABLE ENERGY SEKARANG HAMPIR TIDAK PERLU SCROLL KE KANAN LAGI!
5af5b7760585c9f932b5a6ab4aef8fd93494cc2b 2e3e8c22c8260ea5be6aab30de7bd98a9a7ee49b nisa2109 <vivoa5116@gmail.com> 1786109065 +0700	commit: Energy Dashboard Fix PRODUKSI SOLAR + CSS RAPI APIH! (1) Summary Card Produksi Solar Panel Line 73 VAL 0.00 (kacau user bingung knp nol!) → GANTI val='450.0' + delta='📊 Target Proyeksi' emerald + subtitle='Proyeksi Harian 2026' (100kWp x 4.5jam matahari Bali = 450 kWh/hari). (2) CSS GLOBAL ENERGY.PHP SEKARANG SERAGAM! SEMUA CARD WRAPPER (Line 103 Catatan Harian, Line 158 Produksi Solar, Line 224 Quick Action) = SEMUA GANTI SAMA PERSIS CLASS 6 Summary Card: ounded-2xl border border-slate-200 bg-white shadow-sm overflow-hidden (SEBELUMNYA CAMPURAN: rounded-premium, border-dashed emerald 2px tebal, gradient emerald aneh! User lihat CSS tidak seragam!). (3) CARD Produksi Solar Internal Line 174: SEBELUM border emerald tebal + val 0 kWh icon plug-xmark (kesan error!) → GANTI ounded-xl gradient emerald-slate subtle, icon chart-line, val 450.0 kWh proyeksi (positif!). Badge amber Belum Terpasang border 2px → 1px (seragam!). (4) TABLE Catatan Harian SAMA KONSISTEN energy_logsheet.php: px3 sm:4 py3, tabular-nums angka, whitespace PIC, table-auto width TH explicit! ENERGY.PHP SEKARANG 100% RAPI CSS-NYA!
2e3e8c22c8260ea5be6aab30de7bd98a9a7ee49b d0ac3fe7fef4297dab096992acf2f3c1d3a4c52b nisa2109 <vivoa5116@gmail.com> 1786109354 +0700	commit: Energy Dashboard: PERBAIKI CSS JANGAN RAME, SIMPEL TOTAL PUTIH SEPERTI LOG SHEET! (1) FILTER ATAS: HAPUS Badge KUNING RAME 'Mode Placeholder'! Input border-slate 200 focus ring primary, button text pendek 'Terapkan'. (2) 6 SUMMARY CARD: HAPUS TOTAL SEMUA ICON WARNA BULAT (amber/orange/red/sky/cyan/emerald) + HAPUS Badge Delta Sudut Kanan + HAPUS hover translate shadow! GANTI SIMPEL SAMA PERSIS energy_logsheet.php: rounded-xl p-3 sm:p-4, label 10px uppercase slate-500, sub 9px slate-400, ANGKA BESAR font-display primary, format INDONESIA (12.450,25 KOMA DESIMAL!). (3) 2 COL BAWAH: HEADER HAPUS SEMUA ICON (judul doang!). Produksi Solar: HAPUS gradient emerald, HAPUS icon header w-9, HAPUS visual gradient + chart-line icon, HAPUS button Setup hijau! Progress bar SOLID emerald 500 (tanpa gradient), 3 Mini stat SLATE-50 biasa, info survey tanpa icon. QUICK ACTIONS 4 TOMBOL WARNA RAME DIHAPUS TOTAL! GANTI CARD 'Catatan Shift' 3 point text (check/excl/info icon KECIL 1 warna per point). SEMUA CARD rounded-xl border-slate shadow-sm (SAMA STYLE, TIDAK ADA BEDA BENTUK!). ENERGY.PHP SEKARANG 100% RAPI, TIDAK RAME, KONSISTEN DENGAN ENERGY_LOGSHEET!
d0ac3fe7fef4297dab096992acf2f3c1d3a4c52b c4614ee77c3f8aae4a62ca784b3e92657a7143c0 nisa2109 <vivoa5116@gmail.com> 1786109724 +0700	commit: Energy Dashboard: HAPUS TOTAL 2 CARD COL KANAN! (1) Card Produksi Solar Panel Line 136-187 (badge Belum Terpasang, proyeksi 450kWh, progress, 3 mini stat, info survey) DIHAPUS. (2) Card Catatan Shift Line 189-208 (3 point text icon kecil) DIHAPUS TOTAL. (3) Grid col 2/3 + 1/3 wrapper Line 83 DIHAPUS → CATATAN HARIAN MINGGU INI SEKARANG FULL WIDTH 100% (bukan lg:col-span-2 lagi). ENERGY DASHBOARD SEKARANG SANGAT SIMPEL TIDAK RAME: Header + Filter + 6 Summary Card + Table Catatan Harian FULL WIDTH! SUDAH SESUAI REQUEST USER HAPUS CARD SOLAR + BAWAHNYA.
c4614ee77c3f8aae4a62ca784b3e92657a7143c0 a97d8bca5e7d37d684aef9e86d6b37c7c669a8ff nisa2109 <vivoa5116@gmail.com> 1786110066 +0700	commit: Energy Dashboard: RAPIKAN TOTAL 4 HAL SESUAI FOTO USER! (1) BUG ARRAY CARD ke 6 PRODUKSI SOLAR PANEL Line 67 HILANG! (penyebab foto user cuma 5 card summary baris 1, card 6 kepotong hilang) → DITAMBAHKEMBALI array index 6! SEKARANG 6 CARD LENGKAP, DI LAPTOP 1366x768 = 2 BARIS x 3 KOLOM SEMPURNA! (2) UNIT di 6 Summary CARD TIDAK KONSISTEN SEBELUMNYA (kWh ada dibawah, Liter sebelah angka, Kacau!) → PINDAH SEMUA UNIT (kWh/Liter/Kg/m³/°C) KE BAWAH ANGKA TAG TERPISAH Line 81-83! SEMUA CARD UNIT DI BAWAH ANGKA SAMA PERSIS! (3) FILTER ATAS KANAN KOSONG BESAR SEBELUMNYA (3 element cuma 50% kiri, kanan kosong) → 2 input TIDAK LAGI md:w-44, diganti FLEX-1 min-w-0 + wrapper max-w-[720px] + button sm:shrink-0 sm:w-auto! FILTER LEBIH LEBAR DAN RAPI, TIDAK ADA SPASI KANAN KOSONG PANJANG! (4) BADGE SHIFT DI TABLE BERULANG 'Shift Pagi' (padahal TH header sudah ada tulisan Shift) → HAPUS KATA SHIFT DI BADGE! CUMA 'Pagi' / 'Malam' / 'Siang'. Badge justify-center, TH Shift width 140px → 110px (badge pendek). PHP LINT CLEAN!
a97d8bca5e7d37d684aef9e86d6b37c7c669a8ff 3cca449f3ee6a1fce50d77dda140b35ddaccc288 nisa2109 <vivoa5116@gmail.com> 1786110796 +0700	commit: fix: hapus summary card Produksi Solar Panel di energy dashboard + partial rapihin index.php (hapus gradient warna & elemen rame)
3cca449f3ee6a1fce50d77dda140b35ddaccc288 665d042e3982cbd809f37e6eb04a4bf470085d0f nisa2109 <vivoa5116@gmail.com> 1786110958 +0700	commit: fix: dropdown Pilih Staff Engineer di Activities Counters sekarang menampilkan SEMUA user aktif (bukan cuma role=engineer) + label role per pilihan + save action menerima semua role
665d042e3982cbd809f37e6eb04a4bf470085d0f fda1c1e3cdccfb6599b37c5b91c6acf2707bab3f nisa2109 <vivoa5116@gmail.com> 1786350046 +0700	commit: fix: pindahkan posisi 'Rp' didepan angka (satukan 1 tag) di 4 card biaya rupiah utility dashboard + rapihin border & badge netral
fda1c1e3cdccfb6599b37c5b91c6acf2707bab3f 55ff700182d32e3b1f26f70c1a58b9be91b89f62 nisa2109 <vivoa5116@gmail.com> 1786350651 +0700	commit: feat: tambah fitur Download Daily Engineering Summary Report (Excel XLS + PDF / Print A4 1 halaman) sesuai format foto referensi + tombol + date picker di index header
55ff700182d32e3b1f26f70c1a58b9be91b89f62 9a01792a5c5d122acb86a8044d8d3c15d1e5bcfd nisa2109 <vivoa5116@gmail.com> 1786350888 +0700	commit: fix: query daily_summary error unknown column occupancy_rate -> pakai nama kolom BENAR (occ_rate, total_electricity, dll) 100% sama logic dengan index.php + update excel template variable tarif baru
9a01792a5c5d122acb86a8044d8d3c15d1e5bcfd 004e8933e8fa2b6e2609eae0517da0f2a5234266 nisa2109 <vivoa5116@gmail.com> 1786351072 +0700	commit: fix: error Table 'regist_bali_dailylog.activity_counters' tidak ditemukan -> ganti query ke table ASLI daily_log_activities (dla) dengan kolom category (lowercase) & activity_title, status pakai heuristic judul 100% sama index.php. Wrap SEMUA query try/catch biar table apapun yang tidak ada TIDAK menyebabkan fatal error (hanya section kosong).
004e8933e8fa2b6e2609eae0517da0f2a5234266 52f3e07c593cc2f7a9a65b42e963c1fe7fbca3e5 nisa2109 <vivoa5116@gmail.com> 1786351289 +0700	commit: fix: (1) format download Excel bukan .xls HTML -> CSV UTF-8 BOM delimiter ; (file asli kebuka Excel tanpa warning). (2) Hapus logo St.Regis + tulisan ST.REGIS BALI & subtitle Engineering Daily Log di sidebar atas, ganti text SIMPLE 'Engineering Report' 2 baris. (3) Hapus semua embel nama hotel dari judul report + nama file output (Engineering_Report_.csv)
52f3e07c593cc2f7a9a65b42e963c1fe7fbca3e5 3c648afca372866421a5279c3444be4cbab8f94d nisa2109 <vivoa5116@gmail.com> 1786351629 +0700	commit: Perkecil semua card Utility + hapus header report (hemat tinggi 40% -> 1 halaman lebih banyak muat): (1) HAPUS JUDUL BESAR ST.REGIS BALI + DAILY ENGINEERING SUMMARY REPORT (cross merah foto 2) + tutup wrapper div. (2) 2 Occ card (LY/NOW): icon 7->7, padding p-3.5 -> px/py-2, angka text-2xl -> text-lg, border-2 -> border. (3) 4 Utility 2x2 cards: rounded-2xl -> rounded-lg, p-4 -> p-2.5, judul text-17px -> 13px, angka 22px -> 17px, divider my-3 -> my-2, hapus hover:-translate, gap 3 -> 2.5. (4) 4 Rupiah cards: p-3 -> p-2.5, angka 20px -> 16px, semua margin dikurangi. Semua section sekarang lebih ringkas, maksimal data 1 halaman terlihat.
3c648afca372866421a5279c3444be4cbab8f94d 1cfe74aac77539c9f1e58094219bedebdfc5f10f nisa2109 <vivoa5116@gmail.com> 1786353415 +0700	commit: add: 4 tombol download dashboard per tanggal (Energy/Print/Activity/Order) + localStorage save filter tanggal + buat 2 file export Activity & Order (CSV UTF-8 BOM delimiter ; + Print landscape 1 halaman) TANPA embel nama hotel
1cfe74aac77539c9f1e58094219bedebdfc5f10f b8f129273700191512eeaec7b2eb9030aac21057 nisa2109 <vivoa5116@gmail.com> 1786356520 +0700	commit: ui: rapikan 3 section dashboard (SWRO cards, Eng Activity 4 cards, Logistik 5 cards) — kecilkan font/padding, ganti label uppercase 'bear-berani' jadi lowercase/Title Case, hapus text berulang (This Month/Today/aktivitas) yang bikin kepotong, rapikan wrapping text pecah di Logistik
b8f129273700191512eeaec7b2eb9030aac21057 1f925242e75f902178f2678a9f3ea1e20401be52 nisa2109 <vivoa5116@gmail.com> 1786366117 +0700	commit: fix: dashboard overhaul - hapus Chiller card, nomor badge urut 1-2-3-4-5, hapus label STAFF, CSS angka center, pengecilan text ukuran, responsive Bootstrap-style md/lg breakpoint, Encoding mojibake FontAwesome, 4card grid 1col mobile / 2col md / 4col lg, signature 3 kolom fixed, EngAct table sejajar, Logistic card collapsible samakan pola
1f925242e75f902178f2678a9f3ea1e20401be52 3bd2ee44ee4be8d09a6f001f17370e8cf77af820 nisa2109 <vivoa5116@gmail.com> 1786366611 +0700	commit: fix: mojibake icon divisi Operation Maintenance Project Landscape diganti FontAwesome permanent + warna icon sesuai divisi (col class) di tabel Aktivitas Dalam Progress
3bd2ee44ee4be8d09a6f001f17370e8cf77af820 0fa9cf33476c7adc30aba1ba38ecf7b324bf9f5a nisa2109 <vivoa5116@gmail.com> 1786366975 +0700	commit: feat: redesign sidebar brand header - icon logo engineering gradient + stiker badge report, teks Report gradient text, blur accent background, hover animation; hapus semua embel-embel Regist/Bali agar generic
0fa9cf33476c7adc30aba1ba38ecf7b324bf9f5a b71d68720b0d242f6da06c025f07e026ac3b3005 nisa2109 <vivoa5116@gmail.com> 1786367212 +0700	commit: fix sidebar broken collapsed state di hosting - hapus overflow-hidden brand container, tambah z-50 toggle button, bungkus text Engineering/Report dengan class nav-label agar auto hidden saat sidebar collapse (tidak lagi turun vertikal huruf per huruf)
b71d68720b0d242f6da06c025f07e026ac3b3005 c4faee0d4c6cbbfd021e0ccc585213db08182c3c nisa2109 <vivoa5116@gmail.com> 1786367451 +0700	commit: feat: add simple microsoft lists style print mode for engineering activities - tombol 🖨️ Cetak Lists di header, print-only-area background navy #1e3a8a, judul besar putih Engineering Operation, loop activity = ⚪ radio kiri + text + ⭐ star kanan, footer floating + Add a Task; @media print hide semua elemen web default & force color exact
c4faee0d4c6cbbfd021e0ccc585213db08182c3c a875dbb4d7d986cea786e5dcb1343bc933996afa nisa2109 <vivoa5116@gmail.com> 1786367604 +0700	commit: remove logo hotel ST Regis Bali & nama hotel dari mobile topbar nav - ganti dengan teks Engineering Report gradient biru SAMA PERSIS judul sidebar, hapus img logo.jpeg dolphin agar navbar mobile generic tanpa nama hotel
a875dbb4d7d986cea786e5dcb1343bc933996afa 9421e769bc2cf7071bb68fe9ccf358b7f92776ef nisa2109 <vivoa5116@gmail.com> 1786367746 +0700	commit: fix print lists kosong hanya biru navy - urutkan CSS benar (default display:none dulu di atas, baru @media print override balik), force !important tailwind display flex per class selector di dalam print-only-area, TIDAK ADA SATU PUN nama ST. REGIS / logo hotel tercetak (force hide mobile-topbar sidebar-brand main-wrapper navbar semua), title cetak cuma Engineering Operation pure
9421e769bc2cf7071bb68fe9ccf358b7f92776ef c0a9e01c310e0fa945c3b41160d3542109705b05 nisa2109 <vivoa5116@gmail.com> 1786368325 +0700	commit: fix: kecilkan semua teks manager/activities.php + definisikan agar tidak warning
c0a9e01c310e0fa945c3b41160d3542109705b05 dadde6b28f89d8d24bb6af1cebb711f38446ffbd nisa2109 <vivoa5116@gmail.com> 1786369082 +0700	commit: fix: ganti icon status + kecilkan modal detail + hapus ST REGIS & logo di semua PDF/Excel reports
dadde6b28f89d8d24bb6af1cebb711f38446ffbd 03b8f9cb8e6c04a7fca36a5c4c6a9c60aa4dc050 nisa2109 <vivoa5116@gmail.com> 1786369748 +0700	commit: feat: export MS Lists PDF/Excel (lists_pdf + lists_excel) + fix ######## kolom Excel + bersihkan branding hotel 100%
03b8f9cb8e6c04a7fca36a5c4c6a9c60aa4dc050 8c479a6848d9161cb82599aa0bdc0651f68623e4 nisa2109 <vivoa5116@gmail.com> 1786370157 +0700	commit: refactor: lists_pdf + lists_excel tema putih bersih slim premium (hapus gradien navy biru, ganti aksen slate netral)
8c479a6848d9161cb82599aa0bdc0651f68623e4 4632551e6d8703a56cf48325e83afe78265d0178 nisa2109 <vivoa5116@gmail.com> 1786427278 +0700	commit: feat: Energy Log Sheet FULL CRUD (auto-create table energy_logs, tambah/edit/hapus/filter real DB, hapus placeholder alert)
4632551e6d8703a56cf48325e83afe78265d0178 b6cd0c441e7087c332e5e4047806417e30cc6cdd nisa2109 <vivoa5116@gmail.com> 1786427783 +0700	commit: feat: download Engineering Activities dari Dashboard button PDF+Excel (data 100% match section dashboard, mix daily_log + master progress)
b6cd0c441e7087c332e5e4047806417e30cc6cdd 91aca5ab93786c16fe9c2975afa0814d27fabc2c nisa2109 <vivoa5116@gmail.com> 1786428614 +0700	commit: feat: dashboard HEADER filter RANGE TANGGAL (Dari s/d Sampai) + semua 6 report support ?date_from=&date_to= range query BETWEEN
91aca5ab93786c16fe9c2975afa0814d27fabc2c 6b15e88643fb1698a38daacd83b9cf7d832ef62a nisa2109 <vivoa5116@gmail.com> 1786429188 +0700	commit: hotfix: dashboard KOSONG karena undefined function e() + pre-declare \/\ di semua 3 report (undefined var notice bikin query blank) - now php lint 0 error
6b15e88643fb1698a38daacd83b9cf7d832ef62a 475f6dade90802f17ba4e3ef2cf34042952a21ab nisa2109 <vivoa5116@gmail.com> 1786429709 +0700	commit: hotfix: ORDER GA BISA SAVE (Database::escape undefined) + daily_summary activity MASTER ILANG di Print — tambah 6 compat method di pdo.php (escape/beginTrans/commit/rollback/lastId/prepare) + MERGE 2 sumber master+daily di daily_summary.php match index.php 100%
475f6dade90802f17ba4e3ef2cf34042952a21ab 3af0dbd6c0681b5dc5b4d32c696d5c930d041da7 nisa2109 <vivoa5116@gmail.com> 1786430422 +0700	commit: cleanup manager activities: HAPUS 3 tombol cetak/list duplikat (cetak lists + lists pdf + lists xls) biar user ga bingung, sisakan export pdf/excel/kelola master/kembali. lists_pdf.php tetap available via direct URL / internal link jika dibutuhkan (print style verified works).
3af0dbd6c0681b5dc5b4d32c696d5c930d041da7 f6686ca85eee5db612ae65ba1baabd769a045160 nisa2109 <vivoa5116@gmail.com> 1786430560 +0700	commit: hotfix order save truncated status: HAPUS double-escape status var di create.php Line 220 karena value masuk prepared stmt (PDO bind sudah quote). Sebelumnya: escape nambahin petik 2x di ENUM → value literal quoted ga match → DATA TRUNCATED 1265 error.
f6686ca85eee5db612ae65ba1baabd769a045160 b50215e071afaa06ed8b4ca73666c0e574a3f1c5 nisa2109 <vivoa5116@gmail.com> 1786430853 +0700	commit: hapus tanda tangan 3 kolom (Prepared / Reviewed / Approved) di SEMUA report PDF dashboard — sesuai dicoret merah user. Files: daily_summary (CSV + HTML), dashboard_activities_pdf, dashboard_activities_excel, _daily_summary_xls. PHP lint 5 file 0 error.
b50215e071afaa06ed8b4ca73666c0e574a3f1c5 8eb95f26cf2f9a6fb270b4382ec13afc87ea8d13 nisa2109 <vivoa5116@gmail.com> 1786431020 +0700	commit: kecilkan judul ENGINEERING REPORT di semua report PDF/Excel (8 files) biar ga terlalu gede. Ukuran font diturunin 20-30% + letter spacing + line-height dirapatkan. PHP lint 8 files: No syntax errors semua ✅.
8eb95f26cf2f9a6fb270b4382ec13afc87ea8d13 16020ec2a043e66176fced50ee322f357d568204 nisa2109 <vivoa5116@gmail.com> 1786432097 +0700	commit: FIX KRITIS: daily_summary.php undefined vars reportDateFrom/reportDateTo + range date KPI/Utility queries; dashboard reports engineering activities merge master 100% match index
16020ec2a043e66176fced50ee322f357d568204 bacf0427d3b35d3dd43d016e8cbbf4390fd429f9 nisa2109 <vivoa5116@gmail.com> 1786432322 +0700	commit: FIX ACTIVITY DATA MISSING DI EXPORT: daily_summary.php Section 6 logic COPY VERBATIM 100% dari dashboard_activities_pdf.php - HAPUS WHERE status='active' (penyebab master perbaika jalan ga di-load) + key case konsisten lowercase + mapping ke struktur actByDiv agar render CSV/HTML tetap works
bacf0427d3b35d3dd43d016e8cbbf4390fd429f9 10cec2d0a9e80b370cd818c1c2aee9db74f3980a nisa2109 <vivoa5116@gmail.com> 1786432666 +0700	commit: CLEANUP: Rapikan icon badge department daily_summary.php - pisahkan (cuma warna bg) vs (cuma nama FA) agar tidak double-render icon (fa-class tidak nempel lagi di span wrapper)
10cec2d0a9e80b370cd818c1c2aee9db74f3980a 3f62954dd5a3195dbc6d80ae9276a080cfedea57 nisa2109 <vivoa5116@gmail.com> 1786432778 +0700	commit: FIX NOTICE: hapus & (pass-by-reference) dari actGroupWithStatus_Ds() Line 151 - function hanya baca tidak modify parameter, sehingga call dengan return value function langsung tidak men-trigger Strict Standards 'Only variables should be passed by reference' di Line 172-175
3f62954dd5a3195dbc6d80ae9276a080cfedea57 540f2be4644e1a6903a0300cc3941f59a7305448 nisa2109 <vivoa5116@gmail.com> 1786436026 +0700	commit: ENERGY LOG SHEET: restore 4 field hilang (PLN LWBP/WBP split, Gas LNG, Air Deep Well) - (1) CREATE TABLE + MIGRATION auto ALTER ADD 4 kolom pln_lwbp_kwh, pln_wbp_kwh, gas_lng_kg, air_deep_well_m3 (IF NOT EXISTS via SHOW COLUMNS); (2) INSERT/UPDATE handler otomatis hitung pln_kwh = LWBP+WBP simpan ke semua 3 kolom (backward compatible); (3) List table 2 row header: LISRIK (LWBP/WBP/TOTAL) + GAS (LPG/LNG) + AIR (PDAM/DeepWell) total 13 kolom; (4) Form Tambah/Edit dibagi 2 grup card (Listrik PLN 3 kolom lwbp/wbp/total readonly + Sumber Daya Lain 6 kolom); (5) Summary total_gas = gas+lng, total_air=pdam+deepwell; (6) JS auto realtime hitung PLN total saat LWBP/WBP diketik user
540f2be4644e1a6903a0300cc3941f59a7305448 2d793e92d35dce58bc0695ec3aa816fb19f32d81 nisa2109 <vivoa5116@gmail.com> 1786436501 +0700	commit: FIX DASHBOARD CARD UTILITY REPORT: Data 0 karena hanya baca daily_logs, user input energy di energy_logs (energy_logsheet). Solusi: buat HELPER utilFetchBoth_Db(index.php L62-143) GABUNGKAN SUM/AVG dari 2 tabel sekaligus: (daily_logs.total_* ) + (energy_logs.pln_lwbp+pln_wbp+genset = ELEC; gas_kg+gas_lng = GAS; air_m3+air_deep_well = WATER; solar_liter=FUEL). Terapkan helper ke: (1) utilLY/utilToday yearly summary, (2) todayElec/Water/Gas/Fuel single hari, (3) monthlyElectricity/Water/Gas bulan ini, (4) 4 cost cards Listrik PLN/Air/Gas/Solar TODAY+LY. Aggregation SUM = jumlahkan kedua tabel (hindari 0); AGG AVG = pilih salah satu tabel yang paling ada isinya (hindari double count rata-rata). backward compat log_count key tetap ada agar lyElecAvg TIDAK PERLU diubah logic
2d793e92d35dce58bc0695ec3aa816fb19f32d81 a20d2b5b3fffeaf02f71d24bcaf7fcabd24faa97 nisa2109 <vivoa5116@gmail.com> 1786436848 +0700	commit: SAMBUNGIN DATABASE energy.php: Sebelumnya 100% PLACEHOLDER (cards hardcode array + table dummyRows). Sekarang REAL DATA dari DB: (1) HELPER utilFetchBoth_Db() copy dari index.php untuk GABUNGKAN daily_logs + energy_logs konsisten dengan Dashboard Utama. (2) FILTER tanggal REAL submit form GET date_from/date_to (bukan placeholder). (3) 6 CARDS UTILITY diisi dari DB: Listrik(LWBP+WBP+Genset), Solar, Gas LPG(LPG+sisa daily legacy), GAS LNG(KHUSUS SPLIT dari energy_logs), Air PDAM(+sisa daily), AIR DEEP WELL(KHUSUS SPLIT). (4) TABLE 5 entri terakhir Log Sheet Energy: SELECT energy_logs LEFT JOIN users (PIC name), ORDER BY tanggal DESC, sesuai filter tanggal, jika kosong tampil empty state CTA ke energy_logsheet. (5) ROLE ENGINEER FILTER: daily_logs pakai engineer_id, energy_logs pakai created_by (SHOW COLUMNS CHECK dulu sebelum apply).
a20d2b5b3fffeaf02f71d24bcaf7fcabd24faa97 7c36799f09be7907567d3ae27dba2612aa75a4eb nisa2109 <vivoa5116@gmail.com> 1786437172 +0700	commit: FIX WARNING Undefined variable db energy.php: LUPA instantiate koneksi PDO = Database::getInstance(); di bawah requireLogin(). Ditambahkan Line 13 agar semua query utilFetchBoth_Db / fetchOne / fetchAll bisa jalan TANPA Warning
7c36799f09be7907567d3ae27dba2612aa75a4eb 463310be9c728ba5a7f941d15a160bcc8d37802a nisa2109 <vivoa5116@gmail.com> 1786437594 +0700	commit: FIX CRITICAL DASHBOARD index.php ERROR Undefined variable utilTodaySingle Line 1110: (1) VARIABEL TERHAPUS tapi LINE RENDER masih memanggil! TIGA masalah sekaligus: (A) Line 183-186 dihapus (karena OVERWRITE todayElec/todayWater/todayGas/todayFuel dari utilTodaySingle UNDEFINED → bikin data merge helper menjadi 0 semua 🤯). (B) TAMBAH query (Line 158-164) SELECT single row daily_logs HANYA untuk kolom KHUSUS daily_logs TIDAK ADA di energy_logs (occ_rate, swro_watermeter, swro_kwh, swro_tds, chiller, bottling). (C) REPLACE ALL 9 referensi \ → \ (Line 165 OCC Rate fallback, Line 1110-1113 SWRO cards Watermeter/Listrik/TDS Outlet). Semua Warning hilang & data utility merge helper TIDAK TER-OVERWRITE jadi 0
463310be9c728ba5a7f941d15a160bcc8d37802a 0bf7287ee13648897b16145325ab2706cc0d5bc0 nisa2109 <vivoa5116@gmail.com> 1786439696 +0700	commit: TAMBAH EXPORT PDF & EXCEL LOGISTIK ORDERS: (1) orders/orders_pdf.php NEW file, A4 LANDSCAPE 8 kolom (No / No PR / Judul+Purpose / Cost Code / Pemohon / Tgl / Total Rp / Status Badge berwarna) + SUMMARY 4 cards row (Total order, Total Nilai Rp, Periode, Login) + Filter GET ikut terbawa SAMA PERSIS query logic dengan orders/index.php (role engineer/spv/manager, filter status, my_pending, search 5 kolom). Target blank browser print → save as PDF. (2) orders/orders_excel.php NEW file, Content-Type vnd.ms-excel (.xls) 8 kolom SAMA dengan PDF, ROW TOTAL NILAI KESELURUHAN di bawah tabel dengan highlight gold. (3) orders/index.php HEADER tambah 2 TOMBOL sebelah Buat Order Request: [PDF] rose-200 icon fa-file-pdf target=_blank, [Excel] emerald-200 icon fa-file-excel, keduanya APPEND http_build_query() agar FILTER (filter / search) OTOMATIS ikut ke file export (JADI user filter dulu disetujui → klik export → data PDF/Excel SAMA dengan tampilan layar!). Role guard requireRole supervisor/manager di 2 file export, limit 1000 rows.
0bf7287ee13648897b16145325ab2706cc0d5bc0 cd4797332bbafda30dd5884b499ceedc46723a5d nisa2109 <vivoa5116@gmail.com> 1786440155 +0700	commit: PDF Logistik FORCE DOWNLOAD seperti Excel: (1) orders_pdf.php Content-Type ganti text/html -> application/pdf; Content-Disposition inline -> attachment (jadi browser DOWNLOAD file seperti .xls di WA screenshot contoh, BUKAN preview di tab baru). (2) Tambah header download standar: Pragma public, Expires old, X-Content-Type-Options nosniff, Content-Transfer-Encoding binary agar PDF TIDAK corrupt saat di-download dari IE/Edge. (3) orders/index.php link PDF button HAPUS target=_blank (karena attachment tidak perlu buka tab baru, tinggal klik -> file turun otomatis seperti Excel.)
cd4797332bbafda30dd5884b499ceedc46723a5d 04cd84c1e12d53c5bd55a3b4802e12ea51507f56 nisa2109 <vivoa5116@gmail.com> 1786440448 +0700	commit: FIX PDF Logistik TIDAK BISA DIBUKA (CORRUPT / We can't open this file): (1) ROOT CAUSE: Salah ubah Content-Type text/html -> application/pdf, tapi ISI file tetap HTML/CSS (bukan binary PDF!) => browser download file extension .pdf tapi isinya HTML -> file corrupt TIDAK BISA dibuka Adobe/PDF reader. (2) SOLUSI: REVERT header ke POLA PROJECT SEMUA PDF report (lists_pdf.php, dashboard_pdf.php, daily_summary.php): Content-Type: text/html; charset=utf-8, Content-Disposition: inline (bukan attachment), HAPUS semua header binary (Content-Transfer-Encoding, Pragma, Expires, X-Content-Type-Options). (3) orders/index.php LINK PDF TAMBAH KEMBALI target=_blank, JADI: klik PDF -> BUKA TAB PREVIEW desain cantik A4 landscape -> tinggal CTRL+P -> Save as PDF = file PDF BENARAN bisa dibuka! Excel tetap auto-download seperti biasa, work!
04cd84c1e12d53c5bd55a3b4802e12ea51507f56 8c84ed56144e555ae6c74a78d50551e477afab36 nisa2109 <vivoa5116@gmail.com> 1786440770 +0700	commit: STYLE SAMA PERSIS DENGAN SEMUA PDF REPORT LAIN di project! (dashboard_activities_pdf.php / lists_pdf.php / daily_summary.php) SEMUA PERUBAHAN ORDERS_PDF.PHP: (1) @page A4 LANDSCAPE -> PORTRAIT (semua report lain portrait), (2) REMOVE brand-title/subtitle (style sendiri coklat gold) -> GANTI head-block + eyebrow + title-hero (gradient ACCENT #0ea5e9 -> #6366f1 biru ke ungu, SAMA PERSIS semua report lain!). (3) summary-row 4 GRID sum-card besar -> GANTI 4 chip kecil border-radius:12px dengan dotmini warna (standar lists_pdf pattern). (4) META TOP SEBELUMNYA kiri dot di TENGAH text -> GANTI dot PALING KIRI dulu baru text (pattern standar). (5) DIVIDER SECTION dotdiv + lbl + cnt di sebelah TABLE (pattern standar). (6) TABLE style dari mentah <table> -> pakai class .tbl (border-radius:14px, overflow hidden, shadow, tfoot row TOTAL NILAI dengan bg: #fff7ed + border-top gold SAMA DENGAN orders_excel.php). (7) BADGE style dari kotak 6px radius -> 999px (Pill shape) dengan ::before dot warna KIRI text (pattern standar). (8) FOOTER dari mentah border-top solid -> dashed dengan brand-mark ENGINEERING REPORT accent gradient biru ungu SAMA PERSIS lists_pdf line 287. (9) Table empty row dari inline style padding div -> pakai class .empty (border dashed, radius 14). 100% STYLE sekarang TERSTANDARISASI seperti semua PDF menu lain!
8c84ed56144e555ae6c74a78d50551e477afab36 4baf82eaf430771a90cf3596854f6c6d57b106a6 nisa2109 <vivoa5116@gmail.com> 1786441173 +0700	commit: orders_pdf.php style sama persis daily_summary.php contoh user. tombol hijau+biru di atas, judul ENGINEERING REPORT tengah, table border hitam abu header, section nomor, sign footer 3 kolom ttd.
4baf82eaf430771a90cf3596854f6c6d57b106a6 f12bde6e99da2b725e5df0e8f092f8dede6303ef nisa2109 <vivoa5116@gmail.com> 1786441469 +0700	commit: orders_pdf.php hapus 2 bagian sesuai request user: (1) Hapus info-row akses login / periode export / user agent panjang di bawah date label (Line 156-160). (2) Hapus seluruh div.sign-footer 3 kolom tanda tangan (Dibuat oleh / Disetujui Spv / Diketahui Mgr) sesuai contoh daily_summary.php yang tidak ada tanda tangan. Sekarang structure 100% SAMA PERSIS dengan contoh screenshot daily_summary yang user kirim!
f12bde6e99da2b725e5df0e8f092f8dede6303ef d80459f5f48d1806dc1ce3d1923dfd1fa3c2f986 nisa2109 <vivoa5116@gmail.com> 1786441802 +0700	commit: PENYEMPURNAAN BESAR PDF + EXCEL LOGISTIK = 100% SAMA PERSIS daily_summary.php! FILE PDF orders_pdf.php: (1) CSS SUDAH BERSIH! Hapus class CSS .info-row (Line 115-116 sebelum di orders_pdf.php old) + .sign-footer / .sign-box / .sign-box .lbl / .sign-box .line (Line 139-142 sebelum) — semua HTMLnya sdh dihapus user kemarin tapi CSSnya tertinggal biar code clean! (2) CSS head SUDAH 100% PERSIS daily_summary Line 357-389 daily_summary.php (ul.dot, @media print @page margin 14mm/12mm, btn-excel btn-pdf warna #16a34a #2563eb SAMA PERSIS! REWRITE orders_excel.php (Full!): ===== MASALAH LAMA EXCEL: border abu soft #e2e8f0 (JELEK!), header th #f8fafc soft EVEN ROW SELANG SELING! 4 kartu .sum-wrap display:TABLE + .sum-card display:TABLE-CELL (WPS/Excel TIDAK BISA RENDER FLEX/TABLE-CELL DIV! hasilnya layout KACAU!), brand accent oranye #b45309 sendiri (user minta HITAM-PUTIH ABU-GOLD persis contoh daily_summary!) ===== SOLUSI BARU orders_excel.php: (1) SEMUA PAKAI TABLE 100% — TIDAK ADA DIV FLEX/GRID/TABLE-CELL! LANGSUNG RENDER BAGUS DI EXCEL/WPS! (2) JUDUL BESAR: ENGINEERING REPORT (Line 206) h1-title 22px letter-spacing 1.5px tengah bold PERSIS PDF Line 153! (3) date-label-row 15px bold uppercase DATE: 11 AUGUST 2026 • FILTER • SEARCH PERSIS PDF Line 154! (4) SECTION 1. ORDER SUMMARY (Line 216) TABLE 7 kolom th #d9d9d9 (ABU SOLID!) border 1px SOLID #000 HITAM TEBAL PERSIS PDF Line 158-181! (5) SECTION 2. DETAIL ORDER (Line 242) TABLE 8 kolom SAMA PERSIS PDF Line 185-270! (6) td.num = mso-number-format #,##0.00 -> ANGKA EXCEL FORMAT RUPAIH BENAR! (TIDAK DIANGGEP TEXT!) (7) <!--[if gte mso 9]> XML Workbook Options: Nama Sheet = Engineering Report, Freeze Panes, Display Gridlines (saat buka Excel gridline terlihat dan header ke-lock pas scroll!) (8) tfoot-total row gold TOTAL NILAI KESELURUHAN background #fff7ed (GOLD!) border-top 2px #000 PERSIS PDF! (9) col widths: col-no 42px col-pr 120px col-cc 150px col-tot 140px col-st 140px pas di Excel cell tidak kepotong! (10) Semua font: Arial Helvetica sans-serif PERSIS PDF! File name: Engineering_Report_Logistik_YYYY_MM_DD_[filter].xls (sudah match nama file daily_summary pattern!)
d80459f5f48d1806dc1ce3d1923dfd1fa3c2f986 deabd536aee7847342ded99c6d55e4de8cefdc3a nisa2109 <vivoa5116@gmail.com> 1786441929 +0700	commit: FIX ICON EXCEL BUKAN TEXT/NOTEPAD! Root cause: Browser/Windows MIME SNIFFING melihat isinya <html> → meskipun extension .xls di-contentsniff sbg TEXT → muncul IKON NOTEPAD. Fix: Ubah Header Content-Type dari application/vnd.ms-excel (yg trigger content-sniffing!) → application/octet-stream (BINARY UNKNOWN, Windows PERCAYA extension .xls langsung pakai Excel association!). Hapus juga X-Content-Type-Options: nosniff (karena octet-stream sudah no-sniff by default). Jika masih tetap icon text akan rewrite CSV full!
deabd536aee7847342ded99c6d55e4de8cefdc3a 165af8a7801b9a84e43941106eced43684ec2e5a nisa2109 <vivoa5116@gmail.com> 1786514755 +0700	commit: FIX MODAL ENERGY LOGSHEET BISA DI SCROLL! (1) Modal tambah log (addLogModal, Line 470-584): OUTER div (Line 473 sebelumnya overflow-hidden tanpa max-height!) → tambah class max-h-[90vh] flex flex-col (modal max 90% viewport height), FORM (Line 474) lex flex-col flex-1 min-h-0 (kirim height constraint kebawah), HEADER baris judul (Line 476) lex-shrink-0 (TIDAK IKUT TERSCROLL, selalu terlihat di atas), CONTENT INPUT TENGAH (Line 491 — sebelumnya space-y-5 TANPA OVERFLOW!) → UBAH JADI overflow-y-auto flex-1 min-h-0 (INI INTI FIX: scroll bar muncul jika content lebih dari sisa tinggi!), FOOTER tombol Batal / Simpan (Line 570) lex-shrink-0 (TIDAK IKUT TERSCROLL, STICKY DI BAWAH SELALU TERLIHAT! user gak perlu scroll ke bawah sampe ujung buat klik Simpan Log Baru!). (2) Modal EDIT LOG (editLogModal, Line 592-708): APPLY PATTERN SAMA PERSIS! 100% fix structure — Line 596 max-h-[90vh] flex flex-col, Line 597 form flex, Line 600 header flex-shrink-0, Line 615 body overflow-y-auto flex-1 min-h-0, Line 694 footer flex-shrink-0. Sekarang pas buka modal di layar kecil / zoom tinggi: SCROLL BAR MUNCUL DI TENGAH (content input yang bisa discroll), tombol X tutup, tombol Update Log, header judul TETAP KELIATAN STICKY! UX premium!
165af8a7801b9a84e43941106eced43684ec2e5a 20d9a873f4ff0da605e62fed9319da9133472639 nisa2109 <vivoa5116@gmail.com> 1786514932 +0700	commit: HAPUS SCROLL BAR HORIZONTAL TABLE ENERGY LOGSHEET! User minta scroll kanan-kirinya TIDAK KELIATAN. (1) HAPUS BARIS HINT INFORMASI (Line 337-341 sebelumnya) yang isinya 👉 Scroll ke kanan untuk melihat kolom PIC & Aksi... — karena user tidak mau diingatkan soal scroll. (2) TAMBAH STYLE INLINE CSS <style> di bawah include header.php (Line 233-240): a) .hide-scrollbar::-webkit-scrollbar display:none! height:0! width:0! (Chrome/Edge/Safari — hide visual scrollbar), b) .hide-scrollbar -ms-overflow-style:none + scrollbar-width:none (Firefox/IE), c) overflow-x:auto + overflow-y:hidden — artinya USER MASIH BISA GESER dengan scroll mouse / shift+wheel / touch / drag two finger, TAPI TIDAK ADA VISUAL SCROLL BARNYA! d) class table.logsheet-ramp: kecilkan padding th/td dari px-3 py-3 → 10px 10px (table lebih ramping LEBIH MUAT tanpa perlu banyak scroll). (3) WRAPPER overflow table (Line 345) class diubah dari overflow-x-auto pb-3 pr-2 → hide-scrollbar TANPA padding bawah (karena tidak perlu ruang untuk scroll bar!). (4) MIN-WIDTH TABLE dikurangi dari min-w-[1350px] → min-w-[1100px] — table overall lebih sempit sehingga di banyak layar 1366px+) BISA FULL TANPA PERLU SCROLL SAMA SEKALI! Summary: VISUAL SCROLL BAR HORIZONTAL HILANG 100%! User tetep bisa geser kanan kalo perlu tapi TIDAK ADA KELIATAN BATANG SCROLLNYA 😎
20d9a873f4ff0da605e62fed9319da9133472639 efe248da85050889c4f939d2e6fa4232fd07bd82 nisa2109 <vivoa5116@gmail.com> 1786515393 +0700	commit: FIX GLOBAL: Semua label satuan meter kubik m³ (superscript Unicode U+00B3) DIGANTI JADI TEXT BIASA m3! Kenapa? Di HP mobile (screenshot user: index.php mobile) karakter superscript ³ RUSAK / GARBLE di-render jadi mÂ³ (UTF-8 multi-byte broken). Ini karena di browser mobile / low-res / charset ada mismatch render Unicode superscript. Daftar 13 FILES DI-FIX GLOBAL: (1) index.php (card summary dashboard mobile yang user screenshot 73.975 mÂ³ → jadi 73.975 m3) (2) energy.php (cards Air PDAM / Deep Well header table) (3) energy_logsheet.php (table header AIR (m³) yang sebelumnya ada di Line 352 → AIR (m3)) (4) reports/dashboard_excel.php (5) reports/dashboard_pdf.php (6) reports/excel.php (7) reports/pdf.php (8) engineer/daily_log_form.php (form input engineer) (9) config/lang/en.php + config/lang/id.php (language translation labels) (10) supervisor/review.php (11) supervisor/review_detail.php (12) history.php. Semua label satuan air meter kubik SEKARANG 100% PLAIN TEXT m3 — TIDAK PAKAI SUPERSCRIPT SAMA SEKALI! Jadi rendering 100% aman di mobile, desktop, PDF, Excel, semua browser tanpa error encoding!
efe248da85050889c4f939d2e6fa4232fd07bd82 8060200ed2280b387629601c3e886bec48e71f94 nisa2109 <vivoa5116@gmail.com> 1786517128 +0700	commit: MERGE 2 PERBAIKAN BESAR SEKALIGUS! 🔥🔥🔥 ======================================================== 1) 🐛 BUG KRITIS FIX (PENYEBAB CARDS UTILITY 0 DI DASHBOARD UTAMA + ENERGY DASHBOARD! PENYEBAB = MySQL RULE: SELECT 100 + 200 + NULL = NULL! Jika user lupa isi 1 kolom saja (misal genset_kwh / gas_lng_kg = NULL), seluruh penjumlahan = NULL, lalu COALESCE balik ke 0 — CARDS LISTRIK/AIR/GAS/FUEL JADI 0 PARAH! 😱 SOLUSI DI TERAPKAN DI KEDUA HELPER utilFetchBoth_Db: (a) index.php Line 69-155 — daily_logs + energy_logs (Line 107-113): SETIAP KOLOM DIJUMLAH — WRAP COALESCE(kolom,0) DULU (CAST AS DECIMAL 18,4) BARU DIJUMLAHKAN! Contoh: COALESCE(el.pln_lwbp_kwh,0) + COALESCE(el.pln_wbp_kwh,0) + COALESCE(el.genset_kwh,0) → HINDARI OPERASI NULL! (b) energy.php Line 38-146 SAMA POLA PERSIS! (c) DATE(dl.log_date) BETWEEN (buat komparasi date selalu CAST tanggal kolom JADI DATE mencegah DATETIME vs DATE mismatch, (d) error_log() write ke file jika exception, (e) DEBUG MODE: jika buka URL ?_dbg=1 (role manager/supervisor/admin) muncul div hidden result query di HTML (bisa di inspect element tapi user tidak lihat). ======================================================== 2) 🎉 FITUR BARU: 8 LOG SHEET EQUIPMENT BARU SESUAI CONTOH USER WA! (di energy_logsheet.php) (a) TAMBAH TABLE BARU equipment_logs (migration sudah dijalankan — log sheet equipment_logs (id, log_date, shift, created_by, pic_name, notes, status, section_data JSON / LONGTEXT — 8 section, created_at, updated_at, idx_logdate_shift, idx_created_by, idx_status, idx_status). (b) ENERGY LOGSHEET MODAL TAMBAH LOG: 9 TABS! [⚡ Energi (default)] [⚡ Trafo] [🔋 Genset] [💧 Pump Room] [❄️ Chiller] [🌀 Cooling Twr] [🧪 RO] [🏊 Pool System] [🔥 Gas Detector] — klik tab ganti konten, sebelum content tengah bisa scroll, header footer sticky. (c) 8 SECTION FIELD INPUT SESUAI CONTOH USER: 1. Trafo (2 unit × Temp/Ampere/Oil level); 2. Genset (3 genset Voltage + Fuel Tank liter); 3. PUMP ROOM (10 SUB I-X! I Steam Boiler, II Hot Water Boiler, III Ground Tank (raw/treated/irigation), IV Hydrant Pump, V Jockey Pump, VI Sand Filter, VII Sand Filter Pump, VIII Booster Villa, IX Booster Main House, X Irrigation Pump — masing-masing field select on/off/auto, running hours, pressure psi/kgcm2 TDS pH blow down time etc); 4. Chiller System (3 sub); 5. Cooling Tower 3 rows); 6. Reverse Osmosis 4 rows); 7. Pool System (4 cards: Lagoon 1/2, Aquavitale alarm/pressure/sub auto Main Pump Room); 8. Gas Detector 3 resto: Boneka/Main Kitchen/Kayu Puti (selenoid + alarm). (d) SAVE HANDLER add_log / edit_log: INSERT energy_logs → buildSectionData() → json_encode → INSERT equipment_logs section_data → UPDATE energy_logs.equipment_id. Edit mode UPDATE section_data JSON biar data konsisten. (e) MODAL EDIT LOG BISA BACA data JSON lama populate balek ke 9 tab (f) TABLE LIST LOGSHEET: TAMBAH KOLOM Equipment 8-Sec DOT BADGES mini 8 bulatan WARNA KECIL (trafo biru, genset kuning, pump hijau, chiller ungu, cooling cyan, ro pink, pool tosca, gas rose) — filled = section berisi, outline abu = section kosong atau data lama tanpa equipment_id. Left join equipment_logs biar section_data ikut tanpa query tambah. ======================================================== ✅ PHP LINT ENERGY_LOGSHEET.PHP OK, INDEX.PHP OK, ENERGY.PHP OK. (3/3 PASS ✓
8060200ed2280b387629601c3e886bec48e71f94 a6f77e93518a40938a40581f82d7b364e337eedd nisa2109 <vivoa5116@gmail.com> 1786517494 +0700	commit: FIX FATAL PDO ERROR energy_logsheet.php SQLSTATE[23000]: Integrity constraint violation 1052 Column 'log_date' in where clause is ambiguous! PENYEBAB = Line 379, Line 383 sebelum fix: WHERE [log_date BETWEEN ... AND ...] + [shift = ...] TANPA PREFIX ALIAS TABLE e. PADAHAL query Line 426-431 JOIN 2 TABLES (energy_logs e LEFT JOIN equipment_logs eq). KEDUA TABLE SAMA PUNYA KOLOM log_date, shift, status, pic_name! → MySQL bingung pilih yang mana → ERROR 1052. 🛠️ YANG DI-FIX: (a) Line 379 e.log_date BETWEEN ? AND ? (tambah PREFIX e.), (b) Line 383 e.shift = ? (tambah PREFIX e.), (c) Line 387-392 TAMBAH ROLE FILTER ENGINEER: jika user role='engineer' AND e.created_by = ? (show own log only), sebelum apply filter Cek SHOW COLUMNS LIKE 'created_by' biar di DB lama tidak error, (d) Line 394 NOW SUDAH PREFIX E. SEMUA — hanya berlaku untuk JOIN query Line 430! BUAT VARIABEK BARU Line 396 = str_replace(e.log_date→log_date dst) UNTUK summary cards Line 401-409 yang HANYA 1 TABLE (TANPA JOIN) agar PREFIX TIDAK RUSAK! (e) Line 402-403 SUMMARY total_kwh: SEBELUMNYA kolom pln_kwh TIDAK ADA di DB! Nama kolom BENAR = pln_lwbp_kwh + pln_wbp_kwh + COALESCE(genset_kwh,0). SEBELUMNYA salah referensi → return NULL! Sekarang FIXED! (f) SEMUA operasi SUM di Line 403-406 WRAP COALESCE(col, 0) biar TIDAK JADI NULL akibat operasi + NULL. ✅ PHP LINT ENERGY_LOGSHEET.PHP OK! Migrate file juga dihapus clean.
a6f77e93518a40938a40581f82d7b364e337eedd 6ee49e4b149778d01561dc3f1e365782fe549dc6 nisa2109 <vivoa5116@gmail.com> 1786517710 +0700	commit: FIX SEMPURNA Ambiguous Column Error 1052 Pakai STRATEGI ULTRA AMAN: SUBQUERY WRAPPER! Line 377-440 di-refactor total: (1) WHERE clause DIBUAT SELALU PLAIN (TANPA PREFIX ALIAS TABLE SAMA SEKALI!) → work buat 1-table summary cards TANPA modifikasi. (2) Query LIST LOG yang tadinya LEFT JOIN langsung di-WRAP JADI SUBQUERY VIRTUAL TABLE: FROM (SELECT e.*, eq.section_data ... LEFT JOIN equipment_logs eq ON ...) AS x → outer query cuma punya 1 TABLE VIRTUAL bernama x! → WHERE clause outer = PAKAI KOLOM POLOS log_date BETWEEN / shift = / created_by = → 100% TIDAK PERNAH ADA ERROR Column X is ambiguous LAGI! Mustahil bentrok karena kolom ambiguous dari 2 table di-inner-subquery, outer query cuma 1 sumber. (3) WHERE order: date + shift (plain), + role filter created_by = user id if engineer. (4) SUM Listrik/Air/Gas/Fuel di summary cards = DI-COALESCE per-OPERAND sebelum ditambah. (5) Line 398 masih ada (build otomatis via str_replace) jika butuh inner query nanti.
6ee49e4b149778d01561dc3f1e365782fe549dc6 504205818ce287beff2707fcfda63f0ba36c7dad nisa2109 <vivoa5116@gmail.com> 1786517876 +0700	commit: FIX WARNING: Undefined variable Line 390 di energy_logsheet.php! PENYEBAB: Line 82-86 SEBELUMNYA cuma SET & doang dari . TIDAK PERNAH SET sama sekali! TAPI Line 390 pakai if(==='engineer') jadinya WARNING UNDEFINED! 🛠️ FIX DI-APPLY Line 85-90: (a) Line 85: TAMBAH = currentUser() ?: ['id'=>0,'name'=>'User','role'=>'guest']; explicit fallback jika currentUser() return false/null, (b) Line 88: SET = (string)(['role'] ?? 'engineer'); (fallback default engineer jika session belum ada role), (c) Line 89-90: DOUBLE CHECK FALLBACK JIKA masih undefined / empty string! 3 lapis pertahanan WARNING TIDAK MUNCUL LAGI SELAMANYA! 😎 PHP LINT: No syntax errors.
504205818ce287beff2707fcfda63f0ba36c7dad c405bee1346debff923641f5506653b13dd939cb nisa2109 <vivoa5116@gmail.com> 1786518066 +0700	commit: FIX SIDEBAR ENERGY_LOGSHEET BEDA DENGAN DASHBOARD! Line 475-476 SEBELUMNYA: include header.php → include sidebar.php LANGSUNG! (TIDAK SESUAI PATTERN). Pattern BENAR di index.php / laman official = include header.php → include navbar.php (navbar.php Line 7-8 handle logic: JIKA LOGIN → REQUIRE SIDEBAR.PHP OTOMATIS, JIKA TIDAK → render nav top bar). ✅ AKIBAT FIX: Sidebar energy_logsheet SEKARANG SAMA PERSIS struktur & style dengan Dashboard (index.php / energy.php). Tombol mobile close X (sidebarToggleMobile) DALAM outer wrapper app-layout (TIDAK OVERLAY di luar seperti alert!). Padding content area pl-72 diatur OTOMATIS oleh layout system navbar! Breadcrumb Dashboard > Energy > Log Sheet TETAP ADA ✔.
c405bee1346debff923641f5506653b13dd939cb 32b58bb36d04ea716215e184ea5bf0afbfb92ab0 nisa2109 <vivoa5116@gmail.com> 1786518300 +0700	commit: FIX TAB BAR 9 TABS TIDAK RAPIH (KEPOTONG KANAN + TIDAK MUAT DI LAYAR) DI MODAL TAMBAH + EDIT LOG ENERGI! PENYEBAB = (a) Label 9 tab TERLALU PANJANG! 'Reverse Osmosis' 14 huruf, 'Cooling Twr', 'Pump Room', 'Pool System', 'Gas Detector' → total 9 tab BUTA LEBAR > container modal 860px → kepotong kanan! (b) Padding inline TERLALU BESAR px-3 py-2 + text-[11px] sm:text-xs, gap-1. (c) Tidak responsive di HP. ✅ 4 LAYER FIX LINE 485-544 STYLE GLOBAL .tab-bar + .tab-btn: (1) TAB BAR = flex-wrap di < 820px (2 line di tablet kecil), flex-nowrap 1 line di > 820px. (2) Tab btn = padding 6px 9px, font 10.5px, min-height 30px (sebelum px-3 py-2 11px). (3) HP < 420px: ICON ONLY MODE! label text span.lbl DISPLAY:NONE, icon size 13px. (4) ADDLOG Line 839 + EDITLOG Line 1569: GANTI SEMUA LABEL PANJANG JADI SINGKAT! 'Pump Room' → Pump, 'Cooling Twr' → Cooling, 'Reverse Osmosis' → RO, 'Pool System' → Pool, 'Gas Detector' → Gas. SETIAP TOMBOL DITAMBAH ATRIBUT TITLE='...' tooltip muncul nama PANJANG saat hover! (5) Hapus class inline redundant shrink-0 overflow-x-auto -mx-0. (6) bg-slate-50 (addLogModal) + bg-amber-50 (editLogModal) TETAP CONSISTENT. 9 TABS SEKARANG DI LAYAR 1280 → MUAT PENUH TANPA KEPOTONG! 😎 PHP LINT PASS.
32b58bb36d04ea716215e184ea5bf0afbfb92ab0 cd135b510a352f2017a632e2dc525cc444a65816 nisa2109 <vivoa5116@gmail.com> 1786518840 +0700	commit: 🔥 2 PERBAIKAN BESAR SEKALIGUS! (1) FIX BUG KRITIS DOUBLE INSERT 3 DATA SAMA PERSIS! PENYEBAB: TIDAK ADA POST-REDIRECT-GET (PRG) PATTERN → Setelah user submit lalu F5 refresh → browser MUNCUL popup 'Resubmit the form?' (screenshot user!). Jika user klik CONTINUE → form POST DIJALANKAN LAGI 3x → INSERT BERULANG KALI 3 baris identik! 🔧 FIX Line 79-105: (a) Load SESSION FLASH MESSAGE top of file, (b) helper _prgRedirect(msg,type,extraQs): set session + header(Location: SELF, 303 See Other)+ exit! NEXT REQUEST PASTI GET (tidak resubmit POST). (c) Setiap handler add_log Line 306 / edit_log Line 376 / delete Line 390 = memanggil _prgRedirect(). SEKARANG REFRESH F5 AMAN SELAMANYA! (2) FEATURE BARU: MODAL DETAIL LOG 9-SECTIONS BAGUS GANTI ALERT() BURIK! Line 472-517 build [id] = meta+energi+JSON section. Line 851 tombol fa-eye: HAPUS alert() onclick! GANTI: onclick=openViewModal(id). Line 2359-2692: HTML viewLogModal FULL SCREEN max-w-5xl max-h-90vh flex-col STICKY HEADER/FOOTER, 9 TABS identik add/edit (⚡ Energi / ⚡ Trafo / 🔋 Genset / 💧 Pump / ❄️ Chiller / 🌀 Cooling / 🧪 RO / 🏊 Pool / 🔥 Gas), HEADER META TANGGAL + SHIFT + PIC chip rounded-full gradient. INNER CONTENT = di-inject JS render per section: renderTabPump (10 subsection I-X!), renderTabPool (4 kartu Lagoon1/2 + Aquavitale + MPR), renderTabGas (3 Resto!), dll. Style: statCard warna / secGroup border rounded / KV grid 2 kolom (label-left-value-right) RAPIH BANGET! Close button 2 tempat (top-right X + footer Tutup). PHP LINT PASS ✅.
cd135b510a352f2017a632e2dc525cc444a65816 1b62a68c061d90b07e0e1c5490b814d8b78ae49b nisa2109 <vivoa5116@gmail.com> 1786519842 +0700	commit: feat(energy): Implement rumus listrik LWBP/WBP meter-based per user request
1b62a68c061d90b07e0e1c5490b814d8b78ae49b 96568caa8a26fded872586337270e4f6356c7a24 nisa2109 <vivoa5116@gmail.com> 1786520152 +0700	commit: fix(energy): Fix error 1054 updated_by equipment + restruktur sidebar energy 1 area
96568caa8a26fded872586337270e4f6356c7a24 a1d44c51b78971650a6b5943d9ae74017622a3f0 nisa2109 <vivoa5116@gmail.com> 1786520285 +0700	commit: fix(pdf): Remove pass-by-reference & actGroupWithStatusDp fix 4 Notice line 123-126
a1d44c51b78971650a6b5943d9ae74017622a3f0 2bcab5cbac520ae999a934f09b892dc55037e187 nisa2109 <vivoa5116@gmail.com> 1786520830 +0700	commit: fix: sidebar undefined var order + view modal 8 equipment section kosong
2bcab5cbac520ae999a934f09b892dc55037e187 4540f293b572ee91750039e0bf8159c3dbddf18c nisa2109 <vivoa5116@gmail.com> 1786521066 +0700	commit: fix(energy): Fix modal view detail footer ketutup tabbar flex-shrink-0
4540f293b572ee91750039e0bf8159c3dbddf18c 3f9532d24b7c9d165c6cf8fe939aa90ff0a48cfb nisa2109 <vivoa5116@gmail.com> 1786522077 +0700	commit: feat(calendar): Select Month + Year dropdown di Daily Log pick tanggal
3f9532d24b7c9d165c6cf8fe939aa90ff0a48cfb aea3420bc6e8c66c6c01b74dbe3ea0b880cdd1ca nisa2109 <vivoa5116@gmail.com> 1786522497 +0700	commit: feat(tariff): Global settings table + ubah tarif modal di dashboard
aea3420bc6e8c66c6c01b74dbe3ea0b880cdd1ca 91b27c9c29dbce6996b8faef3fa8494e42304002 nisa2109 <vivoa5116@gmail.com> 1786525491 +0700	commit: feat(kpi): Tambah ITR / M&U / GITB Rank field di Isi Daily Log + Dashboard sinkron otomatis dari DB
91b27c9c29dbce6996b8faef3fa8494e42304002 8c8eb0791233e81556a7f4222136a21493394688 nisa2109 <vivoa5116@gmail.com> 1786526267 +0700	commit: feat(tariff): Per-day tariff snapshot permanen per daily_log + cost calc backward compat
8c8eb0791233e81556a7f4222136a21493394688 65dc09676f07b313ad2ffe5b09629c0ad5f630a2 nisa2109 <vivoa5116@gmail.com> 1786526896 +0700	commit: feat(acl): Manager access all + fix undef \/\ KPI section
65dc09676f07b313ad2ffe5b09629c0ad5f630a2 71bc41a1acd9317a52885b423f3879b165f8539c nisa2109 <vivoa5116@gmail.com> 1786530383 +0700	commit: ui(tariff): Tambah status badge snapshot vs global fallback + rename tombol Ubah Tarif Global
71bc41a1acd9317a52885b423f3879b165f8539c 3280e1b852f1a5cd52a477b29f847dba4f9b3188 nisa2109 <vivoa5116@gmail.com> 1786532891 +0700	commit: feat(shift): Tambah pilihan Shift Pagi/Siang/Malam di form Daily Log + rename sidebar menu jelas beda Log Sheet vs Daily Log
3280e1b852f1a5cd52a477b29f847dba4f9b3188 fe2ef6fc3684b50ba66aea4bf14b68b75a7d0220 nisa2109 <vivoa5116@gmail.com> 1786533257 +0700	commit: fix: SQL syntax error tariff snapshot (missing AND) + revert shift multi-entries jadi cuma label info + tambah shift badge di dashboard cost cards
fe2ef6fc3684b50ba66aea4bf14b68b75a7d0220 160392c65e1793161432a4b66502f32d8aaebb52 nisa2109 <vivoa5116@gmail.com> 1786533470 +0700	commit: fix: Shift cards undefined array key 'ring' + hosting mojibake UTF-8 (paksa header Content-Type text/html charset=utf-8 + default_charset UTF-8)
160392c65e1793161432a4b66502f32d8aaebb52 dbc655701075c357e1d56ece083c773564a5b92f nisa2109 <vivoa5116@gmail.com> 1786533626 +0700	commit: ui(shift): Hapus info rekomendasi jam (06-14 dll) di kartu Shift Pagi/Siang/Malam di form daily log, hanya label tegas 3 shift tanpa angka jam
dbc655701075c357e1d56ece083c773564a5b92f cc596ef7b8dc431e658ec3f5eee65962bd975625 nisa2109 <vivoa5116@gmail.com> 1786533879 +0700	commit: fix(shift): Rewrite 100% Tailwind peer-checked CSS pattern + id radio / for label 100% trigger klik (sebelumnya visual active cuma PAGI dari PHP, visual Siang/Malam tidak berubah user kira ga bisa di-klik)
cc596ef7b8dc431e658ec3f5eee65962bd975625 61f9c2da92e3b73cbe8ceb43887d5147361b05a7 nisa2109 <vivoa5116@gmail.com> 1786534038 +0700	commit: ui(shift): Ganti 3 kartu besar Shift Pagi/Siang/Malam di daily_log_form jadi DROPDOWN SELECT sederhana sesuai request user
61f9c2da92e3b73cbe8ceb43887d5147361b05a7 8a24b7c78349dc9475ad1a39f211b6a6ebcac8cc nisa2109 <vivoa5116@gmail.com> 1786534399 +0700	commit: feat(review): Tampilkan visual badge Shift (Pagi/Siang/Malam) di halaman review_detail Supervisor / Manager — header title + section Informasi Engineer kolom ke-5
8a24b7c78349dc9475ad1a39f211b6a6ebcac8cc a6220ec3f91520aba5f3b4ce638f2ef106cb9ac5 nisa2109 <vivoa5116@gmail.com> 1786609032 +0700	commit: fix: undefined array key aqua_press, ubah label total water jadi 'Konsumsi Air' (hanya Main Building)
a6220ec3f91520aba5f3b4ce638f2ef106cb9ac5 b542bc4664cf8f13594173a00df33ea23a3bb09c nisa2109 <vivoa5116@gmail.com> 1786610772 +0700	commit: feat: listrik hanya bisa diedit shift PAGI (pagi ke pagi, 1x sehari)
b542bc4664cf8f13594173a00df33ea23a3bb09c d786ec4d24e662c0a2a106e3753244263c06be41 nisa2109 <vivoa5116@gmail.com> 1786618136 +0700	commit: update
d786ec4d24e662c0a2a106e3753244263c06be41 ed52db97acf80415122558ad4a86e35afbb0bd67 nisa2109 <vivoa5116@gmail.com> 1786694778 +0700	commit: Fix: (1) history.php manager/admin bisa lihat semua log engineer, (2) ganti label 'Air PDAM' -> 'Konsumsi Air' (index cost card, energy_logsheet form+statcard, daily_log header Water). Nilai Konsumsi Air = SUM(total_water) = akumulasi selisih Main Building Reading per hari
ed52db97acf80415122558ad4a86e35afbb0bd67 1dcef44e5504420594223ef438ee9118dcbaa480 nisa2109 <vivoa5116@gmail.com> 1786960349 +0700	commit: feat(shift): Ubah aturan shift listrik+air dari Pagi ke Malam pattern
1dcef44e5504420594223ef438ee9118dcbaa480 5e1a9ca8bd4725eadc84cbe9ac8c5e8c752274a2 nisa2109 <vivoa5116@gmail.com> 1786960616 +0700	commit: feat(dashboard): Utility Report LY = Same Day Last Year (tanggal sama tahun lalu)
5e1a9ca8bd4725eadc84cbe9ac8c5e8c752274a2 3c004bf2d2f70b8a98fc98635fc276fcdbc259f8 nisa2109 <vivoa5116@gmail.com> 1786960799 +0700	commit: cleanup(ui): Hapus text info yang tidak perlu di form engineer
3c004bf2d2f70b8a98fc98635fc276fcdbc259f8 953966043613fe92cc75685fce8653d64cdb2f74 nisa2109 <vivoa5116@gmail.com> 1787033475 +0700	commit: feat(form): Rumus konsumsi air = (MB Today - MB Yesterday) × 10 (dikali 10)
953966043613fe92cc75685fce8653d64cdb2f74 ee2db1e5034722d29401a07a545ab2320d9aa874 nisa2109 <vivoa5116@gmail.com> 1787034426 +0700	commit: feat(engineering-activities): Master Activity tampilkan nama engineer login, merge counter JSON
ee2db1e5034722d29401a07a545ab2320d9aa874 a0b3670cdf4820b6820a2829b9bfd3b7c0764fd7 nisa2109 <vivoa5116@gmail.com> 1787036854 +0700	commit: fix(manager-activities): Form Manager Isi Counters — dropdown master activity, auto counter, PDF export salah
a0b3670cdf4820b6820a2829b9bfd3b7c0764fd7 62b1fac88841088ff955b3149f726c8bd94dde94 nisa2109 <vivoa5116@gmail.com> 1787037474 +0700	commit: FIX PDF Engineering Report LY data:
62b1fac88841088ff955b3149f726c8bd94dde94 cc714cb1ed7949d6b2d27be24a21081b313dd295 nisa2109 <vivoa5116@gmail.com> 1787047493 +0700	commit: Pisahkan grup Done vs Progress (tidak kecampur) di dashboard & semua PDF report
cc714cb1ed7949d6b2d27be24a21081b313dd295 be60cdc835c69340285a5ac00de1e8c260605db9 nisa2109 <vivoa5116@gmail.com> 1787047861 +0700	commit: Perbesar input & styling edit activity counter (biar jelas pas ngetik)
be60cdc835c69340285a5ac00de1e8c260605db9 52c79080cd866f550f7eebf72d633019ad55c53b nisa2109 <vivoa5116@gmail.com> 1787048494 +0700	commit: Rapikan Engineering Activities: Group PER TANGGAL + pisahkan Badge Master/Tanggal/Engineer (tidak kecampur)
52c79080cd866f550f7eebf72d633019ad55c53b 5fdd9da6d46d05d3e46f3a73b69456ebc2049bf6 nisa2109 <vivoa5116@gmail.com> 1787055733 +0700	commit: FIX Bug Konsumsi Air 59651 → 435: Smart Merge Priority daily_logs PER UTILITY (hindari double count meter reading di energy_logs). Berlaku DASHBOARD + PDF report, 100% sama persis hasilnya.
5fdd9da6d46d05d3e46f3a73b69456ebc2049bf6 724f063c803a2de7a0a499f6233a6c37d68ef4dc nisa2109 <vivoa5116@gmail.com> 1787056167 +0700	commit: FIX LY (Last Year) gamau / angka absurd: Anti Reading Meter Validation — JIKA cnt_d=0 (tidak ada daily_logs, sistem belum jalan tahun lalu) → set utility + cost = 0. Badge % change otomatis tampil '-' (pembagi nol aman). Berlaku Dashboard + PDF 100% sama.
724f063c803a2de7a0a499f6233a6c37d68ef4dc 8a1206ce3279975a973182e061a0353352c5f4cd nisa2109 <vivoa5116@gmail.com> 1787056795 +0700	commit: FIX Cost Rp 479 Juta absurd + Today Cost Rp 0: Single Source of Truth usage+cost = HANYA pakai todayBoth & lySameDayBoth (hapus duplikat / yang bikin beda hasil). LY = Single Date sama tahun lalu (sesuai label LY Same Day, bukan range bulan). PDF cost ganti perkalian manual → pakai helper key cost_xxx (sinkron step D anti meteran, lebih akurat tarif snapshot per-log).
8a1206ce3279975a973182e061a0353352c5f4cd 942ff3f27772ab4da696ea1e88d0072696aa04d5 nisa2109 <vivoa5116@gmail.com> 1787057036 +0700	commit: Simplify Daily Log Sheet: HAPUS section UI Aktivitas Pekerjaan (Operation/Maintenance/Project/Landscape + TAMBAH BARIS PEKERJAAN BARU). Cukup Kendala & Solusi saja sesuai permintaan user. POST handler + DB schema TETAP ADA (backward compat data lama tidak rusak, cuma UI dihilangkan).
942ff3f27772ab4da696ea1e88d0072696aa04d5 719fa0b531ba11f1b643fbf9b6a245c6feb194a3 nisa2109 <vivoa5116@gmail.com> 1787148147 +0700	commit: Hapus section Catatan Harian Energy Terbaru preview tabel + query 5 entri terakhir (customer minta: tanggal energy log tidak semua masuk, jadi dihapus saja UI preview-nya. Data DB energy_logs TETAP UTUH tidak disentuh.)
719fa0b531ba11f1b643fbf9b6a245c6feb194a3 6452897f21b2bfd39a7954622af6b36923f0671f nisa2109 <vivoa5116@gmail.com> 1787149172 +0700	commit: Fix Yesterday 0 Bug + UI Listrik Box Dashed x8000 + Label Tanggal Dynamic
6452897f21b2bfd39a7954622af6b36923f0671f bb9f331890eba2beff60c7a4a90c393b07cefba7 nisa2109 <vivoa5116@gmail.com> 1787150559 +0700	commit: refactor(ui): full form minimalis netral + responsif
bb9f331890eba2beff60c7a4a90c393b07cefba7 d029c4a35124e7b96413b462491fef366fc09274 nisa2109 <vivoa5116@gmail.com> 1787151497 +0700	commit: feat: UI minimalis netral + energy detail logs restored + engineering activities progress table
d029c4a35124e7b96413b462491fef366fc09274 d31173af78dc0ac4d349e30995db2f101621e63d nisa2109 <vivoa5116@gmail.com> 1787151682 +0700	commit: feat: rewrite engineering activities pdf report - flat 5 col table, only in progress, simple netral theme
d31173af78dc0ac4d349e30995db2f101621e63d 530626d3da552f18ffa96746fd8d7da50bb77b2a nisa2109 <vivoa5116@gmail.com> 1787151841 +0700	commit: refactor: pdf activities super minimal - less text less color, full slate netral
530626d3da552f18ffa96746fd8d7da50bb77b2a bd0668e98e0c52d07d2b3f0969ef2c85568499bb nisa2109 <vivoa5116@gmail.com> 1787153066 +0700	commit: refactor: activities UI full netral slate - match daily_log_form, less text less color + pdf direct download
bd0668e98e0c52d07d2b3f0969ef2c85568499bb 8e3fb9e38494f4aa6b0d4717a0c8da205cf2cbbf nisa2109 <vivoa5116@gmail.com> 1787153457 +0700	commit: refactor: rapikan layout row activity + header modal detail divisi (grid 12 cols rata, label pendek, status pendek, header 3 kolom flex)
8e3fb9e38494f4aa6b0d4717a0c8da205cf2cbbf 4dc762a32ac3547b3b4d6fe178d5b405dddf13c7 nisa2109 <vivoa5116@gmail.com> 1787153869 +0700	commit: fix: PDF activities corrupt → ganti jadi print-preview page inline + auto window.print (sama pattern dashboard_pdf.php, tidak force download .pdf)
4dc762a32ac3547b3b4d6fe178d5b405dddf13c7 07fd25f67bc3d6efbfb32650cd0b8b76c1c340cd nisa2109 <vivoa5116@gmail.com> 1787154006 +0700	commit: refactor: pdf activities header hapus logo (clean tanpa icon/kolom logo)
07fd25f67bc3d6efbfb32650cd0b8b76c1c340cd c40ea0ea260667591133f9db38da87a490a2d7ca nisa2109 <vivoa5116@gmail.com> 1787154175 +0700	commit: fix: hapus semua emoji UTF-8 penyebab mojibake (dropdown option aneh Ã¢â€žÂ¢ dll) → ganti text plain bracket [Done][Progress]
c40ea0ea260667591133f9db38da87a490a2d7ca cde67d78a3738d6e97222ce4a2d129bf29d99b90 nisa2109 <vivoa5116@gmail.com> 1787156576 +0700	commit: refactor(dashboard): 100% netral slate pattern
cde67d78a3738d6e97222ce4a2d129bf29d99b90 c20be1fd5b0886914486cee30593004d5202d842 nisa2109 <vivoa5116@gmail.com> 1787156733 +0700	commit: fix(align): sejajarkan tombol Simpan/Reset Master + Filter Riwayat
c20be1fd5b0886914486cee30593004d5202d842 adb89068fea91116d284beeceb365c6ad645b72d nisa2109 <vivoa5116@gmail.com> 1787157152 +0700	commit: remove(modal): hapus tombol Excel + PDF di footer modal divisi
adb89068fea91116d284beeceb365c6ad645b72d 43fa3fac05b85170123a44d0aa24dad5bf45e3bb nisa2109 <vivoa5116@gmail.com> 1787157407 +0700	commit: fix(energy): rapihkan 6 cards konsumsi listrik & utility
43fa3fac05b85170123a44d0aa24dad5bf45e3bb 2e514dafa3494aef3bf4b00ab77d5ffcde1f7b0f nisa2109 <vivoa5116@gmail.com> 1787157565 +0700	commit: fix(energy): hapus koma desimal SEMUA cards + tabel (0 desimal bulat)
2e514dafa3494aef3bf4b00ab77d5ffcde1f7b0f ee7568e22a2e3d0d8369d965da348749f589866f nisa2109 <vivoa5116@gmail.com> 1787157657 +0700	commit: fix(energy): kembalikan koma 1 desimal SEMUA (cards+tabel), layout rapih tetap
ee7568e22a2e3d0d8369d965da348749f589866f c51b043df3370fbc1f320aaa152a63d2bfdec5c3 nisa2109 <vivoa5116@gmail.com> 1787158168 +0700	commit: fix(daily_summary): rapihkan section engineering activities (netral slate + border konsisten)
c51b043df3370fbc1f320aaa152a63d2bfdec5c3 46180b8b72380672cd07b1f2a7cdadba9dc72d8d nisa2109 <vivoa5116@gmail.com> 1787158416 +0700	commit: fix(index): rapihkan section aktivitas progress (hapus hover oranye, slate netral + border konsisten)
46180b8b72380672cd07b1f2a7cdadba9dc72d8d c13db5b978ac65f835c984dfd7dfc8bf0f7995f4 nisa2109 <vivoa5116@gmail.com> 1787158688 +0700	commit: fix(index): rapihkan card #2 engineering activities (group card + border date 3px)
c13db5b978ac65f835c984dfd7dfc8bf0f7995f4 59f4b8f5743ba3f4dd6f73f029ad15ffe31f947f nisa2109 <vivoa5116@gmail.com> 1787158850 +0700	commit: fix(index): critical render card 2 engact (hapus closure, render inline foreach html)
59f4b8f5743ba3f4dd6f73f029ad15ffe31f947f b1e4831dfbcf02bb8976d257d913f3f2f448bf31 nisa2109 <vivoa5116@gmail.com> 1787159208 +0700	commit: feat(tarif): split listrik pln jadi wbp & lwbp (harga sendiri Rp/kWh) di daily log form + global settings
b1e4831dfbcf02bb8976d257d913f3f2f448bf31 6c73fd41c1fa7c4e607ec8e0a78ec181cefb4975 nisa2109 <vivoa5116@gmail.com> 1787159357 +0700	commit: fix(form): hapus validasi wajib aktivitas pekerjaan (work_activities tidak required lagi)
6c73fd41c1fa7c4e607ec8e0a78ec181cefb4975 ec723c60026ab26d97a665c533c697f55873d247 nisa2109 <vivoa5116@gmail.com> 1787159535 +0700	commit: fix(formula): air main building hapus x10 = cukup today-kemarin saja (php + notice + js calc + label)
ec723c60026ab26d97a665c533c697f55873d247 e48c29156387180f6fb61e17f47fe415812cced3 nisa2109 <vivoa5116@gmail.com> 1787159820 +0700	commit: fix(index): card 2 engact layout match daily_summary (hapus border-left 3px, engineer sub-badge dibawah title)
e48c29156387180f6fb61e17f47fe415812cced3 2ef43ad1c2e2febd780ac8d9bed9f7954d2dffb7 nisa2109 <vivoa5116@gmail.com> 1787160158 +0700	commit: fix(index): format engact card 2 jadi tabel 5 kolom (dept|activity|date|eng|status), activity detail lebar, hanya in progress tampil
2ef43ad1c2e2febd780ac8d9bed9f7954d2dffb7 302bd0c8de43f3b7342a3530844adcd2ed295d55 nisa2109 <vivoa5116@gmail.com> 1787160501 +0700	commit: fix(report): engineering activities daily_summary jadi tabel 5 kolom (dept|act|date|eng|status), activity lebar, hanya in-progress
302bd0c8de43f3b7342a3530844adcd2ed295d55 b1bfa3e6abd9935a254c7bc46da8376c78924ba9 nisa2109 <vivoa5116@gmail.com> 1787160621 +0700	commit: fix(report): perkecil dept text+icon dan status pill ukuran di daily_summary engact (jgn terlalu besar)
b1bfa3e6abd9935a254c7bc46da8376c78924ba9 a7ed8785a53d059b3b5641bedad9ae601a8608d1 nisa2109 <vivoa5116@gmail.com> 1787161012 +0700	commit: fix(act): hapus dropdown pilih master activity, ganti input text lebar 8 cols (user ketik langsung nama aktivitas)
a7ed8785a53d059b3b5641bedad9ae601a8608d1 c955078a61a162c86ab25475f35f92c35702b0a0 nisa2109 <vivoa5116@gmail.com> 1787164011 +0700	commit: fix(act): besarkan ukuran input text nama aktivitas + status select + btn hapus (tinggi 46px, rounded-xl, border-2, lebih besar responsif)
c955078a61a162c86ab25475f35f92c35702b0a0 d93fa60a10b3155b648bf28e7c8fa18e2eb12d1e nisa2109 <vivoa5116@gmail.com> 1787466797 +0700	commit: fix(utilities & history): dedup MAX(id) per (date, engineer) + BY ENG created_by nama akun
d93fa60a10b3155b648bf28e7c8fa18e2eb12d1e b4ae0ed407d210cac5c937550cb90c70c06b0589 nisa2109 <vivoa5116@gmail.com> 1787476888 +0700	commit: fix(reports dedup): pdf/excel + dashboard pdf/excel query logs MAX(id) dedup per DATE+engineer_id
b4ae0ed407d210cac5c937550cb90c70c06b0589 d4c3fa4d93ea4fa09bbff5a64197e04e7e07729a nisa2109 <vivoa5116@gmail.com> 1787541195 +0700	commit: feat: implement 20 meeting & training notes (Deduction, ChillerMerge, Irrigation, Boilers, LiveCalc, MobileFix)
d4c3fa4d93ea4fa09bbff5a64197e04e7e07729a 60a8611b1d73d8142a1d47f720e431985c4f3298 nisa2109 <vivoa5116@gmail.com> 1787542921 +0700	commit: fix(hosting): config.php ultra-safe pattern anti blank page
60a8611b1d73d8142a1d47f720e431985c4f3298 aa385037d5568d2c634bfee1aaab13266a35b439 nisa2109 <vivoa5116@gmail.com> 1787565940 +0700	commit: fix livecalc Rp 0: remove shift_malam gating (pagi/siang auto hitung) + add input event HP realtime + sync onShiftChange onload
aa385037d5568d2c634bfee1aaab13266a35b439 88c5f7f3941500ea079eed84db5275fbf3711be8 nisa2109 <vivoa5116@gmail.com> 1787578756 +0700	commit: Fix 6 bug report + 7 meeting poin 23-24 Agu:
88c5f7f3941500ea079eed84db5275fbf3711be8 10821c7e2d21ad47d44e1c9746f43554ce9d73ff nisa2109 <vivoa5116@gmail.com> 1787583687 +0700	commit: Fix 3 bugs customer report 24 Agu 22.48 WIB:
10821c7e2d21ad47d44e1c9746f43554ce9d73ff 08e59bf7e00d29ebda4b27eee6890f9fe9ba45aa nisa2109 <vivoa5116@gmail.com> 1787585606 +0700	commit: HOTFIX REVERT threshold LY min value: customer data 18 Agu 2025 LY Electric (cnt>0) malah ke-blokir dan tampil Belum ada data. Kembali ke aslinya: cnt=0 = empty, cnt>0 = show apa adanya (bahkan kecil/sebagian shift). Threshold arbitrer min Electric 1000 / Water 50 / Gas 50 / Fuel 20 dihapus karena bukan wewenang sistem menilai data user 'tidak valid' hanya karena kecil.
08e59bf7e00d29ebda4b27eee6890f9fe9ba45aa 3ecbe116905f0723caa18d10194ff29cddb0d9b4 nisa2109 <vivoa5116@gmail.com> 1787586403 +0700	commit: FIX CRITICAL: PHP POST handler dulu IGNORING Yesterday ✏️ override dari user untuk backfill historis. Sekarang ada 3 hidden input _y_override yang sync via onYesterdayInput JS; PHP baca & timpa / / SEBELUM hitung total_electricity / total_water. Data form Total Listrik 26240 kWh sekarang BENAR tersimpan ke DB total_electricity (bukan selisih salah dari Yesterday DB kosong = 0).
3ecbe116905f0723caa18d10194ff29cddb0d9b4 a43f3c043a0fa0391034ae29ae7db1100f5c59fe nisa2109 <vivoa5116@gmail.com> 1787754006 +0700	commit: Fix LY 2025 backfill cutoff + Reformat print Utility Summary (selisih+cost)
a43f3c043a0fa0391034ae29ae7db1100f5c59fe 2905e17ecdcd151dca7ab4ff5197a6d140917b14 nisa2109 <vivoa5116@gmail.com> 1787756304 +0700	commit: Add LY debug script v2: status badges, simulasi, action plan 16/19/21 Agu
2905e17ecdcd151dca7ab4ff5197a6d140917b14 027ff52c42c733b1d823a8e9789513b23867d4d9 nisa2109 <vivoa5116@gmail.com> 1787758885 +0700	commit: Fix POST backfill mode: simpan total_electricity/water = Today Reading (bukan selisih)
027ff52c42c733b1d823a8e9789513b23867d4d9 478c1503df0f376094716565cef98139e7152cf4 nisa2109 <vivoa5116@gmail.com> 1788707970 +0700	commit: update
478c1503df0f376094716565cef98139e7152cf4 41e772ad91c38509187286e468135df9d1f14ba5 nisa2109 <vivoa5116@gmail.com> 1788784899 +0700	commit: fix(daily_log_form): formula ×8000 listrik CT/PT & ×10 air MB di JS live summary + PHP save
41e772ad91c38509187286e468135df9d1f14ba5 f1b6ed799ded60bdfc3d696de3f438ddc7c88bae nisa2109 <vivoa5116@gmail.com> 1788794929 +0700	commit: fix(report): auto correction data lama formula utility ×8000 listrik / ×10 air meter
f1b6ed799ded60bdfc3d696de3f438ddc7c88bae 112e52e52fb9a97a98cccfda6baee1d12c81d7c1 nisa2109 <vivoa5116@gmail.com> 1789023763 +0700	commit: fix(form): JS numFmt0 undefined error + x8000 initial render + cache buster no-cache headers. Fix listrik LWBP label x8000, SEMUA SHIFT hitung, Live Summary tidak 0 lagi.
112e52e52fb9a97a98cccfda6baee1d12c81d7c1 4ade9c8d3ad183a4bb90d8b86b1964545a14f3e0 nisa2109 <vivoa5116@gmail.com> 1789025205 +0700	commit: fix(report): sync utility print 100% match dashboard + activity progress rule + responsive pdf
4ade9c8d3ad183a4bb90d8b86b1964545a14f3e0 bb725809c8bff2bf4f203888f626a15780dbfd9a nisa2109 <vivoa5116@gmail.com> 1789309900 +0700	commit: 🔥 FIX Production Utility Patch (13 Sept 2026):
bb725809c8bff2bf4f203888f626a15780dbfd9a 2f67a1cf25fc36243047a372dc008ea47f5db835 nisa2109 <vivoa5116@gmail.com> 1789310162 +0700	commit: 🔥 FIX recalc utility (v2 - 13/09/2026):
2f67a1cf25fc36243047a372dc008ea47f5db835 778946ba5d7c9635dfdba834000bb960ee00f9ef nisa2109 <vivoa5116@gmail.com> 1789310522 +0700	commit: 🔥 FIX Safety Cap WATER (800 → 200.000 m3) SINKRON SEMUA LAYER:
778946ba5d7c9635dfdba834000bb960ee00f9ef 860e783e143265e86868b1178212836bf887b543 nisa2109 <vivoa5116@gmail.com> 1789310761 +0700	commit: 🔧 super_cek_hosting.php v2:
860e783e143265e86868b1178212836bf887b543 dc56be1992909fe4025d0d08ffd6c512e34d259c nisa2109 <vivoa5116@gmail.com> 1789312302 +0700	commit: 🔥🔥🔥 REVISI BESAR 13/9 v3: TOTAL AIR = HANYA MAIN BUILDING SAJA (TIDAK + PDAM)!
dc56be1992909fe4025d0d08ffd6c512e34d259c 442d98d97c1dff738f60c68479e9bd8381252815 nisa2109 <vivoa5116@gmail.com> 1789313595 +0700	commit: 🔥 v4 FIX KRITIS 13/9: THRESHOLD AIR 300→500 (01/09 selisih 377 ×10 = 3770) + CLEANUP SISA PDAM 12.289,60 (range 12000-13000)
442d98d97c1dff738f60c68479e9bd8381252815 6caab726c06ddbcda2db574eae56a62e97b5a174 nisa2109 <vivoa5116@gmail.com> 1789314389 +0700	commit: 🔥 v5 FIX KRITIS (01/09 WATER 377 → 3770): CLEANUP STALE 300-600×10 + PDAM RESIDUE <5→0
6caab726c06ddbcda2db574eae56a62e97b5a174 2e55f5f6f7e95b861ea1cd63c44c00abfe2eb357 nisa2109 <vivoa5116@gmail.com> 1789314578 +0700	commit: 🔥 v6 FIX RESIDUE v4: CLEANUP WATER 1200-1250 → SET 0 (1228.86-1228.96 PALSU)
2e55f5f6f7e95b861ea1cd63c44c00abfe2eb357 a8d70b7aa6c59e60c58405e4e4894280f62a0887 nisa2109 <vivoa5116@gmail.com> 1789366899 +0700	commit: v7 FIX SQL SYNTAX ERROR index.php line 768 buildModalQuery water (PDOException 1064 as water_pdam). Water query manual, TANPA comment PHP di string SQL.
a8d70b7aa6c59e60c58405e4e4894280f62a0887 40908099f6ea75208b414dceb0030d696eca0015 nisa2109 <vivoa5116@gmail.com> 1789366949 +0700	commit: v7a FIX PHP PARSE ERROR line 771 unexpected identifier DALAM (nested /* comment). Ganti multi comment ke // single line.
40908099f6ea75208b414dceb0030d696eca0015 9b01fcf885fdb8f307a8f339e00f37ee5305699c nisa2109 <vivoa5116@gmail.com> 1789367979 +0700	commit: 🔥 v8 RECALC FIX: LISTRIK 12/09 3558 -> 27840 (baseline basi 2025 Okt 28720 vs now 4365 -> query mini SELECT sama seperti form daily_log_form ORDER BY water>0 ASC log_date DESC)
9b01fcf885fdb8f307a8f339e00f37ee5305699c c95d21da8714c04fcb6a29e75987a259e6de640a nisa2109 <vivoa5116@gmail.com> 1789368407 +0700	commit: 🔥🔥🔥 v9 RECALC FIX AKHIR LISTRIK 12/09 = 27.840 KWH! (3558 → 27840 ✅✅✅ MATCH FORM)
c95d21da8714c04fcb6a29e75987a259e6de640a 800b863cf2bbca1f0bc09e7f61db868f6aaa53fe nisa2109 <vivoa5116@gmail.com> 1789368688 +0700	commit: 🔥🔥🔥🔥 v10 FIX SEMPURNA RECALC: 3 LAYER ANTI BASELINE BASI!
800b863cf2bbca1f0bc09e7f61db868f6aaa53fe db258b7188f3b2028f7955a530a8365a68ba9677 nisa2109 <vivoa5116@gmail.com> 1789368898 +0700	commit: 🔧 DEBUG MENDESAK: check_nilai_1209.php check nilai asli WBP LWBP 10-12/09 eng#1
db258b7188f3b2028f7955a530a8365a68ba9677 ab7e46d1fada03d5adaddb1afcc6f2aad454bf85 nisa2109 <vivoa5116@gmail.com> 1789369092 +0700	commit: 🐛 FIX check_nilai_1209.php ERROR require_once Database.php!
ab7e46d1fada03d5adaddb1afcc6f2aad454bf85 8ac29202b18a1efeab7590641c33e1a8e960d5a8 nisa2109 <vivoa5116@gmail.com> 1789369245 +0700	commit: 🆕 DEBUG check_nilai_1209_v3.php (TEXT PLAIN, PERSIS INIT SAMA recalc_utility_all_dates.php LINE 40-56!)
8ac29202b18a1efeab7590641c33e1a8e960d5a8 1043dba0cf9e0624882e5fca727a1ff6ada65098 nisa2109 <vivoa5116@gmail.com> 1789375217 +0700	commit: 🆕 check_nilai_1209_v4.php: 50 ROW TERAKHIR daily_logs ORDER BY log_date DESC (SEMUA ENGINEER & STATUS!)
1043dba0cf9e0624882e5fca727a1ff6ada65098 d96414e73d4c703ba596df8237a931f03bee296d nisa2109 <vivoa5116@gmail.com> 1789375543 +0700	commit: 🔥 RECALC v11: FIX LISTRIK 12/09 = 27.840 ✅✅✅ + FIX WATER + GAS LAYER 0 GLOBAL YESTERDAY (TANPA ENGINEER_ID FILTER!)
d96414e73d4c703ba596df8237a931f03bee296d 06cad9abb8ac224da1dbb7d77aecee8c09298765 nisa2109 <vivoa5116@gmail.com> 1789375804 +0700	commit: 🔧 RECALC v11b FIX: HAPUS LAYER 0 WATER + GAS (regresi v11!) — TETAPKAN LISTRIK LAYER 0 SAJA (12/09=27840 ✅)
06cad9abb8ac224da1dbb7d77aecee8c09298765 4f44a482284204c6b52ea2e012078bd9a97bf7f7 nisa2109 <vivoa5116@gmail.com> 1789376019 +0700	commit: 🆕 check_nilai_1209_v5.php: DEBUG GAS 12/09 BEDA! (v6=319.89 vs v11b=52.56)
4f44a482284204c6b52ea2e012078bd9a97bf7f7 0523213e65dd4d8495f04b5b12408adb6e215f6a nisa2109 <vivoa5116@gmail.com> 1789376246 +0700	commit: 🔥 RECALC v11c FIX GAS 12/09 = 319.89 ✅ (E+W+G 12/09 SEMUA BENAR 100%!)
0523213e65dd4d8495f04b5b12408adb6e215f6a bd8dbad2f8d9732f39936cb16a2e2a407098a7a0 nisa2109 <vivoa5116@gmail.com> 1789387785 +0700	commit: recalc v11d: WATER LAYER 0 GLOBAL YESTERDAY (no eng filter!) SAMA LISTRIK+GAS! Fix 12/09 W=4964 → 401 m³ SAMA PERSIS FORM daily_log_form! Threshold ≤500 → ×10! Fallback per eng v6 jika L0 gagal.
bd8dbad2f8d9732f39936cb16a2e2a407098a7a0 f4e15c879c2c62cc5467a7ad48f0555b955dc71f nisa2109 <vivoa5116@gmail.com> 1789388034 +0700	commit: recalc v11e: FIX WATER ×10 DUPLICATE! (L0 401 → L2 ×10 LAGI → 4010 ❌). Tambah flag: jika baseline L0 / per eng SUDAH apply ×10 → SKIP Cleanup Layer 2. 01/09 W=3770 TETAP (oldWater fallback belum ×10 → L2 OK!). 12/09 W=401 ✅ SAMA FORM!
f4e15c879c2c62cc5467a7ad48f0555b955dc71f a9339220f994c4cd945de16bc523ac8ba185d4f6 nisa2109 <vivoa5116@gmail.com> 1789470275 +0700	commit: recalc v11f FINAL WATER FIX (NO REGRESI 100% TANGGAL LAMA!). (1) LAYER 0 WATER GLOBAL HANYA JALAN JIKA SEMUA engineer HARI INI TIDAK ADA baseline KEMARIN (CASE 12/09 SAJA! eng#22 BEDA dari 11/09 eng#21). Tanggal lama (eng#1 tiap hari) → PAKAI per eng baseline v6 LAMA = SESUAI v11c USER ACCEPTED! (2) Cleanup Layer 2 (×10 untuk >300 ≤600) PINDAH ke DALAM BLOCK oldWater FALLBACK SAJA! (hanya untuk 01/09 oldWater=377 → ×10=3770 ✅). Hasil baseline L0/per eng yang SUDAH ×10 (seperti 12/09=401) TIDAK PERNAH kena ×10 LAGI! Target: 12/09 W=401 ✅ SAMA FORM, 01/09 W=3770 ✅, semua tanggal lama kembali v11c!
a9339220f994c4cd945de16bc523ac8ba185d4f6 70a9e03dbcf2cb27d7d43ac872116e745f9d9381 nisa2109 <vivoa5116@gmail.com> 1789471057 +0700	commit: V11G WATER SESUAI REQUEST USER: oldWater>100 pakai hasil jadi DB (skip baseline L0/L1). + cleanup universal layer2 (300-600 x10) fix v11f regresi 377→3770.
70a9e03dbcf2cb27d7d43ac872116e745f9d9381 473504b4379dc78734014a369be6e42d5b22b2f0 nisa2109 <vivoa5116@gmail.com> 1789471723 +0700	commit: V11H FIX W=4010→401: skip cleanup L2 300-600 x10 jika waterL0Applied=true (hasil L0 baseline 12/09 sudah benar 401 jangan di x10 lagi).
473504b4379dc78734014a369be6e42d5b22b2f0 233289e494a8d1e245ad6daf6c15fb217aed6ce9 nisa2109 <vivoa5116@gmail.com> 1789473665 +0700	commit: V11I PRIORITAS L0 TERTINGGI: 12/09 L0 W=401 selalu jalan (tidak skip). Jika waterL0Applied paksa pakai L0 (abaikan oldWater=4010 rusak akibat v11g). Cleanup L2 tetap !waterL0Applied.
233289e494a8d1e245ad6daf6c15fb217aed6ce9 759d5afb2ff7a8be69eb1377406ce75f3db1d183 nisa2109 <vivoa5116@gmail.com> 1789479499 +0700	commit: V11J FINAL SESUAI REQUEST USER: oldWater>100 skip baseline (gas mode). cleanup L2 300-600 x10 selalu. OVERRIDE EMAS 12/09=401 PAKSA!
