diff --git a/src/fmu/settings/models/project_config.py b/src/fmu/settings/models/project_config.py index c6dc5c5..8c12380 100644 --- a/src/fmu/settings/models/project_config.py +++ b/src/fmu/settings/models/project_config.py @@ -74,6 +74,26 @@ class RmsProject(BaseModel): wells: list[RmsWell] | None = None +class ValidationRecord(BaseModel): + """Metadata for a successful validation of project configuration data.""" + + last_validated_at: AwareDatetime + """Timestamp when the data was last validated.""" + + last_validated_by: str + """User who performed the last validation.""" + + +class ProjectValidation(BaseModel): + """Validation metadata for project configuration data.""" + + masterdata_smda: ValidationRecord | None = None + """Validation metadata for masterdata checked against SMDA.""" + + rms_project: ValidationRecord | None = None + """Validation metadata for RMS configuration checked against the RMS project.""" + + class ProjectConfig(ResettableBaseModel): """The configuration file in a .fmu directory. @@ -93,6 +113,7 @@ class ProjectConfig(ResettableBaseModel): access: Access | None = None cache_max_revisions: int = Field(default=5, ge=5) rms: RmsProject | None = None + validation: ProjectValidation = Field(default_factory=ProjectValidation) @classmethod def reset(cls: type[Self]) -> Self: @@ -112,4 +133,5 @@ def reset(cls: type[Self]) -> Self: access=None, cache_max_revisions=5, rms=None, + validation=ProjectValidation(), ) diff --git a/tests/conftest.py b/tests/conftest.py index ba8ddb6..161f29a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -99,6 +99,10 @@ def config_dict(unix_epoch_utc: datetime) -> dict[str, Any]: "model": None, "access": None, "rms": None, + "validation": { + "masterdata_smda": None, + "rms_project": None, + }, } @@ -347,6 +351,16 @@ def mocked_project_config_with_all_fields( "model": model_dict, "access": access_dict, "rms": rms_project, + "validation": { + "masterdata_smda": { + "last_validated_at": unix_epoch_utc, + "last_validated_by": "user", + }, + "rms_project": { + "last_validated_at": unix_epoch_utc, + "last_validated_by": "user", + }, + }, }