Bugfixes and documentation cleanup for v1.0 release.
All checks were successful
ci/woodpecker/tag/release Pipeline was successful

This commit is contained in:
2026-05-01 11:30:29 -05:00
parent c9e98e14b5
commit f20f06db12
17 changed files with 332 additions and 177 deletions

View File

@@ -57,12 +57,12 @@ func FromMerged(cfg config.Config, merged model.MergedTranscript) schema.Transcr
}
}
// DefaultFromMerged converts the internal merged transcript model into the
// compact default public serialized output contract.
func DefaultFromMerged(cfg config.Config, merged model.MergedTranscript) schema.DefaultTranscript {
segments := make([]schema.DefaultSegment, len(merged.Segments))
// IntermediateFromMerged converts the internal merged transcript model into the
// compact intermediate public serialized output contract.
func IntermediateFromMerged(cfg config.Config, merged model.MergedTranscript) schema.IntermediateTranscript {
segments := make([]schema.IntermediateSegment, len(merged.Segments))
for index, segment := range merged.Segments {
segments[index] = schema.DefaultSegment{
segments[index] = schema.IntermediateSegment{
ID: segment.ID,
Start: segment.Start,
End: segment.End,
@@ -72,11 +72,11 @@ func DefaultFromMerged(cfg config.Config, merged model.MergedTranscript) schema.
}
}
return schema.DefaultTranscript{
Metadata: schema.DefaultMetadata{
return schema.IntermediateTranscript{
Metadata: schema.IntermediateMetadata{
Application: ApplicationName,
Version: buildinfo.Version,
OutputSchema: config.OutputSchemaDefault,
OutputSchema: config.OutputSchemaIntermediate,
},
Segments: segments,
}
@@ -110,14 +110,14 @@ func MinimalFromMerged(cfg config.Config, merged model.MergedTranscript) schema.
// runtime-selected public output contract.
func SelectedFromMerged(cfg config.Config, merged model.MergedTranscript) any {
switch cfg.OutputSchema {
case config.OutputSchemaDefault:
return DefaultFromMerged(cfg, merged)
case config.OutputSchemaMinimal:
return MinimalFromMerged(cfg, merged)
case config.OutputSchemaSeriatim:
case config.OutputSchemaFull:
return FromMerged(cfg, merged)
case config.OutputSchemaIntermediate:
return IntermediateFromMerged(cfg, merged)
default:
return FromMerged(cfg, merged)
return IntermediateFromMerged(cfg, merged)
}
}

View File

@@ -23,28 +23,28 @@ func TestFromMergedUsesBuildVersion(t *testing.T) {
}
}
func TestSelectedFromMergedDefaultsToSeriatimTranscript(t *testing.T) {
func TestSelectedFromMergedDefaultsToIntermediateTranscript(t *testing.T) {
got := SelectedFromMerged(config.Config{}, model.MergedTranscript{})
if _, ok := got.(schema.IntermediateTranscript); !ok {
t.Fatalf("selected artifact type = %T, want schema.IntermediateTranscript", got)
}
}
func TestSelectedFromMergedUsesIntermediateWhenConfigured(t *testing.T) {
got := SelectedFromMerged(config.Config{OutputSchema: config.OutputSchemaIntermediate}, model.MergedTranscript{})
if _, ok := got.(schema.IntermediateTranscript); !ok {
t.Fatalf("selected artifact type = %T, want schema.IntermediateTranscript", got)
}
}
func TestSelectedFromMergedUsesFullWhenConfigured(t *testing.T) {
got := SelectedFromMerged(config.Config{OutputSchema: config.OutputSchemaFull}, model.MergedTranscript{})
if _, ok := got.(schema.Transcript); !ok {
t.Fatalf("selected artifact type = %T, want schema.Transcript", got)
}
}
func TestSelectedFromMergedUsesDefaultWhenConfigured(t *testing.T) {
got := SelectedFromMerged(config.Config{OutputSchema: config.OutputSchemaDefault}, model.MergedTranscript{})
if _, ok := got.(schema.DefaultTranscript); !ok {
t.Fatalf("selected artifact type = %T, want schema.DefaultTranscript", got)
}
}
func TestSelectedFromMergedUsesSeriatimWhenConfigured(t *testing.T) {
got := SelectedFromMerged(config.Config{OutputSchema: config.OutputSchemaSeriatim}, model.MergedTranscript{})
if _, ok := got.(schema.Transcript); !ok {
t.Fatalf("selected artifact type = %T, want schema.Transcript", got)
}
}
func TestDefaultFromMergedEmitsOnlyDefaultShape(t *testing.T) {
func TestIntermediateFromMergedEmitsOnlyIntermediateShape(t *testing.T) {
merged := model.MergedTranscript{
Segments: []model.Segment{
{
@@ -65,19 +65,19 @@ func TestDefaultFromMergedEmitsOnlyDefaultShape(t *testing.T) {
},
}
got := DefaultFromMerged(config.Config{OutputSchema: config.OutputSchemaDefault}, merged)
want := schema.DefaultTranscript{
Metadata: schema.DefaultMetadata{
got := IntermediateFromMerged(config.Config{OutputSchema: config.OutputSchemaIntermediate}, merged)
want := schema.IntermediateTranscript{
Metadata: schema.IntermediateMetadata{
Application: ApplicationName,
Version: buildinfo.Version,
OutputSchema: config.OutputSchemaDefault,
OutputSchema: config.OutputSchemaIntermediate,
},
Segments: []schema.DefaultSegment{
Segments: []schema.IntermediateSegment{
{ID: 1, Start: 1, End: 2, Speaker: "Alice", Text: "hello", Categories: []string{"backchannel"}},
},
}
if !reflect.DeepEqual(got, want) {
t.Fatalf("default transcript = %#v, want %#v", got, want)
t.Fatalf("intermediate transcript = %#v, want %#v", got, want)
}
}