Implement source-oriented briefing modules

This commit is contained in:
2026-06-09 20:35:57 +00:00
parent 24dba3bd60
commit 9501dad1dc
4 changed files with 571 additions and 0 deletions

View File

@@ -23,6 +23,8 @@ Outputs:
object for Daily, 3-Day, Weekend, or Storm Report
- module registry definitions for known module IDs, stanza names, option
shapes, fact requirements, report compatibility, and missing-data behavior
- source-oriented module outputs for `metadata`, `current_conditions`,
`alert_digest`, `area_forecast_discussion`, and `weather_story`
- optional `currentConditions` prompt context from normalized
`/conditions/current` data when available
- optional structured `weatherStory` context on report-specific briefing
@@ -73,6 +75,10 @@ None. Builders either return a complete briefing package or an error.
stanza names.
- Module composition validation rejects unknown modules, duplicate modules,
incompatible report/module combinations, and invalid typed options.
- Source-oriented module builders omit missing optional current conditions,
forecast discussion, and weather story stanzas.
- Alert digest output distinguishes checked empty alert data from missing alert
source data.
- Save failures include path and operation context.
## Tests
@@ -83,6 +89,7 @@ Inspect:
- `internal/briefing/three_day_test.go`
- `internal/briefing/weekend_test.go`
- `internal/briefing/storm_test.go`
- `internal/briefing/base_modules_test.go`
- `internal/briefing/modules_test.go`
- `internal/app/app_test.go`