Add report generation mode metadata

This commit is contained in:
2026-06-14 04:28:30 +00:00
parent 8d737395dc
commit dd92e9b061
8 changed files with 53 additions and 12 deletions

View File

@@ -16,6 +16,7 @@ Each report definition declares:
- report ID and display name - report ID and display name
- Scriptorium prompt ID - Scriptorium prompt ID
- generation mode
- valid-period resolver - valid-period resolver
- comparison strategy - comparison strategy
- managed artifact group - managed artifact group
@@ -25,6 +26,10 @@ Each report definition declares:
- morning or evening batch membership - morning or evening batch membership
- default ordered module composition - default ordered module composition
Current report definitions use the `scriptorium_markdown` generation mode.
Template and structured-text schema identifiers are empty for these Markdown
reports.
## Reports ## Reports
| Report | ID | Prompt | Artifact group | Batch copy | Prior compatibility | | Report | ID | Prompt | Artifact group | Batch copy | Prior compatibility |

View File

@@ -10,6 +10,7 @@ func dailyTodayDefinition() Definition {
ID: DailyToday, ID: DailyToday,
Name: "Daily Report", Name: "Daily Report",
PromptID: "weather.daily_report", PromptID: "weather.daily_report",
GenerationMode: GenerationModeScriptoriumMarkdown,
ComparisonStrategy: CompareSameValidDate, ComparisonStrategy: CompareSameValidDate,
ArtifactGroup: "daily", ArtifactGroup: "daily",
BatchOutputName: "daily.md", BatchOutputName: "daily.md",
@@ -26,6 +27,7 @@ func dailyTomorrowDefinition() Definition {
ID: DailyTomorrow, ID: DailyTomorrow,
Name: "Tomorrow Planning Brief", Name: "Tomorrow Planning Brief",
PromptID: "weather.daily_report", PromptID: "weather.daily_report",
GenerationMode: GenerationModeScriptoriumMarkdown,
ComparisonStrategy: CompareSameValidDate, ComparisonStrategy: CompareSameValidDate,
ArtifactGroup: "daily", ArtifactGroup: "daily",
BatchOutputName: "tomorrow.md", BatchOutputName: "tomorrow.md",

View File

@@ -29,6 +29,13 @@ const (
CompareRollingWindow ComparisonStrategy = "rolling_window" CompareRollingWindow ComparisonStrategy = "rolling_window"
) )
type GenerationMode string
const (
GenerationModeScriptoriumMarkdown GenerationMode = "scriptorium_markdown"
GenerationModeGeneratedTextTemplate GenerationMode = "generated_text_template"
)
type Batch string type Batch string
const ( const (
@@ -40,6 +47,9 @@ type Definition struct {
ID ID ID ID
Name string Name string
PromptID string PromptID string
GenerationMode GenerationMode
TemplateID string
GeneratedTextSchemaID string
ComparisonStrategy ComparisonStrategy ComparisonStrategy ComparisonStrategy
ArtifactGroup string ArtifactGroup string
BatchOutputName string BatchOutputName string

View File

@@ -14,6 +14,7 @@ func hourlyDefinition() Definition {
ID: Hourly, ID: Hourly,
Name: "Hourly Report", Name: "Hourly Report",
PromptID: "weather.hourly_report", PromptID: "weather.hourly_report",
GenerationMode: GenerationModeScriptoriumMarkdown,
ComparisonStrategy: CompareRollingWindow, ComparisonStrategy: CompareRollingWindow,
ArtifactGroup: "hourly", ArtifactGroup: "hourly",
BatchOutputName: "hourly.md", BatchOutputName: "hourly.md",

View File

@@ -245,12 +245,32 @@ func TestRegistryDefinitionsHavePromptIDsAndComparisonStrategies(t *testing.T) {
if definition.PromptID == "" { if definition.PromptID == "" {
t.Fatalf("%s PromptID is empty", definition.ID) t.Fatalf("%s PromptID is empty", definition.ID)
} }
if definition.Generated && definition.GenerationMode == "" {
t.Fatalf("%s GenerationMode is empty", definition.ID)
}
if definition.ComparisonStrategy == "" { if definition.ComparisonStrategy == "" {
t.Fatalf("%s ComparisonStrategy is empty", definition.ID) t.Fatalf("%s ComparisonStrategy is empty", definition.ID)
} }
} }
} }
func TestRegistryDefinitionsDeclareGenerationMetadata(t *testing.T) {
for _, definition := range DefaultRegistry().All() {
if !definition.Generated {
continue
}
if definition.GenerationMode != GenerationModeScriptoriumMarkdown {
t.Fatalf("%s GenerationMode = %q, want %q", definition.ID, definition.GenerationMode, GenerationModeScriptoriumMarkdown)
}
if definition.TemplateID != "" {
t.Fatalf("%s TemplateID = %q, want empty for Markdown report", definition.ID, definition.TemplateID)
}
if definition.GeneratedTextSchemaID != "" {
t.Fatalf("%s GeneratedTextSchemaID = %q, want empty for Markdown report", definition.ID, definition.GeneratedTextSchemaID)
}
}
}
func TestRegistryDefinitionsDeclarePathAndCompatibilityPolicy(t *testing.T) { func TestRegistryDefinitionsDeclarePathAndCompatibilityPolicy(t *testing.T) {
tests := []struct { tests := []struct {
id ID id ID

View File

@@ -13,6 +13,7 @@ func stormDefinition() Definition {
ID: Storm, ID: Storm,
Name: "Storm Report", Name: "Storm Report",
PromptID: "weather.storm_report", PromptID: "weather.storm_report",
GenerationMode: GenerationModeScriptoriumMarkdown,
ComparisonStrategy: CompareExplicitWindow, ComparisonStrategy: CompareExplicitWindow,
ArtifactGroup: "storm", ArtifactGroup: "storm",
BatchOutputName: "storm.md", BatchOutputName: "storm.md",

View File

@@ -12,6 +12,7 @@ func threeDayDefinition() Definition {
ID: ThreeDay, ID: ThreeDay,
Name: "3-Day Outlook", Name: "3-Day Outlook",
PromptID: "weather.three_day_outlook", PromptID: "weather.three_day_outlook",
GenerationMode: GenerationModeScriptoriumMarkdown,
ComparisonStrategy: CompareSameValidDate, ComparisonStrategy: CompareSameValidDate,
ArtifactGroup: "three-day", ArtifactGroup: "three-day",
BatchOutputName: "three-day.md", BatchOutputName: "three-day.md",

View File

@@ -13,6 +13,7 @@ func weekendDefinition() Definition {
ID: Weekend, ID: Weekend,
Name: "Weekend Outlook", Name: "Weekend Outlook",
PromptID: "weather.weekend_outlook", PromptID: "weather.weekend_outlook",
GenerationMode: GenerationModeScriptoriumMarkdown,
ComparisonStrategy: CompareWeekendWindow, ComparisonStrategy: CompareWeekendWindow,
ArtifactGroup: "weekend", ArtifactGroup: "weekend",
BatchOutputName: "weekend.md", BatchOutputName: "weekend.md",