================================================================ PAKET MANDIRI — Digitalisasi_3_3 (v377, kumulatif) FOLDER UTUH · tinggal rename yang lama, taruh yang ini Disusun: 13 September 2026 ================================================================ Folder ini SUDAH LENGKAP dan SUDAH DIUJI JALAN. Isinya: ✔ Kode terbaru — dari "Digitalisasi_3_3 (18)" ✔ backend/node_modules — 117 paket, terpasang bersih di Linux ✔ frontend/dist — sudah dibuild (77 berkas) ✔ backend/uploads — 66 foto asli dari server ✔ backend/.env — setelan server (DB_HOST=localhost) Tidak perlu npm install. Tidak perlu npm run build. Tidak perlu menyalin apa pun dari folder lama. ================================================================ LANGKAH PASANG — 4 LANGKAH ================================================================ 1. MATIKAN BACKEND pm2 stop all 2. GANTI NAMA FOLDER LAMA (jangan dihapus) cd /path/ke/folder/induk mv Digitalisasi_3_3 Digitalisasi_3_3_LAMA 3. EXTRACT PAKET INI unzip -o Digitalisasi_3_3_MANDIRI_v377.zip -d . Hasilnya langsung bernama "Digitalisasi_3_3" — tidak perlu diganti namanya lagi. Lewat cPanel File Manager: Rename folder lama, upload ZIP ini ke folder induk, klik kanan → Extract. 4. NYALAKAN cd Digitalisasi_3_3/backend pm2 start server.js --name digitalisasi CEK: http://50.6.7.38:3020/api/health harus muncul: {"success":true, ... "db":"terhubung"} Lalu buka aplikasi, tekan Ctrl+Shift+R. SELESAI. Folder "Digitalisasi_3_3_LAMA" biarkan dulu beberapa hari. Kalau ada apa-apa, Anda tinggal balik: matikan backend, rename balik, nyalakan lagi. ================================================================ SATU HAL YANG PERLU ANDA PUTUSKAN SENDIRI ================================================================ FOTO YANG DIUNGGAH SETELAH 13 AGUSTUS 2026. 66 foto di paket ini disalin dari ZIP server yang Anda kirim, yaitu kondisi 13 Agustus. Kalau setelah tanggal itu ada operator yang mengunggah foto BD / pengecekan / barang keluar, foto-foto itu ada di folder LAMA, bukan di sini. Aplikasi tetap jalan normal, hanya foto-foto baru itu yang muncul rusak — record di database tetap utuh, cuma berkas gambarnya tidak ketemu. KALAU MEMANG ADA FOTO BARU, jalankan satu perintah ini di antara langkah 3 dan 4: cp -rn Digitalisasi_3_3_LAMA/backend/uploads/* \ Digitalisasi_3_3/backend/uploads/ -n artinya "jangan timpa yang sudah ada", jadi perintah ini hanya menambah yang belum ada. Aman dijalankan, aman diulang. Cara cepat memastikan perlu atau tidak: find Digitalisasi_3_3_LAMA/backend/uploads -type f | wc -l · hasilnya 66 → tidak ada foto baru, lewati saja · hasilnya >66 → ada foto baru, jalankan perintah cp di atas Hal yang sama berlaku untuk backend/.env — kalau Anda pernah mengubahnya langsung di server setelah 13 Agustus (ganti password database misalnya), bandingkan dulu: diff Digitalisasi_3_3_LAMA/backend/.env Digitalisasi_3_3/backend/.env ================================================================ CATATAN JUJUR: node_modules DI SINI TIDAK 100% SAMA ================================================================ Isinya 117 paket, bukan 139 seperti di server Anda. Yang tidak ikut HANYA dua kelompok, dan keduanya memang tidak dipakai: · @napi-rs/canvas (97 MB) Tiga berkas biner raksasa: versi Linux-glibc, Linux-musl, dan WINDOWS. Ikut terpasang sebagai bawaan pdfjs-dist. Fungsinya menggambar halaman PDF jadi gambar — dan kode Anda tidak pernah melakukan itu. Yang versi Windows jelas tidak berguna di server Linux. · nodemon + perkakas pengembangan (devDependencies) Hanya dipakai waktu `npm run dev` di laptop. Server pakai `npm start` / pm2, tidak menyentuhnya. · berkas *.map dan @types Peta sumber untuk debugging dan definisi TypeScript. Tidak pernah dibaca saat aplikasi berjalan. Kenapa dibuang: dengan semuanya ikut, ZIP-nya 79 MB dan melewati batas kirim 30 MB. Tanpa itu jadi 26 MB — dan tidak ada satu pun baris kode Anda yang memanggilnya. Sudah saya periksa: kata "pdfjs" hanya muncul di package.json, tidak di satu berkas kode pun. Yang membaca PDF di aplikasi Anda adalah pdf2json, dan itu IKUT di paket ini. Kalau suatu saat Anda butuh lengkap kembali, cukup: cd Digitalisasi_3_3/backend && npm install ================================================================ SUDAH DIUJI DI SINI — paket ini, bukan versi lain ================================================================ Saya jalankan `node server.js` memakai isi paket ini apa adanya: ✔ tidak ada "Cannot find module" — dependensi lengkap ✔ halaman SPA tersaji, memakai build baru (assets/index-BtqRQ_bh.js) ✔ foto uploads tersaji betulan: /uploads/bd/bd_1786752783092_h8t3x.jpeg → 200, 227.886 byte ✔ modul inti dicek satu per satu: multer, xlsx, pdf2json, mysql2, compression, cors, dotenv — semua OK ✔ 5 route diuji, semuanya TERDAFTAR (bukan 404): basis-perawatan · equipment-group · biaya-perawatan · roster-organik · unit-scrap ✔ `node --check` lolos untuk seluruh berkas .js backend ✔ isi kode dibandingkan berkas-per-berkas dengan sumber Anda: identik ================================================================ ISI UPDATE — APA YANG BERUBAH ================================================================ FITUR / HALAMAN BARU (7 berkas baru): · backend/routes/biayaperawatan.js + views/BiayaPerawatan.vue · backend/routes/rosterorganik.js + views/RosterOrganik.vue · backend/routes/unitscrap.js · backend/utils/miripSOH.js · views/IzinBypassHM.vue · frontend/src/assets/responsive.css · backend/data/jadwal_nonorganik_seed.json PERBAIKAN PENTING DI server.js: Dua route sudah lama ada berkasnya tapi TIDAK PERNAH didaftarkan, sehingga halaman "Basis Data Perawatan" selalu dibalas 404: /api/basis-perawatan /api/equipment-group Sekarang keduanya terdaftar. Ditambah 3 route baru di atas. BERKAS YANG ISINYA DIPERBARUI: 44 backend (14) : detailpart, hakedit, jadwalshift, kinerjaunit, maintenancerecord, masterdata, masterpm, pengecekanawal, progressperbaikan, sohgudangmsf, sohgudangmsf1, sukucadang, server.js, .env.example frontend (30): App.vue, main.js, router/index.js, services/api.js, DateTimePicker.vue, main.css, dark-theme.css, dan 22 halaman (MonitoringUnit, MasterData, SukuCadang, TiketPerbaikan, KinerjaUnit, dll.) Perubahan terakhir (v377): batas Durasi Delay kendala di MonitoringUnit — kartu pertama dibatasi delay awal, kartu lanjutan dibatasi durasi shift. SAMPAH LAMA yang sudah TIDAK ikut: · backend/aichat.js (duplikat usang routes/aichat.js) · views/TiketPerbaikan.vue.bak · aset build lama di dist/assets ================================================================ CATATAN TEKNIS ================================================================ 1. frontend/node_modules tidak disertakan (server Anda memang tidak punya, dan dist sudah jadi). Baru perlu `npm install` di folder frontend kalau nanti mau `npm run build` di server. 2. frontend/.env.production masih: VITE_API_URL=http://50.6.7.38:3020/api Saya pertahankan apa adanya supaya perilakunya persis seperti yang sekarang jalan. Kalau nanti pakai domain atau HTTPS, ganti jadi /api lalu build ulang. 3. Paket ini TIDAK menyentuh soal keamanan (password plaintext, API tanpa autentikasi, CORS '*'). Pekerjaan terpisah yang butuh migrasi database — sengaja tidak dicampur ke sini.