HH/SLA_MANAGEMENT_FEATURE.md
2026-03-28 14:03:56 +03:00

149 lines
4.7 KiB
Markdown

# Complaint SLA Management Feature
## Overview
A dedicated PX Admin-only interface for managing complaint SLA (Service Level Agreement) configurations with automatic hospital selection from session.
## Features
### 1. PX Admin Only Access
- Protected by `@px_admin_required` decorator
- Automatically uses hospital from session (`selected_hospital_id`)
- Redirects to hospital selection if no hospital is selected
### 2. Hospital Context
- Hospital is **automatically set** from the first selection after login
- Stored in session as `selected_hospital_id`
- No need to manually select hospital for each configuration
### 3. SLA Configuration Types
#### Source-Based SLAs
- Configure SLAs based on complaint source (MOH, CCHI, Patient, etc.)
- Takes precedence over severity-based configs
- Example: MOH complaints = 24 hours, CCHI = 48 hours
#### Severity/Priority-Based SLAs
- Configure SLAs based on severity and priority levels
- Used when no source-based config exists
- Example: Critical/Urgent = 12 hours, Low/Low = 72 hours
### 4. Timing Configuration
#### SLA Deadline
- Total hours from complaint creation until deadline
- Example: 24, 48, 72 hours
#### Reminder Timing (Modern)
- **First Reminder**: X hours after complaint creation
- **Second Reminder**: X hours after complaint creation
- Set to 0 to use legacy timing
#### Reminder Timing (Legacy)
- **First Reminder**: X hours before deadline
- **Second Reminder**: X hours before deadline (with enable checkbox)
#### Escalation
- X hours after creation to auto-escalate
- Set to 0 to use standard overdue logic
## URLs
| URL | View | Description |
|-----|------|-------------|
| `/complaints/settings/sla-management/` | `sla_management` | Main SLA management page |
| `/complaints/settings/sla-management/new/` | `sla_management_create` | Create new SLA config |
| `/complaints/settings/sla-management/<uuid>/edit/` | `sla_management_edit` | Edit existing config |
| `/complaints/settings/sla-management/<uuid>/toggle/` | `sla_management_toggle` | Toggle active status |
## Files Created/Modified
### New Files
1. `/apps/complaints/management/commands/test_sla_reminders.py` - Test command
2. `/templates/complaints/sla_management.html` - Main management page
3. `/templates/complaints/sla_management_form.html` - Create/Edit form
4. `/templates/complaints/partials/severity_badge.html` - Severity badge partial
5. `/templates/complaints/partials/priority_badge.html` - Priority badge partial
### Modified Files
1. `/apps/complaints/ui_views.py` - Added 4 new views
2. `/apps/complaints/urls.py` - Added 4 new URL routes
3. `/templates/config/dashboard.html` - Added navigation card
## Usage
### For PX Admins
1. **Login** as PX Admin
2. **Select Hospital** (first time after login)
3. **Navigate to** System Configuration → Complaint SLA
- Or directly: `/complaints/settings/sla-management/`
4. **Configure SLAs**:
- Click "Add SLA Configuration"
- Choose Source (for source-based) OR Severity/Priority
- Set SLA hours, reminders, escalation
- Save
### Example Configuration
**MOH Complaints (Source-Based)**:
- Source: Ministry of Health
- SLA Hours: 24
- First Reminder: 12 hours after creation
- Second Reminder: 18 hours after creation
- Escalation: 24 hours after creation
**Critical/Urgent Complaints (Severity-Based)**:
- Severity: Critical
- Priority: Urgent
- SLA Hours: 12
- First Reminder: 6 hours after creation
- Second Reminder: 9 hours after creation
- Escalation: 12 hours after creation
## Testing
Use the management command to test SLA reminders:
```bash
# Create test complaints and run SLA reminder task
python manage.py test_sla_reminders --run-task
# Dry run (preview only)
python manage.py test_sla_reminders --dry-run
# Test specific scenario
python manage.py test_sla_reminders --scenario assigned --complaint-count 3
# Clean up test data
python manage.py test_sla_reminders --cleanup
```
## SLA Priority Order
1. **Source-based config** (MOH, CCHI, Internal)
2. **Severity/Priority-based config**
3. **System defaults** (from settings)
## Key Benefits
**Hospital Auto-Selection**: No need to manually select hospital each time
**PX Admin Only**: Secure, role-based access
**Visual Interface**: Clean, modern UI with badges and stats
**Flexible Timing**: Support for both modern (after creation) and legacy (before deadline) timing
**Toggle Status**: Easily enable/disable configs without deleting
**Audit Logging**: All changes logged for compliance
## Session Flow
```
1. PX Admin logs in
2. Redirected to hospital selection page
3. Selects hospital → stored in session['selected_hospital_id']
4. All SLA configs use this hospital automatically
5. Can switch hospitals anytime from sidebar
```