Add daily generated text assets
This commit is contained in:
@@ -9,20 +9,21 @@ This document describes structured generated-text handling in
|
||||
generated-text-template reports and builds curated render contexts for
|
||||
templates. It also owns the generated-text catalog that connects report
|
||||
definitions to validators, render-context builders, schema assets, and template
|
||||
assets. The implemented contracts are Today Report, Tomorrow Report, and Hourly
|
||||
Report.
|
||||
assets. The implemented contracts are Daily validation and asset lookup, Today
|
||||
Report, Tomorrow Report, and Hourly Report.
|
||||
|
||||
## Inputs And Outputs
|
||||
|
||||
Inputs:
|
||||
|
||||
- raw GeneratedText JSON for Today, Tomorrow Report, or Hourly Report
|
||||
- raw GeneratedText JSON for Daily, Today, Tomorrow Report, or Hourly Report
|
||||
- report metadata from `internal/briefing`
|
||||
- a module snapshot from `internal/module`
|
||||
- validated generated text
|
||||
|
||||
Outputs:
|
||||
|
||||
- typed `Daily` generated text
|
||||
- typed `Today` generated text
|
||||
- typed `Tomorrow` generated text
|
||||
- typed `Hourly` generated text
|
||||
@@ -33,6 +34,20 @@ Outputs:
|
||||
- generated-text catalog handlers for report definitions that use
|
||||
`generated_text_template`
|
||||
|
||||
The Daily generated text JSON accepts the same public fields and validation
|
||||
rules as Tomorrow. Its catalog entry is selected through schema ID `daily` and
|
||||
template ID `daily`; render-context construction is not implemented until the
|
||||
Daily report context exists.
|
||||
|
||||
```json
|
||||
{
|
||||
"summary": "string",
|
||||
"forecast_discussion": ["string"],
|
||||
"precipitation_timing": "string",
|
||||
"confidence": "string"
|
||||
}
|
||||
```
|
||||
|
||||
The hourly generated text JSON accepts:
|
||||
|
||||
```json
|
||||
@@ -96,8 +111,8 @@ JSON when blank.
|
||||
- Malformed generated-text JSON fails with decode context.
|
||||
- Unknown generated-text JSON fields fail during decoding.
|
||||
- Empty required fields fail after trimming whitespace.
|
||||
- Today and Tomorrow forecast discussion fails when no nonblank paragraphs
|
||||
remain.
|
||||
- Daily, Today, and Tomorrow forecast discussion fails when no nonblank
|
||||
paragraphs remain.
|
||||
- Missing optional render-context stanzas become nil module pointers.
|
||||
- Invalid render metadata, including missing timezone, missing generated time,
|
||||
or invalid valid period, fails before template rendering.
|
||||
@@ -109,6 +124,7 @@ JSON when blank.
|
||||
Inspect:
|
||||
|
||||
- `internal/generatedtext/hourly_test.go`
|
||||
- `internal/generatedtext/daily_test.go`
|
||||
- `internal/generatedtext/today_test.go`
|
||||
- `internal/generatedtext/tomorrow_test.go`
|
||||
- `internal/generatedtext/catalog_test.go`
|
||||
|
||||
@@ -6,8 +6,8 @@ in `internal/reporttemplate`.
|
||||
## Purpose
|
||||
|
||||
`internal/reporttemplate` owns repository-native report templates and companion
|
||||
GeneratedText JSON schemas. The implemented template contracts are Today
|
||||
Report, Tomorrow Report, and Hourly Report.
|
||||
GeneratedText JSON schemas. The implemented template assets are Daily, Today,
|
||||
Tomorrow, and Hourly.
|
||||
|
||||
The package embeds assets from:
|
||||
|
||||
@@ -31,13 +31,13 @@ Outputs:
|
||||
- GeneratedText schema bytes for prompt/schema configuration
|
||||
- rendered Markdown bytes for app orchestration to persist
|
||||
|
||||
The implemented template IDs are `today`, `tomorrow`, and `hourly`. The
|
||||
implemented schema IDs are also `today`, `tomorrow`, and `hourly`, backed by
|
||||
matching `*.generated_text.schema.json` files.
|
||||
The implemented template IDs are `daily`, `today`, `tomorrow`, and `hourly`.
|
||||
The implemented schema IDs are also `daily`, `today`, `tomorrow`, and
|
||||
`hourly`, backed by matching `*.generated_text.schema.json` files.
|
||||
|
||||
The Today generated-text prompt source is
|
||||
`internal/reporttemplate/prompts/today.generated_text.md`, selected by prompt
|
||||
ID `weather.today_generated_text`.
|
||||
Generated-text prompt sources are maintained under
|
||||
`internal/reporttemplate/prompts/`, including Daily's
|
||||
`daily.generated_text.md` source for prompt ID `weather.daily_generated_text`.
|
||||
|
||||
## Boundaries
|
||||
|
||||
@@ -67,6 +67,10 @@ forecast rows, daily/daypart summaries, planning facts, and a multi-paragraph
|
||||
forecast discussion generated-text slot. The ordered daypart slice is built in
|
||||
Go so templates do not range over maps.
|
||||
|
||||
The Daily template asset uses the same Markdown structure and field surface as
|
||||
Tomorrow's template. Its typed render context in `internal/generatedtext` is
|
||||
not implemented yet.
|
||||
|
||||
Templates use `text/template` with `missingkey=error`, so missing context fields
|
||||
fail rendering instead of producing incomplete Markdown.
|
||||
|
||||
@@ -78,10 +82,11 @@ to write for each generated-text prompt. Hourly requires:
|
||||
- `summary`
|
||||
- `forecast_discussion`
|
||||
|
||||
Today and Tomorrow require `summary` and a nonempty `forecast_discussion`
|
||||
array. All generated-text schemas allow optional `precipitation_timing` and
|
||||
`confidence`, and reject additional properties. Weather truth remains in module
|
||||
outputs; GeneratedText is limited to prose slots consumed by the template.
|
||||
Daily, Today, and Tomorrow require `summary` and a nonempty
|
||||
`forecast_discussion` array. All generated-text schemas allow optional
|
||||
`precipitation_timing` and `confidence`, and reject additional properties.
|
||||
Weather truth remains in module outputs; GeneratedText is limited to prose
|
||||
slots consumed by the template.
|
||||
|
||||
## Failure Behavior
|
||||
|
||||
|
||||
Reference in New Issue
Block a user