Files
thrilltrack-explorer/docs/ERROR_TRACKING.md
gpt-engineer-app[bot] a86da6e833 Approve database migration
2025-11-03 15:18:06 +00:00

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