M31: verify RAG inventory and polish attention queue
MobilityOps acceptance / backend (push) Canceled after 0s
MobilityOps acceptance / frontend (push) Canceled after 0s

This commit is contained in:
NuklearRabbit
2026-08-10 20:58:26 +02:00
parent cfffb1ce54
commit efab8d816f
16 changed files with 314 additions and 38 deletions
+92 -2
View File
@@ -9,6 +9,7 @@ from app.api.routers import knowledge as knowledge_router
from app.core.config import get_settings
from app.services.knowledge import KnowledgeHealth
from app.services.knowledge.demo import DemoKnowledgeProvider
from app.services.knowledge.procedures import iter_procedure_documents
from app.services.knowledge.ragcore import RAGcoreKnowledgeProvider
@@ -198,6 +199,39 @@ def test_ragcore_status_separates_sync_report_from_unverifiable_index(
assert status["statistics_state"] == "sync_reported"
def test_ragcore_status_preserves_stronger_verified_index_evidence(client, ops_client, monkeypatch):
class VerifiedRagcoreProvider:
def health(self, language="en-GB"):
return KnowledgeHealth(
provider="ragcore",
available=True,
detail="ready and verified",
tenant="fleet-ops",
workspace="operations",
collection="internal-procedures",
document_count=11,
source_document_count=11,
reported_synced_document_count=None,
reported_failed_document_count=None,
last_sync_at=None,
statistics_state="verified",
)
monkeypatch.setattr(knowledge_router, "get_knowledge_provider", VerifiedRagcoreProvider)
settings = get_settings()
sync = client.post(
"/api/v1/integrations/n8n/procedures-sync-result",
json={"execution_id": "rag-verified-statistics-test", "synced": 33, "failed": 0},
headers={"X-Service-Token": settings.n8n_callback_token},
)
assert sync.status_code == 200
status = ops_client.get("/api/v1/knowledge/status?language=nl-BE").json()
assert status["document_count"] == 11
assert status["reported_synced_document_count"] == 33
assert status["statistics_state"] == "verified"
class _FakeResponse:
def __init__(self, status_code: int, body: dict):
self.status_code = status_code
@@ -208,7 +242,14 @@ class _FakeResponse:
class _FakeClient:
def __init__(self, get_response=None, post_response=None, post_responses=None, raise_on=None):
def __init__(
self,
get_response=None,
post_response=None,
post_responses=None,
raise_on=None,
get_handler=None,
):
self._get_response = get_response
self._post_response = post_response
# Maps a path (e.g. "/v1/search") to its own response, for tests that need
@@ -217,6 +258,7 @@ class _FakeClient:
# existing single-endpoint test keeps working unchanged.
self._post_responses = post_responses or {}
self._raise_on = raise_on
self._get_handler = get_handler
def __enter__(self):
return self
@@ -224,9 +266,13 @@ class _FakeClient:
def __exit__(self, *args):
return False
def get(self, path):
def get(self, path, params=None, timeout=None):
if self._raise_on == "get":
raise httpx.ConnectError("no ragcore in this environment")
if self._get_handler is not None:
return self._get_handler(path, params, timeout)
if path == "/v1/documents":
return _FakeResponse(503, {})
return self._get_response
def post(self, path, json=None):
@@ -273,6 +319,50 @@ def test_ragcore_provider_health_reports_ready_status(monkeypatch):
assert health.statistics_state == "not_reported"
def test_ragcore_provider_verifies_published_documents_and_caches_count(monkeypatch):
provider = RAGcoreKnowledgeProvider()
monkeypatch.setattr(provider._settings, "ragcore_space_id", "space-1")
procedure_documents = [
document
for document in iter_procedure_documents(Path(provider._settings.knowledge_dir))
if document.language == "en-GB"
]
documents = {document.source_id: document for document in procedure_documents}
lookups: list[str] = []
def get_handler(path, params, _timeout):
if path == "/health/ready":
return _FakeResponse(200, {"status": "ok"})
document = documents[params["source_id"]]
lookups.append(document.source_id)
return _FakeResponse(
200,
{
"items": [
{
"space_id": "space-1",
"source_id": document.source_id,
"external_id": f"{document.document_id}.md",
"status": "active",
"active_version": {
"status": "published",
"content_sha256": document.content_hash,
},
}
]
},
)
monkeypatch.setattr(provider, "_client", lambda: _FakeClient(get_handler=get_handler))
first = provider.health("en-GB")
second = provider.health("en-GB")
assert first.document_count == 11
assert first.statistics_state == "verified"
assert second.document_count == 11
assert len(lookups) == 11
def test_ragcore_provider_health_reports_degraded_status(monkeypatch):
provider = RAGcoreKnowledgeProvider()
monkeypatch.setattr(