M25: expose provenance-aware knowledge statistics
This commit is contained in:
@@ -100,6 +100,30 @@ def record_feedback(
|
||||
@router.get("/status", response_model=KnowledgeHealth)
|
||||
def knowledge_status(
|
||||
language: SupportedLanguage = "en-GB",
|
||||
db: Session = Depends(get_db),
|
||||
_user: CurrentUser = Depends(get_current_user),
|
||||
) -> KnowledgeHealth:
|
||||
return get_knowledge_provider().health(language)
|
||||
health = get_knowledge_provider().health(language)
|
||||
if health.provider != "ragcore":
|
||||
return health
|
||||
|
||||
latest_sync = db.scalar(
|
||||
select(AuditEvent)
|
||||
.where(AuditEvent.action == "n8n_procedures_synced")
|
||||
.order_by(AuditEvent.occurred_at.desc())
|
||||
.limit(1)
|
||||
)
|
||||
if latest_sync is None:
|
||||
return health
|
||||
|
||||
reported = latest_sync.after_json or {}
|
||||
synced = reported.get("synced")
|
||||
failed = reported.get("failed")
|
||||
return health.model_copy(
|
||||
update={
|
||||
"reported_synced_document_count": synced if isinstance(synced, int) else None,
|
||||
"reported_failed_document_count": failed if isinstance(failed, int) else None,
|
||||
"last_sync_at": latest_sync.occurred_at,
|
||||
"statistics_state": "sync_reported",
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user