talk2me/ADMIN_DASHBOARD.md
Adolfo Delorenzo fa951c3141 Add comprehensive database integration, authentication, and admin dashboard
This commit introduces major enhancements to Talk2Me:

## Database Integration
- PostgreSQL support with SQLAlchemy ORM
- Redis integration for caching and real-time analytics
- Automated database initialization scripts
- Migration support infrastructure

## User Authentication System
- JWT-based API authentication
- Session-based web authentication
- API key authentication for programmatic access
- User roles and permissions (admin/user)
- Login history and session tracking
- Rate limiting per user with customizable limits

## Admin Dashboard
- Real-time analytics and monitoring
- User management interface (create, edit, delete users)
- System health monitoring
- Request/error tracking
- Language pair usage statistics
- Performance metrics visualization

## Key Features
- Dual authentication support (token + user accounts)
- Graceful fallback for missing services
- Non-blocking analytics middleware
- Comprehensive error handling
- Session management with security features

## Bug Fixes
- Fixed rate limiting bypass for admin routes
- Added missing email validation method
- Improved error handling for missing database tables
- Fixed session-based authentication for API endpoints

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-03 18:21:56 -06:00

221 lines
5.7 KiB
Markdown

# Talk2Me Admin Analytics Dashboard
A comprehensive analytics dashboard for monitoring and managing the Talk2Me application.
## Features
### Real-time Monitoring
- **Request Volume**: Track requests per minute, hour, and day
- **Active Sessions**: Monitor current active user sessions
- **Error Rates**: Real-time error tracking and analysis
- **System Health**: Monitor Redis, PostgreSQL, and ML services status
### Analytics & Insights
- **Translation & Transcription Metrics**: Usage statistics by operation type
- **Language Pair Analysis**: Most popular translation combinations
- **Response Time Monitoring**: Track performance across all operations
- **Cache Performance**: Monitor cache hit rates for optimization
### Performance Metrics
- **Response Time Percentiles**: P95 and P99 latency tracking
- **Throughput Analysis**: Requests per minute visualization
- **Slow Request Detection**: Identify and analyze performance bottlenecks
- **Resource Usage**: Memory and GPU utilization tracking
### Data Management
- **Export Capabilities**: Download analytics data in JSON format
- **Historical Data**: View trends over time (daily, weekly, monthly)
- **Error Logs**: Detailed error tracking with stack traces
- **Session Management**: Track and manage user sessions
## Setup
### 1. Database Setup
Initialize the analytics database tables:
```bash
python init_analytics_db.py
```
This creates the following tables:
- `error_logs`: Detailed error tracking
- `request_logs`: Request-level analytics
- `translation_logs`: Translation operation metrics
- `transcription_logs`: Transcription operation metrics
- `tts_logs`: Text-to-speech operation metrics
- `daily_stats`: Aggregated daily statistics
### 2. Configuration
Set the following environment variables:
```bash
# Admin access token (required)
export ADMIN_TOKEN="your-secure-admin-token"
# Database configuration
export DATABASE_URL="postgresql://user:password@localhost/talk2me"
# Redis configuration
export REDIS_URL="redis://localhost:6379/0"
```
### 3. Access the Dashboard
1. Navigate to: `http://your-domain/admin`
2. Enter your admin token
3. Access the analytics dashboard
## Dashboard Sections
### Overview Cards
- Total Requests (all-time and today)
- Active Sessions (real-time)
- Error Rate (24-hour percentage)
- Cache Hit Rate (performance metric)
### Charts & Visualizations
#### Request Volume Chart
- Toggle between minute, hour, and day views
- Real-time updates every 5 seconds
- Historical data for trend analysis
#### Language Pairs Donut Chart
- Top 6 most used language combinations
- Visual breakdown of translation patterns
#### Operations Bar Chart
- Daily translation and transcription counts
- 7-day historical view
#### Response Time Line Chart
- Average, P95, and P99 response times
- Broken down by operation type
#### Error Analysis
- Error type distribution pie chart
- Recent errors list with details
- Timeline of error occurrences
### Performance Table
- Detailed metrics for each operation type
- Average response times
- 95th and 99th percentile latencies
## Real-time Updates
The dashboard uses Server-Sent Events (SSE) for real-time updates:
- Automatic refresh every 5 seconds
- Connection status indicator
- Automatic reconnection on disconnect
## Data Export
Export analytics data for external analysis:
1. Click "Export Data" in the navigation
2. Choose data type:
- `requests`: Request and operation counts
- `errors`: Error logs and details
- `performance`: Response time metrics
- `all`: Complete data export
## API Endpoints
The admin dashboard provides the following API endpoints:
### Authentication Required
All endpoints require the `X-Admin-Token` header.
### Available Endpoints
#### Overview Stats
```
GET /admin/api/stats/overview
```
Returns overall system statistics
#### Request Statistics
```
GET /admin/api/stats/requests/{timeframe}
```
Timeframes: `minute`, `hour`, `day`
#### Operation Statistics
```
GET /admin/api/stats/operations
```
Translation and transcription metrics
#### Error Statistics
```
GET /admin/api/stats/errors
```
Error types, timeline, and recent errors
#### Performance Statistics
```
GET /admin/api/stats/performance
```
Response times and throughput metrics
#### Data Export
```
GET /admin/api/export/{data_type}
```
Data types: `requests`, `errors`, `performance`, `all`
#### Real-time Updates
```
GET /admin/api/stream/updates
```
Server-Sent Events stream for real-time updates
## Mobile Optimization
The dashboard is fully responsive and optimized for mobile devices:
- Touch-friendly controls
- Responsive charts that adapt to screen size
- Collapsible navigation for small screens
- Optimized data tables for mobile viewing
## Security
- Admin token authentication required
- Session-based authentication after login
- Separate CORS configuration for admin endpoints
- All sensitive data masked in exports
## Troubleshooting
### Dashboard Not Loading
1. Check Redis and PostgreSQL connections
2. Verify admin token is set correctly
3. Check browser console for JavaScript errors
### Missing Data
1. Ensure analytics middleware is initialized
2. Check database tables are created
3. Verify Redis is running and accessible
### Real-time Updates Not Working
1. Check SSE support in your reverse proxy
2. Ensure `X-Accel-Buffering: no` header is set
3. Verify firewall allows SSE connections
## Performance Considerations
- Charts limited to reasonable data points for performance
- Automatic data aggregation for historical views
- Efficient database queries with proper indexing
- Client-side caching for static data
## Future Enhancements
- WebSocket support for lower latency updates
- Customizable dashboards and widgets
- Alert configuration for thresholds
- Integration with external monitoring tools
- Machine learning for anomaly detection