Skip to content

Commit de4c4d0

Browse files
committed
SF-3609 Use CanDenormalizeQuotes flag from Serval
1 parent 813f7dc commit de4c4d0

File tree

6 files changed

+14
-39
lines changed

6 files changed

+14
-39
lines changed

src/SIL.XForge.Scripture/ClientApp/src/app/machine-api/build-dto.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { ProjectScriptureRange } from 'realtime-server/lib/esm/scriptureforge/models/translate-config';
22
import { BuildStates } from './build-states';
3-
import { QuotationAnalysis } from './quotation-denormalization';
43
import { ResourceDto } from './resource-dto';
54

65
export interface BuildDto extends ResourceDto {
@@ -26,5 +25,5 @@ export interface ServalBuildAdditionalInfo {
2625
translationScriptureRanges: ProjectScriptureRange[];
2726
trainingDataFileIds: string[];
2827
requestedByUserId?: string;
29-
quotationDenormalization: QuotationAnalysis;
28+
canDenormalizeQuotes: boolean;
3029
}

src/SIL.XForge.Scripture/ClientApp/src/app/machine-api/quotation-denormalization.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-usfm-format/draft-usfm-format.component.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import { OnlineStatusService } from 'xforge-common/online-status.service';
2727
import { filterNullish, quietTakeUntilDestroyed } from 'xforge-common/util/rxjs-util';
2828
import { TextDocId } from '../../../core/models/text-doc';
2929
import { SFProjectService } from '../../../core/sf-project.service';
30-
import { QuotationAnalysis } from '../../../machine-api/quotation-denormalization';
3130
import { ServalAdministrationService } from '../../../serval-administration/serval-administration.service';
3231
import { BookChapterChooserComponent } from '../../../shared/book-chapter-chooser/book-chapter-chooser.component';
3332
import { NoticeComponent } from '../../../shared/notice/notice.component';
@@ -79,7 +78,7 @@ export class DraftUsfmFormatComponent extends DataLoadingComponent implements Af
7978

8079
private updateDraftConfig$: Subject<DraftUsfmConfig | undefined> = new Subject<DraftUsfmConfig | undefined>();
8180
private lastSavedState?: DraftUsfmConfig;
82-
private quotationDenormalization: QuotationAnalysis = QuotationAnalysis.Successful;
81+
private canDenormalizeQuotes?: boolean = undefined;
8382

8483
constructor(
8584
private readonly activatedRoute: ActivatedRoute,
@@ -100,10 +99,7 @@ export class DraftUsfmFormatComponent extends DataLoadingComponent implements Af
10099
.pipe(filterNullish(), first(), quietTakeUntilDestroyed(this.destroyRef))
101100
.subscribe(async projectId => {
102101
const currentBuild = await firstValueFrom(this.draftGenerationService.getLastCompletedBuild(projectId));
103-
this.quotationDenormalization =
104-
currentBuild?.additionalInfo?.quotationDenormalization === QuotationAnalysis.Successful
105-
? QuotationAnalysis.Successful
106-
: QuotationAnalysis.Unsuccessful;
102+
this.canDenormalizeQuotes = currentBuild?.additionalInfo?.canDenormalizeQuotes;
107103
});
108104
}
109105

@@ -125,7 +121,7 @@ export class DraftUsfmFormatComponent extends DataLoadingComponent implements Af
125121
}
126122

127123
get showQuoteFormatWarning(): boolean {
128-
return this.quotationDenormalization !== QuotationAnalysis.Successful;
124+
return this.canDenormalizeQuotes === false;
129125
}
130126

131127
private get currentFormat(): DraftUsfmConfig | undefined {
Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using Newtonsoft.Json;
4-
using Newtonsoft.Json.Converters;
5-
using SIL.Converters.Usj;
63

74
namespace SIL.XForge.Scripture.Models;
85

@@ -20,13 +17,5 @@ public class ServalBuildAdditionalInfo
2017
public HashSet<string> TrainingDataFileIds { get; init; } = [];
2118
public string TranslationEngineId { get; init; } = string.Empty;
2219
public HashSet<ProjectScriptureRange> TranslationScriptureRanges { get; init; } = [];
23-
24-
[JsonConverter(typeof(StringEnumConverter), typeof(LowerCaseNamingStrategy))]
25-
public QuotationAnalysis QuotationDenormalization { get; set; } = QuotationAnalysis.Unsuccessful;
26-
}
27-
28-
public enum QuotationAnalysis
29-
{
30-
Successful,
31-
Unsuccessful,
20+
public bool CanDenormalizeQuotes { get; set; } = false;
3221
}

