349 lines
10 KiB
Markdown
349 lines
10 KiB
Markdown
# Complaint Tracking Feature Implementation Summary
|
|
|
|
## Overview
|
|
A **complaint tracking feature** has been successfully implemented for complainants to check the status of their complaints without requiring authentication. This feature allows users to enter their reference number and view real-time information about their complaint's progress.
|
|
|
|
## Implementation Status: ✅ COMPLETE
|
|
|
|
---
|
|
|
|
## Implementation Details
|
|
|
|
### 1. View Function
|
|
**File:** `apps/complaints/ui_views.py`
|
|
|
|
The `public_complaint_track` view function has been implemented with the following capabilities:
|
|
|
|
- **GET Request**: Displays the tracking search form
|
|
- **POST Request**: Processes the reference number and displays complaint details
|
|
- **Security**: No authentication required (public access)
|
|
- **Validation**:
|
|
- Validates reference number format
|
|
- Returns user-friendly error messages for invalid/not-found complaints
|
|
- **Data Filtering**:
|
|
- Shows only public updates (`is_public=True`)
|
|
- Excludes internal notes and private communications
|
|
- Displays SLA information with overdue detection
|
|
|
|
**Key Features:**
|
|
```python
|
|
def public_complaint_track(request):
|
|
"""
|
|
Public tracking page - allows complainants to track their complaint status
|
|
without authentication using their reference number.
|
|
"""
|
|
# Validates reference number
|
|
# Fetches complaint details
|
|
# Filters public updates only
|
|
# Detects overdue SLAs
|
|
# Returns detailed status information
|
|
```
|
|
|
|
### 2. URL Route
|
|
**File:** `apps/complaints/urls.py`
|
|
|
|
```python
|
|
path("public/track/", ui_views.public_complaint_track, name="public_complaint_track"),
|
|
```
|
|
|
|
**Access URL:** `/complaints/public/track/`
|
|
|
|
### 3. Template
|
|
**File:** `templates/complaints/public_complaint_track.html`
|
|
|
|
A comprehensive, responsive template with:
|
|
|
|
#### Search Interface
|
|
- Clean search card with large search icon
|
|
- Reference number input field with placeholder
|
|
- Search button with hover effects
|
|
- Helpful instructions for users
|
|
|
|
#### Complaint Display
|
|
- **Reference Number**: Prominently displayed at the top
|
|
- **Status Badge**: Color-coded status indicators:
|
|
- Yellow: Open
|
|
- Blue: In Progress
|
|
- Green: Resolved
|
|
- Gray: Closed
|
|
- Red: Cancelled
|
|
- **SLA Information**:
|
|
- Shows expected response time
|
|
- Highlights overdue complaints in red
|
|
- Displays due date and time
|
|
- **Information Grid**:
|
|
- Submission date
|
|
- Hospital name
|
|
- Department name
|
|
- Category information
|
|
- **Timeline**:
|
|
- Visual timeline of public updates
|
|
- Shows date and time for each update
|
|
- Displays update type and message
|
|
- Chronological order with visual indicators
|
|
- **Resolution Section** (when applicable):
|
|
- Displays resolution details
|
|
- Shows resolution date and time
|
|
- Green highlight for completed complaints
|
|
|
|
#### User Experience Features
|
|
- "Track Another Complaint" button
|
|
- Error handling with clear messages
|
|
- Responsive design for all screen sizes
|
|
- Internationalization support (i18n)
|
|
- RTL support for Arabic
|
|
|
|
### 4. Success Page Integration
|
|
**File:** `templates/complaints/public_complaint_success.html`
|
|
|
|
The success page has been updated to include a prominent "Track Your Complaint" button that:
|
|
- Pre-fills the reference number in the tracking page
|
|
- Provides easy access to track the newly submitted complaint
|
|
- Appears before the "Submit Another Complaint" button
|
|
|
|
---
|
|
|
|
## Features Implemented
|
|
|
|
### ✅ Core Functionality
|
|
- [x] Reference number lookup system
|
|
- [x] Complaint status display
|
|
- [x] SLA due date with overdue detection
|
|
- [x] Public updates timeline
|
|
- [x] Private updates excluded from public view
|
|
- [x] Resolution information display
|
|
- [x] Hospital and department information
|
|
- [x] Category information
|
|
- [x] Track another complaint button
|
|
- [x] Error handling for invalid references
|
|
|
|
### ✅ User Experience
|
|
- [x] Clean, modern UI design
|
|
- [x] Color-coded status indicators
|
|
- [x] Visual timeline of updates
|
|
- [x] Responsive design
|
|
- [x] Internationalization (i18n) ready
|
|
- [x] RTL support for Arabic
|
|
- [x] Accessible form controls
|
|
- [x] Clear error messages
|
|
- [x] Helpful user instructions
|
|
|
|
### ✅ Security & Privacy
|
|
- [x] No authentication required (public access)
|
|
- [x] Public updates only (`is_public=True`)
|
|
- [x] Internal notes excluded
|
|
- [x] Reference number validation
|
|
- [x] User-friendly error messages (no system errors exposed)
|
|
|
|
---
|
|
|
|
## How It Works
|
|
|
|
### User Flow
|
|
|
|
1. **Access Tracking Page**
|
|
- User visits `/complaints/public/track/`
|
|
- Clean search form is displayed
|
|
|
|
2. **Enter Reference Number**
|
|
- User enters their reference number (e.g., `CMP-20250105-123456`)
|
|
- Clicks "Track Complaint" button
|
|
|
|
3. **View Complaint Status**
|
|
- System validates the reference number
|
|
- Displays complaint details:
|
|
- Current status with color-coded badge
|
|
- SLA information (due date, overdue status)
|
|
- Hospital and department details
|
|
- Category information
|
|
- Timeline of public updates
|
|
- Resolution information (if resolved)
|
|
|
|
4. **Track Another Complaint**
|
|
- User can click "Track Another Complaint" to search again
|
|
|
|
### From Success Page
|
|
|
|
1. **After Submission**
|
|
- User sees success page with reference number
|
|
- Prominent "Track Your Complaint" button displayed
|
|
|
|
2. **Click Track Button**
|
|
- Redirects to tracking page
|
|
- Reference number pre-filled
|
|
- Complaint details automatically displayed
|
|
|
|
---
|
|
|
|
## Technical Details
|
|
|
|
### Database Queries
|
|
|
|
The view efficiently queries:
|
|
1. **Complaint**: Single query by reference number
|
|
2. **Public Updates**: Filtered query with `is_public=True`
|
|
3. **Related Objects**: Hospital, Department, Category (using select_related)
|
|
|
|
### Performance Optimizations
|
|
- Single database query for complaint details
|
|
- Efficient filtering of public updates
|
|
- No N+1 query problems
|
|
- Lazy evaluation of related objects
|
|
|
|
### Security Considerations
|
|
- No sensitive information exposed
|
|
- Internal notes completely hidden
|
|
- Only public updates displayed
|
|
- Reference number validation prevents SQL injection
|
|
- CSRF protection on POST requests
|
|
|
|
---
|
|
|
|
## Files Modified/Created
|
|
|
|
### Created Files
|
|
1. `templates/complaints/public_complaint_track.html` - Tracking page template
|
|
2. `test_complaint_tracking.py` - Test verification script
|
|
|
|
### Modified Files
|
|
1. `apps/complaints/ui_views.py` - Added `public_complaint_track` view function
|
|
2. `apps/complaints/urls.py` - Added tracking URL route
|
|
3. `templates/complaints/public_complaint_success.html` - Added tracking button
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
### URL Verification
|
|
```bash
|
|
✓ Tracking URL: /complaints/public/track/
|
|
✓ View function exists: public_complaint_track
|
|
✓ Template exists: public_complaint_track.html
|
|
```
|
|
|
|
### Database Status
|
|
- Total complaints in database: 213
|
|
- All existing complaints can be tracked using their reference numbers
|
|
|
|
### Test Results
|
|
```
|
|
✓ Tracking URL successfully resolves
|
|
✓ View function is accessible
|
|
✓ Template renders correctly
|
|
✓ GET request to tracking page: 200 OK
|
|
✓ POST request with valid reference: 200 OK
|
|
✓ POST request with invalid reference: Error message displayed
|
|
✓ Public updates are included
|
|
✓ Private updates are excluded
|
|
✓ Success page integration: Working
|
|
```
|
|
|
|
---
|
|
|
|
## Usage Examples
|
|
|
|
### Example 1: Valid Reference Number
|
|
```
|
|
Reference: CMP-20250105-123456
|
|
Status: In Progress (Blue badge)
|
|
Due: January 7, 2026 at 5:00 PM
|
|
Hospital: King Faisal Specialist Hospital
|
|
Department: Emergency Room
|
|
Category: Service Quality
|
|
|
|
Timeline:
|
|
- Jan 5, 2026 at 10:30 AM - Status Change: Complaint received and under review
|
|
- Jan 6, 2026 at 2:15 PM - Note: Initial assessment completed
|
|
```
|
|
|
|
### Example 2: Overdue Complaint
|
|
```
|
|
Reference: CMP-20250102-789012
|
|
Status: Open (Yellow badge)
|
|
⚠️ Response Overdue (Red highlight)
|
|
Due: January 4, 2026 at 5:00 PM (EXPIRED)
|
|
|
|
Timeline:
|
|
- Jan 2, 2026 at 9:00 AM - Status Change: Complaint received
|
|
```
|
|
|
|
### Example 3: Resolved Complaint
|
|
```
|
|
Reference: CMP-20250101-345678
|
|
Status: Resolved (Green badge)
|
|
Due: January 3, 2026 at 5:00 PM
|
|
|
|
Resolution:
|
|
Your complaint has been resolved. We have implemented additional training for our staff to prevent similar issues in the future.
|
|
|
|
Resolved on: January 3, 2026 at 3:45 PM
|
|
|
|
Timeline:
|
|
- Jan 1, 2026 at 8:00 AM - Status Change: Complaint received
|
|
- Jan 2, 2026 at 11:00 AM - Status Change: Under investigation
|
|
- Jan 3, 2026 at 3:45 PM - Status Change: Resolved
|
|
```
|
|
|
|
---
|
|
|
|
## Browser Testing
|
|
|
|
To test the tracking feature:
|
|
|
|
1. **Access the tracking page:**
|
|
```
|
|
http://localhost:8000/complaints/public/track/
|
|
```
|
|
|
|
2. **Test with valid reference:**
|
|
- Get a reference number from the database
|
|
- Enter it in the search field
|
|
- Click "Track Complaint"
|
|
- Verify complaint details are displayed
|
|
|
|
3. **Test with invalid reference:**
|
|
- Enter `INVALID-TEST-REF`
|
|
- Click "Track Complaint"
|
|
- Verify error message is displayed
|
|
|
|
4. **Test from success page:**
|
|
- Submit a new complaint
|
|
- On success page, click "Track Your Complaint"
|
|
- Verify tracking page opens with reference pre-filled
|
|
|
|
---
|
|
|
|
## Future Enhancements (Optional)
|
|
|
|
Potential improvements that could be added:
|
|
|
|
1. **Email Notifications**: Send email updates when complaint status changes
|
|
2. **SMS Notifications**: SMS alerts for urgent complaints
|
|
3. **QR Codes**: Generate QR codes for easy mobile tracking
|
|
4. **Language Toggle**: Switch between English and Arabic
|
|
5. **Print-Friendly Version**: Option to print complaint status
|
|
6. **Download PDF**: Export complaint status as PDF
|
|
7. **Anonymous Tracking**: Allow tracking without providing contact info
|
|
8. **Mobile App Integration**: API for mobile applications
|
|
|
|
---
|
|
|
|
## Conclusion
|
|
|
|
The complaint tracking feature has been **successfully implemented** and is **fully functional**. Complainants can now:
|
|
|
|
✅ Track their complaint status using their reference number
|
|
✅ View real-time updates on their complaint progress
|
|
✅ See SLA information and due dates
|
|
✅ Access a timeline of public updates
|
|
✅ View resolution details when completed
|
|
✅ Easily track multiple complaints
|
|
|
|
The implementation follows best practices for:
|
|
- **User Experience**: Clean, intuitive interface
|
|
- **Security**: Public access with privacy controls
|
|
- **Performance**: Efficient database queries
|
|
- **Accessibility**: Responsive, i18n-ready design
|
|
- **Maintainability**: Clean, well-documented code
|
|
|
|
**Status: READY FOR PRODUCTION USE** ✅ |