Fix to ensure unique document IDs when batch reports are generated

This commit is contained in:
2026-06-17 14:39:53 -05:00
parent a2f0a2fc36
commit 42f0e16b02
6 changed files with 213 additions and 19 deletions

View File

@@ -3,6 +3,7 @@ package report
import (
"fmt"
"strings"
"time"
"gitea.maximumdirect.net/eric/weatherreporter/internal/module"
@@ -60,6 +61,7 @@ type Definition struct {
Morning bool
Evening bool
resolve func(ResolveRequest) (timeutil.Period, error)
runIDDisambiguator func(Resolved) string
}
func (d Definition) ResolvePeriod(req ResolveRequest) (timeutil.Period, error) {
@@ -112,7 +114,7 @@ type Metadata struct {
func (r Resolved) Metadata() Metadata {
return Metadata{
RunID: r.GeneratedAt.UTC().Format("20060102T150405.000000000Z") + "_" + string(r.Definition.ID),
RunID: r.runID(),
ReportID: r.Definition.ID,
PromptID: r.Definition.PromptID,
GeneratedAt: r.GeneratedAt,
@@ -120,3 +122,15 @@ func (r Resolved) Metadata() Metadata {
ValidPeriod: r.ValidPeriod,
}
}
func (r Resolved) runID() string {
runID := r.GeneratedAt.UTC().Format("20060102T150405.000000000Z") + "_" + string(r.Definition.ID)
if r.Definition.runIDDisambiguator == nil {
return runID
}
disambiguator := strings.TrimSpace(r.Definition.runIDDisambiguator(r))
if disambiguator == "" {
return runID
}
return runID + "_" + disambiguator
}