Centralize report name resolution
This commit is contained in:
@@ -182,8 +182,10 @@ snapshot exists and a threshold is crossed.
|
||||
report definitions. Omit a report entry to use its default module order.
|
||||
|
||||
Supported report keys are `daily`, `tomorrow`, `hourly`, `three_day`,
|
||||
`weekend`, and `storm`. Canonical report IDs such as `daily_today` are also
|
||||
accepted.
|
||||
`weekend`, and `storm`. Canonical report IDs and accepted aliases are also
|
||||
valid, including `daily_today`, `three_day_outlook`, `weekend_outlook`, and
|
||||
`storm_report`. Hyphens and underscores are treated equivalently in report
|
||||
keys.
|
||||
|
||||
Each report entry supports:
|
||||
|
||||
|
||||
@@ -6,9 +6,10 @@ membership, output naming, artifact grouping, and comparison declarations in
|
||||
|
||||
## Purpose
|
||||
|
||||
`internal/report` is the canonical source for report definitions. App, state,
|
||||
module building, and CLI wiring consume resolved definitions instead of owning
|
||||
report identity policy themselves.
|
||||
`internal/report` is the canonical source for report definitions, public
|
||||
command names, config-key aliases, and batch command names. App, config, state,
|
||||
module building, and CLI wiring consume report-owned helpers and resolved
|
||||
definitions instead of owning report identity policy themselves.
|
||||
|
||||
## Definition Fields
|
||||
|
||||
@@ -26,6 +27,12 @@ Each report definition declares:
|
||||
- morning or evening batch membership
|
||||
- default ordered module composition
|
||||
|
||||
Report-owned helpers map public command names and config keys to report IDs.
|
||||
The generate command names are `daily`, `tomorrow`, `hourly`, `three-day`,
|
||||
`weekend`, and `storm`. Config keys also accept underscore and legacy
|
||||
descriptive aliases such as `daily_today`, `three_day_outlook`,
|
||||
`weekend_outlook`, and `storm_report`.
|
||||
|
||||
Markdown report definitions use the `scriptorium_markdown` generation mode.
|
||||
Their template and structured-text schema identifiers are empty. Tomorrow
|
||||
Report and Hourly Report declare `generated_text_template`; the app uses their
|
||||
@@ -65,19 +72,21 @@ must be after start time.
|
||||
|
||||
## Boundaries
|
||||
|
||||
`internal/report` defines report metadata and time coverage. It does not fetch
|
||||
weather data, build module values, compare snapshot contents, write state,
|
||||
parse CLI flags, or invoke Scriptorium.
|
||||
`internal/report` defines report metadata, public report names, batch command
|
||||
names, and time coverage. It does not fetch weather data, build module values,
|
||||
compare snapshot contents, write state, parse CLI flags, or invoke Scriptorium.
|
||||
|
||||
The CLI owns public command names. The app maps those command names to report
|
||||
IDs, then uses the registry for report policy.
|
||||
The CLI parses flags and command structure, then uses report-owned helpers for
|
||||
report and batch command names. Config loading uses report-owned helpers for
|
||||
report override keys.
|
||||
|
||||
## Config Fields Used
|
||||
|
||||
The app supplies `weather_api.timezone` as a loaded `time.Location`. Batch
|
||||
output path copying uses batch output names from report definitions. Report
|
||||
module overrides can use short keys such as `tomorrow` and `hourly`, or
|
||||
canonical report IDs such as `daily_today`.
|
||||
module overrides can use short keys such as `tomorrow` and `hourly`, canonical
|
||||
report IDs such as `daily_today`, or accepted aliases such as
|
||||
`three_day_outlook`.
|
||||
|
||||
## Batch Membership
|
||||
|
||||
@@ -111,6 +120,8 @@ Inspect:
|
||||
## Invariants
|
||||
|
||||
- Report selection goes through the registry.
|
||||
- Public command names, config-key aliases, and batch command names are owned
|
||||
by `internal/report`.
|
||||
- Direct Markdown reports have empty template and generated-text schema IDs.
|
||||
- Generated-text-template reports declare prompt, template, and schema IDs in
|
||||
their report definition.
|
||||
|
||||
Reference in New Issue
Block a user