Add output validation against a defined JSON schema
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user