Added data-quality health checks.

This commit is contained in:
larssand
2026-06-23 22:56:54 +02:00
parent e3938c2581
commit 865c79a5be
4 changed files with 23 additions and 0 deletions

11
src/fgai/data_quality.py Normal file
View File

@@ -0,0 +1,11 @@
from __future__ import annotations
from .models import LogEvent
def assess_data_quality(events: list[LogEvent], stream_status: dict[str, object]) -> dict[str, object]:
total = len(events)
missing_timestamp = sum(not (event.fields.get("eventtime") or event.fields.get("timestamp") or (event.fields.get("date") and event.fields.get("time"))) for event in events)
missing_source = sum(not event.src_ip or event.src_ip == "-" for event in events)
streams = stream_status.get("streams", []) if isinstance(stream_status.get("streams"), list) else []
return {"events": total, "missing_timestamp": missing_timestamp, "missing_source": missing_source, "timestamp_coverage": round(100 * (total - missing_timestamp) / total, 1) if total else 0, "source_coverage": round(100 * (total - missing_source) / total, 1) if total else 0, "truncated_streams": [item.get("stream_id") for item in streams if isinstance(item, dict) and item.get("truncated")]}