1.9 KiB
1.9 KiB
Report Registry Internals
This document describes the implemented report identity and valid-period boundary.
Purpose
internal/report centralizes report IDs, prompt IDs, comparison strategies,
valid-period resolution, report metadata, and scheduled batch membership.
Inputs and Outputs
Inputs:
- report ID or batch name
- generation time
- configured timezone
- optional Daily date override
- optional manual storm start and end times
Outputs:
report.Resolvedvalues with definition metadata and half-open valid periodsreport.Metadatavalues suitable for later persisted run metadata
Boundaries
- This package defines report identity and time coverage only.
- It does not fetch weather data, build briefings, compare snapshots, write
state, or call
scriptorium.
Behavior
- Daily Today covers one configured local civil day.
- Daily Tomorrow covers the next configured local civil day.
- 3-Day Outlook covers generation time through local midnight after the second following local civil day.
- Weekend Outlook covers Saturday 00:00 to Monday 00:00 Monday through Thursday; Friday and Saturday cover the remaining weekend from Friday 18:00 or generation time, whichever is later.
- Manual Storm Report uses explicit start and end times.
- Morning batch resolves Daily Today and 3-Day Outlook, plus Weekend Outlook except on Sunday.
- Evening batch resolves Daily Tomorrow.
Failure Behavior
- Unknown report and batch names return actionable errors.
- Sunday Weekend Outlook resolution returns an error.
- Storm windows require start and end, with end after start.
Tests
Inspect:
internal/report/period_test.gointernal/app/app_test.go
Invariants
- Report selection goes through the registry.
- Valid periods are independent of rendered report text.
- Prompt IDs and comparison strategies are declared with report definitions.