feat: Günther-Agent (Netzer-Style) + Expertenblick im TipModal

- AgentChat-Widget mit SSE-Streaming, Quick-Actions, Multiple-Choice
- /api/agent/chat + /api/agent/insight Routen
- Expertenblick-Panel im TipModal (lazy load)
- Günther-Icon
This commit is contained in:
Ronny
2026-04-05 21:45:08 +02:00
parent 4234269ba0
commit 07e0705380
10 changed files with 1615 additions and 15 deletions
+12
View File
@@ -15,6 +15,7 @@ import leaderboardRouter from './routes/leaderboard';
import adminRouter from './routes/admin';
import profileRouter from './routes/profile';
import devRouter from './routes/dev';
import agentRouter from './routes/agent';
const app = express();
const PORT = parseInt(process.env.PORT ?? '3001');
@@ -86,6 +87,16 @@ app.use(
})
);
// Rate limit für Agent-Chat (Claude API Calls sind kostenpflichtig)
app.use(
'/api/agent',
rateLimit({
windowMs: 60 * 1000, // 1 Minute
max: 10, // 10 Chat-Nachrichten pro User/Minute
message: { error: 'Too many agent requests, bitte kurz warten.' },
})
);
// ============================================================
// Health Check (ohne Auth für Railway/Render/Uptime-Monitoring)
// ============================================================
@@ -119,6 +130,7 @@ app.use('/api/tips', tipsRouter);
app.use('/api/leaderboard', leaderboardRouter);
app.use('/api/admin', adminRouter);
app.use('/api/profile', profileRouter);
app.use('/api/agent', agentRouter);
if (process.env.NODE_ENV === 'development') {
app.use('/api/dev', devRouter);
}