feat(provenance): govern source snapshots and data inputs

This commit is contained in:
Jens
2026-08-01 23:46:17 +02:00
parent cebeb5f3b4
commit 5b3c17b494
96 changed files with 20156 additions and 351 deletions
@@ -13,6 +13,7 @@ from shapely.validation import make_valid
from app.core.errors import AppError
from app.models import Area, Dataset, DatasetVersion
from app.services.derived_dataset_governance_service import DerivedDatasetGovernanceService
from app.services.raster_service import extract_raster_metadata
from app.services.storage_service import StorageService
@@ -334,7 +335,10 @@ class RasterOperationsService:
dataset_type="raster",
source=f"operation:{operation_name}",
dataset_role="derived",
source_name=source_dataset.source_name,
# The source identity of this artifact is the server-owned
# derived-operation registry entry. The parent remains explicit
# in provenance and the lineage edge below.
source_name="derived",
source_metadata=source_dataset.source_metadata,
provenance_metadata=provenance,
imported_at=datetime.now(timezone.utc),
@@ -360,22 +364,31 @@ class RasterOperationsService:
resolution_json=metadata_payload.get("resolution"),
bands_json={"dtype": metadata_payload.get("dtype")} if metadata_payload.get("dtype") is not None else None,
metadata_json=metadata_payload,
status="ready",
status="validating",
)
db.add(derived_dataset)
db.add(
DatasetVersion(
dataset_id=derived_dataset.id,
version=1,
storage_path=derived_dataset.storage_path,
source_version=derived_dataset.source_version,
observed_at=derived_dataset.observed_at,
valid_from=derived_dataset.valid_from,
valid_to=derived_dataset.valid_to,
checksum_sha256=derived_dataset.checksum_sha256,
source_metadata=derived_dataset.source_metadata,
provenance_metadata=derived_dataset.provenance_metadata,
)
dataset_version = DatasetVersion(
dataset_id=derived_dataset.id,
version=1,
storage_path=derived_dataset.storage_path,
source_version=derived_dataset.source_version,
observed_at=derived_dataset.observed_at,
valid_from=derived_dataset.valid_from,
valid_to=derived_dataset.valid_to,
checksum_sha256=derived_dataset.checksum_sha256,
source_metadata=derived_dataset.source_metadata,
provenance_metadata=derived_dataset.provenance_metadata,
)
db.add(dataset_version)
DerivedDatasetGovernanceService.govern_raster(
db,
dataset=derived_dataset,
dataset_version=dataset_version,
raster_metadata=metadata_payload,
source_key="derived",
operation=operation_name,
parent_dataset=source_dataset,
operation_parameters=metadata_payload.get("operation_parameters"),
)
db.commit()
db.refresh(derived_dataset)