From c95b72b3861fa26cbb12fc2febf9e3ecd6671a61 Mon Sep 17 00:00:00 2001 From: jsumanigoud-svg Date: Sat, 6 Jun 2026 20:32:08 +0530 Subject: [PATCH] Added search history and analytics features --- client/package-lock.json | 3 +-- client/src/main.jsx | 3 +-- server/src/config/env.js | 4 ++-- server/src/index.js | 2 ++ server/src/routes/chatRoutes.js | 10 ++++++++-- server/src/routes/history.js | 18 ++++++++++++++++++ server/src/services/ragService.js | 1 + 7 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 server/src/routes/history.js diff --git a/client/package-lock.json b/client/package-lock.json index ff909c1..c3d605c 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -14,8 +14,7 @@ "react-dom": "^19.0.0", "recharts": "^3.8.1", "vite": "^6.0.7" - }, - "devDependencies": {} + } }, "node_modules/@babel/code-frame": { "version": "7.29.7", diff --git a/client/src/main.jsx b/client/src/main.jsx index 4065a3e..07fcffe 100644 --- a/client/src/main.jsx +++ b/client/src/main.jsx @@ -15,8 +15,7 @@ import { ArrowLeft, Trash2, Plus, Volume2, Download, X } from 'lucide-react'; import './styles.css'; - -const API_URL = import.meta.env.VITE_API_URL || 'http://localhost:5001'; +const API_URL = import.meta.env.VITE_API_URL || 'http://localhost:5000'; const QUICK_PROMPTS = [ 'Who can sign the NOC?', 'Is there a stipend?', diff --git a/server/src/config/env.js b/server/src/config/env.js index bf97efc..8b24f1f 100644 --- a/server/src/config/env.js +++ b/server/src/config/env.js @@ -9,8 +9,8 @@ export const env = { minConfidence: Number(process.env.MIN_CONFIDENCE || 0.53), topK: Number(process.env.TOP_K || 4), ollamaBaseUrl: process.env.OLLAMA_BASE_URL || 'http://127.0.0.1:11434', - ollamaModel: process.env.OLLAMA_MODEL || 'gemma3:4b', + ollamaModel: process.env.OLLAMA_MODEL || 'llama3', flagEmbeddingModel: process.env.FLAG_EMBEDDING_MODEL || 'BAAI/bge-small-en-v1.5', - pythonBin: process.env.PYTHON_BIN || 'python3', + pythonBin: 'C:/Users/jsuma/AppData/Local/Programs/Python/Python314/python.exe', embeddingTimeoutMs: Number(process.env.EMBEDDING_TIMEOUT_MS || 30000) }; diff --git a/server/src/index.js b/server/src/index.js index 770bd61..93df890 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -8,6 +8,7 @@ import { faqRouter } from './routes/faqRoutes.js'; import {questionReviewRouter} from './routes/questionReviewRoutes.js'; import { mostAskedRouter } from './routes/mostAskedRoutes.js'; import analyticsRoutes from './routes/analytics.js'; +import historyRoutes from './routes/history.js'; const app = express(); @@ -25,6 +26,7 @@ app.use('/api/chat', chatRouter); app.use('/api/orgs', orgRouter); app.use('/api/faqs', faqRouter); app.use('/api/most-asked', mostAskedRouter); +app.use('/api/history', historyRoutes); app.use('/api/analytics', analyticsRoutes); diff --git a/server/src/routes/chatRoutes.js b/server/src/routes/chatRoutes.js index 09745b3..3ba0bd7 100644 --- a/server/src/routes/chatRoutes.js +++ b/server/src/routes/chatRoutes.js @@ -6,6 +6,7 @@ export const chatRouter = express.Router(); chatRouter.post('/', async (req, res, next) => { try { const message = req.body?.message; + // Save search await SearchLog.create({ @@ -15,6 +16,11 @@ await SearchLog.create({ const result = await answerQuestion(message); res.json(result); } catch (error) { - next(error); - } + console.error("CHAT ERROR:", error); + + res.status(500).json({ + error: error.message, + stack: error.stack + }); +} }); diff --git a/server/src/routes/history.js b/server/src/routes/history.js new file mode 100644 index 0000000..00e5338 --- /dev/null +++ b/server/src/routes/history.js @@ -0,0 +1,18 @@ +import express from 'express'; +import SearchLog from '../models/SearchLog.js'; + +const router = express.Router(); + +router.get('/', async (req, res) => { + try { + const history = await SearchLog.find() + .sort({ createdAt: -1 }) + .limit(20); + + res.json(history); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +export default router; \ No newline at end of file diff --git a/server/src/services/ragService.js b/server/src/services/ragService.js index c5b831f..56e3cc6 100644 --- a/server/src/services/ragService.js +++ b/server/src/services/ragService.js @@ -45,6 +45,7 @@ async function getKnowledgeBase() { isActive: true, embedding: { $exists: true, $ne: [] }, }).lean(); + console.log("FAQs loaded:", faqs.length); cachedKnowledgeBase = faqs.map((faq) => ({ ...faq, id: String(faq._id),