Files
edr-platform/apps/edr-passenger-web/backoffice/public/docs.md
2026-07-08 09:01:07 +03:00

3818 lines
100 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Passenger Backoffice App - Comprehensive Documentation
**Last Updated:** 2026-01-15
**Version:** 1.0.0
**Platform:** Ethio-Djibouti Railway (EDR) Passenger Management System
---
## Table of Contents
1. [Overview](#overview)
2. [Application Structure](#application-structure)
3. [Sidebar Navigation Guide](#sidebar-navigation-guide)
4. [Operations Management](#operations-management)
5. [Master Data Management](#master-data-management)
6. [Financial Management](#financial-management)
7. [Customer Services](#customer-services)
8. [Security & Compliance](#security--compliance)
9. [Analytics & Reports](#analytics--reports)
10. [System Administration](#system-administration)
11. [Common Features](#common-features)
---
## Overview
The Passenger Backoffice Application is a comprehensive management system for the Ethio-Djibouti Railway passenger platform. It provides tools for operational staff, supervisors, and administrators to manage bookings, passengers, fares, fleet, and compliance operations.
### Key Features
- **Real-time Booking Management**: View, modify, and cancel bookings
- **Passenger Management**: Track and manage passenger information
- **Dynamic Pricing**: Configure fares with segment-based and nationality-specific pricing
- **Fleet Management**: Manage trains, coaches, and seats
- **Live Tracking**: Monitor trip status and real-time updates
- **Security Monitoring**: Fraud detection and audit logging
- **Comprehensive Analytics**: Revenue, occupancy, and performance reports
- **🆕 Excess Luggage Management**: Handle boarding baggage charges with agent tools
- **🆕 Travel Packages**: Manage pilgrimage and group travel packages with tiered pricing
- **🆕 System Health Monitoring**: Real-time API health checks and system status
- **🆕 Advanced Fare Configuration**: Dynamic pricing with segment-based rules
- **🆕 Boarding Management**: Gate operations and passenger processing
- **🆕 Payment Methods Configuration**: Multi-provider payment setup
- **🆕 Package Inquiries**: Lead management for travel package bookings
- **🆕 Centralized Configuration**: Feature flags and operational controls
### Supported Roles
- **Agent**: Counter booking and basic operations
- **Supervisor**: Agent oversight and operational decisions
- **Admin**: Full system access and configuration
- **Staff**: Limited access to specific modules
---
## Application Structure
### Sidebar Organization
The application is organized into 8 main sections:
```
├── Overview
│ └── Dashboard
├── Operations
│ ├── Bookings
│ ├── Passengers
│ └── Tickets
├── Master Data
│ ├── Stations
│ ├── Trains
│ ├── Coaches
│ ├── Seats
│ ├── Classes
│ ├── Routes
│ └── Schedules
├── Financial
│ ├── Pricing & Fares
│ ├── Currencies
│ ├── Payments
│ └── Promo Codes
├── Customer Services
│ ├── Loyalty Program
│ ├── Support Center
│ └── Notifications
├── Security & Compliance
│ ├── Audit Logs
│ ├── Fraud Detection
│ └── Verifayda Integration
├── Analytics & Reports
│ ├── Reports
│ └── Operational Reports
└── System
├── Agent Operations
├── User Management
├── System Config
└── Settings
└── Enhanced Features
├── Excess Luggage
├── Travel Packages
├── Package Inquiries
├── Health Monitoring
├── Boarding Management
├── Advanced Fare Config
└── Payment Methods
```
### Theme & Personalization
- **Dark Mode Toggle**: Available in the header for reduced eye strain
- **Sidebar Collapse**: Click the chevron icon to minimize sidebar for more screen space
- **Responsive Design**: Fully responsive interface for desktop and tablet use
- **Accessible UI**: WCAG 2.1 AA compliant for accessibility
---
## Sidebar Navigation Guide
### Collapsible Sidebar
**Feature**: Expand/Collapse Navigation
**Location**: Top-right corner of sidebar header
**How to Use:**
1. Click the **Chevron** (</> or >>) icon in the sidebar header
2. Sidebar collapses to icon-only view
3. Hover over icons to see tooltip labels
4. Click again to expand full sidebar
**Benefits:**
- Maximize content viewing area
- Cleaner interface for focused work
- Quick navigation with tooltips
---
## Operations Management
### Bookings
**Purpose**: Manage all passenger bookings, view details, modify, and process cancellations
**Access Level**: Agent, Supervisor, Admin
**Icon**: Ticket
#### Features Overview
```
┌─────────────────────────────┐
│ BOOKINGS MANAGEMENT │
├─────────────────────────────┤
│ ✓ List & Filter │
│ ✓ Search by Reference │
│ ✓ View Full Details │
│ ✓ Cancel with Refunds │
│ ✓ Delete Records │
│ ✓ Export Data │
└─────────────────────────────┘
```
#### CRUD Operations
##### CREATE (Direct Booking Creation)
**Note**: Bookings are primarily created through the passenger portal. Backoffice staff use agent operations module for counter bookings.
1. **Agent Counter Booking**:
- Navigate to **Agent Operations** (System section)
- Create booking through dedicated agent interface
- Specify passengers, seats, and payment method
##### READ (List & Search)
1. **Access Bookings Page**:
- Click **Bookings** in Operations section
- Page displays table with all bookings
2. **Search Functionality**:
- **Search Box**: Filter by reference number, email, or phone
- **Status Filter**: Select from dropdown:
- All Status (default)
- Pending Payment
- Confirmed
- Cancelled
- Completed
- Results update in real-time
3. **Table Columns**:
- **Reference**: Unique booking identifier (6-character code)
- **Passenger**: Name and contact info
- **Status**: Current booking state (badge color-coded)
- **Amount**: Total fare in ETB
- **Payment**: Payment status indicator
- **Created**: Booking date and time
4. **View Full Details**:
- Click **"View Details"** action button
- Modal opens showing:
- Booking Information (Reference, Status, Type, Created Date)
- Passenger Information (Name, Email, Phone, ID)
- Journey Details (Adult/Child counts, Schedule, Promo Code)
- Payment Information (Amount, Status, Paid Date, Currency)
- Additional Information (Source, Last Updated)
##### UPDATE (Modify Booking)
**Current Limitations**: Direct modifications limited in backoffice. For booking changes:
1. **Passenger-initiated Changes**:
- Direct passenger through passenger portal
- Support team can assist via Support Center
2. **Admin Modifications** (if needed):
- Contact system administrator
- Modifications logged in Audit Logs
##### DELETE (Remove Booking)
1. **Access Delete**:
- Click **"Delete"** action button on booking row
- Confirmation dialog appears
2. **Deletion Process**:
- Dialog shows booking reference
- Warning: "This will release all associated seats"
- Click **"Delete"** to confirm
- Seats automatically released back to availability
- Related records (modifications, cancellations) retained for audit
3. **Undo**: Not available after deletion. Action is permanent.
#### Additional Features
**Pagination**:
- Navigate between pages at table bottom
- Default: 20 bookings per page
- Jump to specific page or use next/previous buttons
**Bulk Actions**:
- Select multiple bookings via checkboxes (planned feature)
- Export selected or all bookings as CSV
**Export**:
- Click **"Export"** button in header
- Downloads filtered bookings as spreadsheet
- Includes all visible columns
**Status Management**:
- **Cancel Booking**:
- Available for non-completed/non-cancelled bookings
- Automatically processes refund (80% refund for confirmed, 0% for pending)
- Updates payment status
---
### Passengers
**Purpose**: Manage passenger profiles, view details, and track passenger information
**Access Level**: Agent, Supervisor, Admin
**Icon**: Users
#### Features Overview
```
┌──────────────────────────────┐
│ PASSENGERS MANAGEMENT │
├──────────────────────────────┤
│ ✓ View Passenger Profiles │
│ ✓ Search & Filter │
│ ✓ Verifayda Status Check │
│ ✓ Booking History │
│ ✓ Loyalty Information │
│ ✓ Wallet Balance │
└──────────────────────────────┘
```
#### CRUD Operations
##### READ (List & Filter)
1. **Access Passengers Page**:
- Click **Passengers** in Operations section
- Displays passenger listing with filters
2. **Search Options**:
- **Search Box**: Filter by name, email, phone, or ID
- **Nationality Filter**: Ethiopian, Djiboutian, Other
- **Verifayda Status**: Verified, Unverified, All
- **Loyalty Tier**: Bronze, Silver, Gold, Platinum
3. **Passenger Information Displayed**:
- Full Name
- Email & Phone
- Nationality
- Verifayda Verification Status
- Loyalty Tier
- Wallet Balance
- Total Bookings
- Registration Date
##### VIEW DETAILS
1. **Click Passenger Row**:
- Opens detailed profile modal
- Sections included:
- **Account Information**: Email, Phone, Nationality, Registration Date
- **Verification Status**: Fayd Status, Last Verified Date
- **Loyalty Information**: Tier, Points Balance, Lifetime Points
- **Wallet**: Current Balance, Currency
- **Booking History**: List of all bookings with links
2. **Quick Actions**:
- View booking details
- Check loyalty rewards available
- View wallet transaction history
#### UPDATE (Modify Passenger)
**Current Status**: Read-only in backoffice
**To Modify**: Passengers update via their portal or contact support
#### DELETE (Remove Passenger)
**Not Recommended**: Deletes all associated data
**Alternative**: Deactivate account (contact admin)
---
### Tickets
**Purpose**: Manage ticket generation, distribution, and validation
**Access Level**: Supervisor, Admin
**Icon**: FileText
#### Features Overview
```
┌──────────────────────────────┐
│ TICKETS MANAGEMENT │
├──────────────────────────────┤
│ ✓ View All Tickets │
│ ✓ Search by Reference │
│ ✓ Check Validation Status │
│ ✓ Resend Tickets │
│ ✓ Generate Report │
└──────────────────────────────┘
```
#### CRUD Operations
##### READ (List & View)
1. **Access Tickets Page**:
- Click **Tickets** in Operations section
- Shows all issued tickets
2. **Search & Filter**:
- **Booking Reference**: Find tickets by booking
- **Status**: Confirmed, Validated, Cancelled
- **Date Range**: Filter by issue or validation date
- **Passenger Name**: Quick search by name
3. **Ticket Information**:
- Booking Reference
- Passenger Name
- QR Code / Barcode
- Trip Details (Train, Stations, Times)
- Seat Information
- Issue Date
- Validation Status
##### VIEW FULL TICKET
1. **Click View Button**:
- Opens ticket details modal
- Shows:
- QR/Barcode payload
- Full passenger manifest
- Seat assignments
- Fare breakdown
- Payment confirmation
2. **Download/Print**:
- Generate PDF for printing
- Send to passenger email
- Save to system
##### VALIDATION STATUS
1. **Gate Validation**:
- Unvalidated: Ticket not yet scanned at gate
- Validated: Scanned and approved for boarding
- Cancelled: Ticket cancelled or expired
2. **Validation History**:
- View gate validation logs
- See timestamp and validator ID
- Track validation attempts
---
## Master Data Management
### Stations
**Purpose**: Configure railway stations and maintain station information
**Access Level**: Supervisor, Admin
**Icon**: MapPin
#### Features Overview
```
┌──────────────────────────────┐
│ STATIONS MANAGEMENT │
├──────────────────────────────┤
│ ✓ Add New Stations │
│ ✓ Edit Station Details │
│ ✓ Manage Operational Status │
│ ✓ Delete Stations │
│ ✓ Bulk Import │
└──────────────────────────────┘
```
#### Station Information
Each station includes:
- **Code**: Unique 3-letter airport-style code (e.g., ADD, DJI)
- **Name**: Full station name
- **City**: Location city
- **Country Code**: Country identifier (ET, DJ)
- **Operational Status**: Active/Inactive
- **Timezone**: Local timezone
- **Coordinates**: Latitude/Longitude for mapping
#### CRUD Operations
##### CREATE
1. **Click "Add Station"** button
2. **Fill Form**:
- **Code** (required): 3-letter unique code
- **Name** (required): Station name
- **City** (required): City location
- **Country Code**: Country identifier
- **Latitude**: Geographic coordinate
- **Longitude**: Geographic coordinate
- **Timezone**: Select from list
- **Operational Status**: Toggle active/inactive
3. **Save**: Click "Create Station"
4. **Confirmation**: Station appears in list
##### READ
1. **View Station List**:
- All stations displayed in table
- Search by code, name, or city
- Filter by operational status
2. **Columns**:
- Code
- Name
- City
- Country
- Operational Status (badge)
- Creation Date
##### UPDATE
1. **Click "Edit"** on station row
2. **Modify Fields**:
- All fields editable
- Changes reflected immediately
3. **Save**: Click "Update Station"
4. **Audit**: Changes logged
##### DELETE
1. **Click "Delete"** on station row
2. **Confirmation**: Dialog warns about:
- Routes using this station
- Schedules affected
- Passenger trips dependent
3. **Confirm**: Only with explicit consent
---
### Trains
**Purpose**: Manage fleet of trains and their configurations
**Access Level**: Supervisor, Admin
**Icon**: Train
#### Features Overview
```
┌──────────────────────────────┐
│ TRAINS MANAGEMENT │
├──────────────────────────────┤
│ ✓ Add New Trains │
│ ✓ Edit Train Details │
│ ✓ Manage Coaches │
│ ✓ Track Status │
│ ✓ Archive Trains │
└──────────────────────────────┘
```
#### Train Information
Each train includes:
- **Number**: Unique train identifier (e.g., T-001)
- **Name**: Display name
- **Operator**: Operating company
- **Description**: Train details/notes
- **Status**: Active/Inactive
- **Total Coaches**: Count of attached coaches
#### CRUD Operations
##### CREATE
1. **Click "Add Train"** button
2. **Fill Form**:
- **Number** (required): Unique identifier
- **Name** (required): Display name
- **Operator** (required): Operating company
- **Description**: Optional notes
- **Status**: Toggle Active/Inactive
3. **Save**: Click "Create Train"
4. **Next Step**: Assign coaches to train
##### READ
1. **View Train List**:
- Table shows all trains
- Filter by status
- Search by number or name
2. **Columns**:
- Train Number
- Name
- Operator
- Status (badge)
- Total Coaches
- Active Status
##### UPDATE
1. **Click "Edit"** on train row
2. **Modify Details**:
- Update name, operator, description
- Change status
3. **Coach Management**:
- Add coaches to train
- Remove coaches
- Adjust coach sequence
4. **Save**: Click "Update Train"
##### DELETE
1. **Click "Delete"** on train
2. **Warning**: Shows:
- Schedules using this train
- Active bookings affected
3. **Confirm**: Only deletable if no active schedules
---
### Coaches
**Purpose**: Manage coach inventory and seat configurations
**Access Level**: Supervisor, Admin
**Icon**: Grid3x3
#### Features Overview
```
┌──────────────────────────────┐
│ COACHES MANAGEMENT │
├──────────────────────────────┤
│ ✓ Add New Coaches │
│ ✓ Configure Seat Layout │
│ ✓ Set Coach Type │
│ ✓ Manage Maintenance │
│ ✓ Bulk Import Configs │
└──────────────────────────────┘
```
#### Coach Information
- **Number**: Coach identifier (e.g., C-001)
- **Coach Type**: Type selector (Standard, Sleeper, etc.)
- **Arrangement**: Seat layout (2+2, 3+2, etc.)
- **Capacity**: Total seats/beds
- **Status**: Active/Maintenance/Inactive
- **Seat Classes**: Associated seat classes
#### CRUD Operations
##### CREATE
1. **Click "Add Coach"** button
2. **Fill Form**:
- **Number** (required): Coach ID
- **Coach Type** (required): Select from types
- **Arrangement**: Seat layout pattern
- **Capacity** (required): Total seats
- **Status**: Active/Maintenance/Inactive
3. **Seat Configuration**:
- Auto-generate seats based on arrangement
- Or manually configure seat map
4. **Save**: Click "Create Coach"
##### READ
1. **View Coach List**:
- Table shows all coaches
- Filter by status, type
- Search by number
2. **Columns**:
- Coach Number
- Type
- Arrangement
- Capacity
- Status Badge
- Assigned Train
##### UPDATE
1. **Click "Edit"** on coach
2. **Modify**:
- Update arrangement (limited if seats occupied)
- Change status
- Update capacity (data migration needed)
3. **Seat Management**:
- Add/remove individual seats
- Update seat properties (window, aisle, bed position)
4. **Save**: Click "Update Coach"
##### DELETE
1. **Click "Delete"** on coach
2. **Checks**:
- Scheduled trips using coach
- Active bookings on seats
- Maintenance records
3. **Confirm**: If no conflicts
---
### Seats
**Purpose**: Manage individual seat inventory and properties
**Access Level**: Supervisor, Admin
**Icon**: Armchair
#### Features Overview
```
┌──────────────────────────────┐
│ SEATS MANAGEMENT │
├──────────────────────────────┤
│ ✓ View Seat Maps │
│ ✓ Update Seat Properties │
│ ✓ Block/Unblock Seats │
│ ✓ Bulk Operations │
│ ✓ Inventory Report │
└──────────────────────────────┘
```
#### Seat Properties
- **Seat Number**: Position identifier
- **Row/Column**: Grid coordinates
- **Kind**: Standard, Premium, Accessible
- **Type**: Regular or Bed (lower/middle/upper)
- **Status**: Available, Held, Booked, Blocked
- **Premium Fee**: Extra charge (in ETB)
- **Properties**: Window, Aisle, Bed Position
#### CRUD Operations
##### READ
1. **View Seat Maps**:
- Select coach from dropdown
- Visual grid shows all seats
- Color-coded by status:
- Green: Available
- Yellow: Held
- Blue: Booked
- Red: Blocked
2. **Seat Details**:
- Click seat to view properties
- Shows occupancy history
- Displays current booking (if occupied)
3. **Filters**:
- By coach
- By status
- By kind (Premium, Accessible, etc.)
##### UPDATE
1. **Bulk Seat Updates**:
- Select multiple seats
- Change properties:
- Status (block/unblock)
- Kind (upgrade/downgrade)
- Premium fee
2. **Individual Updates**:
- Click seat and edit
- Update window/aisle designation
- Modify bed position
##### BLOCK/UNBLOCK
1. **Block Seat**:
- Click "Block" action
- Reason dropdown:
- Maintenance
- Reserved
- Damaged
- Other
- Until date (optional)
- Reason notes
2. **Unblock Seat**:
- Click "Unblock" action
- Seat becomes available
##### SPECIAL OPERATIONS
**CSV Import**:
- Upload CSV with seat configurations
- Format: CoachID, Row, Column, Kind, etc.
- Bulk creates/updates seats
**CSV Export**:
- Export seat map as CSV
- Includes all properties
- For backup or analysis
---
### Classes (Seat Classes)
**Purpose**: Define and manage seat class types and pricing tiers
**Access Level**: Supervisor, Admin
**Icon**: Settings
#### Features Overview
```
┌──────────────────────────────┐
│ SEAT CLASSES MANAGEMENT │
├──────────────────────────────┤
│ ✓ Create Class Types │
│ ✓ Set Base Fares │
│ ✓ Define Fees │
│ ✓ Manage Availability │
│ ✓ Link Coaches │
└──────────────────────────────┘
```
#### Seat Class Structure
- **Name**: Class identifier (e.g., "Economy Regular")
- **Coach Type**: Associated coach type
- **Base Fare**: Per-km rate (in ETB cents)
- **Premium Fee**: Flat fee per passenger (in ETB cents)
- **Insurance Fee**: Flat fee per passenger (in ETB cents)
- **Active Status**: Available for booking
#### CRUD Operations
##### CREATE
1. **Click "Add Class"** button
2. **Fill Form**:
- **Name** (required): Unique class name
- **Coach Type** (required): Select type
- **Base Fare (ETB)** (required): Per-km rate
- **Premium Fee (ETB)**: Flat fee per passenger
- **Insurance Fee (ETB)**: Per passenger coverage fee
- **Active**: Toggle to enable/disable
3. **Save**: Click "Create Class"
**Example**:
```
Name: "Economy Regular"
Coach Type: "Passenger Coach"
Base Fare: 350 ETB (for full journey)
Premium Fee: 0 ETB
Insurance Fee: 5 ETB (per passenger)
Active: Yes
```
##### READ
1. **View Classes**:
- Table shows all seat classes
- Filter by coach type
- Search by name
2. **Columns**:
- Class Name
- Coach Type
- Base Fare (ETB)
- Premium Fee (ETB)
- Insurance Fee (ETB)
- Active Status
- Total Seats (across all coaches)
##### UPDATE
1. **Click "Edit"** on class
2. **Modify**:
- Update name (if not in use)
- Adjust base fare
- Update premium/insurance fees
- Toggle active status
3. **Save**: Click "Update Class"
4. **Impact**: Changes apply to new bookings only
##### DELETE
1. **Click "Delete"** on class
2. **Checks**:
- Bookings using this class
- Fare rules referencing it
- Seats assigned to it
3. **Confirm**: Only if minimal impact
#### Pricing Examples
**Economy Regular (Standard comfort)**
- Base: 350 ETB
- Premium: 0 ETB
- Insurance: 5 ETB
- Total per Adult: 355 ETB
**Economy Bed (Sleeper comfort)**
- Base: 490 ETB
- Premium: 50 ETB
- Insurance: 10 ETB
- Total per Adult: 550 ETB
**VIP Bed (Premium sleeper)**
- Base: 630 ETB
- Premium: 150 ETB
- Insurance: 15 ETB
- Total per Adult: 795 ETB
---
### Routes
**Purpose**: Define railway routes with ordered station stops
**Access Level**: Supervisor, Admin
**Icon**: Route
#### Features Overview
```
┌──────────────────────────────┐
│ ROUTES MANAGEMENT │
├──────────────────────────────┤
│ ✓ Create Routes │
│ ✓ Add Stops │
│ ✓ Set Stop Distances │
│ ✓ Configure Fare Rules │
│ ✓ Manage Routing │
└──────────────────────────────┘
```
#### Route Information
- **Code**: Route identifier (e.g., "ADD-DJI")
- **Name**: Route description
- **Stops**: Ordered list of stations
- **Distance**: Total route distance
- **Effective Date**: Start date
- **Active Status**: Available for scheduling
#### CRUD Operations
##### CREATE
1. **Click "Add Route"** button
2. **Fill Form**:
- **Code** (required): Route code
- **Name** (required): Route name
- **Effective From**: Start date
- **Effective Until**: End date (optional)
- **Active**: Toggle status
3. **Add Stops**:
- Click "Add Stop"
- Select station from dropdown
- Sequence auto-assigned or manual
- Enter distance from previous stop
4. **Save**: Click "Create Route"
##### READ
1. **View Routes**:
- Table shows all routes
- Filter by status
- Search by code or name
2. **Route Details**:
- Click route to expand
- Shows:
- All stops in sequence
- Cumulative distance
- Distance between stops
- Fare rules for route
3. **Columns**:
- Code
- Name
- Total Stops
- Total Distance
- Status Badge
- Active Status
##### UPDATE
1. **Click "Edit"** on route
2. **Modify Route**:
- Update name or description
- Change effective dates
- Toggle active status
3. **Manage Stops**:
- Add new stops
- Remove stops (if no bookings)
- Reorder stops (drag-and-drop)
- Update distances
4. **Save**: Click "Update Route"
##### DELETE
1. **Click "Delete"** on route
2. **Checks**:
- Active schedules using route
- Bookings on those schedules
3. **Confirm**: If no conflicts
#### Route Example
```
Code: ADD-DJI
Name: Addis Ababa to Djibouti Main Line
Stops:
1. Addis Ababa (ADD) - 0 km
2. Adama (ADA) - 100 km
3. Awash (AWS) - 50 km
4. Dire Dawa (DDA) - 80 km
5. Harar (HAR) - 100 km
6. Djibouti (DJI) - 280 km
Total Distance: 610 km
```
---
### Schedules
**Purpose**: Create and manage train schedules for specific routes
**Access Level**: Supervisor, Admin
**Icon**: Calendar
#### Features Overview
```
┌──────────────────────────────┐
│ SCHEDULES MANAGEMENT │
├──────────────────────────────┤
│ ✓ Create Individual Schedule │
│ ✓ Bulk Generate Schedules │
│ ✓ Edit Times & Assignments │
│ ✓ Manage Coach Assignments │
│ ✓ View Fare Breakdown │
│ ✓ Delete Schedules │
└──────────────────────────────┘
```
#### Schedule Information
- **Train**: Associated train
- **Route**: Assigned route
- **Departure**: Date and time
- **Arrival**: Date and time
- **Duration**: Calculated in minutes
- **Status**: Scheduled, Boarding, En Route, Arrived, Cancelled
- **Coaches**: Assigned coaches with positions
#### CRUD Operations
##### CREATE - Single Schedule
1. **Click "Create Schedule"** button
2. **Fill Form**:
- **Train** (required): Select train
- **Route** (required): Select route
- **Departure** (required): Date and time
- **Arrival** (required): Date and time
- **Status**: Scheduled (default)
3. **Assign Coaches**:
- Select coaches from list
- Checkboxes for multi-select
- Order matters (Position Number assigned)
4. **Save**: Click "Create Schedule"
##### CREATE - Bulk Generate
1. **Click "Bulk Generate"** button
2. **Configuration**:
- **Train** (required): Select train
- **Route** (required): Select route
- **Start Date & Time** (required): First departure
- **Duration (Hours)**: Trip length (default: 12)
- **Repeat Every (Days)**: Schedule frequency (default: 1)
- **For Next (Days)**: Generation period (default: 30)
- **Coaches** (optional): Pre-select coaches
3. **Preview**:
- Shows calculated number of schedules
- Example: 30 days ÷ 1 day = ~30 schedules
4. **Generate**: Click "Generate Schedules"
**Example**:
```
Train: Ethio Express
Route: ADD-DJI (610 km)
Start: 2026-06-20 08:00
Duration: 12 hours
Repeat: Every 1 day
For: 30 days
Result: 30 daily schedules from June 20-July 19
```
##### READ
1. **View Schedules**:
- Table shows all schedules
- Search by train, station, status
- Filter by date, route, train
2. **Schedule Details**:
- Train name and number
- From/To stations
- Departure/Arrival times
- Coach assignments
- Current status (badge)
3. **Columns**:
- Train
- From
- To
- Departure
- Arrival
- Coaches Count
- Status Badge
##### UPDATE
1. **Click "Edit"** on schedule
2. **Modify**:
- **Departure/Arrival Times**: Adjust times
- **Status**: Change to Boarding, En Route, Arrived, Cancelled
- **Coach Assignment**: Add/remove coaches
3. **Validation**:
- Arrival must be after departure
- Coach conflicts checked
4. **Save**: Click "Update Schedule"
##### DELETE
1. **Click "Delete"** on schedule
2. **Warning**: Shows
- Active bookings affected
- Seats will be released
- Cannot be undone
3. **Confirm**: Click "Delete" to proceed
4. **Cascade**: Automatically deletes:
- Associated seat holds
- Trip live status records
**Bulk Delete**:
1. **Select Multiple** schedules via checkboxes
2. **Click "Delete [N] Schedules"**
3. **Confirm**: Warning for bulk action
4. **Process**: All selected deleted with cascade
#### Viewing Fares
1. **In Schedule Row**:
- Shows calculated fares per seat class
- Displayed inline if space available
2. **Detailed Fare View**:
- Click schedule to expand
- Shows:
- All seat classes
- Base fare per class
- Premium/Insurance fees
- Total per passenger
---
## Financial Management
### Pricing & Fares
**Purpose**: Manage complex pricing with route segments and nationality support
**Access Level**: Admin, Supervisor
**Icon**: DollarSign
#### Features Overview
```
┌──────────────────────────────┐
│ PRICING & FARES MGMT │
├──────────────────────────────┤
│ ✓ View Schedule Fares │
│ ✓ Create Segment Fares │
│ ✓ Edit Fare Rules │
│ ✓ Delete Fare Rules │
│ ✓ Nationality Override │
│ ✓ Passenger Type Pricing │
└──────────────────────────────┘
```
#### Pricing Structure
**Fare Components**:
1. **Base Fare**: Per-km rate × distance
2. **Premium Fee**: Flat fee per passenger (e.g., 50 ETB)
3. **Insurance Fee**: Flat fee per passenger (e.g., 5 ETB)
4. **Total Fare**: Base + Premium + Insurance
**Passenger Categories**:
- **ADULT** (5+ years): Pays 100% of fare
- **CHILD** (<5 years): First child FREE, subsequent pay 100%
#### CRUD Operations - Schedule Fares
##### VIEW SCHEDULE FARES
1. **Select Schedule**:
- Dropdown to choose schedule
- Shows train, route, date
2. **View Fares**:
- Table shows calculated fares
- "Dynamically calculated" disclaimer
- Includes all active seat classes
3. **Columns**:
- Seat Class
- Passenger Type (All/ADULT/CHILD)
- Fare (ETB)
- Nationality (All/Specific)
- Route
- Valid From/Until
##### ADD OVERRIDE FARE
1. **Click "Add Fare Rule"** button
2. **Fill Form**:
- **Schedule** (optional): Leave empty for global
- **Route Code** (optional): e.g., "ADD-DJI"
- **Seat Class** (required): Select from list
- **Fare (ETB)** (required): Price in Ethiopian Birr
- **Passenger Type** (optional): ADULT or CHILD
- **Nationality** (optional): Ethiopian, Djiboutian, Other
- **Valid From** (required): Start date
- **Valid Until** (optional): End date
3. **Save**: Click "Save Fare Rule"
**Example Override**:
```
Seat Class: VIP Bed
Base Fare: 630 ETB (for full route)
Passenger Type: ADULT
Nationality: All
Valid From: 2026-06-01
Valid Until: 2026-08-31
Purpose: High season pricing
```
##### EDIT FARE RULE
1. **Click "Edit"** on fare row
2. **Modify Fields**:
- Update fare amount
- Change dates
- Adjust nationality/type filters
3. **Save**: Click "Update Fare Rule"
##### DELETE FARE RULE
1. **Click "Delete"** on fare row
2. **Confirm**: Click "Delete" in dialog
3. **Impact**: Removed immediately for new bookings
---
#### CRUD Operations - Segment Fares
Segment fares allow different pricing for different route segments.
##### VIEW SEGMENT FARES
1. **Select Route**:
- Dropdown to choose route
- Shows route code and name
- Displays all stops in sequence
2. **View Fares**:
- Table shows segment fare rules
- Organized by origin/destination stops
3. **Columns**:
- Segment (Stop sequence Sequence)
- Seat Class
- Passenger Type
- Fare (ETB)
- Nationality
- Valid From/Until
##### CREATE SEGMENT FARE
1. **Click "Add Fare Rule"** button
2. **Tab**: Switch to "Segment Fares"
3. **Fill Form**:
- **Origin Station** (required): From station dropdown
- **Destination Station** (required): To station dropdown
- **Seat Class** (required): Select class
- **Fare (ETB)** (required): Segment price
- **Passenger Type** (optional): ADULT or CHILD
- **Nationality** (optional): Specific nationality
- **Valid From** (required): Effective date
- **Valid Until** (optional): End date
4. **Validation**:
- Destination must be after origin
- Stations must be on route
5. **Save**: Click "Save Segment Fare Rule"
**Example Segment Fares**:
```
Route: ADD-DJI (5 stops)
Segment 1: ADD → ADA (100 km)
Economy: 150 ETB
VIP: 300 ETB
Segment 2: ADA → DDA (130 km)
Economy: 200 ETB
VIP: 400 ETB
Segment 3: DDA → DJI (280 km)
Economy: 250 ETB
VIP: 500 ETB
```
##### UPDATE SEGMENT FARE
1. **Click "Edit"** on segment row
2. **Modify**:
- Change stations (if no bookings)
- Update fare
- Adjust dates
3. **Save**: Click "Update Segment Fare Rule"
##### DELETE SEGMENT FARE
1. **Click "Delete"** on segment row
2. **Confirm**: Delete dialog
3. **Removed**: Immediately applied
#### Pricing Priority
When calculating fares, system checks in this order:
```
1. Segment Fare (nationality-specific if exists)
2. Segment Fare (generic for segment)
3. Schedule Fare (nationality-specific if exists)
4. Schedule Fare (generic for schedule)
5. Default Fare (350 ETB)
```
---
### Currencies
**Purpose**: Manage currency exchange rates for multi-currency display
**Access Level**: Admin
**Icon**: Banknote
#### Features Overview
```
┌──────────────────────────────┐
│ CURRENCIES MANAGEMENT │
├──────────────────────────────┤
│ ✓ View Exchange Rates │
│ ✓ Create New Rates │
│ ✓ Edit Rates │
│ ✓ Delete Rates │
│ ✓ Sync from API │
│ ✓ Set Effective Dates │
└──────────────────────────────┘
```
#### Supported Currencies
| Code | Currency | Symbol | Type |
|------|----------|--------|------|
| ETB | Ethiopian Birr | ብር | Transaction (base) |
| DJF | Djiboutian Franc | Fdj | Display |
| USD | US Dollar | $ | Display |
#### Currency Information
- **From Currency**: Source (usually ETB)
- **To Currency**: Target (DJF, USD, etc.)
- **Rate**: Exchange multiplier (e.g., 1 ETB = 0.018 USD)
- **Effective Date**: When rate takes effect
- **Source**: Manual or API
#### CRUD Operations
##### READ (List Exchange Rates)
1. **Access Currencies Page**:
- Click **Currencies** in Financial section
- Shows all active exchange rates
2. **Table Columns**:
- From Currency
- To Currency
- Exchange Rate
- Effective Date
- Source (Manual/API)
- Last Updated
3. **View Details**:
- Hover rate to see precision
- Historical rates available
##### CREATE
1. **Click "Add Currency Rate"** button
2. **Fill Form**:
- **From Currency** (required): ETB (usually)
- **To Currency** (required): DJF or USD
- **Exchange Rate** (required): Decimal value
- **Effective Date** (required): Date to apply
- **Source**: Manual (default) or API
3. **Save**: Click "Create Rate"
**Example**:
```
From: ETB
To: USD
Rate: 0.018
Effective: 2026-06-15
Source: Manual (updated daily)
```
##### UPDATE
1. **Click "Edit"** on exchange rate
2. **Modify**:
- Update rate value
- Change effective date
- Update source
3. **Save**: Click "Update Rate"
4. **Impact**: Applies to future bookings/display
##### DELETE
1. **Click "Delete"** on rate
2. **Confirm**: Dialog confirmation
3. **Impact**: Next rate in history used
#### Rate Conversion Example
**For a 3,500 ETB booking, display in different currencies**:
- **ETB**: 3,500 (1:1)
- **DJF**: 11,375 (1:3.25 rate)
- **USD**: 63 (1:0.018 rate)
---
### Payments
**Purpose**: Monitor payment transactions and handle refunds
**Access Level**: Supervisor, Admin
**Icon**: CreditCard
#### Features Overview
```
┌──────────────────────────────┐
│ PAYMENTS MANAGEMENT │
├──────────────────────────────┤
│ ✓ View All Payments │
│ ✓ Track Payment Status │
│ ✓ Process Refunds │
│ ✓ View Webhooks │
│ ✓ Transaction History │
│ ✓ Failed Payment Handling │
└──────────────────────────────┘
```
#### Payment Methods
Supported payment providers:
- **Telebirr**: Mobile money (Ethiopia)
- **CBE Birr**: Commercial Bank (Ethiopia)
- **eBirr**: E-wallet (Ethiopia)
- **Card**: Credit/Debit cards (VISA, Mastercard)
- **Wallet**: Internal EDR wallet
- **WAAFI**: Money transfer service
#### Payment Statuses
- **Requires Action**: Awaiting customer input
- **Processing**: Payment being processed
- **Succeeded**: Payment completed
- **Failed**: Payment declined
- **Cancelled**: Payment cancelled by user
- **Refunded**: Payment refunded to customer
#### CRUD Operations
##### READ (List Payments)
1. **Access Payments Page**:
- Click **Payments** in Financial section
- Shows all payment transactions
2. **Search & Filter**:
- **Search Box**: Booking reference, transaction ID
- **Status Filter**: Succeeded, Failed, Processing, Refunded
- **Method Filter**: Payment provider
- **Date Range**: Filter by transaction date
3. **Payment Information**:
- Booking Reference
- Payment Method
- Amount (ETB)
- Status (badge)
- Transaction ID
- Date & Time
##### VIEW DETAILS
1. **Click Payment Row**:
- Opens transaction detail modal
- Shows:
- Payment Intent ID
- Booking Information
- Amount & Currency
- Method & Provider
- Provider Transaction ID
- Status & Timeline
- Webhook History
##### PROCESS REFUND
1. **On Failed/Completed Payment**:
- Click "Process Refund" action
- Dialog opens for confirmation
2. **Refund Form**:
- **Amount**: Pre-filled or custom
- **Reason**: Dropdown (Cancellation, Adjustment, Error, etc.)
- **Notes**: Optional explanation
3. **Process**: Click "Process Refund"
4. **Confirmation**: Shows refund processing
**Refund Status**:
- **Pending**: Awaiting processor
- **Processing**: In transit
- **Completed**: Credited to customer
- **Failed**: Retry or manual intervention
##### WEBHOOK MANAGEMENT
1. **View Webhooks**:
- Click "Webhook History" tab
- Shows payment provider callbacks
2. **Webhook Details**:
- Event timestamp
- Webhook payload
- Processing status
- Error details (if failed)
---
### Promo Codes
**Purpose**: Create and manage promotional discount codes
**Access Level**: Admin, Supervisor
**Icon**: Gift
#### Features Overview
```
┌──────────────────────────────┐
│ PROMO CODES MANAGEMENT │
├──────────────────────────────┤
│ ✓ Create Promo Codes │
│ ✓ Set Discount Types │
│ ✓ Configure Validity │
│ ✓ Edit Codes │
│ ✓ Deactivate Codes │
│ ✓ Track Usage │
└──────────────────────────────┘
```
#### Promo Code Information
- **Code**: Unique promotional code (e.g., "SUMMER20")
- **Discount Type**: Percentage or fixed amount
- **Value**: Discount percentage (%) or ETB amount
- **Valid Until**: Expiration date
- **Active Status**: Available for use
- **CTA Label**: Button text (optional)
#### CRUD Operations
##### CREATE
1. **Click "Add Promo Code"** button
2. **Fill Form**:
- **Code** (required): Unique code (uppercase)
- **Title**: Display title
- **Subtitle**: Promotional message
- **Discount Type** (required): Percentage or Amount
- **Value** (required): Discount % or ETB amount
- **Valid Until** (required): Expiration date
- **CTA Label** (optional): Button text
- **Deep Link** (optional): App link
- **Active**: Toggle status
3. **Save**: Click "Create Promo Code"
**Example**:
```
Code: SUMMER20
Title: Summer Getaway
Discount Type: Percentage
Value: 20
Valid Until: 2026-08-31
Active: Yes
```
##### READ (List Codes)
1. **View Promo Codes**:
- Table shows all promo codes
- Filter by status (Active/Inactive)
- Search by code
2. **Columns**:
- Code
- Title
- Discount (% or ETB)
- Valid Until
- Status Badge
- Total Uses
- Savings Generated
##### UPDATE
1. **Click "Edit"** on promo code
2. **Modify**:
- Update title/subtitle
- Change discount value
- Extend/shorten validity
- Toggle active status
3. **Save**: Click "Update Promo Code"
##### DELETE/DEACTIVATE
1. **Click "Delete"** on code
2. **Options**:
- **Archive**: Keep for audit, disable for new bookings
- **Delete**: Remove completely
3. **Confirm**: Dialog confirmation
4. **Impact**: Already used bookings keep discount
#### Usage Tracking
1. **View Code Usage**:
- Click code to expand
- Shows:
- Total times used
- Total discount dispensed
- Recent applications
2. **Analytics**:
- Revenue impact
- Passenger uptake
- Peak usage periods
---
## Customer Services
### Loyalty Program
**Purpose**: Manage passenger loyalty tiers and rewards
**Access Level**: Agent, Supervisor, Admin
**Icon**: Gift
#### Features Overview
```
┌──────────────────────────────┐
│ LOYALTY PROGRAM MANAGEMENT │
├──────────────────────────────┤
│ ✓ View Loyalty Accounts │
│ ✓ Check Points Balance │
│ ✓ Manage Tier Status │
│ ✓ Adjust Points │
│ ✓ Manage Rewards │
│ ✓ View History │
└──────────────────────────────┘
```
#### Loyalty Tiers
| Tier | Points Required | Benefits |
|------|-----------------|----------|
| **BRONZE** | 0-999 | Standard benefits |
| **SILVER** | 1,000-2,999 | +5% points bonus |
| **GOLD** | 3,000-4,999 | +10% points bonus |
| **PLATINUM** | 5,000+ | +15% points bonus, Priority support |
#### Points Earning
- **Per Booking**: 1 point per 100 ETB spent
- **Bonus**: Tier multiplier (5-15%)
- **Promotions**: Additional bonus campaigns
- **Expiry**: Annual expiration if inactive
#### CRUD Operations
##### READ (View Accounts)
1. **Access Loyalty Page**:
- Click **Loyalty Program** in Customer Services
- Shows all passenger loyalty accounts
2. **Search & Filter**:
- **Search**: Passenger name or email
- **Tier Filter**: BRONZE, SILVER, GOLD, PLATINUM
- **Sort**: Points balance, tier status, activity
3. **Account Information**:
- Passenger Name
- Current Tier (badge)
- Points Balance
- Lifetime Points
- Last Activity
- Member Since
##### VIEW DETAILS
1. **Click Account Row**:
- Opens loyalty detail modal
- Shows:
- Account information
- Points balance breakdown
- Tier history
- Redemption history
- Available rewards
2. **Points Breakdown**:
- Current balance
- Pending expiry points
- Tier multiplier applied
##### UPDATE ACCOUNT
1. **Manual Point Adjustment** (Admin only):
- Click "Adjust Points" on account
- Dialog opens
- Enter points to add/subtract
- Reason dropdown (Bonus, Correction, Promotion, etc.)
- Click "Apply"
2. **Tier Management**:
- System auto-promotes/demotes based on points
- Manual override available (Admin)
##### MANAGE REWARDS
1. **View Available Rewards**:
- Shows reward catalog
- Points cost per reward
- Availability
2. **Assign Rewards**:
- Select reward from list
- Specify quantity
- Click "Grant Reward"
- Confirmation email sent to passenger
---
### Support Center
**Purpose**: Manage customer support tickets and conversations
**Access Level**: Agent, Supervisor, Admin
**Icon**: MessageSquare
#### Features Overview
```
┌──────────────────────────────┐
│ SUPPORT CENTER MGMT │
├──────────────────────────────┤
│ ✓ View Support Tickets │
│ ✓ Respond to Inquiries │
│ ✓ Manage Conversations │
│ ✓ FAQ Management │
│ ✓ Live Chat Monitoring │
│ ✓ Ticket Analytics │
└──────────────────────────────┘
```
#### Support Ticket Structure
- **Ticket ID**: Unique identifier
- **Status**: Open, Resolved, Closed
- **Passenger**: Linked passenger
- **Subject**: Inquiry topic
- **Messages**: Conversation thread
- **Assigned Agent**: Support staff member
- **Created Date**: Ticket creation
- **Resolved Date**: When closed (if applicable)
#### CRUD Operations
##### READ (List Tickets)
1. **Access Support Page**:
- Click **Support Center** in Customer Services
- Shows all support tickets
2. **View Options**:
- **Tab 1**: Open Tickets (unresolved)
- **Tab 2**: All Conversations (open & closed)
- **Tab 3**: FAQ Management
3. **Search & Filter**:
- **Status**: Open, Resolved, Closed
- **Assigned To**: Support agent filter
- **Search**: Ticket ID, passenger name
- **Date Range**: Filter by creation date
4. **Ticket List Columns**:
- Ticket ID
- Passenger Name
- Subject
- Status Badge
- Last Message
- Created Date
- Assigned Agent
##### VIEW CONVERSATION
1. **Click Ticket Row**:
- Opens conversation thread modal
- Shows message history
2. **Conversation Details**:
- All messages in chronological order
- Sender identification (Agent/Customer)
- Timestamps
- Attachments (if any)
3. **Message Sidebar**:
- Passenger info
- Ticket metadata
- Linked bookings
##### UPDATE (Add Response)
1. **Click Ticket**:
- View current conversation
2. **Reply to Ticket**:
- Type message in compose area
- Optionally add attachments
- Click "Send Response"
- Message sent to passenger
3. **Status Management**:
- Mark as "Resolved"
- Change assignment
- Add notes
##### CLOSE TICKET
1. **Mark as Resolved**:
- Click "Mark Resolved" button
- Passenger notified
- Ticket moved to closed
2. **Reopen**:
- If passenger responds, auto-reopens
- Or manually reopen if needed
#### FAQ Management
1. **View FAQ Articles**:
- Tab: "FAQ Management"
- Shows all published FAQs
2. **Create FAQ**:
- Click "Add FAQ Article"
- Select category
- Enter question & answer
- Publish
3. **Edit/Delete**:
- Edit existing articles
- Archive outdated articles
---
### Notifications
**Purpose**: Configure and send notifications to passengers
**Access Level**: Supervisor, Admin
**Icon**: Bell
#### Features Overview
```
┌──────────────────────────────┐
│ NOTIFICATIONS MANAGEMENT │
├──────────────────────────────┤
│ ✓ View Notification Log │
│ ✓ Configure Templates │
│ ✓ Send Manual Notifications │
│ ✓ Set Preferences │
│ ✓ View Delivery Status │
│ ✓ Analytics │
└──────────────────────────────┘
```
#### Notification Channels
- **Email**: Direct email delivery
- **SMS**: Text message delivery
- **Push Notification**: Mobile app push
- **In-App**: Platform notifications
#### Notification Templates
Pre-configured templates for:
- **Booking Confirmation**: "Your booking is confirmed"
- **Ticket Issued**: "Your ticket is ready"
- **Payment Received**: "Payment received successfully"
- **Trip Reminder**: "Your trip is tomorrow"
- **Delay Alert**: "Trip delayed by X minutes"
- **Promo**: Special offers and discounts
#### CRUD Operations
##### READ (View Notifications)
1. **Access Notifications**:
- Click **Notifications** in Customer Services
- Shows notification log
2. **Search & Filter**:
- **Recipient**: Passenger name/email
- **Status**: Sent, Failed, Pending
- **Channel**: Email, SMS, Push
- **Date Range**: Filter by send date
3. **Notification Details**:
- Recipient
- Template used
- Channel(s)
- Status
- Sent Date/Time
- Delivery confirmation
##### SEND MANUAL NOTIFICATION
1. **Click "Send Notification"** button
2. **Select Recipients**:
- Specific passenger or group
- Filters: Booking status, tier, loyalty, etc.
3. **Choose Template**:
- Select from templates
- Or custom message
4. **Configure**:
- Select channels (Email, SMS, Push)
- Schedule send time
- Add personalization
5. **Preview**: Show how it looks
6. **Send**: Click "Send Notification"
**Example**:
```
Recipients: All PLATINUM tier passengers
Template: Special Promo - 15% Discount
Channels: Email, Push Notification
Send: Immediately
```
##### MANAGE TEMPLATES
1. **View Templates Tab**:
- Shows all notification templates
- Filter by channel
2. **Edit Template**:
- Click template to edit
- Modify subject/body
- Add placeholders {{name}}, {{bookingRef}}
- Save
3. **Create New Template**:
- Click "Add Template"
- Template code
- Channels (multi-select)
- Subject & body
- Variables/placeholders
- Save
##### DELIVERY TRACKING
1. **View Delivery Status**:
- Notification details show status per channel
- Timestamp for each delivery
2. **Retry Failed**:
- Failed notifications show retry option
- Click "Retry" to resend
- Max retries: 3
---
## Security & Compliance
### Audit Logs
**Purpose**: Monitor all system activities for compliance and security
**Access Level**: Supervisor, Admin
**Icon**: AlertTriangle
#### Features Overview
```
┌──────────────────────────────┐
│ AUDIT LOGS MGMT │
├──────────────────────────────┤
│ ✓ View All Activities │
│ ✓ Filter by User │
│ ✓ Search by Entity │
│ ✓ View Change History │
│ ✓ Export Audit Trail │
│ ✓ Compliance Reports │
└──────────────────────────────┘
```
#### Logged Activities
- **User Actions**: Login, logout, access
- **Data Changes**: Create, update, delete operations
- **Sensitive Actions**: Payment processing, cancellations, refunds
- **Authentication**: Failed logins, password resets
- **System Events**: Configuration changes, deployments
#### Audit Record Structure
- **Timestamp**: When action occurred
- **User**: Who performed action
- **Action**: Type of action (Create, Update, Delete)
- **Entity**: What was affected (Booking, Payment, etc.)
- **Entity ID**: ID of affected record
- **Old Data**: Previous values (for updates)
- **New Data**: New values (for updates)
- **IP Address**: Source IP
- **User Agent**: Browser/client info
#### CRUD Operations
##### READ (View Audit Log)
1. **Access Audit Logs**:
- Click **Audit Logs** in Security & Compliance
- Shows all logged activities
2. **Search & Filter**:
- **User Filter**: Specific user/agent
- **Action Filter**: Create, Update, Delete, View
- **Entity Filter**: Booking, Payment, Passenger, etc.
- **Date Range**: Filter by timestamp
- **Search**: Entity ID or description
3. **Log Columns**:
- Timestamp
- User (Name, Email)
- Action (badge)
- Entity Type
- Entity ID
- Summary
- IP Address
##### VIEW DETAILS
1. **Click Log Entry**:
- Opens full audit detail modal
- Shows:
- All metadata
- Old vs New values (side-by-side)
- Complete change log
- IP/User Agent details
2. **Change Visualization**:
- Highlights changed fields
- Shows before/after values
- Timestamp precision
##### EXPORT AUDIT TRAIL
1. **Click "Export"** button
2. **Select Options**:
- **Format**: CSV, JSON, PDF
- **Date Range**: Custom range
- **Filters**: Apply current filters
3. **Download**: File starts downloading
4. **Compliance**: Keep for regulatory requirements
##### AUDIT RETENTION
- **Active Logs**: 12 months
- **Archived**: 7 years (for compliance)
- **Automatic Archival**: Monthly process
- **GDPR Compliance**: Subject to retention policies
---
### Fraud Detection
**Purpose**: Monitor and prevent fraudulent activities
**Access Level**: Supervisor, Admin
**Icon**: Shield
#### Features Overview
```
┌──────────────────────────────┐
│ FRAUD DETECTION MGMT │
├──────────────────────────────┤
│ ✓ View Fraud Alerts │
│ ✓ Configure Rules │
│ ✓ Block Suspicious Users │
│ ✓ Review Flagged Bookings │
│ ✓ Adjust Risk Thresholds │
│ ✓ Incident Response │
└──────────────────────────────┘
```
#### Fraud Detection Rules
- **Rapid Bookings**: Multiple bookings in short timeframe
- **High Value**: Unusually large transactions
- **Geographic Anomaly**: Bookings from unlikely locations
- **Payment Failures**: Multiple failed payment attempts
- **Duplicate Identity**: Same ID used multiple times
- **Unusual Pattern**: Deviation from normal behavior
#### Alert Severity
- **LOW**: Review before processing
- **MEDIUM**: Requires manual approval
- **HIGH**: Immediate blocking recommended
#### CRUD Operations
##### READ (View Alerts)
1. **Access Fraud Detection**:
- Click **Fraud Detection** in Security & Compliance
- Shows active fraud alerts
2. **Alert List**:
- Filter by severity (Low, Medium, High)
- Filter by status (Open, Acknowledged, Resolved)
- Search by user ID, booking ref
3. **Alert Information**:
- Alert ID
- User/Passenger
- Severity (badge color)
- Event Type (rule triggered)
- Timestamp
- Status
##### VIEW ALERT DETAILS
1. **Click Alert Row**:
- Opens alert detail modal
- Shows:
- Full context information
- Triggering rule details
- Rules triggered list
- Recommended action
- User history
2. **Risk Assessment**:
- Risk score (0-100)
- Contributing factors
- Historical pattern
##### ACKNOWLEDGE ALERT
1. **Click "Acknowledge"**:
- Alert marked as reviewed
- Timestamp recorded
- Can still take action
2. **Add Notes**:
- Click "Add Investigation Notes"
- Document findings
- Save
##### TAKE ACTION
**Allow Booking**:
1. Click "Allow" button
2. Booking proceeds despite alert
3. Logged for audit
**Block User**:
1. Click "Block User" button
2. Enter block duration
3. Reason dropdown:
- Fraud Suspected
- Multiple Failed Payments
- Suspicious Pattern
- Manual Review Needed
4. Confirm
5. User cannot book during block period
**Escalate**:
1. Click "Escalate to Admin"
2. Adds to priority queue
3. Admin reviews and decides
##### MANAGE FRAUD RULES
1. **View Rules Tab**:
- Shows all active fraud detection rules
- Rule thresholds
- Triggering conditions
2. **Edit Rules**:
- Click rule to edit
- Adjust threshold values
- Change rule status (Active/Inactive)
- Save
**Example Rules**:
```
Rule: Rapid Bookings
Condition: >5 bookings in 1 hour
Severity: Medium
Action: Flag for review
Rule: High Value Transaction
Condition: Amount > 100,000 ETB
Severity: Low
Action: Monitor
Rule: Failed Payments
Condition: >3 failed in 24 hours
Severity: High
Action: Block user
```
---
### Verifayda Integration
**Purpose**: Manage Ethiopian national ID verification service
**Access Level**: Admin
**Icon**: UserCheck
#### Features Overview
```
┌──────────────────────────────┐
│ VERIFAYDA INTEGRATION MGMT │
├──────────────────────────────┤
│ ✓ View Verification Status │
│ ✓ Verify Manual ID │
│ ✓ Check Verification Log │
│ ✓ Manage Integration │
│ ✓ Configuration │
│ ✓ Test Integration │
└──────────────────────────────┘
```
#### Verifayda Overview
- **Service**: Ethiopian government national ID verification
- **Real-time**: Live verification with government database
- **Privacy**: National IDs NOT stored (policy compliant)
- **Non-Ethiopian**: Passport alternative (no verification)
#### Verification Status
- **Verified**: Successfully matched with government DB
- **Unverified**: Failed or not attempted
- **Pending**: In-progress verification
- **Failed**: Temporary error, can retry
#### CRUD Operations
##### READ (View Verifications)
1. **Access Verifayda Page**:
- Click **Verifayda Integration** in Security & Compliance
- Shows verification history
2. **Search & Filter**:
- **Search**: Passenger name, national ID
- **Status**: Verified, Unverified, Pending, Failed
- **Date Range**: Filter by verification date
3. **Verification Record**:
- Passenger Name
- National ID (masked)
- Verification Status (badge)
- Verified Name (from government DB)
- Date of Birth
- Nationality
- Verified Date
##### VERIFY NATIONAL ID
1. **Manual Verification**:
- Click "Verify ID" button
- Enter National ID number
- Click "Verify"
2. **Verification Process**:
- Sends to Verifayda API
- Checks against government database
- Returns: Name, DOB, Nationality
3. **Result**:
- **Success**: Shows verified data
- **Failed**: Shows error reason
- **Retry**: Can attempt again
##### VIEW VERIFICATION DETAILS
1. **Click Verification Record**:
- Opens detail modal
- Shows:
- Verification timestamp
- Request payload
- Response data
- Verification match score
- Linked bookings
---
## Analytics & Reports
### Reports
**Purpose**: View comprehensive analytics and business reports
**Access Level**: Supervisor, Admin
**Icon**: BarChart3
#### Features Overview
```
┌──────────────────────────────┐
│ REPORTS ANALYTICS │
├──────────────────────────────┤
│ ✓ Revenue Reports │
│ ✓ Occupancy Analysis │
│ ✓ Agent Performance │
│ ✓ Passenger Analytics │
│ ✓ Custom Date Range │
│ ✓ Export Reports │
└──────────────────────────────┘
```
#### Report Types
**Revenue Report**:
- Total revenue (ETB)
- Revenue by route
- Revenue by seat class
- Revenue by payment method
- Trends over time
- Promo code impact
**Occupancy Report**:
- Seat occupancy %
- Capacity utilization
- Empty seats cost
- Occupancy by route
- Occupancy trends
- Peak/off-peak analysis
**Agent Performance**:
- Counter bookings
- Commission earned
- Sales by period
- Customer satisfaction
- Performance ranking
**Passenger Analytics**:
- New passengers
- Repeat passenger rate
- Loyalty program stats
- Regional distribution
- Device/platform breakdown
#### CRUD Operations
##### GENERATE REPORT
1. **Access Reports Page**:
- Click **Reports** in Analytics & Reports
- Multiple report options available
2. **Select Report Type**:
- Revenue
- Occupancy
- Agent Performance
- Passenger Analytics
3. **Configure Report**:
- **Date Range**: From/To dates (required)
- **Route Filter** (optional): Specific route or all
- **Filters** (optional): Additional criteria
- **Group By**: Day, Week, Month, Year
4. **Generate**: Click "Generate Report"
5. **Display**: Charts and tables appear
##### VIEW REPORT DETAILS
1. **Charts**:
- Line charts for trends
- Bar charts for comparisons
- Pie charts for distribution
2. **Tables**:
- Detailed data rows
- Sortable columns
- Pagination for large datasets
3. **Export Options**:
- Download as PDF
- Download as Excel
- Download as CSV
- Schedule recurring export
##### CUSTOMIZE REPORT
1. **Add Metrics**:
- Click "Add Metric"
- Select from available metrics
- Charts update
2. **Change Date Range**:
- Click date range selector
- Pick new dates
- Report regenerates
3. **Save Report**:
- Click "Save Report"
- Name the report
- Can rerun with one click
---
### Operational Reports
**Purpose**: View system operational metrics and performance
**Access Level**: Supervisor, Admin
**Icon**: FileText
#### Features Overview
```
┌──────────────────────────────┐
│ OPERATIONAL REPORTS MGMT │
├──────────────────────────────┤
│ ✓ System Health Status │
│ ✓ API Performance │
│ ✓ Error Rates │
│ ✓ Data Sync Status │
│ ✓ Scheduled Reports │
│ ✓ Export History │
└──────────────────────────────┘
```
#### Operational Metrics
- **System Uptime**: Percentage
- **API Response Time**: Average ms
- **Error Rate**: % of failed requests
- **Data Sync Status**: Last sync time
- **Scheduled Jobs**: Status of cron tasks
- **Storage Usage**: Database size, disk usage
#### CRUD Operations
##### READ (View Operations Status)
1. **Access Operational Reports**:
- Click **Operational Reports** in Analytics & Reports
- Shows current system health
2. **Health Dashboard**:
- System status indicators
- Key metrics
- Recent issues (if any)
3. **Performance Metrics**:
- API response times
- Database query times
- Error logs
- Job execution times
---
## System Administration
### Agent Operations
**Purpose**: Manage agent counter bookings and shifts
**Access Level**: Supervisor, Admin
**Icon**: Briefcase
#### Features Overview
```
┌──────────────────────────────┐
│ AGENT OPERATIONS MGMT │
├──────────────────────────────┤
│ ✓ Create Bookings │
│ ✓ Manage Shifts │
│ ✓ Track Commissions │
│ ✓ Reconciliation │
│ ✓ Cash Management │
│ ✓ Agent Performance │
└──────────────────────────────┘
```
#### Agent Functions
- **Counter Booking**: Create bookings on behalf of passengers
- **Shift Management**: Open/close shifts and cash handling
- **Commission Tracking**: Monitor earnings
- **Reconciliation**: Daily settlement
#### CRUD Operations
##### CREATE COUNTER BOOKING
1. **Access Agent Bookings**:
- Click **Agent Operations** in System section
- Click "New Booking" button
2. **Booking Form**:
- **Select Schedule**: Choose train and date
- **Select Seats**: Pick available seats
- **Add Passengers**: Enter passenger details
- **Select Class**: Seat class preference
- **Apply Promo**: If applicable
3. **Payment**:
- **Payment Method**: Cash, Card, Check, etc.
- **Amount Received** (for cash)
- **Change Calculation**: Auto-calculated
4. **Process**:
- Click "Create Booking"
- Confirmation with booking reference
- Ticket printed or emailed
##### MANAGE SHIFTS
1. **Open Shift**:
- Click "Open Shift"
- Enter opening balance (cash)
- Click "Start Shift"
2. **Close Shift**:
- Click "Close Shift"
- Verify final cash
- Enter closing balance
- Reconcile differences
- Click "Complete Shift"
3. **Shift Details**:
- Opening/Closing Balance
- Total Bookings
- Total Sales
- Commission Earned
- Cash Count Variance
##### VIEW AGENT PERFORMANCE
1. **Agent Dashboard**:
- Total bookings (period)
- Total revenue generated
- Average booking value
- Commission earned
- Performance ranking
---
### User Management
**Purpose**: Manage system users and access control
**Access Level**: Admin
**Icon**: Users
#### Features Overview
```
┌──────────────────────────────┐
│ USER MANAGEMENT MGMT │
├──────────────────────────────┤
│ ✓ Create Users │
│ ✓ Assign Roles │
│ ✓ Manage Permissions │
│ ✓ Reset Passwords │
│ ✓ Deactivate/Activate │
│ ✓ Audit User Activity │
└──────────────────────────────┘
```
#### User Roles
- **AGENT**: Counter operations
- **SUPERVISOR**: Oversight and decisions
- **ADMIN**: Full access
- **STAFF**: Limited specific access
#### CRUD Operations
##### CREATE USER
1. **Click "Add User"** button
2. **Fill Form**:
- **Email** (required): Unique email
- **Full Name** (required): Display name
- **Phone**: Contact number
- **Role** (required): Select role
- **Department**: Optional
- **Status**: Active/Inactive
3. **Save**: Click "Create User"
4. **Auto-email**: Temporary password sent to email
##### READ (List Users)
1. **View Users**:
- Table shows all users
- Filter by role
- Search by name/email
2. **Columns**:
- Name
- Email
- Role (badge)
- Status
- Last Login
- Created Date
##### UPDATE
1. **Click User Row**:
- Opens user detail modal
- Shows profile & activity
2. **Modify**:
- Update name/phone
- Change role
- Update department
- Toggle active status
3. **Password Reset**:
- Click "Reset Password"
- Temporary password generated
- Sent to user email
##### DELETE
1. **Click "Delete"** on user
2. **Confirm**: Warns about implications
3. **Options**:
- **Deactivate**: Keep records, disable access
- **Delete**: Remove user completely
---
### Settings
**Purpose**: Configure system-wide settings and preferences
**Access Level**: Admin
**Icon**: Settings
#### Features Overview
```
┌──────────────────────────────┐
│ SETTINGS MGMT │
├──────────────────────────────┤
│ ✓ Application Settings │
│ ✓ Email Configuration │
│ ✓ Payment Provider Setup │
│ ✓ API Integration │
│ ✓ Notification Templates │
│ ✓ System Preferences │
└──────────────────────────────┘
```
#### Configuration Sections
**General Settings**:
- Application name
- Logo and branding
- Timezone
- Default currency
- Language
**Email Settings**:
- SMTP server
- Sender email
- Email templates
- Notification preferences
**Payment Settings**:
- Provider credentials
- API keys
- Webhook endpoints
- Currency configuration
**API Integration**:
- Verifayda setup
- External service integration
- API rate limits
- Webhook configuration
#### CRUD Operations
##### UPDATE SETTINGS
1. **Navigate to Settings**:
- Click **Settings** in System section
2. **Select Category**:
- General, Email, Payments, API, etc.
3. **Modify Settings**:
- Update configuration values
- Test connections (where applicable)
- Save changes
4. **Confirmation**:
- Settings updated with timestamp
- Changes take effect immediately
- Audit logged
---
## Common Features
### Data Table Features
**All data tables include**:
1. **Search & Filter**:
- Real-time search box
- Multiple filter dropdowns
- Date range pickers
- Status/category filters
2. **Sorting**:
- Click column headers to sort
- Sort order toggle (Asc/Desc)
- Multi-column sort (optional)
3. **Pagination**:
- Previous/Next buttons
- Jump to page input
- Page size selector
- Total record count
4. **Bulk Actions**:
- Checkbox selection
- Select All / Deselect All
- Bulk operations (Delete, Export, Update)
5. **Export**:
- Export visible columns
- Export filtered results
- Format options (CSV, Excel, JSON)
- Scheduled exports
### Modal Dialog Features
**All modals include**:
1. **Title Bar**:
- Clear action title
- Close button (X)
2. **Form Fields**:
- Required field indicators (*)
- Field validation
- Error messages
- Helpful tooltips
3. **Action Buttons**:
- Primary action (Create, Save, Update)
- Secondary action (Cancel)
- Danger action (Delete)
- Loading state with spinner
4. **Responsive Design**:
- Mobile-friendly layout
- Scrollable content areas
- Optimized for all screen sizes
### Status Badges
**Color-coded status indicators**:
- **Green**: Success, Active, Confirmed
- **Yellow**: Warning, Pending, Processing
- **Blue**: Information, Scheduled
- **Red**: Error, Failed, Cancelled
- **Gray**: Inactive, Draft
### Keyboard Shortcuts
**Common shortcuts**:
| Shortcut | Action |
|----------|--------|
| `Ctrl/Cmd + K` | Search/Quick filter |
| `Ctrl/Cmd + S` | Save form |
| `Esc` | Close modal/dialog |
| `Tab` | Navigate form fields |
| `Enter` | Submit form |
---
## Best Practices
### Data Entry
1. **Always verify** information before submitting
2. **Use dropdown** selections when available
3. **Check date formats** match system requirements
4. **Include descriptive** notes for manual entries
5. **Save frequently** during long forms
### Booking Management
1. **Verify passenger** identity before processing
2. **Confirm payment method** before transaction
3. **Double-check seat** assignments
4. **Note any special** passenger requirements
5. **Provide clear** confirmation references
### Financial Operations
1. **Reconcile daily** at shift end
2. **Verify exchange rates** before currency conversion
3. **Keep refund** documentation
4. **Review fraud** alerts carefully
5. **Audit payment** discrepancies
### Security
1. **Lock screen** when away from desk
2. **Use strong passwords** (min. 12 characters)
3. **Enable two-factor** authentication
4. **Report suspicious** activity immediately
5. **Clear browser** cache after sensitive operations
### Compliance
1. **Follow audit** procedures
2. **Retain records** per retention policy
3. **Document all** manual overrides
4. **Report data** discrepancies
5. **Keep credentials** confidential
---
## Support & Help
### Getting Help
**In-App Help**:
- Hover over fields for tooltips
- Click "?" icons for context help
- Use "Help" menu in navigation
**Documentation**:
- This comprehensive guide
- Video tutorials (under production)
- FAQ section in Support Center
**Contact Support**:
- **Email**: support@edr-platform.com
- **Phone**: +251-XXX-XXX-XXXX
- **Chat**: Available during business hours
- **Ticket System**: Create support ticket in app
### Troubleshooting
**Issue: Cannot login**
- Verify email/password
- Check caps lock
- Try password reset
- Contact admin if locked out
**Issue: Page not loading**
- Refresh browser (F5)
- Clear browser cache
- Try different browser
- Check internet connection
**Issue: Data not saving**
- Verify all required fields
- Check for error messages
- Review audit logs
- Try again or contact support
---
## Change Log
### Version 1.0.0 (January 15, 2026)
- **Complete Platform Release** - Full-featured passenger management system
- **Excess Luggage Management** - Complete boarding baggage handling with agent tools and passenger self-pay options
- **Travel Packages** - Pilgrimage and group travel packages with tiered pricing, capacity management, and inquiry handling
- **System Health Monitoring** - Real-time API health checks with liveness, readiness, and performance metrics
- **System Configuration** - Centralized config management with feature flags, rate limiting, and operational controls
- **Package Inquiries** - Dedicated management for package booking inquiries with status tracking
- **Boarding Management** - Gate operations, passenger processing, and boarding workflow tools
- **Advanced Fare Configuration** - Dynamic fare management with complex pricing rules and segment-based pricing
- **Payment Methods Configuration** - Multi-provider payment setup and management interface
- **Enhanced Settings** - Improved settings interface with tabbed sections and live configuration updates
- **Multi-currency support** - ETB, DJF, USD with real-time exchange rates
- **Verifayda 2.0 integration** - Ethiopian national ID verification
- **Age-based pricing** - ADULT/CHILD categories with free first child policy
- **Segment fare rules** - Complex pricing with nationality-specific rates
---
## Appendix
### Acronyms & Abbreviations
| Acronym | Meaning |
|---------|---------|
| ETB | Ethiopian Birr |
| DJF | Djiboutian Franc |
| USD | US Dollar |
| EDR | Ethio-Djibouti Railway |
| SMS | Short Message Service |
| WCAG | Web Content Accessibility Guidelines |
| CSV | Comma-Separated Values |
| API | Application Programming Interface |
| SMTP | Simple Mail Transfer Protocol |
| CRUD | Create, Read, Update, Delete |
| IAM | Identity and Access Management |
### Currency Codes
| Code | Currency | Country |
|------|----------|---------|
| ETB | Ethiopian Birr | Ethiopia |
| DJF | Djiboutian Franc | Djibouti |
| USD | US Dollar | United States |
### Timezone Reference
| Timezone | Region | UTC Offset |
|----------|--------|------------|
| Africa/Addis_Ababa | Ethiopia | UTC+3 |
| Africa/Djibouti | Djibouti | UTC+3 |
| UTC | Coordinated Universal Time | UTC+0 |
---
**For more information or feedback, please contact the development team or visit the support portal.**
---
## Enhanced Features
### Excess Luggage
**Purpose**: Manage excess baggage charges at boarding with agent tools and passenger self-pay
**Access Level**: Agent, Supervisor, Admin
**Icon**: Package
#### Features Overview
```
┌──────────────────────────────┐
│ EXCESS BAGGAGE MANAGEMENT │
├──────────────────────────────┤
│ ✓ View Excess Charges │
│ ✓ Search by Booking Ref │
│ ✓ Track Payment Status │
│ ✓ Waive Charges │
│ ✓ Resend Payment Links │
│ ✓ Agent Cash Collection │
└──────────────────────────────┘
```
#### Excess Luggage Process
1. **At Boarding**: Agent weighs passenger baggage
2. **If Excess**: Agent creates charge in system
3. **Payment Options**:
- Passenger self-pay via mobile link
- Agent collects cash on-the-spot
4. **Completion**: Passenger boards after payment
#### Charge Statuses
- **PENDING**: Awaiting passenger payment (5-minute link expiry)
- **PAID**: Successfully paid via mobile payment
- **CASH_COLLECTED**: Agent collected cash payment
- **EXPIRED**: Payment link expired
- **WAIVED**: Supervisor waived the charge
#### CRUD Operations
##### READ (List Charges)
1. **Access Excess Luggage Page**:
- Click **Excess Luggage** in Enhanced Features section
- Shows all baggage charges
2. **Search & Filter**:
- **Search Box**: Filter by booking reference
- **Status Filter**: PENDING, PAID, CASH_COLLECTED, EXPIRED, WAIVED
- **Date Range**: Filter by creation date
3. **Charge Information**:
- Booking Reference
- Excess Weight (kg)
- Fee per kg
- Total Amount (ETB)
- Payment Status
- Contact Information
- Expiry Time
##### MANAGE CHARGES
**Resend Payment Link**:
1. **For PENDING charges**: Click "Resend Link"
2. **New SMS/Email**: Sent to passenger
3. **Fresh 5-minute**: New expiry timer
**Waive Charge**:
1. **Click "Waive"** on pending/expired charge
2. **Enter Reason**: Medical exemption, scale error, etc.
3. **Confirm**: Charge marked as waived
4. **Audit**: Action logged for compliance
**Delete Charge**:
1. **Only for EXPIRED/WAIVED**: Click "Delete"
2. **Confirm**: Permanent removal from system
3. **Note**: Cannot delete active or paid charges
#### Agent Workflow
1. **Weigh Luggage**: Use station scales
2. **Check Allowance**: Compare to passenger's seat class allowance
3. **Create Charge**: If excess weight found
4. **Offer Payment Options**:
- Mobile payment link (passenger's phone)
- Cash payment (agent collection)
5. **Process Boarding**: After payment completed
---
### Travel Packages
**Purpose**: Manage pilgrimage and group travel packages with tiered pricing
**Access Level**: Supervisor, Admin
**Icon**: Package
#### Features Overview
```
┌──────────────────────────────┐
│ TRAVEL PACKAGES MANAGEMENT │
├──────────────────────────────┤
│ ✓ Create Packages │
│ ✓ Multi-tier Pricing │
│ ✓ Capacity Management │
│ ✓ Schedule Integration │
│ ✓ Bus Transfer Coordination │
│ ✓ Package Status Control │
└──────────────────────────────┘
```
#### Package Information
- **Code**: Unique package identifier (e.g., "KULUBBI-2025")
- **Name**: Package display name
- **Origin/Destination**: Station pairs
- **Schedules**: Outbound and return train schedules
- **Capacity**: Total seats available
- **Coach Configuration**: Train composition
- **Included Services**: List of package inclusions
- **Bus Transfer**: Optional bus coordination
- **Validity Period**: Package booking window
#### Package Statuses
- **DRAFT**: Created but not yet active
- **ACTIVE**: Available for booking
- **SOLD_OUT**: All seats booked
- **EXPIRED**: Past validity period
- **CANCELLED**: No longer offered
#### CRUD Operations
##### CREATE
1. **Click "New Package"** button
2. **Fill Package Form**:
- **Code** (required): Unique identifier
- **Name** (required): Display name
- **Description**: Optional details
- **Origin/Destination Stations**: Select from dropdown
- **Outbound/Return Schedules**: Link to existing schedules
- **Boarding/Departure/Arrival Times**: Package timeline
- **Total Capacity**: Available seats
- **Coach Configuration**: Train setup description
- **Included Services**: One service per line
- **Bus Transfer**: Enable and specify route
- **Valid From/Until**: Booking window
3. **Save**: Click "Create Package"
4. **Next Step**: Add price tiers
##### READ (List Packages)
1. **View Packages**:
- Table shows all packages
- Search by name or code
- Filter by status
- Filter by validity dates
2. **Package Details**:
- Click "View" to see full information
- Shows all configuration details
- Lists price tiers with booking status
- Displays included services
##### UPDATE
1. **Click "Edit"** on package
2. **Modify Details**:
- Update package information
- Change validity periods
- Adjust capacity (if no bookings)
3. **Save**: Click "Update Package"
##### MANAGE PRICE TIERS
1. **Click "Tiers"** on package
2. **View Existing Tiers**:
- Shows seat type, label, price, capacity
- Displays booking progress
3. **Add New Tier**:
- **Seat Type**: HSC, VIP, etc.
- **Label**: Display name (e.g., "Regular Seat (HSC)")
- **Price (minor)**: Amount in cents/minor units
- **Available Seats**: Tier capacity
4. **Edit Existing Tier**:
- Click "Edit" on tier
- Modify details (limited if bookings exist)
5. **Delete Tier**:
- Click "Delete" (only if no bookings)
##### ACTIVATE/DEACTIVATE
**Activate Package**:
1. **For DRAFT packages**: Click "Activate"
2. **Confirmation**: Package becomes publicly bookable
3. **Status Change**: DRAFT ACTIVE
**Deactivate Package**:
1. **For ACTIVE packages**: Click "Deactivate"
2. **Confirmation**: Removes from public booking
3. **Existing Bookings**: Remain valid
##### DELETE
1. **Click "Delete"** on package
2. **Warning**: Shows impact on existing bookings
3. **Confirm**: Permanent removal
4. **Cascade**: Also removes price tiers
#### Example Package
```
Code: KULUBBI-2025
Name: Kulubbi Pilgrimage Package
Route: Addis Ababa → Awash (return)
Capacity: 912 passengers
Includes:
- Round trip train ticket
- Bus transfer to Kulubbi site
- Meal on board
- Guided tour
Price Tiers:
- Regular Seat (HSC): 10,232 ETB
- Premium Seat (VIP): 15,348 ETB
- Sleeper Bed (BED): 20,464 ETB
```
---
### Package Inquiries
**Purpose**: Manage incoming package booking inquiries and lead conversion
**Access Level**: Agent, Supervisor, Admin
**Icon**: MessageSquare
#### Features Overview
```
┌──────────────────────────────┐
│ PACKAGE INQUIRIES MANAGEMENT │
├──────────────────────────────┤
│ ✓ View All Inquiries │
│ ✓ Filter by Package │
│ ✓ Track Inquiry Status │
│ ✓ Contact Information │
│ ✓ Lead Conversion │
│ ✓ Delete Inquiries │
└──────────────────────────────┘
```
#### Inquiry Information
- **Contact Name**: Inquirer's name
- **Contact Email/Phone**: Contact details
- **Package**: Requested package
- **Price Tier**: Selected tier (if specified)
- **Traveler Count**: Number of passengers
- **Inquiry Date**: When submitted
- **Notes**: Additional comments
- **Status**: Current inquiry status
#### Inquiry Statuses
- **NEW**: Just received, not yet contacted
- **CONTACTED**: Agent has reached out
- **CONVERTED**: Successfully converted to booking
- **CLOSED**: Not converted, inquiry closed
#### CRUD Operations
##### READ (List Inquiries)
1. **Access Package Inquiries**:
- Click **Package Inquiries** in Enhanced Features
- Shows all inquiries
2. **Filter Options**:
- **Package Filter**: Select specific package
- **Status Filter**: NEW, CONTACTED, CONVERTED, CLOSED
3. **Inquiry Details**:
- Contact information
- Requested package and tier
- Traveler count
- Price information
- Inquiry notes
##### UPDATE STATUS
1. **Status Dropdown**: In each inquiry row
2. **Change Status**: Select new status
3. **Auto-save**: Updates immediately
4. **Track Progress**: Monitor conversion funnel
**Status Workflow**:
```
NEW → CONTACTED → CONVERTED/CLOSED
```
##### DELETE
1. **Click "Delete"** on inquiry
2. **Confirmation**: Cannot be undone
3. **Use Case**: Remove spam or duplicate inquiries
#### Lead Management
**Best Practices**:
1. **Respond Quickly**: Contact NEW inquiries within 24 hours
2. **Follow Up**: Move to CONTACTED after first contact
3. **Track Conversion**: Mark as CONVERTED when booked
4. **Close Non-converts**: Mark as CLOSED if not interested
---
### Health Monitoring
**Purpose**: Monitor EDR Passenger API health and system performance
**Access Level**: Admin, Supervisor
**Icon**: Activity
#### Features Overview
```
┌──────────────────────────────┐
│ HEALTH MONITORING MGMT │
├──────────────────────────────┤
│ ✓ Liveness Checks │
│ ✓ Readiness Probes │
│ ✓ Database Health │
│ ✓ Application Info │
│ ✓ Real-time Status │
│ ✓ Rate Limit Overview │
└──────────────────────────────┘
```
#### Health Check Types
**Liveness Probe** (`GET /health`):
- Confirms API process is alive
- Quick response check
- Auto-refreshes every 30 seconds
**Readiness Probe** (`GET /health/ready`):
- Database connectivity test
- Live database ping with latency
- Indicates if API can serve traffic
**Application Info** (`GET /health/info`):
- App version and environment
- System uptime
- Refreshes every 60 seconds
#### Health Status Indicators
**Overall Status Banner**:
- **Green**: All systems operational
- **Red**: Service degraded
- **Gray**: Checking status...
**Individual Probe Cards**:
- Status dot (green/red/gray)
- Health badge (Healthy/Degraded/Checking...)
- Last check timestamp
- Error details (if failed)
#### CRUD Operations
##### READ (Monitor Health)
1. **Access Health Page**:
- Click **Health Monitoring** in Enhanced Features
- Auto-refreshing dashboard
2. **System Overview**:
- Overall health banner
- Individual probe status
- Real-time updates
3. **Detailed Metrics**:
- Database latency (ms)
- Application uptime
- Version information
- Environment details
##### REFRESH STATUS
1. **Manual Refresh**: Click "Refresh" button
2. **Auto-refresh**:
- Health probes: 30 seconds
- App info: 60 seconds
3. **Loading States**: Shows during refresh
#### Rate Limits Reference
The health page includes a rate limits table:
| Tier | Limit | Applied to |
|------|-------|------------|
| **auth** | 5 req/min | `/auth`, `/fayda/verification` |
| **strict** | 20 req/min | `/bookings`, `/passengers`, `/payments`, `/wallet` |
| **default** | 100 req/min | All other endpoints |
| **exempt** | No limit | `/health/*`, payment webhooks |
#### Troubleshooting
**Common Issues**:
1. **Database Connectivity**:
- Check network connection
- Verify database server status
- Review connection string
2. **High Latency**:
- Monitor database performance
- Check server resources
- Review query optimization
3. **Failed Health Checks**:
- Review API server logs
- Check system resources
- Verify service configuration
---
### System Config
**Purpose**: Centralized system configuration management with feature flags
**Access Level**: Admin
**Icon**: Settings
#### Features Overview
```
┌──────────────────────────────┐
│ SYSTEM CONFIG MANAGEMENT │
├──────────────────────────────┤
│ ✓ Rate Limit Configuration │
│ ✓ Seat Booking Settings │
│ ✓ Feature Flags │
│ ✓ Operational Controls │
│ ✓ Live Configuration Updates │
│ ✓ Validation & Saving │
└──────────────────────────────┘
```
#### Configuration Categories
**Rate Limiting** (requests per minute per IP):
- **Auth endpoints**: Login, register, OTP (default: 5)
- **Strict endpoints**: Sensitive operations (default: 20)
- **Default endpoints**: All other endpoints (default: 100)
**Seat Booking**:
- **Hold Duration**: How long seats stay held (default: 5 minutes)
- **Hold Cutoff**: Stop accepting holds X hours before departure (default: 2 hours)
#### CRUD Operations
##### READ (View Configuration)
1. **Access System Config**:
- Click **System Config** in System section
- Loads current configuration values
2. **Configuration Display**:
- Rate limiting settings with descriptions
- Seat booking parameters
- Current values shown
##### UPDATE CONFIGURATION
1. **Modify Settings**:
- **Auth Limit**: Adjust authentication rate limit
- **Strict Limit**: Change sensitive operations limit
- **Default Limit**: Update general rate limit
- **Hold Duration**: Set seat hold time in minutes
- **Hold Cutoff**: Set cutoff hours before departure
2. **Validation**:
- Minimum values enforced
- Reasonable maximums suggested
- Input validation on save
3. **Save Changes**:
- Click "Save Changes" button
- Configuration applied immediately
- Success/error feedback shown
#### Configuration Examples
**Rate Limiting Tiers**:
```
Auth endpoints (5/min):
- /auth/login
- /auth/register
- /fayda/verification
Strict endpoints (20/min):
- /bookings/*
- /passengers/*
- /payments/*
- /wallet/*
Default endpoints (100/min):
- /search/*
- /stations/*
- All other public endpoints
```
**Seat Management**:
```
Hold Duration: 5 minutes
- Passenger has 5 minutes to complete booking
- After expiry, seats released automatically
Hold Cutoff: 2 hours
- No new holds accepted within 2 hours of departure
- Prevents last-minute booking complications
```
#### System Impact
**Rate Limit Changes**:
- Applied immediately to new requests
- Existing connections not affected
- Monitor for performance impact
**Seat Booking Changes**:
- New holds use updated duration
- Existing holds retain original expiry
- Cutoff affects future booking attempts
#### Best Practices
1. **Monitor Impact**: Watch system performance after changes
2. **Conservative Adjustments**: Make incremental changes
3. **Peak Periods**: Consider higher limits during busy times
4. **Security Balance**: Balance usability with abuse prevention
5. **Documentation**: Document reasons for configuration changes
---
### Boarding Management
**Purpose**: Manage gate operations and passenger boarding processes
**Access Level**: Agent, Supervisor, Admin
**Icon**: Users
#### Features Overview
```
┌──────────────────────────────┐
│ BOARDING MANAGEMENT MGMT │
├──────────────────────────────┤
│ ✓ Gate Operations │
│ ✓ Passenger Check-in │
│ ✓ Boarding Pass Validation │
│ ✓ Seat Assignment Verification│
│ ✓ Boarding Status Tracking │
│ ✓ Real-time Updates │
└──────────────────────────────┘
```
#### CRUD Operations
##### READ (Monitor Boarding)
1. **Access Boarding Page**:
- Click **Boarding Management** in Enhanced Features
- Select active trip/schedule
- View real-time boarding status
2. **Boarding Dashboard**:
- Total passengers expected
- Passengers boarded
- Boarding progress tracking
---
### Advanced Fare Configuration
**Purpose**: Manage complex fare rules and dynamic pricing strategies
**Access Level**: Admin, Supervisor
**Icon**: Calculator
#### Features Overview
```
┌──────────────────────────────┐
│ ADVANCED FARE CONFIG MGMT │
├──────────────────────────────┤
│ ✓ Dynamic Fare Rules │
│ ✓ Segment-based Pricing │
│ ✓ Nationality-specific Rates │
│ ✓ Seasonal Adjustments │
│ ✓ Fare Engine Integration │
│ ✓ Real-time Calculations │
└──────────────────────────────┘
```
#### CRUD Operations
##### CREATE FARE RULES
1. **Access Fare Management**:
- Click **Advanced Fare Config** in Enhanced Features
- Choose between Schedule Fares or Segment Fares
2. **Configure Rules**:
- Set fare amounts and validity periods
- Define passenger categories and nationalities
- Apply to specific routes or schedules
---
### Payment Methods Configuration
**Purpose**: Configure and manage payment provider integrations
**Access Level**: Admin
**Icon**: CreditCard
#### Features Overview
```
┌──────────────────────────────┐
│ PAYMENT METHODS CONFIG MGMT │
├──────────────────────────────┤
│ ✓ Provider Setup │
│ ✓ API Configuration │
│ ✓ Enable/Disable Methods │
│ ✓ Webhook Management │
│ ✓ Test Transactions │
│ ✓ Fee Configuration │
└──────────────────────────────┘
```
#### Supported Providers
- **Telebirr**: Ethiopian mobile payment
- **CBE Birr**: Commercial Bank of Ethiopia
- **eBirr**: Electronic wallet service
- **Card Payments**: VISA, Mastercard
- **WAAFI**: Money transfer service
- **Agent Cash**: Counter collection
#### CRUD Operations
##### UPDATE CONFIGURATION
1. **Provider Setup**:
- Configure API credentials
- Set transaction fees and limits
- Enable/disable providers
2. **Test & Validate**:
- Run test transactions
- Validate webhook endpoints
- Monitor connectivity
---
### Boarding Management
**Purpose**: Manage gate operations and passenger boarding processes
**Access Level**: Agent, Supervisor, Admin
**Icon**: Users
#### Features Overview
```
┌──────────────────────────────┐
│ BOARDING MANAGEMENT MGMT │
├──────────────────────────────┤
│ ✓ Gate Operations │
│ ✓ Passenger Check-in │
│ ✓ Boarding Pass Validation │
│ ✓ Seat Assignment Verification│
│ ✓ Boarding Status Tracking │
│ ✓ Real-time Updates │
└──────────────────────────────┘
```
#### Boarding Process
1. **Pre-boarding Setup**: Configure gates and boarding times
2. **Passenger Check-in**: Validate tickets and documents
3. **Boarding Queue**: Manage passenger flow and priority boarding
4. **Seat Verification**: Confirm seat assignments and resolve conflicts
5. **Boarding Completion**: Final passenger count and departure clearance
#### CRUD Operations
##### READ (Monitor Boarding)
1. **Access Boarding Page**:
- Click **Boarding Management** in Enhanced Features
- Select active trip/schedule
- View real-time boarding status
2. **Boarding Dashboard**:
- Total passengers expected
- Passengers boarded
- Remaining passengers
- Boarding progress percentage
- Gate status and alerts
##### MANAGE BOARDING PROCESS
**Start Boarding**:
1. **Select Trip**: Choose scheduled departure
2. **Open Gates**: Activate boarding process
3. **Scan Tickets**: Validate passenger tickets and documents
4. **Update Status**: Track boarding progress in real-time
**Handle Issues**:
1. **Seat Conflicts**: Resolve duplicate seat assignments
2. **Missing Passengers**: Mark no-shows
3. **Late Arrivals**: Process last-minute passengers
4. **Special Assistance**: Handle wheelchair, elderly, child passengers
---
### Advanced Fare Configuration
**Purpose**: Manage complex fare rules and dynamic pricing strategies
**Access Level**: Admin, Supervisor
**Icon**: Calculator
#### Features Overview
```
┌──────────────────────────────┐
│ ADVANCED FARE CONFIG MGMT │
├──────────────────────────────┤
│ ✓ Dynamic Fare Rules │
│ ✓ Segment-based Pricing │
│ ✓ Nationality-specific Rates │
│ ✓ Seasonal Adjustments │
│ ✓ Fare Engine Integration │
│ ✓ Real-time Calculations │
└──────────────────────────────┘
```
#### Fare Rule Types
**Schedule-specific Fares**:
- Fixed rates for specific train schedules
- Override default fare calculations
- Temporary promotional pricing
**Route Segment Fares**:
- Different pricing for route segments
- Origin-destination specific rates
- Distance-based calculations
**Passenger Category Fares**:
- ADULT vs CHILD pricing
- Nationality-based rates (Ethiopian, Djiboutian, Other)
- Group discounts
#### CRUD Operations
##### CREATE FARE RULES
1. **Access Fare Management**:
- Click **Advanced Fare Config** in Enhanced Features
- Choose between Schedule Fares or Segment Fares
2. **Schedule Fare Rule**:
- **Schedule**: Select specific trip
- **Seat Class**: Choose class (Economy, VIP, etc.)
- **Fare Amount**: Set price in ETB
- **Passenger Type**: ADULT or CHILD (optional)
- **Nationality**: Specific nationality or All
- **Valid Period**: Start and end dates
3. **Segment Fare Rule**:
- **Route**: Select route
- **Origin/Destination**: Choose station pair
- **Seat Class**: Select class
- **Fare Amount**: Set segment price
- **Passenger Type**: ADULT/CHILD filter
- **Valid Period**: Effective dates
##### READ (View Fare Rules)
1. **Schedule Fares Tab**:
- Select schedule to view calculated fares
- See all active seat classes
- View fare breakdown by category
2. **Segment Fares Tab**:
- Select route to view segment rules
- See origin-destination combinations
- Filter by fare rule criteria
##### UPDATE/DELETE FARE RULES
1. **Edit Rules**: Click "Edit" on existing fare rule
2. **Delete Rules**: Click "Delete" to remove rule
3. **Validation**: Changes affect future bookings only
#### Fare Calculation Priority
```
1. Segment Fare (nationality-specific)
2. Segment Fare (generic)
3. Schedule Fare (nationality-specific)
4. Schedule Fare (generic)
5. Default Class Base Fare
```
---
### Payment Methods Configuration
**Purpose**: Configure and manage payment provider integrations
**Access Level**: Admin
**Icon**: CreditCard
#### Features Overview
```
┌──────────────────────────────┐
│ PAYMENT METHODS CONFIG MGMT │
├──────────────────────────────┤
│ ✓ Provider Setup │
│ ✓ API Configuration │
│ ✓ Enable/Disable Methods │
│ ✓ Webhook Management │
│ ✓ Test Transactions │
│ ✓ Fee Configuration │
└──────────────────────────────┘
```
#### Supported Payment Providers
- **Telebirr**: Ethiopian mobile payment
- **CBE Birr**: Commercial Bank of Ethiopia
- **eBirr**: Electronic wallet service
- **Card Payments**: VISA, Mastercard via gateway
- **WAAFI**: Money transfer service
- **Agent Cash**: Counter cash collection
#### CRUD Operations
##### READ (View Payment Methods)
1. **Access Payment Methods**:
- Click **Payment Methods** in Enhanced Features
- View all configured providers
- See status and configuration
2. **Provider Status**:
- Enabled/Disabled toggle
- Configuration status
- Last transaction test
- Error logs (if any)
##### UPDATE CONFIGURATION
**Provider Setup**:
1. **API Credentials**:
- Base URL
- API Key/Secret
- Merchant ID
- Webhook endpoints
2. **Settings**:
- Enable/disable provider
- Transaction fees
- Minimum/maximum amounts
- Currency support
3. **Test Configuration**:
- Run test transactions
- Validate webhook endpoints
- Check API connectivity
**Webhook Management**:
1. **Endpoint URLs**: Configure callback URLs
2. **Security**: Set webhook secrets
3. **Event Types**: Select events to receive
4. **Retry Logic**: Configure retry attempts
##### TROUBLESHOOTING
**Common Issues**:
1. **API Connectivity**: Check network and credentials
2. **Webhook Failures**: Verify endpoint accessibility
3. **Transaction Failures**: Review provider logs
4. **Configuration Errors**: Validate API settings