Skip to main content

πŸ“š 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.
Tanpa desain yang rapi, collection cenderung menjadi:
  • 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):
Observasi:
  • 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.
Kesimpulan:
  • 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_MSTORE sudah berisi domain: ONBOARDING, AUTH, MERCHANT, PRODUCT, INVENTORY, TRANSACTION, REPORT, dll.
    • 00_API-Xendit dan 00_V3_XENDIT sudah terpisah sebagai domain Integrations β†’ Payment.
  • Flow Mapping (parsial):
    • 01_FLOW_MSTORE menyimpan flow seperti AUTH 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.

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.

5. Rekomendasi Refactor Bertahap

5.1 Langkah 1 – Tetapkan β€œCollection Induk” Domain-Based

Gunakan 98_MSTORE sebagai root domain collection untuk MStore ERP:
Actionable:
  • Rename/struktur ulang folder di 98_MSTORE supaya mirip blueprint domain.
  • Jadikan 98_MSTORE sumber utama semua endpoint; folder API_L0..L4 hanya view/filter.

5.2 Langkah 2 – Pindahkan Role ke Environment

Alih-alih folder per role:
gunakan environment per role:
Isi env mengontrol:
Manfaat:
  • 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 di 01_FLOW_MSTORE dan domain terkait:
Di domain TRANSACTION / ORDERS, gunakan prefix default:

5.4 Langkah 4 – Tambah Domain Organization, Tax, Compliance

Buat domain baru di 98_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.
Ini mengikuti blueprint di dokumen konsep kamu.

6. Pola Penamaan & Konvensi

Rekomendasi singkat:
  • Folder: UPPER_SNAKE_CASE untuk 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).

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_MSTORE sebagai collection domain utama.
    • Pindahkan variasi role/negara/entity ke environment, bukan folder.
    • Standarisasi flow dengan prefix dan pisahkan domain Organization, Tax, dan Compliance.
  • 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).