Prefer current orthophoto source version
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-16 15:09:33 +02:00
parent 1e0e7b6499
commit c76244bb85
2 changed files with 40 additions and 16 deletions
@@ -81,6 +81,21 @@ def _latest_dataset(datasets: list[Dataset]) -> Dataset:
)
def _latest_source_version(policy: SourcePolicy, datasets: list[Dataset]) -> str | None:
versioned = [item for item in datasets if item.source_version]
if not versioned:
return None
if policy.refresh_policy == "rolling_snapshot":
named_current = [
item
for item in versioned
if any(token in (item.source_version or "").lower() for token in ("most_recent", "latest", "current"))
]
if named_current:
return _latest_dataset(named_current).source_version
return _latest_dataset(versioned).source_version
def _is_local_storage_path(storage_path: str) -> bool:
normalized = storage_path.strip().lower()
return bool(normalized) and "://" not in normalized and not normalized.startswith("/vsi")
@@ -225,7 +240,6 @@ class SourceFreshnessService:
next_review_at = None
reason = "Voor deze bron is nog geen expliciete publicatie- of controlecyclus vastgelegd."
recommended_action = "Classificeer de bron eerst als snapshot, jaargang, vaste editie, scenario, archief of lokaal."
latest = _latest_dataset(source_datasets)
observed_values = {value for item in source_datasets if (value := _as_utc(item.observed_at)) is not None}
temporal_keys = {item.temporal_series_key for item in source_datasets if item.temporal_series_key}
items.append(
@@ -237,21 +251,7 @@ class SourceFreshnessService:
version_count=sum(len(versions_by_dataset.get(item.id, [])) for item in source_datasets),
latest_imported_at=_latest_datetime(item.imported_at for item in source_datasets),
latest_observed_at=_latest_datetime(item.observed_at for item in source_datasets),
latest_source_version=next(
(
item.source_version
for item in sorted(
source_datasets,
key=lambda value: (
_as_utc(value.observed_at) or datetime.min.replace(tzinfo=timezone.utc),
_as_utc(value.imported_at) or datetime.min.replace(tzinfo=timezone.utc),
),
reverse=True,
)
if item.source_version
),
latest.source_version,
),
latest_source_version=_latest_source_version(policy, source_datasets),
refresh_policy=policy.refresh_policy,
review_interval_days=policy.review_interval_days,
next_review_at=next_review_at,