Sent Reports Dashboard
The Sent Reports Dashboard provides comprehensive monitoring and management of vulnerability scan reports.
Overview
Access the dashboard at /reports/sent (admin only).
The dashboard displays all sent vulnerability scan reports with access statistics, retention tracking, and action alerts.
Dashboard Features
Report List Columns
Column |
Description |
|---|---|
Report ID |
Unique identifier for the scan |
Institution |
Organization name |
Scan Date |
When the scan was performed |
Status |
Current report status (Active/Not Accessed/Expired) |
Access Count |
Number of times the report was accessed |
First Access |
Timestamp of first access |
Last Access |
Timestamp of most recent access |
Retention Remaining |
Time until report expires |
Actions |
Send notification button |
Status Indicators
Reports are color-coded by status:
Status |
Color |
Description |
|---|---|---|
Active |
Green |
Report has been accessed and retention period is active |
Not Accessed |
Yellow |
Report has not been accessed yet |
Expired |
Red |
Retention period has expired (24 hours after last access) |
Alert Types
Action Required (Orange)
Displayed when a scan contains unmanaged IP addresses.
Orange warning icon
“Action Required” chip
Shows count of unmanaged IPs
Tooltip lists specific unmanaged IPs
Resolution: Assign Contact Persons to the unmanaged IPs.
Alert (Red)
Displayed when a report has not been accessed within 72 hours of creation.
Red alert icon
Report row highlighted in red
Resolution: Send notification to responsible parties.
Retention Policy
Reports follow a 24-hour retention policy after first access:
Report is created and sent
First access starts the 24-hour countdown
Each subsequent access resets the timer
After 24 hours of inactivity, report expires
Note
The retention timer is based on the last access time, not the first access.
Sending Notifications
Manual Notification
To send notifications for a specific report:
Locate the report in the dashboard
Click the “Send” button in the Actions column
Wait for the notification process to complete
Review the results dialog
Notification Results
After sending, a dialog displays:
Success count: Number of notifications sent successfully
Total hosts: Total number of hosts in the scan
Errors: List of any failures (e.g., missing contact persons)
Example:
Notifications sent: 8 / 10
Errors:
• No contact person found for IP: 192.168.1.50
• No contact person found for IP: 10.0.0.100
Troubleshooting Failed Notifications
Common issues:
No contact person found
Cause: IP address has no assigned Contact Person
Solution: Add the IP to a Contact Person in
/manage/contact-persons
Invalid email address
Cause: Contact Person has no email or invalid email
Solution: Update the Contact Person’s email address
Email sending failure
Cause: SMTP server issue
Solution: Check email configuration and server logs
Auto-Refresh
The dashboard automatically refreshes every 30 seconds to show:
New access events
Updated retention times
Status changes
Tip
The refresh is automatic - no need to manually reload the page.
API Endpoints
- GET /dashboard/sent-reports
Get enhanced dashboard data for sent reports.
Authentication: Admin required
Response:
{ "items": [ { "scan_id": 1, "report_id": "2025-11-19_Demo_Corp_External_Scan", "scan_date": "2025-11-19T10:00:00", "institution_name": "Demo Corp", "file_hash": "a1b2c3d4e5f67890", "access_count": 5, "first_access": "2025-11-19T14:30:00", "last_access": "2025-11-20T09:15:00", "retention_remaining_seconds": 45000, "status": "active", "alert": false, "action_required": false, "unmanaged_ips": [], "total_ips": 10 } ], "total": 1, "alerted": 0, "action_required": 0 }
- POST /reports/send-notifications/{scan_id}
Send vulnerability notifications for a specific scan.
Authentication: Admin required
- Parameters:
scan_id – The scan ID
Response:
{ "message": "Notifications sent", "notifications_sent": 8, "total_hosts": 10, "errors": [ "No contact person found for IP: 192.168.1.50", "No contact person found for IP: 10.0.0.100" ] }
Best Practices
For Administrators
Monitor action-required items daily - Assign Contact Persons to unmanaged IPs promptly
Review alerts regularly - Investigate why reports aren’t being accessed
Maintain Contact Person database - Keep IP assignments up to date
Track retention expirations - Note which reports are expiring soon
For Report Recipients
Access reports promptly - Avoid triggering 72-hour alerts
Keep contact information current - Update your email if it changes
Understand retention policy - Reports expire 24 hours after last access
Download critical reports - Save important reports for long-term storage
Troubleshooting
Dashboard Not Loading
Issue: Dashboard shows loading spinner indefinitely
Solutions:
Check browser console for errors
Verify backend is running:
docker logs vulnerability-scanner-backend-1Check network connectivity
Clear browser cache and reload
Reports Not Appearing
Issue: Expected reports don’t show in dashboard
Possible causes:
Missing file_hash: Reports without
file_hashare filtered outDatabase query issue: Check backend logs
Permission issue: Ensure you’re logged in as admin
Solution: Verify in database:
SELECT report_id, file_hash FROM scans WHERE file_hash IS NULL;
Incorrect Retention Times
Issue: Retention times don’t match expectations
Causes:
Server time mismatch: Check Docker container time
Timezone issues: Ensure UTC is used consistently
Last access not updating: Check access log creation
Solution: Verify access logs:
SELECT scan_id, MAX(accessed_at) as last_access
FROM report_access_logs
GROUP BY scan_id;