Internal Flow Diagrams
Dokumentasi flow diagram internal untuk developer reference. Fokus pada validasi, delegasi, dan alur eksekusi di code level.π― 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
utils_jwt.GetUserSession(ctx)
- Jika gagal: mapping ke 401 melalui
utils_error.CatchAuthError - Jika sukses: set
payload.IDUserApps = session.Sub
utils_payload.BodyParser(ctx, &payload, ...)
- Jika gagal: return error parser (HTTP status sesuai
CatchHandlerErrorV1)
branch_codetidak boleh kosong β 400itemsminimal 1 β 400
- Izinkan bundle:
product_idboleh 0 jikabundle_iddiisi quantitywajib > 0
addon_idwajib > 0quantitywajib > 0
transactionService.CreateTransaction(ctx, payload)
- Jika error: gunakan
utils_error.CatchHandlerErrorV1untuk response terstruktur - Jika sukses:
utils_response.Result(ctx, trx, nil)
Input & Output
Input: JSON bodyPayloadCreateTransaction + header Authorization (JWT)
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
π Related Documentation
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.