Instance
Satu halaman per klien. Setiap halaman punya bagian yang sama dengan urutan yang sama, jadi dua instance bisa dibandingkan berdampingan: siapa kliennya, project Jira dan repository mana yang miliknya, bagaimana cara deploy-nya, database apa yang dipakai, dan bagaimana kodenya berbeda dari master.
Big five adalah target default sebuah perbaikan di-port: master, Jadestone, Medco, JOTRE dan Prima Energy. Timas, Tomori dan KTP hanya menerima perbaikan kalau work item-nya sendiri meminta.
Nama ini dipakai ulang saat himpunannya berubah, jadi catatan lama bisa berarti himpunan yang berbeda. Selesaikan lewat tanggal catatan itu:
| Label | Dipakai | Anggota |
|---|---|---|
| big four | sebelum 2026-09-02 | master, Jadestone, Medco, JOTRE |
| big five (lama) | 2026-09-02 sampai 2026-09-13 | + Timas |
| big six | 2026-09-08 sampai 2026-09-13 | + Prima Energy |
| big five (sekarang) | sejak 2026-09-14 | master, Jadestone, Medco, JOTRE, Prima Energy — Timas dikeluarkan menjadi on-request |
Jadi catatan verifikasi bertanggal 2026-09-13 atau sebelumnya yang menyebut "big five" berarti big five lama (dengan Timas, tanpa Prima). "big five" yang ditulis sejak 2026-09-14 berarti big five sekarang (dengan Prima, tanpa Timas). Prima Energy bergabung ke himpunan default 2026-09-08; halaman yang diperiksa sebelum itu belum diverifikasi padanya. Timas keluar dari himpunan default 2026-09-14; ia tetap instance yang dirawat, hanya saja tidak lagi mendapat perbaikan kecuali tiketnya sendiri meminta.
Perbandingan
| Instance | Jira | Repository | Twin terenkripsi | Branch di origin | Database | Big five |
|---|---|---|---|---|---|---|
| Jadestone | INA27 | ina-jadestone | ya | main, staging, development | MySQL | ya |
| Medco | INA28 | ina-medco-v3 | ya | main, staging, development | SQL Server | ya |
| JOTRE | INA36 | ina-jotre | ya | main, staging, development | MySQL | ya |
| Prima Energy | INA15 | ina-primaenergy | tidak | main, staging, development | MySQL | ya |
| Timas | INA14 | ina-timas | ya | main, development | MySQL | tidak — keluar 2026-09-14 |
| Tomori | INA12 | ina-tomori | ya | main, development | SQL Server | tidak |
| KTP | INA10 | ina-ktp | tidak | main, staging, development | MySQL | tidak |
Grup modul mana yang dijalankan masing-masing
Secara komersial INACT dijual sebagai empat modul: DMS (pengelolaan dokumen), ADMS (pengelolaan dokumen aset), Procurement, dan Cost Control & Budgeting. ADMS secara struktur berada di bawah menu DMS (Project), tetapi diaktifkan sendiri, jadi sebuah instance bisa menjalankan DMS tanpa ADMS.
Di kode setiap baris ts_modules membawa modules_parent berupa dms, adms, procurement atau budget, dan sebuah modul muncul di menu hanya kalau modules_is_installed miliknya, tipenya, dan parent-nya semua terpasang — getModuleList() di reference_function.inc.php. Menu Reporting punya tiga judul (DMS, Procurement, Cost Control & Budgeting); ADMS tidak punya grup report tersendiri.
Tabel di bawah adalah apa yang benar-benar aktif di database tiap instance, dibaca dari database local dev (snapshot produksi) pada 2026-09-10.
| Instance | Modul yang aktif |
|---|---|
| Master | DMS + ADMS + Procurement + Cost Control & Budgeting — keempatnya dibiarkan menyala untuk QA |
| Jadestone | DMS + ADMS |
| Medco | DMS + ADMS |
| JOTRE | DMS + Procurement |
| Timas | DMS |
| Prima Energy | DMS |
| Tomori | DMS + ADMS |
| KTP | DMS |
ADMS aktif di master, Medco, Tomori dan Jadestone. Tomori adalah implementasi ADMS itu sendiri; pekerjaan ADMS punya space change-request sekali pakai sendiri, INA34, tetapi project Tomori adalah INA12. Di snapshot Jadestone baris modul browse adms ditandai mati padahal ADMS Settings dan data asetnya (ts_assets) sama-sama ada, jadi hanya ADMS Settings yang muncul di menu — ini terlihat seperti kekeliruan data yang perlu dikonfirmasi di instance live. Fork lain membawa kode ADMS sebagai drift, tetapi tidak aktif dan tidak punya data aset.
Halaman Procurement karena itu menggambarkan master dan JOTRE, dan Cost Control & Budgeting hanya berjalan di master. Tiket procurement atau budgeting di instance lain dimulai dengan menyalakan modulnya.
Di mana masing-masing berjalan
| Instance | Consumer dev (QA) | Deploy staging | Produksi |
|---|---|---|---|
| Jadestone | Rumah box, inact-jadestone-encrypted.bdt.dev | jadestone.inactsoft.com, repo plain | Klien menarik main terenkripsi dari INARTS sendiri |
| Medco | Lab box, inact-medco-v3-encrypted.bdt.dev dan inact-medco-v3-encrypted-testable.bdt.dev | tidak ada | Zip rilis, dipasang manual di server tanpa internet |
| JOTRE | Rumah box, inact-jotre-encrypted.bdt.dev | tidak ada | Eris menarik main terenkripsi dari INARTS lewat VPN, manual |
| Timas | Rumah box, inact-timas-encrypted.bdt.dev | tidak ada | Consumer ssh ke edms.timas.com, pull dari INARTS, migrate |
| Prima Energy | belum diketahui | belum diketahui | TODO; repository tidak punya skrip deploy dan workflow |
| Tomori | Windows Server box, inact-tomori-encrypted.bdt.dev | tidak ada | Zip rilis dari tag, dipasang manual |
| KTP | Rumah box, inact-ktp.bdt.dev, diperbarui manual | tidak ada | Server INARTS |
Tiga mesin membawa runner GitHub Actions self-hosted: Rumah box, Lab box di LAN kantor, dan Windows Server box, mesin Windows Server 2022 di LAN kantor. Semua instance kecuali KTP dan Prima Energy deploy lewat GitHub Actions di salah satunya. Repository plain adalah producer: saat ada push, ia menyinkronkan kode ke twin terenkripsi lalu push ke GitHub dan GitLab INARTS. Twin terenkripsi adalah consumer: workflow-nya sendiri menarik checkout yang di-serve dan menjalankan phinx migrate. Produksi berbeda untuk setiap klien, lihat tabel.
Hostname QA mengikuti satu aturan: instance yang dikirim sebagai build terenkripsi mendapat -encrypted di hostname QA-nya. Master punya satu situs QA per driver database: inact-mysql.bdt.dev dan inact-psql.bdt.dev di Rumah box, inact-sqlsrv.bdt.dev di Lab box. Semua hostname dibaca dari baseurl di inweb_config database QA masing-masing pada 2026-09-06, kecuali Tomori, yang diambil dari README deploy consumer-nya.
Seberapa jauh setiap fork dari master
Diukur pada 2026-09-05 terhadap inact pada migrasi terbarunya, 20260826.
| Instance | File modul yang berbeda | File hanya di fork | Migrasi hanya di fork | Migrasi master yang belum diambil | Migrasi terbaru |
|---|---|---|---|---|---|
| Jadestone | 96 | 6 | 35 | 21 | 2026-08-26 |
| Medco | 93 | 14 | 39 | 20 | 2026-07-16 |
| JOTRE | 141 | 24 | 27 | 25 | 2026-08 |
| Timas | 116 | 4 | 5 | 45 | 2025-12-26 |
| Prima Energy | 115 | 2 | 5 | 43 | 2024-11-28 |
| Tomori | 178 | 10 | 42 | 45 | 2026-08-20 |
| KTP | 116 | 3 | 0 | 46 | 2024-05-02 |
Baca dua kolom terakhir bersamaan. Timas, KTP dan Prima Energy hampir tidak mengambil apa pun dari master sejak lama, jadi port ke keduanya butuh lebih hati-hati daripada yang ditunjukkan angkanya.
Key inweb_config terhadap seed master
Key di db/seeds/DefaultInwebConfig.php. Master punya 107. Tidak ada fork yang mengubah nilai default; perbedaannya hanya key yang ditambah atau key yang tidak pernah diambil.
| Instance | Jumlah key | Hanya di fork | Tidak ada di fork |
|---|---|---|---|
| Jadestone | 104 | 2 | 5 |
| Medco | 111 | 6 | 2 |
| JOTRE | 96 | 0 | 11 |
| Timas | 92 | 2 | 17 |
| Prima Energy | 92 | 0 | 15 |
| Tomori | 99 | 1 | 9 |
| KTP | 90 | 2 | 19 |
Nama key-nya ada di halaman tiap instance.
Yang sama di semua instance
- 54 folder modul yang sama dengan master.
main.phpadalah file yang di-encode ionCube di twin terenkripsi. Sinkronisasi tidak pernah menimpanya dan berhenti kalau source mengubahnya, jadi perubahan padamain.phpbutuh orang untuk meng-encode ulang.deploy/dan.github/tidak pernah disinkronkan ke twin terenkripsi. Push yang hanya mengubah path itu sampai ke GitHub dan INARTS tetapi tidak membuat commit terenkripsi.- Semua akses database lewat
$pdo.iw_mysql_queryyang lama melempar error di setiap pemanggilan.