π Manajemen Collection API (Bruno/Postman) di MStore ERP
Dokumen ini menjelaskan kerumitan dan strategi struktur collection Bruno/Postman untuk MStore ERP yang melayani multi-tenant, multi-company, multi-branch, multi-negara, dan multi-holding.
1. Konteks: Kenapa Collection Jadi Rumit?
MStore beroperasi di konteks:- Multi-tenant & multi-company (holding, subholding, subsidiary).
- Multi-branch per company (store, warehouse, outlet).
- Multi-negara (beda aturan pajak, mata uang, format invoice).
- Multi-role (cashier, owner, finance, auditor, ops, system).
- Banyak domain: Auth, Organization, Orders, Inventory, Finance, Tax, HR, Integrations, Compliance.
- Duplikasi folder per negara.
- Duplikasi folder per role.
- Sulit dipakai ulang lintas entity/country.
- Susah dipahami tester/QA baru.
2. Kondisi Aktual Bruno Collections
Lokasi:mstore_backend/third_party/bruno
Struktur utama saat ini (disederhanakan):
-
Sudah ada domain-level di
98_MSTORE(ONBOARDING, AUTH, INVENTORY, PRODUCT, REPORT, TRANSACTION, dll.). -
Sudah ada flow-level di
01_FLOW_MSTORE(AUTH FLOW, FLOW CHECKOUT QRIS, SUBMIT PAYMENT POS, dsb.). -
Masih banyak folder per-role di
02_API_L0,03_API_L1, dst. dengan subfolder seperti: -
Tiap collection memiliki folder
environments/untuk konfigurasi.
- Kamu sudah bergerak ke arah domain-based + flow-based (bagus).
- Tapi masih ada kompleksitas tinggi karena duplikasi per role di API_L0..L4.
3. Blueprint Ideal (Dari Draft Konsep)
Ringkasan blueprint ideal (dari dokumen konsep di editor):3.1 Domainization
Struktur utama berbasis domain bisnis:3.2 Environmentization
Variasi negara / entity / role dipindah ke environment, bukan folder:3.3 Flow Mapping
Workflow panjang direpresentasikan dengan prefix urutan:4. Gap Analysis: Blueprint vs Bruno Saat Ini
4.1 Sudah Selaras
-
Domainization (parsial):
98_MSTOREsudah berisi domain:ONBOARDING,AUTH,MERCHANT,PRODUCT,INVENTORY,TRANSACTION,REPORT, dll.00_API-Xenditdan00_V3_XENDITsudah terpisah sebagai domain Integrations β Payment.
-
Flow Mapping (parsial):
01_FLOW_MSTOREmenyimpan flow sepertiAUTH FLOW,FLOW CHECKOUT QRIS,SUBMIT PAYMENT POS, dsb.- Sudah memakai pola flow per use-case, meskipun belum full
01_,02_konsisten.
-
Environmentization (parsial):
- Masing-masing collection Bruno punya folder
environments/untuk token, base_url, dsb.
- Masing-masing collection Bruno punya folder
4.2 Belum Selaras / Titik Kerumitan
-
Folder per role (
L0_CASHIER,L0_OWNER,L1_FIN-MGR, dll.) masih mendominasi:- Menyulitkan reuse request antar role.
- Menambah overhead maintenance kalau ada perubahan endpoint.
-
Belum ada domain khusus untuk:
Organization(entity_list, entity_switch, permission_matrix).Tax(vat/gst/withholding/invoice numbering).Compliance(audit_logs, data_retention).
-
Flows belum sepenuhnya distandarisasi:
- Beberapa flow ada di
01_FLOW_MSTORE, sebagian lain tersebar di domain lain.
- Beberapa flow ada di
5. Rekomendasi Refactor Bertahap
5.1 Langkah 1 β Tetapkan βCollection Indukβ Domain-Based
Gunakan98_MSTORE sebagai root domain collection untuk MStore ERP:
- Rename/struktur ulang folder di
98_MSTOREsupaya mirip blueprint domain. - Jadikan
98_MSTOREsumber utama semua endpoint; folder API_L0..L4 hanya view/filter.
5.2 Langkah 2 β Pindahkan Role ke Environment
Alih-alih folder per role:- Endpoint cukup 1 kali di domain (misal
POST /v1/transaction), behavior beda tergantung role/env. - Mengurangi duplikasi folder & request.
5.3 Langkah 3 β Standarisasi Flow Folder
Konsolidasikan flow di01_FLOW_MSTORE dan domain terkait:
TRANSACTION / ORDERS, gunakan prefix default:
5.4 Langkah 4 β Tambah Domain Organization, Tax, Compliance
Buat domain baru di98_MSTORE:
- ORGANIZATION:
GET /entities,POST /entity/switch,GET /permissions/matrix.
- TAX:
POST /tax/calculate,GET /tax/rates,GET /invoice/numbering.
- COMPLIANCE:
GET /audit/logs,GET /data-retention/policies.
6. Pola Penamaan & Konvensi
Rekomendasi singkat:- Folder:
UPPER_SNAKE_CASEuntuk domain utama (AUTH,INVENTORY,FINANCE). - Subfolder flow: prefix numerik
01_,02_,03_untuk urutan. - Request:
HTTP_METHOD + tujuan(contoh:POST - Create Transaction,GET - List Inventory). - Environment:
- Nama:
ENV_{COUNTRY}_{ROLE}(misal:ENV_ID_L1_FIN,ENV_SG_AUDITOR).
- Nama:
7. Ringkasan
-
Faktual:
- Struktur Bruno saat ini sudah punya kombinasi domain-level, flow-level, dan API level per role.
- Kompleksitas terbesar datang dari duplikasi folder per role dan per level API.
-
Rekomendasi:
- Jadikan
98_MSTOREsebagai collection domain utama. - Pindahkan variasi role/negara/entity ke environment, bukan folder.
- Standarisasi flow dengan prefix dan pisahkan domain
Organization,Tax, danCompliance.
- Jadikan
-
Hasil akhir yang diinginkan:
- Collection lebih mudah dipahami untuk engineer baru, QA, dan auditor.
- Perubahan endpoint cukup di satu tempat (domain), sementara behavior dibedakan lewat environment.
- Selaras dengan pola enterprise yang kamu tulis di dokumen konsep (domainization, environmentization, flow mapping).