mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 10:31:13 -05:00
247 lines
6.3 KiB
Markdown
247 lines
6.3 KiB
Markdown
# Error Tracking System Documentation
|
|
|
|
## Overview
|
|
|
|
The error tracking system provides comprehensive monitoring and debugging capabilities for ThrillWiki. It captures detailed error context including stack traces, user action breadcrumbs, and environment information.
|
|
|
|
## Features
|
|
|
|
### 1. Enhanced Error Context
|
|
|
|
Every error captured includes:
|
|
- **Stack Trace**: First 5000 characters of the error stack
|
|
- **Breadcrumbs**: Last 10 user actions before the error
|
|
- **Environment Context**: Browser/device information at error time
|
|
- **Request Metadata**: Endpoint, method, duration, status code
|
|
- **User Context**: User ID, session information
|
|
|
|
### 2. Error Monitoring Dashboard
|
|
|
|
**Location**: `/admin/error-monitoring`
|
|
|
|
**Access**: Admin/Moderator with MFA only
|
|
|
|
**Features**:
|
|
- Real-time error list with auto-refresh (30 seconds)
|
|
- Filter by date range (1h, 24h, 7d, 30d)
|
|
- Filter by error type
|
|
- Search by request ID, endpoint, or error message
|
|
- Error analytics (total errors, error types, affected users, avg duration)
|
|
- Top 5 errors chart
|
|
|
|
### 3. Error Details Modal
|
|
|
|
Click any error to view:
|
|
- Full request ID (copyable)
|
|
- Timestamp
|
|
- Endpoint and HTTP method
|
|
- Status code and duration
|
|
- Full error message
|
|
- Stack trace (collapsible)
|
|
- Breadcrumb trail with timestamps
|
|
- Environment context (formatted JSON)
|
|
- Link to user profile (if available)
|
|
- Copy error report button
|
|
|
|
### 4. User-Facing Error IDs
|
|
|
|
All errors shown to users include a short reference ID (first 8 characters of request UUID):
|
|
|
|
```
|
|
Error occurred
|
|
Reference ID: a3f7b2c1
|
|
```
|
|
|
|
Users can provide this ID to support for quick error lookup.
|
|
|
|
### 5. Error ID Lookup
|
|
|
|
**Location**: `/admin/error-lookup`
|
|
|
|
Quick search interface for finding errors by their reference ID. Enter the 8-character ID and get redirected to the full error details.
|
|
|
|
## How It Works
|
|
|
|
### Breadcrumb Tracking
|
|
|
|
Breadcrumbs are automatically captured for:
|
|
- **Navigation**: Route changes
|
|
- **User Actions**: Button clicks, form submissions
|
|
- **API Calls**: Edge function and Supabase calls
|
|
- **State Changes**: Important state updates
|
|
|
|
### Environment Context
|
|
|
|
Captured automatically on error:
|
|
- Viewport dimensions
|
|
- Screen resolution
|
|
- Browser memory usage (Chrome only)
|
|
- Network connection type
|
|
- Timezone and language
|
|
- Platform information
|
|
- Storage availability
|
|
|
|
### Error Flow
|
|
|
|
1. **Error Occurs** → Error boundary or catch block
|
|
2. **Context Captured** → Breadcrumbs + environment + stack trace
|
|
3. **Logged to Database** → `request_metadata` table via RPC function
|
|
4. **User Notification** → Toast with error ID
|
|
5. **Admin Dashboard** → Real-time visibility
|
|
|
|
## Database Schema
|
|
|
|
### request_metadata Table
|
|
|
|
New columns added:
|
|
- `error_stack` (text): Stack trace (max 5000 chars)
|
|
- `breadcrumbs` (jsonb): Array of breadcrumb objects
|
|
- `environment_context` (jsonb): Browser/device information
|
|
|
|
### error_summary View
|
|
|
|
Aggregated error statistics:
|
|
- Error type and endpoint
|
|
- Occurrence count
|
|
- Affected users count
|
|
- First and last occurrence timestamps
|
|
- Average duration
|
|
- Recent request IDs (last 24h)
|
|
|
|
## Using the System
|
|
|
|
### For Developers
|
|
|
|
#### Adding Breadcrumbs
|
|
|
|
```typescript
|
|
import { breadcrumb } from '@/lib/errorBreadcrumbs';
|
|
|
|
// Navigation (automatic via App.tsx)
|
|
breadcrumb.navigation('/parks/123', '/parks');
|
|
|
|
// User action
|
|
breadcrumb.userAction('clicked submit', 'ParkForm', { parkId: '123' });
|
|
|
|
// API call
|
|
breadcrumb.apiCall('/functions/v1/detect-location', 'POST', 200);
|
|
|
|
// State change
|
|
breadcrumb.stateChange('Park data loaded', { parkId: '123' });
|
|
```
|
|
|
|
#### Error Handling with Tracking
|
|
|
|
```typescript
|
|
import { handleError } from '@/lib/errorHandler';
|
|
import { trackRequest } from '@/lib/requestTracking';
|
|
|
|
try {
|
|
const result = await trackRequest(
|
|
{ endpoint: '/api/parks', method: 'GET' },
|
|
async (context) => {
|
|
// Your code here
|
|
return data;
|
|
}
|
|
);
|
|
} catch (error) {
|
|
handleError(error, {
|
|
action: 'Load park data',
|
|
metadata: { parkId },
|
|
});
|
|
}
|
|
```
|
|
|
|
### For Support Staff
|
|
|
|
#### Finding an Error
|
|
|
|
1. User reports error with ID: `a3f7b2c1`
|
|
2. Go to `/admin/error-lookup`
|
|
3. Enter the ID
|
|
4. View full error details
|
|
|
|
#### Analyzing Error Patterns
|
|
|
|
1. Go to `/admin/error-monitoring`
|
|
2. Review analytics cards for trends
|
|
3. Check Top 5 Errors chart
|
|
4. Filter by time range to see patterns
|
|
5. Click any error for full details
|
|
|
|
## Best Practices
|
|
|
|
### DO:
|
|
- ✅ Always use error boundaries around risky components
|
|
- ✅ Add breadcrumbs for important user actions
|
|
- ✅ Use `trackRequest` for critical API calls
|
|
- ✅ Include context in `handleError` calls
|
|
- ✅ Check error monitoring dashboard regularly
|
|
|
|
### DON'T:
|
|
- ❌ Log sensitive data in breadcrumbs
|
|
- ❌ Add breadcrumbs in tight loops
|
|
- ❌ Ignore error IDs in user reports
|
|
- ❌ Skip error context when handling errors
|
|
- ❌ Let errors go untracked
|
|
|
|
## Performance Considerations
|
|
|
|
- **Error tracking overhead**: < 10ms per request
|
|
- **Breadcrumb memory**: Max 10 breadcrumbs retained
|
|
- **Stack trace size**: Limited to 5000 characters
|
|
- **Database cleanup**: 30-day retention (automatic)
|
|
- **Dashboard refresh**: Every 30 seconds
|
|
|
|
## Troubleshooting
|
|
|
|
### Error not appearing in dashboard
|
|
- Check if error occurred within selected time range
|
|
- Verify error type filter settings
|
|
- Try clearing search term
|
|
- Refresh the dashboard manually
|
|
|
|
### Missing breadcrumbs
|
|
- Breadcrumbs only captured for last 10 actions
|
|
- Check if breadcrumb tracking is enabled for that action type
|
|
- Verify error occurred after breadcrumbs were added
|
|
|
|
### Incomplete stack traces
|
|
- Stack traces limited to 5000 characters
|
|
- Some browsers don't provide full stacks
|
|
- Source maps not currently supported
|
|
|
|
## Limitations
|
|
|
|
**Not Included**:
|
|
- Third-party error tracking (Sentry, Rollbar)
|
|
- Session replay functionality
|
|
- Source map support for minified code
|
|
- Real-time alerting (future enhancement)
|
|
- Cross-origin error tracking
|
|
- Error rate limiting
|
|
|
|
## Future Enhancements
|
|
|
|
- AI-powered error categorization
|
|
- Automatic error assignment to team members
|
|
- GitHub Issues integration
|
|
- Slack/Discord notifications for critical errors
|
|
- Real-time WebSocket updates
|
|
- Error severity auto-detection
|
|
- Error resolution workflow
|
|
|
|
## Support
|
|
|
|
For issues with the error tracking system itself:
|
|
1. Check console for tracking errors
|
|
2. Verify database connectivity
|
|
3. Check RLS policies on `request_metadata`
|
|
4. Review edge function logs
|
|
5. Contact dev team with details
|
|
|
|
---
|
|
|
|
Last updated: 2025-11-03
|
|
Version: 1.0.0
|