src/SIL.XForge.Scripture/Services/MachineApiService.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2251,6 +2251,8 @@ string bookId in ScriptureRangeParser
22512251
private static ServalBuildDto CreateDto(TranslationBuild translationBuild)
22522252
{
22532253
string? parallelCorpusId = translationBuild.Pretranslate?.FirstOrDefault()?.ParallelCorpus?.Id;
2254+
var matchingCorpus = translationBuild.Analysis?.FirstOrDefault(a => a.ParallelCorpusRef == parallelCorpusId);
2255+
22542256
var buildDto = new ServalBuildDto
22552257
{
22562258
Id = translationBuild.Id,
@@ -2285,16 +2287,7 @@ .. translationBuild
22852287
.Where(id => !string.IsNullOrEmpty(id)) ?? [],
22862288
]
22872289
),
2288-
QuotationDenormalization =
2289-
parallelCorpusId is not null
2290-
&& translationBuild.Analysis?.FirstOrDefault(a =>
2291-
a.ParallelCorpusRef == parallelCorpusId
2292-
&& !string.IsNullOrEmpty(a.SourceQuoteConvention)
2293-
&& !string.IsNullOrEmpty(a.TargetQuoteConvention)
2294-
)
2295-
is not null
2296-
? QuotationAnalysis.Successful
2297-
: QuotationAnalysis.Unsuccessful,
2290+
CanDenormalizeQuotes = matchingCorpus?.CanDenormalizeQuotes == true,
22982291
DateFinished = translationBuild.DateFinished,
22992292
Step = translationBuild.Step,
23002293
TranslationEngineId = translationBuild.Engine.Id,

test/SIL.XForge.Scripture.Tests/Services/MachineApiServiceTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,7 @@ public async Task GetBuildAsync_IncludesAdditionalInfo()
989989
ParallelCorpusRef = parallelCorpusId1,
990990
SourceQuoteConvention = "standard_english",
991991
TargetQuoteConvention = "standard_english",
992+
CanDenormalizeQuotes = true,
992993
},
993994
],
994995
};
@@ -1027,7 +1028,7 @@ public async Task GetBuildAsync_IncludesAdditionalInfo()
10271028
Assert.AreEqual(parallelCorpusId1, actual.AdditionalInfo.ParallelCorporaIds!.ElementAt(0));
10281029
Assert.AreEqual(parallelCorpusId2, actual.AdditionalInfo.ParallelCorporaIds.ElementAt(1));
10291030
Assert.AreEqual(TrainingDataId01, actual.AdditionalInfo.TrainingDataFileIds.Single());
1030-
Assert.AreEqual(actual.AdditionalInfo.QuotationDenormalization, QuotationAnalysis.Successful);
1031+
Assert.That(actual.AdditionalInfo.CanDenormalizeQuotes, Is.True);
10311032
}
10321033

10331034
[Test]
@@ -1274,6 +1275,7 @@ public async Task GetBuildsAsync_SuccessWithEventMetrics()
12741275
ParallelCorpusRef = ParallelCorpusId01,
12751276
SourceQuoteConvention = "standard_english",
12761277
TargetQuoteConvention = "standard_english",
1278+
CanDenormalizeQuotes = true,
12771279
},
12781280
];
12791281
translationBuild.Pretranslate =
@@ -1361,7 +1363,7 @@ public async Task GetBuildsAsync_SuccessWithEventMetrics()
13611363
builds[0].AdditionalInfo.TrainingScriptureRanges.Single().ScriptureRange
13621364
);
13631365
Assert.AreEqual(TrainingDataId01, builds[0].AdditionalInfo.TrainingDataFileIds.Single());
1364-
Assert.AreEqual(builds[0].AdditionalInfo!.QuotationDenormalization, QuotationAnalysis.Successful);
1366+
Assert.That(builds[0].AdditionalInfo.CanDenormalizeQuotes, Is.True);
13651367
}
13661368

13671369
[Test]
@@ -1403,7 +1405,7 @@ public async Task GetBuildsAsync_SuccessWithFallbackToLegacyBuild()
14031405
trainingScriptureRange,
14041406
builds[0].AdditionalInfo?.TrainingScriptureRanges.Single().ScriptureRange
14051407
);
1406-
Assert.AreEqual(builds[0].AdditionalInfo!.QuotationDenormalization, QuotationAnalysis.Unsuccessful);
1408+
Assert.That(builds[0].AdditionalInfo!.CanDenormalizeQuotes, Is.False);
14071409
}
14081410

14091411
[Test]
@@ -1455,7 +1457,7 @@ public async Task GetBuildsAsync_SuccessWithFallbackToPreTranslateBuild()
14551457
trainingScriptureRange,
14561458
builds[0].AdditionalInfo?.TrainingScriptureRanges.Single().ScriptureRange
14571459
);
1458-
Assert.AreEqual(builds[0].AdditionalInfo!.QuotationDenormalization, QuotationAnalysis.Unsuccessful);
1460+
Assert.That(builds[0].AdditionalInfo!.CanDenormalizeQuotes, Is.False);
14591461
}
14601462

14611463
[Test]

0 commit comments

Comments
 (0)