Add output validation against a defined JSON schema

This commit is contained in:
2026-04-27 21:27:19 -05:00
parent 8a95dba276
commit 6cb739be55
14 changed files with 638 additions and 30 deletions

View File

@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"gitea.maximumdirect.net/eric/seriatim/internal/artifact"
"gitea.maximumdirect.net/eric/seriatim/internal/autocorrect"
"gitea.maximumdirect.net/eric/seriatim/internal/backchannel"
"gitea.maximumdirect.net/eric/seriatim/internal/coalesce"
@@ -12,6 +13,7 @@ import (
"gitea.maximumdirect.net/eric/seriatim/internal/model"
"gitea.maximumdirect.net/eric/seriatim/internal/overlap"
"gitea.maximumdirect.net/eric/seriatim/internal/report"
"gitea.maximumdirect.net/eric/seriatim/schema"
)
type noopPostprocessor struct {
@@ -52,6 +54,27 @@ func (assignIDs) Process(ctx context.Context, in model.MergedTranscript, cfg con
}, nil
}
type validateOutput struct{}
func (validateOutput) Name() string {
return "validate-output"
}
func (validateOutput) Process(ctx context.Context, in model.MergedTranscript, cfg config.Config) (model.MergedTranscript, []report.Event, error) {
if err := ctx.Err(); err != nil {
return model.MergedTranscript{}, nil, err
}
transcript := artifact.FromMerged(cfg, in)
if err := schema.ValidateTranscript(transcript); err != nil {
return model.MergedTranscript{}, nil, fmt.Errorf("validate-output: %w", err)
}
return in, []report.Event{
report.Info("postprocessing", "validate-output", fmt.Sprintf("validated %d output segment(s)", len(in.Segments))),
}, nil
}
type detectOverlaps struct{}
func (detectOverlaps) Name() string {