Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs-mstore.faisalaffan.com/llms.txt

Use this file to discover all available pages before exploring further.

Internal Flow Diagrams

Dokumentasi flow diagram internal untuk developer reference. Fokus pada validasi, delegasi, dan alur eksekusi di code level.
πŸ’‘ Working with Flow Diagrams:
  • Zoom: Cmd/Ctrl + Scroll atau klik kanan β†’ β€œOpen Image in New Tab”
  • Download: Copy code diagram β†’ paste ke Mermaid Live Editor β†’ Download PNG/SVG
  • Full Guide: Lihat Mermaid Guide untuk tutorial lengkap

🎯 Transaction Create Flow

Handler: TransactionHandler.CreateTransaction

Lokasi: internal/domains/transaction/transaction_handler.go Diagram alir eksekusi handler ketika menerima request pembuatan transaksi.

Rincian Langkah

[Tracing] Inisialisasi tracer handler untuk observabilitas
  • Setup OpenTelemetry span
  • Add handler layer attributes
[Auth] utils_jwt.GetUserSession(ctx)
  • Jika gagal: mapping ke 401 melalui utils_error.CatchAuthError
  • Jika sukses: set payload.IDUserApps = session.Sub
[Parse Body] utils_payload.BodyParser(ctx, &payload, ...)
  • Jika gagal: return error parser (HTTP status sesuai CatchHandlerErrorV1)
[Validasi Wajib]
  • branch_code tidak boleh kosong β†’ 400
  • items minimal 1 β†’ 400
[Validasi Item] per item:
  • Izinkan bundle: product_id boleh 0 jika bundle_id diisi
  • quantity wajib > 0
[Validasi Addon] per addon:
  • addon_id wajib > 0
  • quantity wajib > 0
[Delegasi Service] transactionService.CreateTransaction(ctx, payload)
  • Jika error: gunakan utils_error.CatchHandlerErrorV1 untuk response terstruktur
  • Jika sukses: utils_response.Result(ctx, trx, nil)

Input & Output

Input: JSON body PayloadCreateTransaction + header Authorization (JWT)
{
  "branch_code": "BRN-MST-OSK00001",
  "items": [
    {
      "product_id": 1238,
      "quantity": 2,
      "addons": [
        {
          "addon_id": 10,
          "quantity": 1
        }
      ]
    }
  ]
}
Output Berhasil: 200 OK dengan objek transaksi
{
  "code": 200,
  "data": {
    "id": 185,
    "transaction_code": "TRX-MC01-BRN-MST-OSK00001-251013-5UJW",
    "grand_total": 33000,
    "status": "paid"
  }
}
Output Gagal: 4xx/5xx tergantung jenis kesalahan
{
  "code": 400,
  "message": "branch_code wajib diisi"
}

Catatan Integrasi

  • Handler ini fokus validasi request & delegasi
  • Harga, stok, bundle, dan logika atomic berada di service/repository
  • Tracing/telemetri mengikuti standar OTEL util di project
  • Error handling menggunakan utils_error.CatchHandlerErrorV1

πŸ”„ Service Layer Flow

Service: transactionService.CreateTransaction

Lokasi: internal/domains/transaction/transaction_service.go

πŸ“Š Repository Layer Flow

Repository: transactionRepository.Create

Lokasi: internal/domains/transaction/transaction_repository.go

πŸ” Authentication Flow

JWT Validation Flow


πŸ“¦ Inventory Movement Flow

Stock Consumption Flow


πŸ’³ Payment Processing Flow

QRIS Payment Flow


πŸ”„ Offline Sync Flow

Batch Sync Flow


🎨 Best Practices

DO βœ…

  • Always setup tracing di awal handler
  • Validate input sebelum delegasi ke service
  • Use DB transaction untuk atomic operations
  • Handle errors dengan proper HTTP status codes
  • Log important steps dengan correlation ID

DON’T ❌

  • Jangan skip validation di handler layer
  • Jangan hardcode business logic di handler
  • Jangan commit transaction sebelum semua steps sukses
  • Jangan expose internal error messages ke client
  • Jangan skip tracing/logging

Transaction Flow

High-level transaction flow & state machine

System Design

Overall system architecture

Database ERD

Database schema & relationships

Developer Reference: Dokumentasi ini untuk internal development reference. Untuk user-facing documentation, lihat Features section.