290 lines
6.1 KiB
Markdown
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)
|