fix: Update models and viz to use int-only doc_id

- algorithms.py: Revert SearchResult.id to int (all docs use int IDs now)
- semantic.py: Revert SemanticSearchResult.id to int, remove Union import
- viz_routes.py: Remove str() conversion when querying doc_id from Qdrant
- viz_routes.py: Convert doc_id from query param to int in chunk context

Fixes vector visualization which was collapsing all chunks to a single
point because Qdrant queries were failing to match doc_id (string vs int).
This commit is contained in:
Chris Coutinho
2025-11-20 12:32:27 +01:00
parent d0691d5aa0
commit f1a5fac1b9
3 changed files with 6 additions and 4 deletions
+4 -2
View File
@@ -235,7 +235,7 @@ async def vector_visualization_search(request: Request) -> JSONResponse:
must_conditions = [
FieldCondition(
key="doc_id",
match=MatchValue(value=str(result.id)),
match=MatchValue(value=result.id),
),
FieldCondition(
key="user_id",
@@ -524,6 +524,8 @@ async def chunk_context_endpoint(request: Request) -> JSONResponse:
start = int(start_str)
end = int(end_str)
# Convert doc_id to int (all document types use int IDs)
doc_id_int = int(doc_id)
# Get authenticated Nextcloud client
from nextcloud_mcp_server.auth.userinfo_routes import (
@@ -536,7 +538,7 @@ async def chunk_context_endpoint(request: Request) -> JSONResponse:
chunk_context = await get_chunk_with_context(
nc_client=nc_client,
user_id=request.user.display_name, # User ID from auth
doc_id=doc_id,
doc_id=doc_id_int,
doc_type=doc_type,
chunk_start=start,
chunk_end=end,