অধ্যায় ৮.১ — নোটিফিকেশন
১. উদ্দেশ্য
নোটিফিকেশন সিস্টেম — কখন, কীভাবে, কাকে travoBooks বার্তা পাঠায়।
২. চ্যানেল
| চ্যানেল | উদ্দেশ্য |
|---|---|
| ইমেইল (SES) | প্রাথমিক ট্রানজ্যাকশনাল চ্যানেল |
| SMS (Twilio/স্থানীয়) | OTP, জরুরি অ্যালার্ট |
| In-app inbox | প্ল্যাটফর্ম-জুড়ে notification center |
| Push notification | মোবাইল অ্যাপ (Phase 2) |
| Webhook | machine-to-machine (অধ্যায় ৭.৪) |
৩. ক্যাটাগরি
| ক্যাটাগরি | নিয়ম |
|---|---|
| Transactional | সর্বদা পাঠানো (e-ticket, রসিদ, ইনভয়েস) |
| Operational | পার্টনার স্টাফ (অনুমোদন অনুরোধ, alert) |
| Marketing | Consent-ভিত্তিক, opt-out support |
| Compliance | বাধ্যতামূলক রেগুলেটরি (data breach, retention) |
| Security | পাসওয়ার্ড রিসেট, নতুন device login |
৪. টেমপ্লেট সিস্টেম
প্রতি (notification_type, channel, language) জোড়ার জন্য:
notification_templates (
template_id,
notification_type, -- 'BOOKING_CONFIRMATION'
channel, -- 'EMAIL' / 'SMS' / 'PUSH'
language, -- 'en' / 'bn' / 'hi'
partner_id, -- NULL = system default
subject_template, -- Handlebars syntax
body_template, -- Handlebars syntax
active -- boolean
)
ভেরিয়েবল substitution:
Dear {{customer.name}},
Your booking {{booking.id}} is confirmed for {{booking.travel_date}}.
৫. পার্টনার ব্র্যান্ডিং
- ব্র্যান্ডেড letterhead (logo, রঙ)
- স্ট্যান্ডার্ড টেমপ্লেটের পার্টনার override
- Multi-language (গ্রাহকের পছন্দের ভাষা)
৬. ডেলিভারি প্রবাহ
১. ইভেন্ট ট্রিগার (booking.issued)
২. টেমপ্লেট রেজল্ভ (partner override → system default)
৩. ভেরিয়েবল populate
৪. Outbox-এ rendered notification queue
৫. Worker pool ডেলিভারি (parallel)
৬. Provider response লগ
৭. Bounce/complaint webhook handle
৭. ইমেইল-নির্দিষ্ট
Provider: AWS SES Authentication: SPF, DKIM, DMARC সব deployed Bounces: hard bounce → suppress address; soft bounce → retry Complaints: complain হলে immediate suppress + alert
৮. PDF জেনারেশন
Headless Chromium worker pool: - E-ticket (IATA standard layout) - Invoice (jurisdiction-specific) - Voucher (non-air confirmation) - Customer statement
স্টোরেজ: S3, 10 বছর retention।
৯. In-app Inbox
প্রতি ব্যবহারকারী: - Unread count badge - Filter: All, Approval, Alert, System - Snooze, mark-as-read - Action buttons (Approve, View Details)
১০. Consent ও Opt-out
GDPR/DPDPA-অনুগত: - Marketing: explicit opt-in, easy opt-out - Transactional: cannot opt-out (legitimate business need) - Preference center: প্রতি ক্যাটাগরিতে পছন্দ
১১. সাধারণ ফাঁদ
- ⚠️ Authentication (SPF/DKIM/DMARC) ছাড়া email — spam folder
- ⚠️ Marketing-এর জন্য transactional template — GDPR violation
- ⚠️ Variable substitution ব্যর্থতা — "Dear {{customer.name}}" শাব্দিকভাবে পাঠানো
- ⚠️ PDF rendering blocking main flow — slow response