HH/docs/SLA_TESTING_QUICKSTART.md

210 lines
4.7 KiB
Markdown

# SLA Testing Quick Start
Get started with realistic SLA testing in 5 minutes!
## Quick Setup
### 1. Verify Your Environment
```bash
# Check Django is configured
cat .env | grep DJANGO_SETTINGS_MODULE
# Should show: DJANGO_SETTINGS_MODULE=config.settings.dev
```
### 2. Run Scenario 1 (Happy Path - ~7 seconds)
```bash
python test_scenario_1_successful_explanation.py
```
**What it tests**: Staff submits explanation before deadline ✅
**Expected output**:
```
TEST SUMMARY
Total Steps: 7
Successful: 7
Failed: 0
Elapsed Time: 7.2s
✓✓✓ ALL TESTS PASSED ✓✓✓
```
### 3. Run Scenario 2 (Escalation - ~37 seconds)
```bash
python test_scenario_2_escalation_with_reminders.py
```
**What it tests**:
- Staff doesn't respond ⚠️
- First reminder sent ⚠️
- Second reminder sent ⚠️
- Escalates to manager 📈
- Escalates to department head 📈
**Expected output**:
```
TEST SUMMARY
Total Steps: 12
Successful: 12
Failed: 0
Elapsed Time: 37.5s
✓✓✓ ALL TESTS PASSED ✓✓✓
```
## What Just Happened?
### Time Compression Magic
The tests use **1 second = 1 hour** time compression:
- Real SLA: 48 hours → Test time: 48 seconds
- Real SLA: 12 hours → Test time: 12 seconds
This means you can test a **full 2-day workflow in under 1 minute!**
### Real System Execution
These are **NOT mocks** - they execute real code:
✅ Real database operations
✅ Real Celery tasks
✅ Real email sending
✅ Real SLA calculations
✅ Real escalation logic
## What Gets Created
### Scenario 1 Creates:
- 1 Hospital (Al Hammadi Hospital)
- 1 Department (Emergency Department)
- 1 Staff member (Omar Al-Harbi - Nurse)
- 1 Complaint (Poor response time)
- 1 Explanation request (submitted)
- 1 ExplanationSLAConfig (10-hour deadline)
- 1 ComplaintSLAConfig (72-hour SLA)
### Scenario 2 Creates:
- 1 Hospital (Al Hammadi Hospital)
- 1 Department (Emergency Department)
- 3 Staff members (Staff → Manager → Department Head)
- 1 Complaint (High severity, high priority)
- 1 Explanation request (overdue, escalated)
- 1 ExplanationSLAConfig (12-hour deadline with reminders)
- 1 SecondReminderConfig (3 hours before deadline)
- 1 ComplaintSLAConfig (48-hour SLA)
## Verify Results in Django Admin
```bash
# Start Django server
python manage.py runserver
# Visit: http://localhost:8000/admin
# Login with your admin credentials
# Check:
# - Complaints → All Complaints
# - Complaints → Explanations
# - Organizations → Staff
# - Complaints → SLA Configurations
```
## Clean Up Test Data
```bash
python manage.py shell
```
```python
# Delete test complaints
from apps.complaints.models import Complaint, ComplaintExplanation
Complaint.objects.filter(contact_name="Test Patient").delete()
Complaint.objects.filter(contact_name="Concerned Family Member").delete()
# Delete test staff (be careful!)
from apps.organizations.models import Staff
Staff.objects.filter(email__contains=".test").delete()
# Delete test SLA configs
from apps.complaints.models import ExplanationSLAConfig, ComplaintSLAConfig, SecondReminderConfig
ExplanationSLAConfig.objects.all().delete()
ComplaintSLAConfig.objects.all().delete()
SecondReminderConfig.objects.all().delete()
```
## Common Issues
### Issue: "Database error"
**Solution**:
```bash
python manage.py migrate
```
### Issue: "Email failed to send"
**Solution**: Add to `.env`:
```
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
```
### Issue: "Module not found"
**Solution**: Make sure you're in the project root:
```bash
cd /home/ismail/projects/HH
```
## Customize Your Test
### Change Time Compression
Edit the test script:
```python
# Make it faster (1s = 2h)
test = Scenario1SuccessfulExplanation(time_compression_ratio=2)
# Make it slower (1s = 30min)
test = Scenario1SuccessfulExplanation(time_compression_ratio=0.5)
```
### Change SLA Deadline
Edit the SLA config in the test:
```python
self.create_explanation_sla_config(
hospital=hospital,
response_hours=24, # Change from 10 to 24 hours
reminder_hours_before=12, # Change from 5 to 12 hours
auto_escalate_enabled=True,
escalation_hours_overdue=0,
max_escalation_levels=3
)
```
## Next Steps
1. ✅ Run both scenarios successfully
2. ✅ Review results in Django admin
3. ✅ Check the email output (console or real email)
4. ✅ Customize SLA settings to match your needs
5. ✅ Read the full guide: `docs/REAL_TIME_SLA_TESTING_GUIDE.md`
## Need Help?
- Full documentation: `docs/REAL_TIME_SLA_TESTING_GUIDE.md`
- SLA system overview: `docs/SLA_SYSTEM_OVERVIEW.md`
- Celery tasks: `apps/complaints/tasks.py`
- Models: `apps/complaints/models.py`
---
**Ready to test? Run Scenario 1 now:**
```bash
python test_scenario_1_successful_explanation.py