Files
Munich-news/docs/ADMIN_DASHBOARD.md
2025-11-12 13:35:59 +01:00

290 lines
6.1 KiB
Markdown

# Admin Dashboard
## Overview
The Admin Dashboard provides a web interface to monitor and manage the Munich News system, including AI status, GPU usage, performance metrics, and clustering statistics.
## Features
### 📊 System Statistics
- Total articles count
- Crawled articles
- AI summarized articles
- Clustered articles
- Neutral summaries generated
- Active subscribers
### 🤖 AI Status (Ollama)
- Connection status
- Current model
- Base URL
- Enabled/disabled state
- Live response test
### ⚡ GPU Status
- GPU availability detection
- GPU usage status (CPU vs GPU mode)
- Models loaded count
- GPU details (layers, model info)
- Performance recommendations
### 🚀 Performance Test
- Real-time performance testing
- Response time measurement
- Performance rating (Excellent/Good/Fair/Slow)
- Recommendations for optimization
### 📦 Available Models
- List of downloaded models
- Current model indicator
- Model management info
### ⚙️ Configuration
- Ollama configuration details
- Environment file status
- API key status
- Base URL and model settings
### 🔗 AI Clustering & Aggregation
- Clustering statistics
- Multi-source story detection
- Neutral summary generation metrics
- Clustering rate percentage
## Access
### Using Docker Compose (Recommended)
The frontend is automatically started with docker-compose:
```bash
# Start all services including frontend
docker-compose up -d
# Check frontend status
docker-compose ps frontend
# View frontend logs
docker-compose logs -f frontend
```
The frontend will be available at: **http://localhost:3000**
### Access Admin Dashboard
Open your browser and navigate to:
```
http://localhost:3000/admin.html
```
### Manual Start (Development)
If you want to run the frontend outside Docker:
```bash
# Navigate to frontend directory
cd frontend
# Install dependencies (first time only)
npm install
# Start the server
npm start
# Or with nodemon for auto-reload
npm run dev
```
## Screenshots
### Dashboard Overview
The dashboard displays:
- Real-time system statistics
- AI/Ollama status with live connection test
- GPU detection and usage
- Performance metrics
- Model management
- Configuration details
### Performance Test
Click "Run Test" to:
- Test AI response time
- Get performance rating
- Receive optimization recommendations
### GPU Status
Shows:
- ✅ GPU Active - Using GPU acceleration (fast)
- ⚠️ CPU Mode - Using CPU only (slower)
- Recommendations for enabling GPU
## API Endpoints Used
The dashboard connects to these backend APIs:
- `GET /api/stats` - System statistics
- `GET /api/ollama/ping` - Ollama connection test
- `GET /api/ollama/gpu-status` - GPU detection
- `GET /api/ollama/test` - Performance test
- `GET /api/ollama/models` - List models
- `GET /api/ollama/config` - Configuration
## Refresh Data
Click the **🔄 Refresh All** button to reload all dashboard data.
## Navigation
- **← Back to Home** - Return to main newsletter page
- **Admin Dashboard** link in footer of main page
## Troubleshooting
### Frontend Won't Start
```bash
# Check if port 3000 is in use
lsof -i :3000
# Install dependencies
cd frontend
npm install
# Start server
npm start
```
### Can't Connect to Backend
1. **Check backend is running:**
```bash
docker-compose ps backend
```
2. **Check backend URL in frontend/server.js:**
```javascript
const API_URL = process.env.API_URL || 'http://localhost:5001';
```
3. **Test backend directly:**
```bash
curl http://localhost:5001/api/stats
```
### Dashboard Shows Errors
1. **Check browser console** (F12) for errors
2. **Verify backend APIs are accessible**
3. **Check CORS settings** if running on different domains
## Development
### File Structure
```
frontend/
├── public/
│ ├── index.html # Main newsletter page
│ ├── admin.html # Admin dashboard ⭐
│ ├── admin.js # Dashboard JavaScript ⭐
│ ├── app.js # Main page JavaScript
│ └── styles.css # Shared styles
├── server.js # Express server
└── package.json # Dependencies
```
### Adding New Features
1. **Add API endpoint** in `backend/routes/`
2. **Add function** in `frontend/public/admin.js`
3. **Add UI section** in `frontend/public/admin.html`
4. **Call function** in `refreshAll()` or on button click
### Styling
The dashboard uses inline styles for simplicity. Key classes:
- `.card` - Dashboard cards
- `.stat-row` - Statistic rows
- `.status-indicator` - Status dots (green/red/yellow)
- `.performance-badge` - Performance ratings
- `.btn` - Buttons
## Production Deployment
### Option 1: Serve with Backend
Add frontend to docker-compose:
```yaml
frontend:
build: ./frontend
ports:
- "3000:3000"
environment:
- API_URL=http://backend:5001
depends_on:
- backend
```
### Option 2: Static Hosting
Build and serve static files:
```bash
# Serve with nginx, Apache, or CDN
cp -r frontend/public/* /var/www/html/
```
Update API URLs to point to production backend.
### Option 3: Reverse Proxy
Use nginx to serve both:
```nginx
location / {
proxy_pass http://frontend:3000;
}
location /api/ {
proxy_pass http://backend:5001;
}
```
## Security
### Production Recommendations
1. **Add authentication** - Protect admin dashboard
2. **Use HTTPS** - Encrypt traffic
3. **Rate limiting** - Prevent abuse
4. **CORS configuration** - Restrict origins
5. **API keys** - Secure backend access
### Basic Auth Example
```javascript
// In server.js
const basicAuth = require('express-basic-auth');
app.use('/admin.html', basicAuth({
users: { 'admin': 'your-secure-password' },
challenge: true
}));
```
## Related Documentation
- [API.md](API.md) - Backend API reference
- [CHECK_GPU_STATUS.md](CHECK_GPU_STATUS.md) - GPU status checking
- [CHANGING_AI_MODEL.md](CHANGING_AI_MODEL.md) - Model management
- [AI_NEWS_AGGREGATION.md](AI_NEWS_AGGREGATION.md) - AI features
## Support
For issues or questions:
1. Check browser console for errors
2. Check backend logs: `docker-compose logs backend`
3. Verify API endpoints with curl
4. Check [TROUBLESHOOTING.md](../TROUBLESHOOTING.md)