Initial GeoIntel V1 foundation
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timezone
|
||||
from uuid import UUID, uuid4
|
||||
|
||||
from app.models import Metric, QualityCheck
|
||||
|
||||
|
||||
class QualityService:
|
||||
@staticmethod
|
||||
def persist_quality_check(
|
||||
db,
|
||||
project_id: UUID,
|
||||
reference_dataset_id: UUID,
|
||||
check_type: str,
|
||||
status: str,
|
||||
score: float | None,
|
||||
parameters: dict | None,
|
||||
findings: dict | None,
|
||||
*,
|
||||
job_id: UUID | None = None,
|
||||
analysis_run_id: UUID | None = None,
|
||||
candidate_dataset_id: UUID | None = None,
|
||||
metrics: dict[str, float | int | None] | None = None,
|
||||
commit: bool = True,
|
||||
) -> QualityCheck:
|
||||
quality_check = QualityCheck(
|
||||
id=uuid4(),
|
||||
project_id=project_id,
|
||||
job_id=job_id,
|
||||
analysis_run_id=analysis_run_id,
|
||||
candidate_dataset_id=candidate_dataset_id,
|
||||
reference_dataset_id=reference_dataset_id,
|
||||
check_type=check_type,
|
||||
status=status,
|
||||
score=score,
|
||||
parameters_json=parameters or {},
|
||||
findings_json=findings or {},
|
||||
completed_at=datetime.now(timezone.utc),
|
||||
)
|
||||
db.add(quality_check)
|
||||
|
||||
for key, value in (metrics or {}).items():
|
||||
db.add(
|
||||
Metric(
|
||||
id=uuid4(),
|
||||
quality_check_id=quality_check.id,
|
||||
analysis_run_id=analysis_run_id,
|
||||
metric_key=key,
|
||||
metric_value=float(value) if value is not None else None,
|
||||
metadata_json={},
|
||||
)
|
||||
)
|
||||
|
||||
if commit:
|
||||
db.commit()
|
||||
db.refresh(quality_check)
|
||||
return quality_check
|
||||
Reference in New Issue
Block a user