diff --git a/tests/test_templates.py b/tests/test_templates.py index 56c7e8d..8c33fb3 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -10,3 +10,10 @@ def test_templates_do_not_slice_filter_results_inline(): offenders.append(str(template)) assert offenders == [] + + +def test_search_template_does_not_require_browser_api_client(): + content = Path("webui/app/templates/search.html").read_text() + + assert "window.docsApiClient" not in content + assert "{% for result in results %}" in content diff --git a/webui/app/main.py b/webui/app/main.py index 969202b..e7e95a5 100644 --- a/webui/app/main.py +++ b/webui/app/main.py @@ -246,22 +246,26 @@ async def upload_file( @app.get("/search") async def search_form(request: Request): - return templates.TemplateResponse("search.html", {"request": request, "query": "", "results": []}) + return templates.TemplateResponse( + "search.html", + {"request": request, "query": "", "results": [], "limit": 10, "error": None}, + ) @app.get("/search/results") async def search_results(request: Request, q: str = "", limit: int = 10): client = get_client() results = [] + error = None if q: try: data = await client.post("/search", json={"query": q, "library_id": None, "limit": limit}) results = data.get("results", []) - except Exception: - results = [] + except Exception as exc: + error = str(exc) return templates.TemplateResponse( "search.html", - {"request": request, "query": q, "results": results, "limit": limit}, + {"request": request, "query": q, "results": results, "limit": limit, "error": error}, ) diff --git a/webui/app/templates/search.html b/webui/app/templates/search.html index dc57230..5a99229 100644 --- a/webui/app/templates/search.html +++ b/webui/app/templates/search.html @@ -11,61 +11,34 @@ -
- -{% if results %} +{% if error %} +

Error loading results: {{ error }}

+{% elif query and not results %} +

No results found.

+{% elif results %}
{{ results|length }} results found
+
+ {% for result in results %} +
+

{{ result.title or result.path or result.library_id or 'Document result' }}

+

{{ (result.content or '')[:500] }}{% if (result.content or '')|length > 500 %}...{% endif %}

+

+ Library: {{ result.library_id or 'unknown' }} + {% if result.score is defined %} | Score: {{ '%.3f'|format(result.score) }}{% endif %} +

+ {% if result.library_id %} + View library documents + {% endif %} +
+ {% endfor %} +
{% endif %} - - -{% endblock %} \ No newline at end of file +{% endblock %}