1.9 KiB
1.9 KiB
Report Registry Internals
This document describes report identity, valid-period resolution, batch
membership, and comparison declarations in internal/report.
Purpose
internal/report centralizes report definitions so report IDs, prompt IDs,
default output names, comparison strategies, and valid periods are declared in
one package.
Inputs And Outputs
Inputs:
- report ID or batch name
- generation time
- timezone
- optional Daily date override
- optional Storm Report start and end times
Outputs:
report.Resolvedvalues with definition metadata and half-open valid periodsreport.Metadatavalues used by briefing and persisted metadata builders
Boundaries
- This package defines report identity and time coverage only.
- It does not fetch weather data, build briefings, compare snapshots, write state, parse CLI flags, or invoke Scriptorium.
Config Fields Used
The app supplies weather_api.timezone as a loaded time.Location. Report
output path copying uses default output names from report definitions.
External Adapters Used
None.
State Or Manifest Behavior
None directly. Resolved metadata contributes RunID, report ID, prompt ID, generation time, timezone, and valid period to later briefing and state metadata.
Skip And Resume Behavior
No resume behavior. Morning batch resolution skips Weekend Outlook on Sunday.
Failure Behavior
- Unknown reports and batch names return actionable errors.
- Weekend Outlook resolution returns an error when resolved directly on Sunday.
- Storm Report resolution requires start and end, with end after start.
Tests
Inspect:
internal/report/period_test.gointernal/app/app_test.gointernal/cli/root_test.go
Invariants
- Report selection goes through the registry.
- Daily Today and Daily Tomorrow both use
weather.daily_report. - Valid periods are half-open intervals independent of rendered report text.
- Comparison strategy is declared by report definition.