অধ্যায় ১৪.১ — এরর কোড
১. উদ্দেশ্য
ক্যানোনিক্যাল এরর কোড ক্যাটালগ — API responses, logs, UI dialogs, ইন্টিগ্রেশন ত্রুটি সব এক স্থানে।
২. ফরম্যাট
<DOMAIN>_<CONDITION>
উদাহরণ: BOOKING_HOLD_EXPIRED, JE_UNBALANCED, PAYMENT_GATEWAY_DECLINED।
৩. প্রতিটি কোডে
- HTTP status (যদি API)
- Severity: INFO / WARN / ERROR / CRITICAL
- retry_advice:
non_retryable / retryable_after_short / retryable_after_long / requires_user_action
৪. ডোমেইন
| ডোমেইন |
কভার |
| AUTH |
Login, MFA, password |
| PERM |
Authorization |
| FIELD |
Input validation |
| BOOKING |
Booking-এ ত্রুটি |
| TICKETING |
Issuance |
| REFUND |
Refund flow |
| CUSTOMER |
Customer master |
| SUPPLIER |
Supplier master |
| JE |
Journal entries |
| INVOICE |
Invoicing |
| PAYMENT |
Payments |
| RECON |
Reconciliation |
| TAX |
Tax calculation |
| PERIOD |
Period close |
| MEMO |
ADM/ACM |
| RECOGNITION |
Revenue recognition |
| COMMISSION |
Commission |
| BSP |
BSP integration |
| IMPORT |
Data imports |
| INTERNAL |
System errors |
৫. মূল উদাহরণ
AUTH
| কোড |
HTTP |
Severity |
Retry |
AUTH_INVALID_CREDENTIALS |
401 |
WARN |
requires_user_action |
AUTH_MFA_REQUIRED |
401 |
INFO |
requires_user_action |
AUTH_MFA_INVALID |
401 |
WARN |
requires_user_action |
AUTH_ACCOUNT_LOCKED |
401 |
WARN |
retryable_after_long |
AUTH_TOKEN_EXPIRED |
401 |
INFO |
requires_user_action |
AUTH_TOKEN_INVALID |
401 |
ERROR |
non_retryable |
BOOKING
| কোড |
HTTP |
Severity |
Retry |
BOOKING_HOLD_EXPIRED |
410 |
WARN |
non_retryable |
BOOKING_PRICE_CHANGED |
409 |
WARN |
requires_user_action |
BOOKING_NOT_FOUND |
404 |
ERROR |
non_retryable |
BOOKING_INVALID_STATE_TRANSITION |
409 |
ERROR |
non_retryable |
BOOKING_CUSTOMER_CREDIT_EXCEEDED |
422 |
WARN |
requires_user_action |
JE
| কোড |
HTTP |
Severity |
Retry |
JE_UNBALANCED |
422 |
CRITICAL |
non_retryable |
JE_PERIOD_CLOSED |
422 |
ERROR |
non_retryable |
JE_ACCOUNT_INACTIVE |
422 |
ERROR |
non_retryable |
JE_FX_RATE_MISSING |
422 |
ERROR |
requires_user_action |
PAYMENT
| কোড |
HTTP |
Severity |
Retry |
PAYMENT_GATEWAY_DECLINED |
402 |
WARN |
non_retryable |
PAYMENT_GATEWAY_TIMEOUT |
504 |
ERROR |
retryable_after_short |
PAYMENT_AMOUNT_MISMATCH |
422 |
ERROR |
non_retryable |
PAYMENT_DUPLICATE |
409 |
INFO |
non_retryable |
PAYMENT_INVOICE_OVERAPPLIED |
422 |
ERROR |
non_retryable |
INTERNAL
| কোড |
HTTP |
Severity |
Retry |
INTERNAL_DB_TIMEOUT |
504 |
ERROR |
retryable_after_short |
INTERNAL_GDS_TIMEOUT |
504 |
ERROR |
retryable_after_short |
INTERNAL_RATE_LIMIT |
429 |
WARN |
retryable_after_short |
INTERNAL_MAINTENANCE |
503 |
INFO |
retryable_after_long |
৬. ব্যবহারকারীদের নির্দেশনা
- Switch on code (message নয় — translations পরিবর্তন হয়)
- Unknown code tolerate — পুরাতন code default fallback-এ পাঠান
- retry_advice মেনে চলুন:
non_retryable: কখনো retry না
retryable_after_short: 1-5 সেকেন্ড backoff
retryable_after_long: 1-15 মিনিট
requires_user_action: end-user input প্রয়োজন
৭. সাধারণ ফাঁদ
- ⚠️ HTTP status-এ over-rely (codes more specific)
- ⚠️ Indefinite retry — code respect করুন
- ⚠️ Error message log + display কিন্তু code রেকর্ড না — debugging কঠিন