Run normalization in process command

This commit is contained in:
2026-05-11 00:13:26 +00:00
parent 0b1b670baf
commit e2ae7f77d8
2 changed files with 206 additions and 28 deletions

View File

@@ -10,6 +10,7 @@ import (
"gitea.maximumdirect.net/eric/audita/internal/core/config"
"gitea.maximumdirect.net/eric/audita/internal/core/io"
"gitea.maximumdirect.net/eric/audita/internal/core/normalization"
"gitea.maximumdirect.net/eric/audita/internal/core/reporting"
"gitea.maximumdirect.net/eric/audita/internal/core/schema"
)
@@ -45,8 +46,8 @@ var processRunner = func(inv processInvocation, stdout io.Writer) error {
return fmt.Errorf("invalid glossary: %w", err)
}
// Convert to canonical transcript format for output
outputTranscript := &schema.Transcript{
// Convert to canonical transcript format for normalization
normalizedTranscript := &schema.Transcript{
Segments: make([]schema.Segment, len(transcript.Segments)),
}
for i, s := range transcript.Segments {
@@ -54,7 +55,7 @@ var processRunner = func(inv processInvocation, stdout io.Writer) error {
if s.ID != nil {
id = *s.ID
}
outputTranscript.Segments[i] = schema.Segment{
normalizedTranscript.Segments[i] = schema.Segment{
ID: id,
Speaker: s.Speaker,
Start: s.Start,
@@ -64,8 +65,18 @@ var processRunner = func(inv processInvocation, stdout io.Writer) error {
}
}
// Serialize output transcript to JSON
outputBytes, err := schema.TranscriptToJSON(outputTranscript)
// Apply deterministic normalization
normalizer := normalization.NewNormalizer(normalization.NormalizationConfig{
MaxSegmentGap: inv.Config.Normalization.MaxSegmentGap,
EllipsisGap: inv.Config.Normalization.EllipsisGap,
MaxSegmentDuration: inv.Config.Normalization.MaxSegmentDuration,
MaxSegmentTokens: inv.Config.Normalization.MaxSegmentTokens,
})
normalizedTranscript, _ = normalizer.Normalize(normalizedTranscript)
// Serialize normalized transcript to JSON
outputBytes, err := schema.TranscriptToJSON(normalizedTranscript)
if err != nil {
return fmt.Errorf("failed to serialize transcript: %w", err)
}