GRT SCADA Business Category
Ringkasan
grt_scada_business_category adalah modul layer terpisah untuk menambahkan Business Category pada area SCADA tanpa memaksa perubahan agresif ke modul grt_scada.
Tujuan utama modul ini adalah:
- mempersiapkan segregasi SCADA per business category
- menjaga migrasi production bisa dilakukan bertahap
- mempertahankan endpoint lama tetap hidup
- menyediakan endpoint baru khusus business category dengan prefix
/api/scada/bc/...
Mengapa Dipisah dari grt_scada
Modul ini sengaja dipisah agar rollout lebih aman.
Keuntungan pendekatan ini:
- frontend lama tidak perlu langsung diubah
- route lama di
grt_scadatetap berjalan - tim bisa migrasi per halaman atau per dashboard
- data legacy yang belum punya category masih bisa dibaca jika diperlukan
- risiko regresi di production lebih rendah
Dependensi
Modul bergantung pada:
grt_scadagrt_business_category_basegrt_inventory_business_categorygrt_mrp_business_category
Cakupan Model
scada.equipment
Penambahan:
business_category_id
Fungsi:
- menandai equipment SCADA per business category
- menjadi sumber category untuk sensor, log, failure, dan beberapa record SCADA lain
Default:
- mencoba ambil dari
mrp.workcenterjika work center nantinya punya category - fallback ke default category user melalui mixin
Record SCADA yang kini BC-aware
Model berikut disiapkan dengan business_category_id:
scada.equipment.oeescada.equipment.oee.linescada.material.consumptionscada.quality.controlscada.sensor.readingscada.api.logscada.equipment.failurescada.equipment.materialscada.mo.datascada.mo.weight
Sumber nilai category mengikuti konteks record, misalnya:
- dari
mrp.production.business_category_id - dari
scada.equipment.business_category_id - dari
product.business_category_id - dari
stock.move.business_category_id
Integrasi dengan MRP dan Inventory
Modul juga menambahkan validasi category pada object yang terhubung ke SCADA:
mrp.bom.scada_equipment_idmrp.bom.line.scada_equipment_idmrp.production.scada_equipment_idstock.move.scada_equipment_id
Tujuan:
- equipment SCADA yang dipakai pada BoM, MO, dan stock move harus tetap konsisten dengan business category manufacturing
Alur Category pada Record SCADA
scada.equipment.oee
Category mengikuti:
manufacturing_order_id.business_category_id
scada.equipment.oee.line
Category mengikuti:
oee_id.business_category_id
scada.material.consumption
Urutan fallback category:
manufacturing_order_id.business_category_idequipment_id.business_category_idmaterial_id.business_category_idmove_id.business_category_id
scada.quality.control
Category mengikuti:
product_id.business_category_id
scada.sensor.reading, scada.api.log, scada.equipment.failure
Category mengikuti:
equipment_id.business_category_id
scada.equipment.material
Urutan fallback category:
manufacturing_order_id.business_category_idequipment_id.business_category_idproduct_id.business_category_id
scada.mo.data dan scada.mo.weight
Category mengikuti:
manufacturing_order_id.business_category_id
Security Rule dan Strategi Migrasi Bertahap
Security rule modul ini sekarang berjalan ketat:
- record harus memiliki
business_category_idyang masukeffective_business_category_ids - record legacy
business_category_id = Falsetidak lagi dibuka untuk role operasional
Artinya:
- segregasi antar business category menjadi lebih kuat sejak awal
- migrasi data legacy harus diselesaikan sebelum user operasional memakai endpoint BC secara penuh
Model yang sudah dibatasi:
scada.equipmentscada.equipment.oeescada.equipment.oee.linescada.quality.controlscada.sensor.readingscada.api.logscada.equipment.failurescada.material.consumptionscada.equipment.materialscada.mo.datascada.mo.weight
Endpoint Baru untuk Frontend
Modul ini tidak mengganti endpoint lama.
Endpoint baru yang disiapkan:
/api/scada/bc/context/api/scada/bc/equipments/api/scada/bc/products/api/scada/bc/products-by-category/api/scada/bc/boms/api/scada/bc/mo-list-confirmed/api/scada/bc/mo-detail/api/scada/bc/mo-list-detailed/api/scada/bc/oee-detail/api/scada/bc/oee-equipment-avg/api/scada/bc/kpi-product-report/api/scada/bc/today-reports/api/scada/bc/periodic-report/api/scada/bc/equipment-failure-report
Parameter Business Category pada Endpoint
Endpoint BC mendukung context category melalui:
business_category_idbusiness_category_codebusiness_category_name
Untuk endpoint operasional /api/scada/bc/... (selain endpoint context), business category dari middleware sekarang wajib dikirim.
Request tanpa business category tidak akan diproses.
Fallback active/effective category hanya dipertahankan untuk endpoint context:
request.env.user.active_business_category_id- jika user hanya punya satu effective category, category itu dipakai otomatis
Parameter tambahan:
include_unassigned
Fungsi include_unassigned:
- pada mode ketat saat ini, record legacy tanpa category tidak lagi diekspos ke role operasional
- parameter ini dipertahankan hanya untuk kompatibilitas payload middleware lama
Response Context
Sebagian besar endpoint BC mengembalikan:
selected_business_category
Tujuannya:
- frontend tahu category mana yang sedang aktif
- audit request lebih mudah
- debugging cross-BU menjadi lebih jelas
View dan UI
Modul memperluas view SCADA yang sudah ada.
Field, filter, atau group by category ditambahkan pada:
- equipment
- OEE summary
- quality control
- sensor reading
- API log
- equipment failure
Tujuan:
- user backend bisa mulai review data per category
- tim implementasi bisa audit hasil backfill tanpa query manual
Migrasi Existing Data
post_init_hook melakukan backfill bertahap untuk record existing.
Urutan utamanya:
- isi
scada.equipment.business_category_iddari histori MO jika equipment tersebut hanya konsisten ke satu category - isi
scada.equipment.oeedanscada.equipment.oee.linedari MO - isi
scada.material.consumptiondari MO, equipment, product, atau stock move - isi
scada.quality.controldari product - isi
scada.sensor.reading,scada.api.log,scada.equipment.failuredari equipment - isi
scada.equipment.materialdari MO, equipment, atau product - isi
scada.mo.datadanscada.mo.weightdari MO
Catatan penting:
- equipment hanya di-backfill otomatis jika histori MO menunjukkan satu category yang konsisten
- ini sengaja dibuat hati-hati agar equipment yang ambigu tidak salah dipetakan
Validasi Utama
Constraint penting yang dijaga:
- equipment SCADA pada BoM harus sama category dengan BoM
- equipment SCADA pada BoM line harus sama category dengan BoM
- equipment SCADA pada MO harus sama category dengan MO
- equipment SCADA pada stock move harus sama category dengan stock move
- material consumption dan equipment material tidak boleh berbeda category dari referensi utamanya
Batasan Desain Saat Ini
Modul ini adalah fase aman untuk rollout bertahap, belum fase final paling ketat.
Karakter desain saat ini:
- route lama tidak dipaksa ikut BC
- endpoint BC mewajibkan business category dari middleware
- record legacy
Falsetidak lagi dibuka untuk role operasional - beberapa report BC adalah versi minimum-safe yang fokus pada filtering category, bukan redesign total seluruh analitik lama
Urutan Rollout yang Disarankan
- pastikan
grt_mrp_business_categorysudah stabil di staging - upgrade
grt_scada_business_categorydi staging - review hasil backfill category pada equipment dan record SCADA utama
- ubah frontend tertentu ke endpoint
/api/scada/bc/... - jalankan periode dual-run antara endpoint lama dan endpoint BC
- setelah hasil konsisten, baru lakukan migrasi frontend lebih luas
- jika seluruh data sudah bersih, pertimbangkan memperketat rule legacy
business_category_id = False
Checklist Testing Staging
- cek equipment existing yang sudah terisi category otomatis
- cek equipment ambigu yang tetap kosong dan review manual
- cek OEE record lama bisa difilter per category
- cek QC, sensor, log, dan failure report muncul sesuai category user
- cek endpoint
/api/scada/bc/contextmengembalikan context yang benar - cek endpoint
/api/scada/bc/mo-detailhanya menampilkan MO pada category yang sesuai - cek endpoint
/api/scada/bc/periodic-reportdan/api/scada/bc/today-reportsbisa dipakai frontend - cek user BU A tidak bisa melihat data BU B melalui endpoint BC
- cek request endpoint BC tanpa parameter business category ditolak
- cek data legacy
business_category_id = Falsetidak lagi terbaca oleh operator/technician
Hubungan dengan Modul Lain
grt_mrp_business_categorymenjadi sumber category untukMO,BoM, dan move manufacturinggrt_inventory_business_categorymenjadi sumber category untuk stock move dan valuation inventorygrt_scadatetap menjadi modul core SCADAgrt_scada_business_categoryadalah layer segregasi dan migrasi aman di atasnya