From c8b8a7bfcacebcbe9aa2e4d8113c0e3aaf5c80f2 Mon Sep 17 00:00:00 2001 From: Atharva Matale Date: Sun, 5 Apr 2026 00:03:26 +0530 Subject: [PATCH 1/2] fix: resolve 4 --- serve.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/serve.py b/serve.py index 9a32879..2e4d937 100644 --- a/serve.py +++ b/serve.py @@ -38,6 +38,72 @@ _use_rerank = False _stats = {"start_time": 0, "queries": 0, "avg_latency_ms": 0, "_latency_sum": 0} +HTML = """ + + + + + + Knowledge Search + + + +

Knowledge Search

+
+ + +
+
+ + + + +""" + def _reload(): """Load/reload embeddings from DB.""" @@ -66,9 +132,17 @@ def do_GET(self): elif path == "/reload": _reload() self._json_response({"status": "reloaded", "items": len(_rows)}) + elif path == "/": + self._html_response() else: self._json_response({"error": "not found"}, status=404) + def _html_response(self): + self.send_response(200) + self.send_header("Content-Type", "text/html") + self.end_headers() + self.wfile.write(HTML.encode()) + def _handle_search(self, params): q = params.get("q", [""])[0] if not q: @@ -162,4 +236,4 @@ def main(): if __name__ == "__main__": - main() + main() \ No newline at end of file From 0eb252f0a281c104be9185f19824e09771bd0e44 Mon Sep 17 00:00:00 2001 From: MakiforDevelop Date: Wed, 6 May 2026 14:57:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BC=B7=E5=8C=96=E6=90=9C=E5=B0=8B?= =?UTF-8?q?=E9=A0=81=E9=9D=A2=E5=AE=89=E5=85=A8=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- serve.py | 79 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/serve.py b/serve.py index 76bfefd..6c3103f 100644 --- a/serve.py +++ b/serve.py @@ -77,26 +77,57 @@ form.addEventListener('submit', async (event) => { event.preventDefault(); - const query = document.getElementById('query').value; - - const response = await fetch(`/search?q=${query}`); - const data = await response.json(); - - resultsDiv.innerHTML = ''; - if (data.results && data.results.length > 0) { - data.results.forEach(result => { - const resultDiv = document.createElement('div'); - resultDiv.className = 'result'; - resultDiv.innerHTML = ` -
Score: ${result.signal_score.toFixed(3)}
-
Route: ${result.route}
-
Title: ${result.title}
-
Core Insight: ${result.core_insight}
- `; - resultsDiv.appendChild(resultDiv); - }); - } else { - resultsDiv.innerHTML = '

No results found.

'; + const query = document.getElementById('query').value.trim(); + if (!query) { + return; + } + + resultsDiv.replaceChildren(); + const loading = document.createElement('p'); + loading.textContent = 'Searching...'; + resultsDiv.appendChild(loading); + + try { + const response = await fetch(`/search?q=${encodeURIComponent(query)}`); + const data = await response.json(); + resultsDiv.replaceChildren(); + + if (!response.ok) { + throw new Error(data.error || 'Search failed'); + } + + if (data.results && data.results.length > 0) { + data.results.forEach(result => { + const resultDiv = document.createElement('div'); + resultDiv.className = 'result'; + + const score = document.createElement('div'); + score.className = 'score'; + score.textContent = `Score: ${(result.signal_score || 0).toFixed(3)}`; + + const route = document.createElement('div'); + route.className = 'route'; + route.textContent = `Route: ${result.route || 'unknown'}`; + + const title = document.createElement('div'); + title.textContent = `Title: ${result.title || '(untitled)'}`; + + const insight = document.createElement('div'); + insight.textContent = `Core Insight: ${result.core_insight || ''}`; + + resultDiv.append(score, route, title, insight); + resultsDiv.appendChild(resultDiv); + }); + } else { + const empty = document.createElement('p'); + empty.textContent = 'No results found.'; + resultsDiv.appendChild(empty); + } + } catch (error) { + resultsDiv.replaceChildren(); + const message = document.createElement('p'); + message.textContent = error.message; + resultsDiv.appendChild(message); } }); @@ -138,10 +169,12 @@ def do_GET(self): self._json_response({"error": "not found"}, status=404) def _html_response(self): + body = HTML.encode() self.send_response(200) - self.send_header("Content-Type", "text/html") + self.send_header("Content-Type", "text/html; charset=utf-8") + self.send_header("Content-Length", str(len(body))) self.end_headers() - self.wfile.write(HTML.encode()) + self.wfile.write(body) def _handle_search(self, params): q = params.get("q", [""])[0] @@ -240,4 +273,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main()