72 lines
1.9 KiB
Markdown
72 lines
1.9 KiB
Markdown
# 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.Resolved` values with definition metadata and half-open valid periods
|
|
- `report.Metadata` values 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.go`
|
|
- `internal/app/app_test.go`
|
|
- `internal/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.
|