অধ্যায় ১৩.২ — বুকিং লাইফসাইকেল ওয়ার্কফ্লো
১. উদ্দেশ্য
বুকিং তৈরি থেকে সমাপ্তি পর্যন্ত পুরো ওয়ার্কফ্লো — দুটি প্রধান পথ: ক্যাশ এবং ক্রেডিট গ্রাহক।
২. Actors
| Actor | ভূমিকা |
|---|---|
| Customer | বুকিংয়ের request |
| Agent | travoBooks UI ব্যবহারকারী |
| travoBooks | প্ল্যাটফর্ম logic |
| GDS / NDC | এয়ারলাইন bookings |
| Payment Gateway | কার্ড payments |
| Supplier | এয়ারলাইন/হোটেল |
৩. ক্যাশ গ্রাহক প্যাথ
sequenceDiagram
participant C as Customer
participant A as Agent
participant T as travoBooks
participant G as GDS
participant P as Payment Gateway
C->>A: ভ্রমণ অনুরোধ
A->>T: Search request
T->>G: AirShoppingRQ
G-->>T: Offers
T-->>A: Offers (with pricing)
A->>C: Quote
C->>A: Accept
A->>T: Create booking (HELD)
T->>G: Sell from offer
G-->>T: PNR + price quote
T-->>A: Booking HELD
A->>C: Send pay link
C->>P: Pay (card)
P-->>T: payment.succeeded webhook
T->>T: Verify signature, idempotency
T->>G: Issue ticket (OUTSIDE DB transaction!)
G-->>T: Ticket number
T->>T: DB transaction: ticket + JE + state=ISSUED
T->>C: E-ticket email
T-->>A: Booking ISSUED
৪. ক্রেডিট গ্রাহক প্যাথ
sequenceDiagram
participant C as Customer
participant A as Agent
participant T as travoBooks
participant G as GDS
participant Sup as Supervisor
C->>A: ভ্রমণ অনুরোধ
A->>T: Search + create booking
T->>G: Sell
G-->>T: PNR
T->>T: Credit limit check
alt Above approval threshold
T-->>A: PENDING_APPROVAL
T->>Sup: Approval request
Sup->>T: Approve
end
T->>G: Issue ticket
G-->>T: Ticket number
T->>T: JE + AR posting + state=ISSUED
T->>C: E-ticket
T->>C: Invoice (per terms)
Note over C,T: Customer pays later per net 30 etc.
৫. State machine
stateDiagram-v2
[*] --> DRAFT
DRAFT --> HELD: সরবরাহকারী confirm hold
HELD --> PENDING_PAYMENT: cash path
HELD --> PENDING_APPROVAL: credit, > threshold
HELD --> ISSUED: credit, below threshold
PENDING_PAYMENT --> ISSUED: payment captured
PENDING_APPROVAL --> ISSUED: approved
PENDING_APPROVAL --> CANCELLED_BEFORE_ISSUE: rejected
ISSUED --> PARTIALLY_USED: কুপন used
PARTIALLY_USED --> COMPLETED: সব used
ISSUED --> COMPLETED: ticket flown
ISSUED --> CANCELLED_AFTER_ISSUE: void/refund
HELD --> EXPIRED: TTL
PENDING_PAYMENT --> EXPIRED: TTL
PENDING_APPROVAL --> EXPIRED: TTL
৬. ফিন্যান্সিয়াল side-effects
| ট্রানজিশন | JE প্রভাব |
|---|---|
| DRAFT → HELD | কোনো JE নেই |
| HELD → ISSUED | full issuance JE (Dr 1101 AR, Cr 2031 Deferred, Cr 1109 Commission, etc.) |
| ISSUED → CANCELLED_AFTER_ISSUE (void) | reversing JE |
| ISSUED → CANCELLED_AFTER_ISSUE (refund) | refund JE pattern |
| Service-date reach | recognition JE (Dr Deferred, Cr Revenue) |
৭. ব্যর্থতা পথ
| ব্যর্থতা | পরিণতি | পুনরুদ্ধার |
|---|---|---|
| GDS timeout | booking HELD থাকে | retry; reconciler check |
| Issue success, DB commit fail | orphan টিকেট | reconciler manual resolve |
| Payment failure | booking PENDING_PAYMENT | retry; expire after TTL |
| Approval rejected | CANCELLED_BEFORE_ISSUE | কোনো JE নেই |
৮. SLA Targets
- Search: < 5 seconds
- Hold: < 10 seconds
- Issue: < 30 seconds (95th percentile)
- E-ticket delivery: < 2 minutes from issue