Remove redundant alert text from the data package
This commit is contained in:
@@ -87,6 +87,8 @@ The app layer passes effective units, timezone, and location context into the
|
|||||||
module context. `internal/facts` consumes daypart configuration before module
|
module context. `internal/facts` consumes daypart configuration before module
|
||||||
builders run. Configured `location` values are prompt context only; Weather API
|
builders run. Configured `location` values are prompt context only; Weather API
|
||||||
`sourceLocationId` and `sourceLocation` remain source provenance.
|
`sourceLocationId` and `sourceLocation` remain source provenance.
|
||||||
|
The `metadata` module carries report context and source warnings only; alert
|
||||||
|
status and relevant alert details belong in the `alert_digest` module.
|
||||||
|
|
||||||
`area_forecast_discussion` uses optional `sections` configuration to include a
|
`area_forecast_discussion` uses optional `sections` configuration to include a
|
||||||
subset of discussion fields. Hourly Report defaults this module to
|
subset of discussion fields. Hourly Report defaults this module to
|
||||||
|
|||||||
@@ -390,8 +390,12 @@ func TestGenerateReportWritesReportAndPreflight(t *testing.T) {
|
|||||||
if savedDataPackage.Report.CurrentLocalDate != "2026-05-29" {
|
if savedDataPackage.Report.CurrentLocalDate != "2026-05-29" {
|
||||||
t.Fatalf("data package currentLocalDate = %q, want 2026-05-29", savedDataPackage.Report.CurrentLocalDate)
|
t.Fatalf("data package currentLocalDate = %q, want 2026-05-29", savedDataPackage.Report.CurrentLocalDate)
|
||||||
}
|
}
|
||||||
if _, ok := savedDataPackage.Briefing.Values["metadata"]; !ok {
|
metadataStanza, ok := savedDataPackage.Briefing.Values["metadata"].(map[string]any)
|
||||||
t.Fatal("data package metadata stanza missing")
|
if !ok {
|
||||||
|
t.Fatalf("data package metadata stanza = %#v, want metadata map", savedDataPackage.Briefing.Values["metadata"])
|
||||||
|
}
|
||||||
|
if _, ok := metadataStanza["alerts"]; ok {
|
||||||
|
t.Fatalf("data package metadata contains alerts, want alert details only in alert_digest: %#v", metadataStanza)
|
||||||
}
|
}
|
||||||
assertNoStaleModuleIntervalKeys(t, savedDataPackage.Briefing.Values)
|
assertNoStaleModuleIntervalKeys(t, savedDataPackage.Briefing.Values)
|
||||||
spcOutlooks, ok := savedDataPackage.Briefing.Values["spc_convective_outlooks"].(map[string]any)
|
spcOutlooks, ok := savedDataPackage.Briefing.Values["spc_convective_outlooks"].(map[string]any)
|
||||||
|
|||||||
@@ -253,9 +253,6 @@ func TestMetadataModuleUsesPromptSafeSourceWarningSummary(t *testing.T) {
|
|||||||
if len(value.SourceWarnings) != 1 || value.SourceWarnings[0].CompletenessImpact != "source omitted" {
|
if len(value.SourceWarnings) != 1 || value.SourceWarnings[0].CompletenessImpact != "source omitted" {
|
||||||
t.Fatalf("SourceWarnings = %#v, want warning summary", value.SourceWarnings)
|
t.Fatalf("SourceWarnings = %#v, want warning summary", value.SourceWarnings)
|
||||||
}
|
}
|
||||||
if value.Alerts == nil || !value.Alerts.Checked || value.Alerts.ActiveCount != 1 || value.Alerts.RelevantCount != 1 {
|
|
||||||
t.Fatalf("Alerts = %#v, want checked alert status", value.Alerts)
|
|
||||||
}
|
|
||||||
data, err := json.Marshal(output.Value)
|
data, err := json.Marshal(output.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Marshal metadata: %v", err)
|
t.Fatalf("Marshal metadata: %v", err)
|
||||||
@@ -264,6 +261,9 @@ func TestMetadataModuleUsesPromptSafeSourceWarningSummary(t *testing.T) {
|
|||||||
if !strings.Contains(jsonText, "source_warnings") || strings.Contains(jsonText, "endpoint") || strings.Contains(jsonText, "dataSha256") {
|
if !strings.Contains(jsonText, "source_warnings") || strings.Contains(jsonText, "endpoint") || strings.Contains(jsonText, "dataSha256") {
|
||||||
t.Fatalf("metadata json = %s, want source warning summary without transport provenance", jsonText)
|
t.Fatalf("metadata json = %s, want source warning summary without transport provenance", jsonText)
|
||||||
}
|
}
|
||||||
|
if strings.Contains(jsonText, `"alerts"`) {
|
||||||
|
t.Fatalf("metadata json = %s, want alert details only in alert_digest", jsonText)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCurrentConditionsModuleUsesSnakeCaseUnitFields(t *testing.T) {
|
func TestCurrentConditionsModuleUsesSnakeCaseUnitFields(t *testing.T) {
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ type MetadataModule struct {
|
|||||||
ValidPeriod timeutil.Period `json:"valid_period"`
|
ValidPeriod timeutil.Period `json:"valid_period"`
|
||||||
Location *LocationContext `json:"location,omitempty"`
|
Location *LocationContext `json:"location,omitempty"`
|
||||||
SourceWarnings []SourceWarningSummary `json:"source_warnings,omitempty"`
|
SourceWarnings []SourceWarningSummary `json:"source_warnings,omitempty"`
|
||||||
Alerts *AlertDigestModule `json:"alerts,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type SourceWarningSummary struct {
|
type SourceWarningSummary struct {
|
||||||
@@ -44,7 +43,6 @@ func buildMetadataModule(ctx ModuleContext, _ any) (*module.Output, error) {
|
|||||||
ValidPeriod: metadata.ValidPeriod,
|
ValidPeriod: metadata.ValidPeriod,
|
||||||
Location: copyLocation(ctx.Location),
|
Location: copyLocation(ctx.Location),
|
||||||
SourceWarnings: sourceWarningSummaries(ctx.Collected.SourceWarnings),
|
SourceWarnings: sourceWarningSummaries(ctx.Collected.SourceWarnings),
|
||||||
Alerts: alertDigest(ctx.Collected, ctx.Derived.AlertOverlaps, ctx.Timezone),
|
|
||||||
}
|
}
|
||||||
return &module.Output{ID: module.Metadata, StanzaName: "metadata", Value: value}, nil
|
return &module.Output{ID: module.Metadata, StanzaName: "metadata", Value: value}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user