feat(workspace): refine career workflows
Make job/CV comparisons language-aware and filter recruitment noise. Improve responsive career navigation, shared spacing, dashboard priorities, settings, localized workspace controls, and portable browser tests.
This commit is contained in:
@@ -395,4 +395,29 @@ public sealed class ApplicationIntelligenceTests
|
||||
// Reading the match must not itself call the AI or append history.
|
||||
Assert.Equal(interactionsBefore, await db.AiInteractions.CountAsync());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Match_uses_saved_English_translation_when_linked_cv_is_English()
|
||||
{
|
||||
var (db, intelligence, _) = New("user-1");
|
||||
await using var _d = db;
|
||||
var job = await SeedJobAsync(db, "user-1", j =>
|
||||
{
|
||||
j.Description = "Vi ser etter en utvikler med erfaring fra C# og skalerbare systemer.";
|
||||
j.DescriptionLanguage = "nb-NO";
|
||||
j.TranslatedDescription = "We need a developer with C# and scalable systems experience.";
|
||||
});
|
||||
await SeedProfileAsync(db, "user-1");
|
||||
await AttachCvAsync(db, "user-1", job.Id, new CvVariantSettings { Language = "en" });
|
||||
|
||||
var match = await intelligence.MatchAsync("user-1", job.Id, default);
|
||||
|
||||
Assert.NotNull(match);
|
||||
Assert.Equal("nb", match!.JobLanguage);
|
||||
Assert.Equal("en", match.CvLanguage);
|
||||
Assert.True(match.LanguageMismatch);
|
||||
Assert.True(match.UsedTranslatedJobDescription);
|
||||
Assert.Contains("C#", match.MatchedSkills);
|
||||
Assert.DoesNotContain(match.MissingSkills, value => value.Equals("utvikler", StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,15 @@ public sealed class JobCvMatchServiceTests
|
||||
"Senior systemutvikler",
|
||||
"Vi ser etter deg som har erfaring med C# og ASP.NET Core. Du vil designe skalerbare distribuerte systemer. Gode samarbeidsevner er en fordel.",
|
||||
new[] { "C#", "ASP.NET Core", "designe skalerbare distribuerte systemer" },
|
||||
new[] { "med", "til", "for", "som", "erfaring", "ser" },
|
||||
new[] { "med", "til", "for", "som", "erfaring", "ser", "både", "del", "dnbs", "faglig", "får", "god", "hos", "utvikling" },
|
||||
};
|
||||
yield return new object[]
|
||||
{
|
||||
"Norwegian recruitment filler",
|
||||
"Systemutvikler",
|
||||
"Hos DNBs faglige miljø får du både være del av god utvikling og bidra til moderne løsninger med C# og Azure.",
|
||||
new[] { "C#", "Azure" },
|
||||
new[] { "både", "del", "dnbs", "faglig", "får", "god", "hos", "utvikling", "bidra", "løsninger" },
|
||||
};
|
||||
yield return new object[]
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user