HH/ANALYTICS_DASHBOARD_FIX_COMPLETE.md
2026-02-22 08:35:53 +03:00

70 lines
2.9 KiB
Markdown

# Analytics Dashboard FieldError Fix - Complete
## Issue Summary
The analytics dashboard at `/analytics/dashboard/` was throwing a FieldError:
```
Unsupported lookup 'survey_instance' for UUIDField or join on the field not permitted.
```
## Root Cause Analysis
The error was in `apps/analytics/ui_views.py` at line 70, in the `analytics_dashboard` view. The code was attempting to perform a database lookup on a `UUIDField` that doesn't support the `survey_instance` lookup.
### Problematic Code (Line 70):
```python
).annotate(
survey_instance_count=Count('survey_instance__id'),
```
The issue was that the query was trying to annotate with a count of `survey_instance__id`, but the base queryset's relationship structure doesn't support this lookup path.
## Fix Applied
Modified the query in `apps/analytics/ui_views.py` to remove the problematic annotation:
### Before:
```python
complaints_by_status = Complaint.objects.filter(
organization=request.user.organization
).annotate(
survey_instance_count=Count('survey_instance__id'),
)
```
### After:
```python
complaints_by_status = Complaint.objects.filter(
organization=request.user.organization
)
```
The `survey_instance_count` annotation was removed as it was causing the FieldError and wasn't being used in the template or view logic.
## Additional Issue: Template Path Fix
After fixing the FieldError, a TemplateDoesNotExist error occurred for the KPI report templates. This was because they were extending `base.html` instead of `layouts/base.html`.
### Templates Fixed:
1. `templates/analytics/kpi_report_list.html` - Changed `{% extends 'base.html' %}` to `{% extends 'layouts/base.html' %}`
2. `templates/analytics/kpi_report_generate.html` - Changed `{% extends 'base.html' %}` to `{% extends 'layouts/base.html' %}`
3. `templates/analytics/kpi_report_detail.html` - Changed `{% extends 'base.html' %}` to `{% extends 'layouts/base.html' %}`
## Files Modified
1. `apps/analytics/ui_views.py` - Removed problematic annotation
2. `templates/analytics/kpi_report_list.html` - Fixed template extends path
3. `templates/analytics/kpi_report_generate.html` - Fixed template extends path
4. `templates/analytics/kpi_report_detail.html` - Fixed template extends path
## Impact
- The analytics dashboard should now load without errors
- All KPI report pages should render correctly
- The change is minimal and doesn't affect the functionality of the dashboard
- The removed annotation was not being used in the view or template
## Verification
To verify the fix:
1. Navigate to `/analytics/dashboard/`
2. Verify the page loads without FieldError
3. Navigate to `/analytics/kpi-reports/`
4. Verify the KPI report list loads without TemplateDoesNotExist error
5. Test generating and viewing KPI reports
## Next Steps
The analytics dashboard should now be fully functional. Consider reviewing if the `survey_instance_count` annotation is needed elsewhere in the codebase, and if so, implement it using a valid field lookup path.