Document outlook v2 behavior

This commit is contained in:
2026-06-12 13:07:17 +00:00
parent beeaeeaecb
commit c7760742e6
9 changed files with 131 additions and 360 deletions

View File

@@ -8,10 +8,12 @@
`go.mod` depends on:
- `gitea.maximumdirect.net/ejr/weatherfeeder v0.11.0`
- `gitea.maximumdirect.net/ejr/weatherfeeder v0.11.1-0.20260612044033-4358a7cdce2c`
The repository code also depends on weatherfeeder canonical model types. Table
compatibility must match the SQL in `internal/adapters/outbound/postgres`.
For convective outlooks, `weatherapi` assumes weatherfeeder's
`weather.outlook.v2` table reset has already been applied.
## Boundary
@@ -37,7 +39,7 @@ Postgres owns persistence, backup, restore, and availability.
| Forecast discussion | `forecast_discussions`, `forecast_discussion_key_messages` |
| Weather story run | `weather_story_runs`, `weather_stories` |
| Latest weather story | `weather_stories` |
| Convective outlook run | `outlook_runs`, `outlooks` |
| Convective outlook run | `outlook_runs`, `outlooks`, `outlook_discussions` |
## Latest Row Selection
@@ -68,7 +70,8 @@ Child rows are loaded separately and attached in stored order:
- forecast periods: `period_index ASC`;
- forecast discussion key messages: `message_index ASC`;
- weather stories for a run: `story_index ASC`;
- outlooks for a run: `outlook_index ASC`.
- outlooks for a run: `outlook_index ASC`;
- outlook discussions for a run: `discussion_index ASC`.
## Columns Read
@@ -166,6 +169,11 @@ routes.
`geometry_json` is copied into response GeoJSON without parsing or
reserializing. It must contain valid JSON.
### `outlook_discussions`
`discussion_index`, `day`, `headline`, `summary`, `discussion`, `updated_at`,
and `run_event_id`.
## Nullability and Time Assumptions
The repository scans nullable columns with `sql.Null*` types and maps them to