Private
Public Access
refactor(rag_engine,ai_client): rag_engine.search returns List[RAGChunk] directly
Phase 5: rag_engine.search() return type (FR4 row 7) Before: def search(...) -> List[Dict[str, Any]] at src/rag_engine.py:367 After: def search(...) -> List["RAGChunk"] Delta: -1 wrong type annotation (List[Dict] -> List[RAGChunk]) RAGChunk dataclass extended with `id: str = ""` field to preserve the chroma wire-format identifier. The search() function now constructs RAGChunk instances directly from chromadb query results, normalizing the wire format (metadata.path -> RAGChunk.path; distance -> 1.0 - score) at the boundary. Consumer updates: - src/ai_client.py:3259-3266: chunk["metadata"]["path"] -> chunk.path; chunk["document"] -> chunk.document (direct attribute access) - src/app_controller.py:3506: docstring updated from Result[List[Dict]] to Result[List[RAGChunk]] (no code change; pass-through) Test updates: - tests/test_rag_engine.py:61: results[0]["id"] -> results[0].id (now uses dataclass attribute access) Verification: - audit_weak_types --strict: OK (107 <= 112 baseline) - py_check_syntax: OK on rag_engine.py, ai_client.py, test_rag_engine.py - 21 RAG tests pass (test_rag_engine, test_rag_chunk, test_rag_engine_ready_status_bug, test_rag_integration, test_context_composition_decoupled, test_tiered_aggregation)
This commit is contained in:
@@ -58,7 +58,7 @@ def test_rag_engine_chroma(mock_get_chroma, mock_embed):
|
||||
|
||||
results = engine.search("hello", top_k=1)
|
||||
assert len(results) == 1
|
||||
assert results[0]["id"] == "doc1"
|
||||
assert results[0].id == "doc1"
|
||||
engine.delete_documents(["doc1"])
|
||||
mock_collection.delete.assert_called_once_with(ids=["doc1"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user