package state import ( "time" "gitea.maximumdirect.net/eric/weatherreporter/internal/briefing" "gitea.maximumdirect.net/eric/weatherreporter/internal/forecast" "gitea.maximumdirect.net/eric/weatherreporter/internal/report" "gitea.maximumdirect.net/eric/weatherreporter/internal/timeutil" ) const MetadataSchemaVersion = "weatherreporter.metadata.v1" type Metadata struct { SchemaVersion string `json:"schemaVersion"` RunID string `json:"runId"` ReportID report.ID `json:"reportId"` Variant string `json:"variant,omitempty"` PromptID string `json:"promptId"` GeneratedAt time.Time `json:"generatedAt"` Timezone string `json:"timezone"` ValidPeriod timeutil.Period `json:"validPeriod"` SourceLocationID string `json:"sourceLocationId,omitempty"` SourceLocation string `json:"sourceLocation,omitempty"` Sources []briefing.SourceMetadata `json:"sources,omitempty"` SourceWarnings []forecast.SourceWarning `json:"sourceWarnings,omitempty"` BriefingPath string `json:"briefingPath"` DataPackagePath string `json:"dataPackagePath"` PreflightPath string `json:"preflightPath"` RenderedReportPath string `json:"renderedReportPath,omitempty"` } func BuildMetadata(resolved report.Resolved, briefingPackage briefing.Package, paths ArtifactPaths) Metadata { metadata := resolved.Metadata() return Metadata{ SchemaVersion: MetadataSchemaVersion, RunID: metadata.RunID, ReportID: metadata.ReportID, Variant: briefingPackage.Metadata.Variant, PromptID: metadata.PromptID, GeneratedAt: metadata.GeneratedAt, Timezone: metadata.Timezone, ValidPeriod: metadata.ValidPeriod, SourceLocationID: briefingPackage.Metadata.SourceLocationID, SourceLocation: briefingPackage.Metadata.SourceLocation, Sources: briefingPackage.Metadata.Sources, SourceWarnings: briefingPackage.Metadata.SourceWarnings, BriefingPath: paths.Briefing, DataPackagePath: paths.DataPackage, PreflightPath: paths.Preflight, RenderedReportPath: paths.RenderedReport, } }